From 2cdf7fb91c5836b6ac26eb77eea5b0fc46da775a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=5B=20Kristjan=20Komlo=C5=A1i=20HomePC=20=5D?= <[ kristjan.komlosi@gmail.com ]> Date: Tue, 28 Mar 2017 13:33:10 +0200 Subject: [PATCH] Launching soon! --- CyUSBSerial_SDK_Linux/README.txt | 36 - .../doc/CyUSBSerial API Documentation.pdf | 10180 ----------- .../common/header/CyUSBSerial.h | 1842 -- .../libusb/libusb-1.0.9.tar.bz2 | Bin 421971 -> 0 bytes .../libusb/libusb-1.0.9/libusb-1.0.9/AUTHORS | 45 - .../libusb/libusb-1.0.9/libusb-1.0.9/COPYING | 504 - .../libusb-1.0.9/libusb-1.0.9/ChangeLog | 4377 ----- .../libusb/libusb-1.0.9/libusb-1.0.9/INSTALL | 234 - .../libusb/libusb-1.0.9/libusb-1.0.9/Makefile | 807 - .../libusb-1.0.9/libusb-1.0.9/Makefile.am | 28 - .../libusb-1.0.9/libusb-1.0.9/Makefile.in | 807 - .../libusb/libusb-1.0.9/libusb-1.0.9/NEWS | 65 - .../libusb/libusb-1.0.9/libusb-1.0.9/PORTING | 95 - .../libusb/libusb-1.0.9/libusb-1.0.9/README | 22 - .../libusb/libusb-1.0.9/libusb-1.0.9/THANKS | 8 - .../libusb/libusb-1.0.9/libusb-1.0.9/TODO | 9 - .../libusb-1.0.9/libusb-1.0.9/aclocal.m4 | 9111 ---------- .../libusb/libusb-1.0.9/libusb-1.0.9/compile | 143 - .../libusb-1.0.9/libusb-1.0.9/config.guess | 1523 -- .../libusb-1.0.9/libusb-1.0.9/config.h.in | 116 - .../libusb-1.0.9/libusb-1.0.9/config.log | 760 - .../libusb-1.0.9/libusb-1.0.9/config.status | 2284 --- .../libusb-1.0.9/libusb-1.0.9/config.sub | 1757 -- .../libusb-1.0.9/libusb-1.0.9/configure | 14148 ---------------- .../libusb-1.0.9/libusb-1.0.9/configure.ac | 222 - .../libusb/libusb-1.0.9/libusb-1.0.9/depcomp | 630 - .../libusb-1.0.9/libusb-1.0.9/doc/Makefile | 377 - .../libusb-1.0.9/libusb-1.0.9/doc/Makefile.am | 10 - .../libusb-1.0.9/libusb-1.0.9/doc/Makefile.in | 377 - .../libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg | 1294 -- .../libusb-1.0.9/doc/doxygen.cfg.in | 1294 -- .../libusb-1.0.9/examples/.deps/dpfp.Po | 1 - .../.deps/dpfp_threaded-dpfp_threaded.Po | 1 - .../libusb-1.0.9/examples/.deps/listdevs.Po | 1 - .../libusb-1.0.9/examples/Makefile | 542 - .../libusb-1.0.9/examples/Makefile.am | 21 - .../libusb-1.0.9/examples/Makefile.in | 542 - .../libusb-1.0.9/libusb-1.0.9/examples/dpfp.c | 507 - .../libusb-1.0.9/examples/dpfp_threaded.c | 545 - .../libusb-1.0.9/examples/listdevs.c | 64 - .../libusb-1.0.9/libusb-1.0.9/install-sh | 520 - .../libusb/libusb-1.0.9/libusb-1.0.9/libtool | 9378 ---------- .../libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc | 12 - .../libusb-1.0.9/libusb-1.0.pc.in | 12 - .../libusb/.deps/libusb_1_0_la-core.Plo | 205 - .../libusb/.deps/libusb_1_0_la-darwin_usb.Plo | 1 - .../libusb/.deps/libusb_1_0_la-descriptor.Plo | 181 - .../libusb/.deps/libusb_1_0_la-io.Plo | 219 - .../.deps/libusb_1_0_la-linux_usbfs.Plo | 263 - .../.deps/libusb_1_0_la-openbsd_usb.Plo | 1 - .../.deps/libusb_1_0_la-poll_windows.Plo | 1 - .../libusb/.deps/libusb_1_0_la-sync.Plo | 190 - .../.deps/libusb_1_0_la-threads_posix.Plo | 52 - .../.deps/libusb_1_0_la-threads_windows.Plo | 1 - .../.deps/libusb_1_0_la-windows_usb.Plo | 1 - .../libusb-1.0.9/libusb/.libs/libusb-1.0.a | Bin 409430 -> 0 bytes .../libusb-1.0.9/libusb/.libs/libusb-1.0.la | 1 - .../libusb-1.0.9/libusb/.libs/libusb-1.0.lai | 41 - .../libusb-1.0.9/libusb/.libs/libusb-1.0.so | 1 - .../libusb-1.0.9/libusb/.libs/libusb-1.0.so.0 | 1 - .../libusb/.libs/libusb-1.0.so.0.1.0 | Bin 242856 -> 0 bytes .../libusb/.libs/libusb_1_0_la-core.o | Bin 81152 -> 0 bytes .../libusb/.libs/libusb_1_0_la-descriptor.o | Bin 52120 -> 0 bytes .../libusb/.libs/libusb_1_0_la-io.o | Bin 71344 -> 0 bytes .../libusb/.libs/libusb_1_0_la-linux_usbfs.o | Bin 166600 -> 0 bytes .../libusb/.libs/libusb_1_0_la-sync.o | Bin 31888 -> 0 bytes .../.libs/libusb_1_0_la-threads_posix.o | Bin 7472 -> 0 bytes .../libusb-1.0.9/libusb-1.0.9/libusb/Makefile | 718 - .../libusb-1.0.9/libusb/Makefile.am | 49 - .../libusb-1.0.9/libusb/Makefile.in | 718 - .../libusb-1.0.9/libusb-1.0.9/libusb/core.c | 1875 -- .../libusb-1.0.9/libusb/descriptor.c | 730 - .../libusb-1.0.9/libusb-1.0.9/libusb/io.c | 2454 --- .../libusb-1.0.9/libusb/libusb-1.0.def | 120 - .../libusb-1.0.9/libusb/libusb-1.0.la | 41 - .../libusb-1.0.9/libusb/libusb-1.0.rc | 56 - .../libusb-1.0.9/libusb-1.0.9/libusb/libusb.h | 1443 -- .../libusb-1.0.9/libusb/libusb_1_0_la-core.lo | 12 - .../libusb-1.0.9/libusb/libusb_1_0_la-core.o | Bin 80176 -> 0 bytes .../libusb/libusb_1_0_la-descriptor.lo | 12 - .../libusb/libusb_1_0_la-descriptor.o | Bin 51672 -> 0 bytes .../libusb-1.0.9/libusb/libusb_1_0_la-io.lo | 12 - .../libusb-1.0.9/libusb/libusb_1_0_la-io.o | Bin 71112 -> 0 bytes .../libusb/libusb_1_0_la-linux_usbfs.lo | 12 - .../libusb/libusb_1_0_la-linux_usbfs.o | Bin 164400 -> 0 bytes .../libusb-1.0.9/libusb/libusb_1_0_la-sync.lo | 12 - .../libusb-1.0.9/libusb/libusb_1_0_la-sync.o | Bin 31816 -> 0 bytes .../libusb/libusb_1_0_la-threads_posix.lo | 12 - .../libusb/libusb_1_0_la-threads_posix.o | Bin 7408 -> 0 bytes .../libusb-1.0.9/libusb/libusbi.h | 935 - .../libusb-1.0.9/libusb/os/darwin_usb.c | 1750 -- .../libusb-1.0.9/libusb/os/darwin_usb.h | 169 - .../libusb-1.0.9/libusb/os/linux_usbfs.c | 2438 --- .../libusb-1.0.9/libusb/os/linux_usbfs.h | 139 - .../libusb-1.0.9/libusb/os/openbsd_usb.c | 727 - .../libusb-1.0.9/libusb/os/poll_posix.h | 10 - .../libusb-1.0.9/libusb/os/poll_windows.c | 745 - .../libusb-1.0.9/libusb/os/poll_windows.h | 115 - .../libusb-1.0.9/libusb/os/threads_posix.c | 55 - .../libusb-1.0.9/libusb/os/threads_posix.h | 48 - .../libusb-1.0.9/libusb/os/threads_windows.c | 207 - .../libusb-1.0.9/libusb/os/threads_windows.h | 86 - .../libusb-1.0.9/libusb/os/windows_usb.c | 2996 ---- .../libusb-1.0.9/libusb/os/windows_usb.h | 608 - .../libusb-1.0.9/libusb-1.0.9/libusb/sync.c | 314 - .../libusb-1.0.9/libusb/version.h | 18 - .../libusb-1.0.9/libusb-1.0.9/ltmain.sh | 8745 ---------- .../libusb/libusb-1.0.9/libusb-1.0.9/missing | 376 - .../libusb-1.0.9/libusb-1.0.9/msvc/config.h | 24 - .../libusb-1.0.9/msvc/ddk_build.cmd | 106 - .../libusb-1.0.9/libusb-1.0.9/msvc/inttypes.h | 295 - .../libusb-1.0.9/libusb-1.0.9/msvc/libusb.dsw | 56 - .../libusb-1.0.9/msvc/libusb_dll.dsp | 190 - .../libusb-1.0.9/msvc/libusb_dll.vcproj | 421 - .../libusb-1.0.9/msvc/libusb_dll.vcxproj | 166 - .../msvc/libusb_dll.vcxproj.filters | 69 - .../libusb-1.0.9/msvc/libusb_sources | 36 - .../libusb-1.0.9/msvc/libusb_static.dsp | 170 - .../libusb-1.0.9/msvc/libusb_static.vcproj | 346 - .../libusb-1.0.9/msvc/libusb_static.vcxproj | 150 - .../msvc/libusb_static.vcxproj.filters | 56 - .../libusb-1.0.9/msvc/libusb_vs2005.sln | 61 - .../libusb-1.0.9/msvc/libusb_vs2010.sln | 49 - .../libusb-1.0.9/msvc/listdevs.dsp | 103 - .../libusb-1.0.9/msvc/listdevs.vcproj | 360 - .../libusb-1.0.9/msvc/listdevs.vcxproj | 165 - .../msvc/listdevs.vcxproj.filters | 14 - .../libusb-1.0.9/msvc/listdevs_sources | 19 - .../libusb-1.0.9/libusb-1.0.9/msvc/stdint.h | 256 - .../libusb/libusb-1.0.9/libusb-1.0.9/stamp-h1 | 1 - CyUSBSerial_SDK_Linux/license/license.txt | 504 - .../linux/library/90-cyusb.rules | 5 - .../linux/library/CyUSBCommon.h | 222 - CyUSBSerial_SDK_Linux/linux/library/Makefile | 18 - .../linux/library/README.txt | 29 - CyUSBSerial_SDK_Linux/linux/library/cyi2c.c | 690 - CyUSBSerial_SDK_Linux/linux/library/cyjtag.c | 247 - CyUSBSerial_SDK_Linux/linux/library/cymisc.c | 584 - CyUSBSerial_SDK_Linux/linux/library/cyphdc.c | 130 - CyUSBSerial_SDK_Linux/linux/library/cyspi.c | 644 - CyUSBSerial_SDK_Linux/linux/library/cyuart.c | 755 - CyUSBSerial_SDK_Linux/linux/library/cyusb.c | 630 - .../linux/library/libcyusbserial.so | 1 - .../linux/library/libcyusbserial.so.1 | Bin 98840 -> 0 bytes .../linux/testUtility/90-cyusb.rules | 5 - .../linux/testUtility/CyUSBSerial.sh | 7 - .../linux/testUtility/CyUSBSerialTestUtility | Bin 27904 -> 0 bytes .../linux/testUtility/Makefile | 11 - .../linux/testUtility/README.txt | 137 - .../linux/testUtility/Test_Utility.c | 605 - release/autobuilder => autobuilder | 0 {release/cylib => cylib}/CMakeLists.txt | 0 .../COPYING.LESSER.txt | 0 {libcyusbserial-master => cylib}/Doxyfile | 0 {libcyusbserial-master => cylib}/README.md | 0 {release/cylib => cylib}/appveyor.yml | 0 {release/cylib => cylib}/build/CMakeCache.txt | 0 .../CMakeFiles/3.7.2/CMakeCCompiler.cmake | 0 .../3.7.2/CMakeDetermineCompilerABI_C.bin | Bin .../build/CMakeFiles/3.7.2/CMakeSystem.cmake | 0 .../3.7.2/CompilerIdC/CMakeCCompilerId.c | 0 .../build/CMakeFiles/3.7.2/CompilerIdC/a.out | Bin .../CMakeDirectoryInformation.cmake | 0 .../build/CMakeFiles/CMakeError.log | 0 .../build/CMakeFiles/CMakeOutput.log | 0 .../build/CMakeFiles/Makefile.cmake | 0 .../build/CMakeFiles/Makefile2 | 0 .../build/CMakeFiles/TargetDirectories.txt | 0 .../build/CMakeFiles/cmake.check_cache | 0 .../build/CMakeFiles/feature_tests.bin | Bin .../build/CMakeFiles/feature_tests.c | 0 .../build/CMakeFiles/progress.marks | 0 {release/cylib => cylib}/build/Makefile | 0 .../cylib => cylib}/build/cmake_install.cmake | 0 .../CMakeDirectoryInformation.cmake | 0 .../build/include/CMakeFiles/progress.marks | 0 .../cylib => cylib}/build/include/Makefile | 0 .../build/include/cmake_install.cmake | 0 .../build/install_manifest.txt | 0 .../CMakeDirectoryInformation.cmake | 0 .../CMakeFiles/cyusbserial.dir/C.includecache | 0 .../cyusbserial.dir/DependInfo.cmake | 0 .../lib/CMakeFiles/cyusbserial.dir/build.make | 0 .../cyusbserial.dir/cmake_clean.cmake | 0 .../lib/CMakeFiles/cyusbserial.dir/cyi2c.c.o | Bin .../lib/CMakeFiles/cyusbserial.dir/cyjtag.c.o | Bin .../lib/CMakeFiles/cyusbserial.dir/cymisc.c.o | Bin .../lib/CMakeFiles/cyusbserial.dir/cyphdc.c.o | Bin .../lib/CMakeFiles/cyusbserial.dir/cyspi.c.o | Bin .../lib/CMakeFiles/cyusbserial.dir/cyuart.c.o | Bin .../lib/CMakeFiles/cyusbserial.dir/cyusb.c.o | Bin .../cyusbserial.dir/depend.internal | 0 .../CMakeFiles/cyusbserial.dir/depend.make | 0 .../lib/CMakeFiles/cyusbserial.dir/flags.make | 0 .../lib/CMakeFiles/cyusbserial.dir/link.txt | 0 .../CMakeFiles/cyusbserial.dir/progress.make | 0 .../build/lib/CMakeFiles/progress.marks | 0 {release/cylib => cylib}/build/lib/Makefile | 0 .../build/lib/cmake_install.cmake | 0 .../build/lib/libcyusbserial.so | 0 .../build/lib/libcyusbserial.so.1 | Bin .../CMakeDirectoryInformation.cmake | 0 .../cyusbserialtest.dir/C.includecache | 0 .../cyusbserialtest.dir/DependInfo.cmake | 0 .../CMakeFiles/cyusbserialtest.dir/build.make | 0 .../cyusbserialtest.dir/cmake_clean.cmake | 0 .../cyusbserialtest.dir/cyusbserialtest.c.o | Bin .../cyusbserialtest.dir/depend.internal | 0 .../cyusbserialtest.dir/depend.make | 0 .../CMakeFiles/cyusbserialtest.dir/flags.make | 0 .../CMakeFiles/cyusbserialtest.dir/link.txt | 0 .../cyusbserialtest.dir/progress.make | 0 .../build/tools/CMakeFiles/progress.marks | 0 {release/cylib => cylib}/build/tools/Makefile | 0 .../build/tools/cmake_install.cmake | 0 .../build/tools/cyusbserialtest | Bin .../cmake/helpers/libusb_version.c | 0 .../cmake/modules/FindLibPThreadsWin32.cmake | 0 .../cmake/modules/FindLibUSB.cmake | 0 .../include/CMakeLists.txt | 0 .../include/CyUSBSerial.h | 0 {release/cylib => cylib}/lib/CMakeLists.txt | 0 {release/cylib => cylib}/lib/CyUSBCommon.h | 0 {libcyusbserial-master => cylib}/lib/cyi2c.c | 0 {libcyusbserial-master => cylib}/lib/cyjtag.c | 0 {release/cylib => cylib}/lib/cymisc.c | 0 {libcyusbserial-master => cylib}/lib/cyphdc.c | 0 {release/cylib => cylib}/lib/cyspi.c | 0 {release/cylib => cylib}/lib/cyuart.c | 0 {release/cylib => cylib}/lib/cyusb.c | 0 .../libcyusbserial-master}/.gitignore | 0 .../libcyusbserial-master}/.travis.yml | 0 .../tools/CMakeLists.txt | 0 .../tools/README.txt | 0 .../tools/cyusbserialtest.c | 0 .../cylib => cylib}/windows/gettimeofday.c | 0 .../windows/include/c99/inttypes.h | 0 .../windows/include/c99/stdbool.h | 0 .../windows/include/sys/time.h | 0 {release/cylib => cylib}/windows/usleep.c | 0 .../CyUSBSerial API Documentation.pdf | 0 {release => docs}/manual.md | 0 files for command line utility.zip | Bin 252453 -> 0 bytes libcyusbserial-master.zip | Bin 94584 -> 0 bytes libcyusbserial-master/CMakeLists.txt | 59 - libcyusbserial-master/appveyor.yml | 18 - libcyusbserial-master/lib/CMakeLists.txt | 30 - libcyusbserial-master/lib/CyUSBCommon.h | 253 - libcyusbserial-master/lib/cymisc.c | 586 - libcyusbserial-master/lib/cyspi.c | 644 - libcyusbserial-master/lib/cyuart.c | 588 - libcyusbserial-master/lib/cyusb.c | 638 - package.zip | Bin 0 -> 180542 bytes release/cylib/COPYING.LESSER.txt | 502 - release/cylib/Doxyfile | 2437 --- release/cylib/README.md | 38 - release/cylib/cmake/helpers/libusb_version.c | 46 - .../cmake/modules/FindLibPThreadsWin32.cmake | 97 - release/cylib/cmake/modules/FindLibUSB.cmake | 168 - release/cylib/include/CMakeLists.txt | 9 - release/cylib/lib/cyi2c.c | 686 - release/cylib/lib/cyjtag.c | 248 - release/cylib/lib/cyphdc.c | 130 - .../cylib/libcyusbserial-master/.gitignore | 32 - .../cylib/libcyusbserial-master/.travis.yml | 72 - release/cylib/tools/CMakeLists.txt | 23 - release/cylib/tools/README.txt | 99 - release/cylib/tools/cyusbserialtest.c | 603 - release/tinio/Makefile | 19 - release/tinio/include/CyUSBSerial.h | 1622 -- release/tinio/tinio.cpp | 389 - {release/tinio => tinio}/Command_Utility.c | 0 tinio/Makefile | 19 +- .../tinio => tinio}/include/CyUSBBootloader.h | 0 .../cylib => tinio}/include/CyUSBSerial.h | 0 tinio/tinio.cpp | 2 +- 276 files changed, 19 insertions(+), 113542 deletions(-) delete mode 100644 CyUSBSerial_SDK_Linux/README.txt delete mode 100644 CyUSBSerial_SDK_Linux/common/doc/CyUSBSerial API Documentation.pdf delete mode 100644 CyUSBSerial_SDK_Linux/common/header/CyUSBSerial.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9.tar.bz2 delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/AUTHORS delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/COPYING delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/ChangeLog delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/INSTALL delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile.am delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile.in delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/NEWS delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/PORTING delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/README delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/THANKS delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/TODO delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/aclocal.m4 delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/compile delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.guess delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.h.in delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.log delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.status delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.sub delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/configure delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/configure.ac delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/depcomp delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile.am delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile.in delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg.in delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/dpfp.Po delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/dpfp_threaded-dpfp_threaded.Po delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/listdevs.Po delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile.am delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile.in delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/dpfp.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/dpfp_threaded.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/listdevs.c delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libtool delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc.in delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-core.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-darwin_usb.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-descriptor.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-io.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-linux_usbfs.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-openbsd_usb.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-poll_windows.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-sync.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-threads_posix.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-threads_windows.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-windows_usb.Plo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.a delete mode 120000 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.la delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.lai delete mode 120000 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so delete mode 120000 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so.0 delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so.0.1.0 delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-core.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-descriptor.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-io.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-linux_usbfs.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-sync.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-threads_posix.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile.am delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile.in delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/core.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/descriptor.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/io.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.def delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.la delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.rc delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-core.lo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-core.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-descriptor.lo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-descriptor.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-io.lo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-io.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-linux_usbfs.lo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-linux_usbfs.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-sync.lo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-sync.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-threads_posix.lo delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-threads_posix.o delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusbi.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/darwin_usb.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/darwin_usb.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/linux_usbfs.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/linux_usbfs.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/openbsd_usb.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_posix.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_windows.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_windows.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_posix.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_posix.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_windows.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_windows.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/windows_usb.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/windows_usb.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/sync.c delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/version.h delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/ltmain.sh delete mode 100755 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/config.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/ddk_build.cmd delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/inttypes.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb.dsw delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.dsp delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcproj delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcxproj delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcxproj.filters delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_sources delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.dsp delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcproj delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcxproj delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcxproj.filters delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_vs2005.sln delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_vs2010.sln delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.dsp delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcproj delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcxproj delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcxproj.filters delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs_sources delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/stdint.h delete mode 100644 CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/stamp-h1 delete mode 100644 CyUSBSerial_SDK_Linux/license/license.txt delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/90-cyusb.rules delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/CyUSBCommon.h delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/Makefile delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/README.txt delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/cyi2c.c delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/cyjtag.c delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/cymisc.c delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/cyphdc.c delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/cyspi.c delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/cyuart.c delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/cyusb.c delete mode 100644 CyUSBSerial_SDK_Linux/linux/library/libcyusbserial.so delete mode 100755 CyUSBSerial_SDK_Linux/linux/library/libcyusbserial.so.1 delete mode 100644 CyUSBSerial_SDK_Linux/linux/testUtility/90-cyusb.rules delete mode 100644 CyUSBSerial_SDK_Linux/linux/testUtility/CyUSBSerial.sh delete mode 100755 CyUSBSerial_SDK_Linux/linux/testUtility/CyUSBSerialTestUtility delete mode 100644 CyUSBSerial_SDK_Linux/linux/testUtility/Makefile delete mode 100644 CyUSBSerial_SDK_Linux/linux/testUtility/README.txt delete mode 100644 CyUSBSerial_SDK_Linux/linux/testUtility/Test_Utility.c rename release/autobuilder => autobuilder (100%) rename {release/cylib => cylib}/CMakeLists.txt (100%) rename {libcyusbserial-master => cylib}/COPYING.LESSER.txt (100%) rename {libcyusbserial-master => cylib}/Doxyfile (100%) rename {libcyusbserial-master => cylib}/README.md (100%) rename {release/cylib => cylib}/appveyor.yml (100%) rename {release/cylib => cylib}/build/CMakeCache.txt (100%) rename {release/cylib => cylib}/build/CMakeFiles/3.7.2/CMakeCCompiler.cmake (100%) rename {release/cylib => cylib}/build/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin (100%) rename {release/cylib => cylib}/build/CMakeFiles/3.7.2/CMakeSystem.cmake (100%) rename {release/cylib => cylib}/build/CMakeFiles/3.7.2/CompilerIdC/CMakeCCompilerId.c (100%) rename {release/cylib => cylib}/build/CMakeFiles/3.7.2/CompilerIdC/a.out (100%) rename {release/cylib => cylib}/build/CMakeFiles/CMakeDirectoryInformation.cmake (100%) rename {release/cylib => cylib}/build/CMakeFiles/CMakeError.log (100%) rename {release/cylib => cylib}/build/CMakeFiles/CMakeOutput.log (100%) rename {release/cylib => cylib}/build/CMakeFiles/Makefile.cmake (100%) rename {release/cylib => cylib}/build/CMakeFiles/Makefile2 (100%) rename {release/cylib => cylib}/build/CMakeFiles/TargetDirectories.txt (100%) rename {release/cylib => cylib}/build/CMakeFiles/cmake.check_cache (100%) rename {release/cylib => cylib}/build/CMakeFiles/feature_tests.bin (100%) rename {release/cylib => cylib}/build/CMakeFiles/feature_tests.c (100%) rename {release/cylib => cylib}/build/CMakeFiles/progress.marks (100%) rename {release/cylib => cylib}/build/Makefile (100%) rename {release/cylib => cylib}/build/cmake_install.cmake (100%) rename {release/cylib => cylib}/build/include/CMakeFiles/CMakeDirectoryInformation.cmake (100%) rename {release/cylib => cylib}/build/include/CMakeFiles/progress.marks (100%) rename {release/cylib => cylib}/build/include/Makefile (100%) rename {release/cylib => cylib}/build/include/cmake_install.cmake (100%) rename {release/cylib => cylib}/build/install_manifest.txt (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/CMakeDirectoryInformation.cmake (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/C.includecache (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/DependInfo.cmake (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/build.make (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/cmake_clean.cmake (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/cyi2c.c.o (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/cyjtag.c.o (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/cymisc.c.o (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/cyphdc.c.o (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/cyspi.c.o (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/cyuart.c.o (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/cyusb.c.o (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/depend.internal (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/depend.make (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/flags.make (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/link.txt (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/cyusbserial.dir/progress.make (100%) rename {release/cylib => cylib}/build/lib/CMakeFiles/progress.marks (100%) rename {release/cylib => cylib}/build/lib/Makefile (100%) rename {release/cylib => cylib}/build/lib/cmake_install.cmake (100%) rename {release/cylib => cylib}/build/lib/libcyusbserial.so (100%) rename {release/cylib => cylib}/build/lib/libcyusbserial.so.1 (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/CMakeDirectoryInformation.cmake (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/C.includecache (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/DependInfo.cmake (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/build.make (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/cmake_clean.cmake (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/cyusbserialtest.c.o (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/depend.internal (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/depend.make (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/flags.make (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/link.txt (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/cyusbserialtest.dir/progress.make (100%) rename {release/cylib => cylib}/build/tools/CMakeFiles/progress.marks (100%) rename {release/cylib => cylib}/build/tools/Makefile (100%) rename {release/cylib => cylib}/build/tools/cmake_install.cmake (100%) rename {release/cylib => cylib}/build/tools/cyusbserialtest (100%) rename {libcyusbserial-master => cylib}/cmake/helpers/libusb_version.c (100%) rename {libcyusbserial-master => cylib}/cmake/modules/FindLibPThreadsWin32.cmake (100%) rename {libcyusbserial-master => cylib}/cmake/modules/FindLibUSB.cmake (100%) rename {libcyusbserial-master => cylib}/include/CMakeLists.txt (100%) rename {libcyusbserial-master => cylib}/include/CyUSBSerial.h (100%) rename {release/cylib => cylib}/lib/CMakeLists.txt (100%) rename {release/cylib => cylib}/lib/CyUSBCommon.h (100%) rename {libcyusbserial-master => cylib}/lib/cyi2c.c (100%) rename {libcyusbserial-master => cylib}/lib/cyjtag.c (100%) rename {release/cylib => cylib}/lib/cymisc.c (100%) rename {libcyusbserial-master => cylib}/lib/cyphdc.c (100%) rename {release/cylib => cylib}/lib/cyspi.c (100%) rename {release/cylib => cylib}/lib/cyuart.c (100%) rename {release/cylib => cylib}/lib/cyusb.c (100%) rename {libcyusbserial-master => cylib/libcyusbserial-master}/.gitignore (100%) rename {libcyusbserial-master => cylib/libcyusbserial-master}/.travis.yml (100%) rename {libcyusbserial-master => cylib}/tools/CMakeLists.txt (100%) rename {libcyusbserial-master => cylib}/tools/README.txt (100%) rename {libcyusbserial-master => cylib}/tools/cyusbserialtest.c (100%) rename {release/cylib => cylib}/windows/gettimeofday.c (100%) rename {release/cylib => cylib}/windows/include/c99/inttypes.h (100%) rename {release/cylib => cylib}/windows/include/c99/stdbool.h (100%) rename {release/cylib => cylib}/windows/include/sys/time.h (100%) rename {release/cylib => cylib}/windows/usleep.c (100%) rename CyUSBSerial API Documentation.pdf => docs/CyUSBSerial API Documentation.pdf (100%) rename {release => docs}/manual.md (100%) delete mode 100644 files for command line utility.zip delete mode 100644 libcyusbserial-master.zip delete mode 100644 libcyusbserial-master/CMakeLists.txt delete mode 100644 libcyusbserial-master/appveyor.yml delete mode 100644 libcyusbserial-master/lib/CMakeLists.txt delete mode 100644 libcyusbserial-master/lib/CyUSBCommon.h delete mode 100644 libcyusbserial-master/lib/cymisc.c delete mode 100644 libcyusbserial-master/lib/cyspi.c delete mode 100644 libcyusbserial-master/lib/cyuart.c delete mode 100644 libcyusbserial-master/lib/cyusb.c create mode 100644 package.zip delete mode 100644 release/cylib/COPYING.LESSER.txt delete mode 100644 release/cylib/Doxyfile delete mode 100644 release/cylib/README.md delete mode 100644 release/cylib/cmake/helpers/libusb_version.c delete mode 100644 release/cylib/cmake/modules/FindLibPThreadsWin32.cmake delete mode 100644 release/cylib/cmake/modules/FindLibUSB.cmake delete mode 100644 release/cylib/include/CMakeLists.txt delete mode 100644 release/cylib/lib/cyi2c.c delete mode 100644 release/cylib/lib/cyjtag.c delete mode 100644 release/cylib/lib/cyphdc.c delete mode 100644 release/cylib/libcyusbserial-master/.gitignore delete mode 100644 release/cylib/libcyusbserial-master/.travis.yml delete mode 100644 release/cylib/tools/CMakeLists.txt delete mode 100644 release/cylib/tools/README.txt delete mode 100644 release/cylib/tools/cyusbserialtest.c delete mode 100644 release/tinio/Makefile delete mode 100644 release/tinio/include/CyUSBSerial.h delete mode 100644 release/tinio/tinio.cpp rename {release/tinio => tinio}/Command_Utility.c (100%) rename {release/tinio => tinio}/include/CyUSBBootloader.h (100%) rename {release/cylib => tinio}/include/CyUSBSerial.h (100%) diff --git a/CyUSBSerial_SDK_Linux/README.txt b/CyUSBSerial_SDK_Linux/README.txt deleted file mode 100644 index 96450c3..0000000 --- a/CyUSBSerial_SDK_Linux/README.txt +++ /dev/null @@ -1,36 +0,0 @@ -======================================================================================== - Cypress Semiconductor Corporation - CyUSB Serial library. -========================================================================================= -Pre-requisite: -1. libusb-1.0.9 is required for compilation and functioning of the APIs in the library. -2. GNU Make and the GCC tool-chain are used for the build process. - -Installation steps: - -1.cd to the main directory where the library source files are extracted and goto ./linux/library - -2.Type 'sudo make'. - -2.This will generate shared library libcyusbserial.so.1 and its soft link libcyusbserial.so. - Both of them will be copied/installed to /usr/local/lib. - -3.Go to ./linux/testUtility (I2C/SPI test utility program) and type 'sudo make'. -This will generate CyUSBSerialTestUtility binary (Refer to README in testUtility folder). - -4.User can launch the application and test the communication with Cypress USB-Serial DVk in vendor mode. - -Changing USB device node permission: - -By default the USB device node created in linux do not have read/write permission -for normal user. In order to make the USB device node accessable, copy 90-cyusb.rules -which is inside the library folder of release package to /etc/udev/rules.d folder (Default VID mentioned is Cypress VID -which is 0x4B4, if VID is changed then update it in ATTR{idVendor} section of rules file). - -*** IMPORTANT: -Some distribution of linux have libusb (older version) as part of their package. Uninstall -the older version and update it with libusb-1.0.9. - -**Note: -Refer to ./common/doc/CyUSBSerial API documentation.pdf for description of all -the vendor mode APIs. The header file of the library is in ./common/header/CyUSBSerial.h. diff --git a/CyUSBSerial_SDK_Linux/common/doc/CyUSBSerial API Documentation.pdf b/CyUSBSerial_SDK_Linux/common/doc/CyUSBSerial API Documentation.pdf deleted file mode 100644 index 8c5a8d0..0000000 --- a/CyUSBSerial_SDK_Linux/common/doc/CyUSBSerial API Documentation.pdf +++ /dev/null @@ -1,10180 +0,0 @@ -%PDF-1.3 - -1 0 obj -<< -/CreationDate (20130531173412) -/Producer (Doc-O-Matic 5) -/Author (Cypress Semiconductor Corporation) -/Title (USB Serial Library API Guide) ->> -endobj - -2 0 obj -<< -/Type /Catalog -/Outlines 3 0 R -/Pages 100 0 R -/Names 754 0 R -/PageMode /UseOutlines -/OpenAction [101 0 R /Fit ] ->> -endobj - -3 0 obj -<< -/Type /Outlines -/Count 13 -/First 4 0 R -/Last 4 0 R ->> -endobj - -4 0 obj -<> -endobj - -5 0 obj -<> -endobj - -6 0 obj -<> -endobj - -7 0 obj -<> -endobj - -8 0 obj -<> -endobj - -9 0 obj -<> -endobj - -10 0 obj -<> -endobj - -11 0 obj -<> -endobj - -12 0 obj -<> -endobj - -13 0 obj -<> -endobj - -14 0 obj -<> -endobj - -15 0 obj -<> -endobj - -16 0 obj -<> -endobj - -17 0 obj -<> -endobj - -18 0 obj -<> -endobj - -19 0 obj -<> -endobj - -20 0 obj -<> -endobj - -21 0 obj -<> -endobj - -22 0 obj -<> -endobj - -23 0 obj -<> -endobj - -24 0 obj -<> -endobj - -25 0 obj -<> -endobj - -26 0 obj -<> -endobj - -27 0 obj -<> -endobj - -28 0 obj -<> -endobj - -29 0 obj -<> -endobj - -30 0 obj -<> -endobj - -31 0 obj -<> -endobj - -32 0 obj -<> -endobj - -33 0 obj -<> -endobj - -34 0 obj -<> -endobj - -35 0 obj -<> -endobj - -36 0 obj -<> -endobj - -37 0 obj -<> -endobj - -38 0 obj -<> -endobj - -39 0 obj -<> -endobj - -40 0 obj -<> -endobj - -41 0 obj -<> -endobj - -42 0 obj -<> -endobj - -43 0 obj -<> -endobj - -44 0 obj -<> -endobj - -45 0 obj -<> -endobj - -46 0 obj -<> -endobj - -47 0 obj -<> -endobj - -48 0 obj -<> -endobj - -49 0 obj -<> -endobj - -50 0 obj -<> -endobj - -51 0 obj -<> -endobj - -52 0 obj -<> -endobj - -53 0 obj -<> -endobj - -54 0 obj -<> -endobj - -55 0 obj -<> -endobj - -56 0 obj -<> -endobj - -57 0 obj -<> -endobj - -58 0 obj -<> -endobj - -59 0 obj -<> -endobj - -60 0 obj -<> -endobj - -61 0 obj -<> -endobj - -62 0 obj -<> -endobj - -63 0 obj -<> -endobj - -64 0 obj -<> -endobj - -65 0 obj -<> -endobj - -66 0 obj -<> -endobj - -67 0 obj -<> -endobj - -68 0 obj -<> -endobj - -69 0 obj -<> -endobj - -70 0 obj -<> -endobj - -71 0 obj -<> -endobj - -72 0 obj -<> -endobj - -73 0 obj -<> -endobj - -74 0 obj -<> -endobj - -75 0 obj -<> -endobj - -76 0 obj -<> -endobj - -77 0 obj -<> -endobj - -78 0 obj -<> -endobj - -79 0 obj -<> -endobj - -80 0 obj -<> -endobj - -81 0 obj -<> -endobj - -82 0 obj -<> -endobj - -83 0 obj -<> -endobj - -84 0 obj -<> -endobj - -85 0 obj -<> -endobj - -86 0 obj -<> -endobj - -87 0 obj -<> -endobj - -88 0 obj -<> -endobj - -89 0 obj -<> -endobj - -90 0 obj -<> -endobj - -91 0 obj -<> -endobj - -92 0 obj -<> -endobj - -93 0 obj -<> -endobj - -94 0 obj -<> -endobj - -95 0 obj -<> -endobj - -96 0 obj -<> -endobj - -97 0 obj -<> -endobj - -98 0 obj -<> -endobj - -99 0 obj -<> -endobj - -100 0 obj -<< -/Type /Pages -/Count 56 -/Kids [ 101 0 R 104 0 R - 107 0 R 178 0 R 253 0 R 302 0 R 305 0 R 308 0 R 311 0 R 314 0 R 319 0 R 327 0 R - 338 0 R 349 0 R 359 0 R 372 0 R 382 0 R 388 0 R 402 0 R 408 0 R 417 0 R 429 0 R - 437 0 R 447 0 R 453 0 R 462 0 R 469 0 R 483 0 R 495 0 R 500 0 R 504 0 R 508 0 R - 515 0 R 520 0 R 525 0 R 531 0 R 536 0 R 544 0 R 550 0 R 559 0 R 565 0 R 572 0 R - 577 0 R 582 0 R 588 0 R 595 0 R 603 0 R 608 0 R 616 0 R 622 0 R 630 0 R 637 0 R - 642 0 R 649 0 R 652 0 R 733 0 R ] ->> -endobj - -101 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 102 0 R -/Annots 103 0 R ->> -endobj - -102 0 obj -<< -/Length 56 -/Filter [/FlateDecode] ->> -stream -x3R*23434q M  ,sy \yy;` -endstream -endobj - -103 0 obj -[] -endobj - -104 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 105 0 R -/Annots 106 0 R ->> -endobj - -105 0 obj -<< -/Length 998 -/Filter [/FlateDecode] ->> -stream -xڍU]6}pJ^>BH͗tpFm/{ i4ƾs} [%Rp`OEթBVBREI sh*L~g (LZ]lBt&L xyh+DZԀcU^YA H0UJyʀ(\3'RiY Ӣຉ7w;@n]BՠnJ7X -2=Sג5W -Ѝ;չ6閯dZfdMhTcA7qMhi.ok{ e~0zQ+Lw 2(ǚLgdnϼ;cM;d̘kp|hs{DETS>oiU]kendstream -endobj - -106 0 obj -[] -endobj - -107 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 108 0 R -/Annots 109 0 R ->> -endobj - -108 0 obj -<< -/Length 994 -/Filter [/FlateDecode] ->> -stream -xڍnH>/I]?n 2NCG> .12|G> 4|psߦugy!o4˱ %Z fCt k_I2_mWI[\^j!OM- RKGB&fJòȑ #3C?mV- -< -SJ:EQaȂp|{WcFZnƧe7+=Ə_9?ڈ-F'w6},qQT; yR8"؂q=L -pqX9b Ϛ*m[&{J0#K 7&P:5a##g6H>Krf._6s] -~ݢ -Y;3uVBG(4 2mBU`XbQU_G<(9j,]λ& 9Ǝ\(2]0OTsL091 U|@ȑ!wD(}CStؼH9f|PxHcIa>y^L.& Na4S=i%)zQ(:l5Z}ؾՂ@c̀E+\P坎&v+ -ȉRww(`pV0Wׅ̕~ΒvY=$;z)hoٜ -:8*uʞt8H-bkVʾQB9R14endstream -endobj - -109 0 obj -[110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R -118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R -126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R -134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R -142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R -150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R -158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R -166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R -174 0 R 175 0 R 176 0 R 177 0 R ] -endobj - -110 0 obj -<> ->> -endobj - -111 0 obj -<> ->> -endobj - -112 0 obj -<> ->> -endobj - -113 0 obj -<> ->> -endobj - -114 0 obj -<> ->> -endobj - -115 0 obj -<> ->> -endobj - -116 0 obj -<> ->> -endobj - -117 0 obj -<> ->> -endobj - -118 0 obj -<> ->> -endobj - -119 0 obj -<> ->> -endobj - -120 0 obj -<> ->> -endobj - -121 0 obj -<> ->> -endobj - -122 0 obj -<> ->> -endobj - -123 0 obj -<> ->> -endobj - -124 0 obj -<> ->> -endobj - -125 0 obj -<> ->> -endobj - -126 0 obj -<> ->> -endobj - -127 0 obj -<> ->> -endobj - -128 0 obj -<> ->> -endobj - -129 0 obj -<> ->> -endobj - -130 0 obj -<> ->> -endobj - -131 0 obj -<> ->> -endobj - -132 0 obj -<> ->> -endobj - -133 0 obj -<> ->> -endobj - -134 0 obj -<> ->> -endobj - -135 0 obj -<> ->> -endobj - -136 0 obj -<> ->> -endobj - -137 0 obj -<> ->> -endobj - -138 0 obj -<> ->> -endobj - -139 0 obj -<> ->> -endobj - -140 0 obj -<> ->> -endobj - -141 0 obj -<> ->> -endobj - -142 0 obj -<> ->> -endobj - -143 0 obj -<> ->> -endobj - -144 0 obj -<> ->> -endobj - -145 0 obj -<> ->> -endobj - -146 0 obj -<> ->> -endobj - -147 0 obj -<> ->> -endobj - -148 0 obj -<> ->> -endobj - -149 0 obj -<> ->> -endobj - -150 0 obj -<> ->> -endobj - -151 0 obj -<> ->> -endobj - -152 0 obj -<> ->> -endobj - -153 0 obj -<> ->> -endobj - -154 0 obj -<> ->> -endobj - -155 0 obj -<> ->> -endobj - -156 0 obj -<> ->> -endobj - -157 0 obj -<> ->> -endobj - -158 0 obj -<> ->> -endobj - -159 0 obj -<> ->> -endobj - -160 0 obj -<> ->> -endobj - -161 0 obj -<> ->> -endobj - -162 0 obj -<> ->> -endobj - -163 0 obj -<> ->> -endobj - -164 0 obj -<> ->> -endobj - -165 0 obj -<> ->> -endobj - -166 0 obj -<> ->> -endobj - -167 0 obj -<> ->> -endobj - -168 0 obj -<> ->> -endobj - -169 0 obj -<> ->> -endobj - -170 0 obj -<> ->> -endobj - -171 0 obj -<> ->> -endobj - -172 0 obj -<> ->> -endobj - -173 0 obj -<> ->> -endobj - -174 0 obj -<> ->> -endobj - -175 0 obj -<> ->> -endobj - -176 0 obj -<> ->> -endobj - -177 0 obj -<> ->> -endobj - -178 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 179 0 R -/Annots 180 0 R ->> -endobj - -179 0 obj -<< -/Length 978 -/Filter [/FlateDecode] ->> -stream -xڍ]oJ{yzݝ$AE\UN0WInj3ݝ`{_~O|>B -,=I˅%~06݌GXw9xnr4Xpm\F5-$ D'A28G6i U\nБkÝ= -}>"eF},`)FuNgd2Rd{P,3r[_xWyU^l`:cu2\ xc &CRocoDJ]䝫E rGYuobyOٖ# hcǛeAi;G4_|I?ZGH -@MVbQD%GķU6-Jj?`= {Z% փ༨` YǓKӝA!M^ev$X(ϛz)o-@!wϳ5TwE/ݽE-`9@1n@f QnPqF?!]A - ArQq΁Nq#nl\+9\cxtqʛUN$+TKY2@t~0K4X .{!OjXl3(OHg8<<$8nmKH#"`2X⫪@bԟWYZ,J{Ǖ#H452t"XHӂ9% غfHp'c?YFd{6"F8U?/>$}\eXx[wb739/)A@T b.*[.q%,bH]mSn>*gljQ'> ~$U08# K4~* EWwxpT1֘PrwGXRŇ/ce]'e?w?ZBendstream -endobj - -180 0 obj -[181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R -189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R -197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R -205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R -213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R -221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R -229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R -237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R -245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R -] -endobj - -181 0 obj -<> ->> -endobj - -182 0 obj -<> ->> -endobj - -183 0 obj -<> ->> -endobj - -184 0 obj -<> ->> -endobj - -185 0 obj -<> ->> -endobj - -186 0 obj -<> ->> -endobj - -187 0 obj -<> ->> -endobj - -188 0 obj -<> ->> -endobj - -189 0 obj -<> ->> -endobj - -190 0 obj -<> ->> -endobj - -191 0 obj -<> ->> -endobj - -192 0 obj -<> ->> -endobj - -193 0 obj -<> ->> -endobj - -194 0 obj -<> ->> -endobj - -195 0 obj -<> ->> -endobj - -196 0 obj -<> ->> -endobj - -197 0 obj -<> ->> -endobj - -198 0 obj -<> ->> -endobj - -199 0 obj -<> ->> -endobj - -200 0 obj -<> ->> -endobj - -201 0 obj -<> ->> -endobj - -202 0 obj -<> ->> -endobj - -203 0 obj -<> ->> -endobj - -204 0 obj -<> ->> -endobj - -205 0 obj -<> ->> -endobj - -206 0 obj -<> ->> -endobj - -207 0 obj -<> ->> -endobj - -208 0 obj -<> ->> -endobj - -209 0 obj -<> ->> -endobj - -210 0 obj -<> ->> -endobj - -211 0 obj -<> ->> -endobj - -212 0 obj -<> ->> -endobj - -213 0 obj -<> ->> -endobj - -214 0 obj -<> ->> -endobj - -215 0 obj -<> ->> -endobj - -216 0 obj -<> ->> -endobj - -217 0 obj -<> ->> -endobj - -218 0 obj -<> ->> -endobj - -219 0 obj -<> ->> -endobj - -220 0 obj -<> ->> -endobj - -221 0 obj -<> ->> -endobj - -222 0 obj -<> ->> -endobj - -223 0 obj -<> ->> -endobj - -224 0 obj -<> ->> -endobj - -225 0 obj -<> ->> -endobj - -226 0 obj -<> ->> -endobj - -227 0 obj -<> ->> -endobj - -228 0 obj -<> ->> -endobj - -229 0 obj -<> ->> -endobj - -230 0 obj -<> ->> -endobj - -231 0 obj -<> ->> -endobj - -232 0 obj -<> ->> -endobj - -233 0 obj -<> ->> -endobj - -234 0 obj -<> ->> -endobj - -235 0 obj -<> ->> -endobj - -236 0 obj -<> ->> -endobj - -237 0 obj -<> ->> -endobj - -238 0 obj -<> ->> -endobj - -239 0 obj -<> ->> -endobj - -240 0 obj -<> ->> -endobj - -241 0 obj -<> ->> -endobj - -242 0 obj -<> ->> -endobj - -243 0 obj -<> ->> -endobj - -244 0 obj -<> ->> -endobj - -245 0 obj -<> ->> -endobj - -246 0 obj -<> ->> -endobj - -247 0 obj -<> ->> -endobj - -248 0 obj -<> ->> -endobj - -249 0 obj -<> ->> -endobj - -250 0 obj -<> ->> -endobj - -251 0 obj -<> ->> -endobj - -252 0 obj -<> ->> -endobj - -253 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 254 0 R -/Annots 255 0 R ->> -endobj - -254 0 obj -<< -/Length 747 -/Filter [/FlateDecode] ->> -stream -xڍMO@^߻G$U4"F]bې cJ;NbcE;3;dy2>xe*]o'MYlןYsYɕYc9~>d.'l15Vx W. 1ABYpjlDX,]ŘDiV}YJ*Dp0fe J̆=8-٠Z-̆5˗4A`k2lh9vmCpN]'gߩXkY,etI5n+b/>.rA\6FR֧wFf@ oRڈ;6cWh[u4h)yP=YA(p[gh7|oVٟ k:Ғ{9% 2q;k??; - 9ƬsEIp(NAhza&U JǶzd0YG=z19TX\זLjk pk ܲ 7ks\n˛d~V,Mws̊<]WWUwʭN`HNQ -3Jݮ$)pAv -ǤUT;Q:MXGwS)endstream -endobj - -255 0 obj -[256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R -264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R -272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R -280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R -288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R -296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R ] -endobj - -256 0 obj -<> ->> -endobj - -257 0 obj -<> ->> -endobj - -258 0 obj -<> ->> -endobj - -259 0 obj -<> ->> -endobj - -260 0 obj -<> ->> -endobj - -261 0 obj -<> ->> -endobj - -262 0 obj -<> ->> -endobj - -263 0 obj -<> ->> -endobj - -264 0 obj -<> ->> -endobj - -265 0 obj -<> ->> -endobj - -266 0 obj -<> ->> -endobj - -267 0 obj -<> ->> -endobj - -268 0 obj -<> ->> -endobj - -269 0 obj -<> ->> -endobj - -270 0 obj -<> ->> -endobj - -271 0 obj -<> ->> -endobj - -272 0 obj -<> ->> -endobj - -273 0 obj -<> ->> -endobj - -274 0 obj -<> ->> -endobj - -275 0 obj -<> ->> -endobj - -276 0 obj -<> ->> -endobj - -277 0 obj -<> ->> -endobj - -278 0 obj -<> ->> -endobj - -279 0 obj -<> ->> -endobj - -280 0 obj -<> ->> -endobj - -281 0 obj -<> ->> -endobj - -282 0 obj -<> ->> -endobj - -283 0 obj -<> ->> -endobj - -284 0 obj -<> ->> -endobj - -285 0 obj -<> ->> -endobj - -286 0 obj -<> ->> -endobj - -287 0 obj -<> ->> -endobj - -288 0 obj -<> ->> -endobj - -289 0 obj -<> ->> -endobj - -290 0 obj -<> ->> -endobj - -291 0 obj -<> ->> -endobj - -292 0 obj -<> ->> -endobj - -293 0 obj -<> ->> -endobj - -294 0 obj -<> ->> -endobj - -295 0 obj -<> ->> -endobj - -296 0 obj -<> ->> -endobj - -297 0 obj -<> ->> -endobj - -298 0 obj -<> ->> -endobj - -299 0 obj -<> ->> -endobj - -300 0 obj -<> ->> -endobj - -301 0 obj -<> ->> -endobj - -302 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 303 0 R -/Annots 304 0 R ->> -endobj - -303 0 obj -<< -/Length 13 -/Filter [/FlateDecode] ->> -stream -x3Rendstream -endobj - -304 0 obj -[] -endobj - -305 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 306 0 R -/Annots 307 0 R ->> -endobj - -306 0 obj -<< -/Length 919 -/Filter [/FlateDecode] ->> -stream -xڍVrH}l3"iCƮ> 4I5#!m +N.|ӗs0P~t2[0QvӉ`D:*\ _;<M5ACGwK BMh[z[Y -q-)d]lūm:-E+:"L!~?Z8LyƄD*Ɏߓr(J&ѮG$E="đvh_Z(ʅ]R]+rNCյIϵef7MlPԯ:.FhBCq!4qV.&ɶ?-y;qyaLXZל[3_GG/[yf --y-]Nr̯ $r/&s=53X98fn#1=Rհz%Jt -v 3LQek+)8\}pꙪOkdƄ ¹xsmHuR=iJgG{%-kn?>l@^^[}ږw\vu1uSI[U1JfVQ/ -}}_^xxHUDP܏s  y~Q,GσHF2Dݻ9H8fyoF -cΘ|N%y֚9V':g휖WHy7FV<*?}[<| V} pKB?e[?٭W<$8)*ؘQ񈯤Ւ -y~%¯B}$r.5K#t[sSendstream -endobj - -307 0 obj -[] -endobj - -308 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 309 0 R -/Annots 310 0 R ->> -endobj - -309 0 obj -<< -/Length 751 -/Filter [/FlateDecode] ->> -stream -xڥKo@HYɼK&uNv06i{ 0\";3cnۭ"eڭ>C0E%jLqy}ESZ1ܪPwE9rW} - i8RF`"׆$Gy<+Mf4GmX(ZvٱO -e1zu_8}p8KgKUE+VS+n옺5JcP>>x 6ŊH̹%^ϲ4{0,(9gyi\]?b|/,nB,$"f]K<tnG&ܒ^- ZU'@}yO-ĊJ]讬 0]εŔUsl518jNt52'f:ް> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 312 0 R -/Annots 313 0 R ->> -endobj - -312 0 obj -<< -/Length 388 -/Filter [/FlateDecode] ->> -stream -x}KO0z8 VM8hJ"$~=bY3;>ME~CtcA;"k<([ԎưϪr0g9Հ2DZ~ -(%-:URҡ/䷏f(VHrX͒pendstream -endobj - -313 0 obj -[] -endobj - -314 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 315 0 R -/Annots 316 0 R ->> -endobj - -315 0 obj -<< -/Length 2773 -/Filter [/FlateDecode] ->> -stream -xڵnle,Pl*QH$'( ŢbRR ?H߷gH9g(FL"}ۏs#9%_ÐJ9%bFMMca|y}'g2U:/sPDnf{ J`e D8UJ쳧z%lނ9#Kkz(LϋY9%Nn_l'dņ,,'|Ga=lKYZ$2P9hۻWS̽y~2y]n#IIOvW -(ey.%3ӢÎ<^^[\tF [alAXX\]1#\n'ٶSrj(D+Wױ8ˆ2cedN5ߤ1alN"fbݜ0JŁ;i8Ml>?0)1鳃gc%p]T܏=F@IxVڃ7jjnjn YHl%\Қ UMD2qޗ{{}R?HD7bk(xNEJpČp&"-&a*  -!T*0"8LQq6g'b8S9C$= 1T🗢LoY0j 5^4Ԝl Jª&)ä́DZ -Hީj6pU`vLmGr]#ݠ,%m~̪cCb2pm3@nbȬ?g77lFJ/&3 .ꡇz|zmټk;|gbaDW8SD \"^-WocFnTk,Z"m( ;{d4OǿvfÂ{,#>PU,n)KK+`+ -{P:`Ehx-WzoR%HҰ%Y ayntx?t %8H&یeGExp${{m~wj`" ^ `R4Pj=F{޷m)5 -t+/ "mHit[{%8H錦ٿPC_Ub2W@WD|ٛ@LvK:[DB|y߶& +" .tHIMp|MLpٗv[,ݤt$Zu/r%P{ yEA/TGhl-WoRYוMJb&C:}@vp4m0M%o64i/l3گlc^lV.`"w/ jV^c\["XpJh XV -ꮻ&}e F*vV' fޮ^0/I:" -P+) -8h &S~햢u \R6mHEuU~##hx KáNwoXvXg77~B*ouAI^_{PyEA Vy;h'_h=Zz޵qOd`Itx )5#>(%ড়Oj>Nj4yU\gi -c lv՛> ->> -endobj - -318 0 obj -<> ->> -endobj - -319 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 320 0 R -/Annots 321 0 R ->> -endobj - -320 0 obj -<< -/Length 2290 -/Filter [/FlateDecode] ->> -stream -xڵY[o~jx<;S3I{(@ -$y!=LDf1@&9x.4E;?Xad}bcLDQC""1D ޞ^ߗo:?[OW#$\aL<1f =׎@) g1yyjW@Fvjp-eǵC!o$8zPkVVH UCgyXzCڏ I0c4Ȟ4`!bgoiL",r}Mrim Ѕ }P.e`X.p - VXrF;A.RC1 evw\˛! yUU~أ(E_Avk$##r -n:RCCu*Ba -PN@7# -$!XHA`(HE䀂 7/J916!jq\Z):€!TCtBaj(EJEX-ި`E@ej5#YK^T3vC"xStFXYǡ :@ BN" `hcx:c"nrYon!CݯIa&QY5X;Ό`cAR+!]KD<>^8P0`=^.V+VCX7 9;1۠m#p=fear(*UVKi7P8Q=Muw47tOyC]5TNk?1B$ -67/Z5kp262/Ŕ"C\ 6BC|$9$cMm}#!0\r1 -.8Q5+c5<1n$5G.03磣ZsNd狱oSEgT)uJPt?_f_s#oV*zP3H{LJeeSQ ́d%gRqBa -c#ĕaQ1NH@K0$l .69`@*"6!Rq\T):#yZǡ9CaR!2PfI۬mTg Œ NER0cPR -8R" ś52(tѫvkgh]>o'I$KoTk Sl8殖4(h,9 /_MoTc%P}jZP5Qsa y{6Jp~)!C1ev }pbeh+C:oLm8=]'윤Ui"|-ncq(0&Թ笚׭rxxo2jx셚8Y&ooؔm1S! :+P}jβ:uy,BAx(zN[gajJ{I _:b;@0sZ*pZEhܤ{UC=l(,sX71h3QD@GzQߎNH'ތoKj}vY&#{"uom۬DߗЭ?VܞDr(v:%Wx#~ٶK8HtMtoaYiͰվ)MڨwN]: -A{ -Wb-F )DJV\FXnLӣ/Pz Znd8=1dR7.G|q^ξD>Bu75oh%dz+';UyFQR)!fNJ"Niٗ_Yendstream -endobj - -321 0 obj -[322 0 R 323 0 R 324 0 R 325 0 R 326 0 R ] -endobj - -322 0 obj -<> ->> -endobj - -323 0 obj -<> ->> -endobj - -324 0 obj -<> ->> -endobj - -325 0 obj -<> ->> -endobj - -326 0 obj -<> ->> -endobj - -327 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 328 0 R -/Annots 329 0 R ->> -endobj - -328 0 obj -<< -/Length 2066 -/Filter [/FlateDecode] ->> -stream -xڵko]~i?9Ml֦.5nʒ!C{8#y(5Up_<$^G0uzå qF&'JPͽ%{Wd2==c^'\@eeΒ$d?oN; pʼDXOk*dU2QԖKnRJjcYrPnTYj-)Pr@J. yjIPIݴ-yY Kѧ^iC -iq;%zY14H]'4(bFkr0,5cYCh eҳvG?ߌlz39 u0'ĉQIR-LR|!Gu,Lqqb`^(#RDDEHZm更}w 0H UFφS -NR)C8ѰX1q[xy/6zHQ:]^zGdِr{1 (DTXg -xb_3" p -6MþjM< -E OV*vJRi dbOÁ *졾\t+p[p' -}.r1BǩuUPUf`$ی2V&a]L!HG!YD!*Ka[xtq?Gi)A8N=7~.Wǻwd}s)M޳yA0=C7 'Qp^Y)(lEh)7i`A,}K~zJܳR)Cpݟ JGxLK(p;p5Ѷ,1{ ޵彤* ̪HAfUt~)""p -6MþB B$/H;B8R#-!}zn| ThzZEofݺoTNRǢ)p|UzJ6_HGj2]^<[7⡦d W8]_+&yUf,$nap16osbgz -d2W1*jQvAAQw0ul](Ick'<퀏:JVdק}siCKP'oj56 }z-!Hb4Zʬs72ƒu9=.}{_ox> ->> -endobj - -331 0 obj -<> ->> -endobj - -332 0 obj -<> ->> -endobj - -333 0 obj -<> ->> -endobj - -334 0 obj -<> ->> -endobj - -335 0 obj -<> ->> -endobj - -336 0 obj -<> ->> -endobj - -337 0 obj -<> ->> -endobj - -338 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 339 0 R -/Annots 340 0 R ->> -endobj - -339 0 obj -<< -/Length 2303 -/Filter [/FlateDecode] ->> -stream -xڵZn8}7=`Xrk-y[1![TDՊYqaR/a3==Qj,1Q"_.f)e],uzrس_-i3I5s}y){*˂ =mM5Ymeo 7 %}\"+2ސ_goZXrDyEnXcQT.Z]"ۻcS{Ydž6bCnƇ#!E-7aWܒ!Eo8Թ.:F$nK>f0zWܧ!Xn%vzE[@fBæZf,*ũ}T0iJ_[rɇV aR=Χ `os}z(|r.76 ˕JQ|4<{yv)5bRDQUfOܪ.-r u#_RϏ=m/yjŚ bVSa3ke%1' [K%pܐ I@'iV8N4ù`˹4r)o'8,6hÀ #6^AV? '-pjdRHz͠deJbȇ]\A|"p0ɮ(K2QbqZ; 5 jxӣJFM@X&BQ?j6y~qƙ@vߵ;RD -iL29pfi)7\$H6WC,*O'iej& -Fap a(ыA*"zDCe.KgF% ؈7`` -Ns% -F7% Ir2 ryW=`Vm X#nB|:D>Ȭ?BxBU1cG;vQA{#†, -f;RRc_>P+#{^c\v#RڟbX^m .&$x` \]!PEd0^RbFBB\_ Ԇ2WQ*+l9tǾhH{x7=y""<[R( 6wF- ط}}XW -WFl |~7%>ga^ wŘ  &zhVax16b?W ;vL9 g׳N]\] 8eTɁͧ= 9zAljeD't?wPY0 ;}gv,Q["` -_V{z+bl1F '̍]L^ 5,l hwHXfEq\xAޙö 8̪}r.U%ɾ= -jEՁ _w!z# Lr,:h#!ؘN` -G%露LƱWo)H˰c$5YwlC?¤V?PNυ̲D9u3FjHCc#ހ}wHlL94Wrb`D)U+g~=$(3AqEtq%Fk:Ehp{l n,$9=pRn"`D)Q~ -f&.&Y;gt8J1忈n:D7`pq(*eGCc#ހ}wHuE̤{NZ8 -F7(Ʊn/' G†:gIZ_EJ m -X:Ehp{l rUc/IeRD^Se3!:U4WA\yEC#i)uEƼl0"޾Vvw%@ 2 F8Gӌ߄'a{`I0ba?4;6V@ϖiΖgk!|r12hv yz)ѥ41L7?OK.G/,@`;`3prbTkFyeIjxwM׳˫[</%zFxGil`hLA0 1(-_AL[: 1#Sn.F4Im,FNl\kendstream -endobj - -340 0 obj -[341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R -] -endobj - -341 0 obj -<> ->> -endobj - -342 0 obj -<> ->> -endobj - -343 0 obj -<> ->> -endobj - -344 0 obj -<> ->> -endobj - -345 0 obj -<> ->> -endobj - -346 0 obj -<> ->> -endobj - -347 0 obj -<> ->> -endobj - -348 0 obj -<> ->> -endobj - -349 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 350 0 R -/Annots 351 0 R ->> -endobj - -350 0 obj -<< -/Length 1307 -/Filter [/FlateDecode] ->> -stream -xڵX[OF~0>!4Uˢ% UU 1DÊߞ3lB™\3g/r:!埧s!-ɱ#Lp5|-NN^VJbj'gi9Ktkϭ3"0Tv#g"[ 0g,5UaIFJ*,c=*VKރo, -.(%AAΊY2ߕ; ڀd %恆ĔZFfv<9O?!2c yY%en1q,S~*3U ΀5nQ^ ̓M9bQ@:͓KsP9YY- -SXN|uVɛ~) QS ---("saHW&.i Nendstream -endobj - -351 0 obj -[352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R ] -endobj - -352 0 obj -<> ->> -endobj - -353 0 obj -<> ->> -endobj - -354 0 obj -<> ->> -endobj - -355 0 obj -<> ->> -endobj - -356 0 obj -<> ->> -endobj - -357 0 obj -<> ->> -endobj - -358 0 obj -<> ->> -endobj - -359 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 360 0 R -/Annots 361 0 R ->> -endobj - -360 0 obj -<< -/Length 1817 -/Filter [/FlateDecode] ->> -stream -xڵYn6}7c[ ^۩ AQk[7؋&v(-%b1:sf9$ N ?70<)A5)S\Of,_L&_Z,NŸO{v5DԒ:$y ׊Z k*$C;Qc}@`}4r) Ψf̵;w쩘M!FC F%,|aUmkƨpRckAHAJQ#k^h0[%%jwJb̻1-.b$U۬kjBMx˼]9*#}KhƈC$a$uy5 ([~))JyxW:C"=b1AZbIB4Fu%h퇢EZ$BMx˼],f>(S<m$^aE Ki$".Pj,iF*8#&A3"[]ۗv =ADZ"JB4FɩqBvĢjc1"޺`WX ^C # $ڈ́$Ӄ1Nb:|ڧ'K64:_]BL^F5Ʒ4/ƠCa U@ًh38nx`:/0_6=ŀ8?^?pb(mBbeP /B U犴["-Xe_HP1vje8a<㰣op?SJǙ|~v{l=smR|'ۧ N<[gNL´w v(̓dn>3ۨ V4^U `zU8]OƟ><__"l\wR3uvJߓopa/AMniR<pe J%8Mn$Yr[u;;Lp~ nh^%?եN.8_]q)vCץj]ejZ)nXI]zUʆ؊V mvxzOpqd1?VoНC#50^NZc@)u' ZCN"-N& e.@Ԣem$^a΢G-_ی$zp@i}DzzZ'&Z)Pa2o j٧pFzƈ^986ݰ9Ϩ;t%y@Rȃ<\-$!j#BY5@TȉT؄qraN$VKTtXlؚNwl~_ RLŔCX$^ - -FdZYF6+gazt63rzø50n4#w5۷J%h:ͼn{x],#u\}͡ӖMt4;E V9wƭ6F#ÖpN+on8Ú!y; meRO˳;<B[Vs}J|6fvzae#?ߝ)HF!&JpK#*B2So%̎)R*"4Im,Fendstream -endobj - -361 0 obj -[362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R -370 0 R 371 0 R ] -endobj - -362 0 obj -<> ->> -endobj - -363 0 obj -<> ->> -endobj - -364 0 obj -<> ->> -endobj - -365 0 obj -<> ->> -endobj - -366 0 obj -<> ->> -endobj - -367 0 obj -<> ->> -endobj - -368 0 obj -<> ->> -endobj - -369 0 obj -<> ->> -endobj - -370 0 obj -<> ->> -endobj - -371 0 obj -<> ->> -endobj - -372 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 373 0 R -/Annots 374 0 R ->> -endobj - -373 0 obj -<< -/Length 1416 -/Filter [/FlateDecode] ->> -stream -xڵXn6}c \+;\$ n((H.!JHJV")pxݝ#/wwñ qFw;RPŝ!9$dzUb+~99:2W9*VY -j8'I]U+ʝvIVίY9ˋj'H¶i S`j6Rwc#_N/.||ty5xN6.R+gT0b5_YN`XT =C9 .=RMgURi}&?JoX)Ef R>?f$ȖeAf1b6X -,ӣ_ r#زFm-sŌgcegQR9j *Uz<Ԣ s[Y HB& -}[od1__g}mTR˚Ok\'-~cjØ{y"#YC~1_lzѵ -ڒp%1\߹'w]:4qP+@/s!8 옊1ۉnkc`ҐE/n:ȮrrTc ԛH -~E'hB -j5VfLJՠWkAb\ -ոZkϜ`nh7 -dWG=~Omhg?^h A(LP Yqv.W#z/T\mYSs,X: MD&*KC1o'HPQ9"qGt"֘bGHGXl+D:o#a,^ZtZT:hq34ah2 m"4}D:NIN{c#۔A:cVj_'#pkH.D>B97n&ٻ(('"dL[QNcFh#5tCo'HPR: YW9W0&1QKIQ Q2Ɇd:PV?4C9 WG9X,8`)si;kzN&>۞`#iTIe C0^`S|N-5\3w^a+ljrxֹ_jR >cy#r2A&aܢ %X Ll8N'A s*7,K"X r8+gd(x[4`?j}Ex5O&fwu>Bāᖁt:_mjATj['Y߃U2EE?{r4:w5 -N>OΧ~0VLC UJ{ScfRˣ!E@Jc-endstream -endobj - -374 0 obj -[375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R ] -endobj - -375 0 obj -<> ->> -endobj - -376 0 obj -<> ->> -endobj - -377 0 obj -<> ->> -endobj - -378 0 obj -<> ->> -endobj - -379 0 obj -<> ->> -endobj - -380 0 obj -<> ->> -endobj - -381 0 obj -<> ->> -endobj - -382 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 383 0 R -/Annots 384 0 R ->> -endobj - -383 0 obj -<< -/Length 2403 -/Filter [/FlateDecode] ->> -stream -xڵnx^-E^I{AQ-'IlC'P2[pAg8$")#|tKD"u9h4}y15!>pĺv,QB1$MRH6Iݪ RG緣ɗp2ݏi0m-XDc {&A׃x6Ez'C%/]Ye*}Lf_GhWfj(/Me}zɶU7xbRDlɫEYlM=B$Bb|sQ*{\l2G*_vS_˓ -T4 }_r~FNRRj qߓϧD$J+II~ ÔA*f -( y"Ҕ_r%0%DŽRQٝu2/u@$ci VL}sfMax)+g}3<< -8z)3F* ObhʱӫA|Mvh*q(sE=2 n1q=5Ceya|Q/r/)[K 1:X'0:gAƊpFg%DZ,&q -֋="T օ8c,\c5*cIvKl0Fuڏ0}.I4.|/g }xCn'/p2 6Ip/y^*]s@{*Y,/OfcEyMFEBZ۰|@7?{U,#4ݢta؞@uabjߤSΠ~|;΍wёS -M4/ 8KbۯJ'0#x W)JRͷju?f0> ->> -endobj - -386 0 obj -<> ->> -endobj - -387 0 obj -<> ->> -endobj - -388 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 389 0 R -/Annots 390 0 R ->> -endobj - -389 0 obj -<< -/Length 1741 -/Filter [/FlateDecode] ->> -stream -xڵYRF}!s$O J((el$G43y==gz.ЯGAQ?|H!@rlHS%ÃOϏ&ǿN^$Q4d"bJ{8|HV#e4ch,]G+QŔ֎~n@ǏmfsuM15X -!z3Nn//>}̈+AwY|{_n=ݯW6zȱbL?gGh|>3#R)lQuȓϳ 0&]!0}@E"}Vi6|i^m.:oGQS Ōf -0c=o4_-# -mP{"(01%gX4:+X\K̳kk#[A4@L:f'A`r_-t*n2aB] -D%qzWRABjrŠY -1J0tۻz\ I[ +`Y'ٵ`le56Z- j%x ԙ6p"/ocF8NYڮ&gɗO'C{)ܩ|^M;4afpћ*Bl{G -\4kkF -jh# )TؐŎrɀ\w Zc!W-fY./QViqM&om)[[]Z\M-].ݿ;Uݕ>Ƹ18\ި6۞<6CƈmڡE{!境 1¶0ާͅ[o~n\}#M`z"|t?dS wij=T WlU֫thOzC?>lÈvRИf]IlHWp/| =qu`:PBy Q5)1V1~v"ƔmD~QG0yv:jM1]ma<[7fp{y3 hA+]U}|KqX{ZeS'nZJx-n?JGu<4읝C;jZ1:4jNLHF͉W.)$0,}n@YH."9K0PuWiZ\Rؘ(xv`.ltuR/u(endstream -endobj - -390 0 obj -[391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R -399 0 R 400 0 R 401 0 R ] -endobj - -391 0 obj -<> ->> -endobj - -392 0 obj -<> ->> -endobj - -393 0 obj -<> ->> -endobj - -394 0 obj -<> ->> -endobj - -395 0 obj -<> ->> -endobj - -396 0 obj -<> ->> -endobj - -397 0 obj -<> ->> -endobj - -398 0 obj -<> ->> -endobj - -399 0 obj -<> ->> -endobj - -400 0 obj -<> ->> -endobj - -401 0 obj -<> ->> -endobj - -402 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 403 0 R -/Annots 404 0 R ->> -endobj - -403 0 obj -<< -/Length 2498 -/Filter [/FlateDecode] ->> -stream -xڵnx"d -2 ,b0ti-Fw=ȼoac-~n_H#o gL xOܮr5lݬO%:?{{;|\-Nc \) O/.䓇v%;~۬_ˊÖl_|y:j>^|%>AaKA%-&&.MtLCl-ӬV$lE*]Ꮆ\I[fq߹f Z $2+- \[bKbbKbf˶MB uWVQDXS wE*L7k 0[ eһ%O ʬDᏖmtб&fN$ɤWpz -WWQD -k:I:_He)hUov 0^S^!8[/Y)=xYHu-$; ]1swe%L^uL>4 -ʞ> ->> -endobj - -406 0 obj -<> ->> -endobj - -407 0 obj -<> ->> -endobj - -408 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 409 0 R -/Annots 410 0 R ->> -endobj - -409 0 obj -<< -/Length 1977 -/Filter [/FlateDecode] ->> -stream -xڵZ]o}7xȃbˁ$2,EQJU+Y$;Cpwu1{pH #ӓ_.8a32==ђ:$S'ɟvo',3d<~C 8KRW]Z,I¯OS5D5S-'\+j-7/\SɄ$ۊܖ՚Z91Q|sSppʥt/'81WDw^~l.EhhQ!C0:cT8}K\FQ +2RHu fDX N^ly  -b&%xI&}؀_kR,^kƃna. ֖aod¢!"e=7jt}9/qVzY4+Fr>^,wjXܨci <6#qIObaC"-!f :oqb6L(ʼaKxq⚜1Y,A/2Qd -dM$PYg -Dk?\ESCo¾&2bDh<L2dD!2݈q;e2 p i<~ "U%k",nd!h퇢hq56MyX(U>|p|)+vPXH@Bt -oC=G/wSDB(YQ{bX(.Ң!9o&BE{M1J1vPjt6ս,іJ+^ ;vRAiS wj;g[nwՎ]Vw{o97X؇z'o77B -yAS>(YWݞo7sgÀ_3[ZzH`CTBŤB=.UyƚР^|%4!HPl5+1؍PJѸ2dt#[hkfJ X'qnR^q5G"EGided~A#:o*-XHr:P5 ] yċ-⠯\ !ǘmx\eq38<ΞVRNgZՄ,!{ z.U%( Y3jL3^Ёi+OßhQ:$`.Fcw_gXoy\-t S:^ GIjX -?eTendstream -endobj - -410 0 obj -[411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R ] -endobj - -411 0 obj -<> ->> -endobj - -412 0 obj -<> ->> -endobj - -413 0 obj -<> ->> -endobj - -414 0 obj -<> ->> -endobj - -415 0 obj -<> ->> -endobj - -416 0 obj -<> ->> -endobj - -417 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 418 0 R -/Annots 419 0 R ->> -endobj - -418 0 obj -<< -/Length 1933 -/Filter [/FlateDecode] ->> -stream -xڵYn7}7c,Iԭh c#meծmp/\r/ΦuQ HFg ᖡ^-r>}s!HJHS-5-G_0\^_t5x8:Y\@ߏ^/+oNiK8B L+0%)_t_hA߶6H3@P![pKbajh1d `È>:ufMh2Ro!K2diX0(m*t8eӅ0X@Mo>~F:jr0@ z타T@;5 М0M7`3?ƈAqstrMNvŐTI$Z\n3z{(ԙ\CǰA}~sdnEQ/os3Ҥź>67]gJ%upn?񻧆*/誌7- ?~;܂[rYSs͑zxjC#4*lb?'RIG&s礈0]^1NQ$3UA6Og뵻&ӎdQR۱KpPVkUqAA,j: -Bx#w. ACnh#)ؐc' bq q9'Z+;A\ܸ^&i9$jIkA̕p!9}U/iG p_bnip\)HC]oh#)T؀~OI[\"rLbज~b^1Nv &Pbsw{- -DWӄhXU~j*tnI>ɶlׯmFmJiw__t6Tf<8~Npt:Wǐp@.ȳLm# Dk n`#ż=lkx -C ̰pl Cy7FX?Ɍ`'|a(*a!O{`6-rX1~rs!ZrECk)\![*:;v>۵|S@π|cJ~)o݃}HwEt BytrR}U%\"OtY deGU Y)˪eʵ be l^ 3bQ(Nc8610x]dK@ޡƭY/dԀVKc:6%zuM%)m’mqlLj0dG`?Cou)5NQ/ -`crmXi> ->> -endobj - -421 0 obj -<> ->> -endobj - -422 0 obj -<> ->> -endobj - -423 0 obj -<> ->> -endobj - -424 0 obj -<> ->> -endobj - -425 0 obj -<> ->> -endobj - -426 0 obj -<> ->> -endobj - -427 0 obj -<> ->> -endobj - -428 0 obj -<> ->> -endobj - -429 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 430 0 R -/Annots 431 0 R ->> -endobj - -430 0 obj -<< -/Length 1467 -/Filter [/FlateDecode] ->> -stream -xڵX[o6~X/ؓ^ME1CZr͖ KnCIJCC9ΕoW œ B Z./ÒZ1@@^^<☩hųE5Bq7b({:gv&96pZYḬ ?2KQC]?9a,<4TLU+p8DHݸ{CwSB%SPlY!fUv(QN*:% FR'6H -[ kCB!rsL!2*g$3!+KїuV@e]ۼhPKOn1 Uϊ#y?FIԁFB3[ۆvДR`fjʶ^Ͽkb4ܣ%`'{qNE*\rDTĜ0`V=#%R$Ą -ƈYbʹ?8F dY;* >$HM}sF`ms8)@4Z 6^:GX FQl@Tׅ$I8ֿd`KK|,VJCZ6o*Ng@?RBV2 /${XhZ84XEo6A?o)P- ( .D2F +"d01B籭~ǘz0:5J7~iY,I1hHpQl6&bޡt׎a^ظVVN(4JzN Է;vn6k؃c{hDx,V C2*CM;Hb_0(YVG#^ط_o!NA F&𵟻.u\ lݥN8nu\.in ->U Cc93 -3) <V2Ϡa\K"-EZp7ѩՂՉ)M80ӳeYR8mĉ3:kF/ hAۍMꛣJ<2hȉp*fVU`C_޷ h@~ƴIF9LXgaVmq%JY e'.mO g>&5RĨ3X> ->> -endobj - -433 0 obj -<> ->> -endobj - -434 0 obj -<> ->> -endobj - -435 0 obj -<> ->> -endobj - -436 0 obj -<> ->> -endobj - -437 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 438 0 R -/Annots 439 0 R ->> -endobj - -438 0 obj -<< -/Length 2156 -/Filter [/FlateDecode] ->> -stream -xڵYmon/@U$ ٸ4zE jmVJ+E˳way8<)~:?{?{ A -}AWC)Qr00X)oĜ0m@Ċ2e,_bcDŔs%Xͪ.mY\v I3 c)c/,2fnnKIghVg\ig}LBY 46Z$֋|J0@UTT<I^pm*ÔJb1R,42blvǨ,:sՇ%LzS=.Ӗw18dV -?,QRȢ>hP8oT5bZ*D !^ѿOߠBḁU~,x)Ew\cCs i)dFih ށ6PBxy)Ay -Xh'DҞ39ff2$}Gr>S4ؘ /;tW 9ߖkP4( ->!(.6e5pEpFU_* j^'8:SPP͠ܥN\ r;GPbfpoP~~x;U[;%fD${$v8#c?5@0)#Uۼ.ۧʍJprO*N79GHqHhRZ|l wuƀw=XTm(܍"`}?v,9|QbTFL/'*+ʇR&15PC|U)5 &!Gs Ov/ߔώ9Ec˧ŌA*0gb Fnkyy{B1̐e?*w|pS5.>q M͔* -}T}Xq'Dʠ -00=Ya^>؛Ӿ@u-}<q *t\M(g-k&nQ^(CgK:ϚIESJmi99'Y[BcowǢέ@o{]AM k(2zl$Hq -#[nʈ-B'J@ -gq1nJTSI7O!QiiQ*cd1L0FSs͙iB2=m_YH;q7o?,.A7E_@u3li@sUӥXa,R*#?m77'!9Gu2S!:hendstream -endobj - -439 0 obj -[440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R ] -endobj - -440 0 obj -<> ->> -endobj - -441 0 obj -<> ->> -endobj - -442 0 obj -<> ->> -endobj - -443 0 obj -<> ->> -endobj - -444 0 obj -<> ->> -endobj - -445 0 obj -<> ->> -endobj - -446 0 obj -<> ->> -endobj - -447 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 448 0 R -/Annots 449 0 R ->> -endobj - -448 0 obj -<< -/Length 1143 -/Filter [/FlateDecode] ->> -stream -xڵKo6xlk8u6A$^(77*lːnA};-Ѧ`<8 E xa>1+AW3D;G̗|,]||AR Vm4\ؽɗ, -O'Oj Ȯȫ1_|K2nl&O7d/מX)w~eF |#_0Np}z.Mj3sP;T2! .po-5qP6,¹89gNu\ E@}}kHƨun5JQ-Ai0%emJ jʏ4%pMHlJLWk(\*Վ*E=2'$ne4 S8\D+s݁p Ym]U^.,*f$qnnkˮeI"ڼN3{CeQ-'+@cetfh1 c;cza!MAo҄&lzZB3HZ!Lo(ɁP}z#֘jϠրIߜ,TuٹkQmY|=;A4&\򷀷茈z6aiS62-av=1do96@Y5/7c]>? :C* '69f&V(Eg;"މk6bH-LS۷}zaco=eG`$mi h.Fwb]f.Phu!'j:zìLW7Ǯ,+cN'/׾I]e_KKE)8;WNn[1S턫sףU9'kı%/[rH7^'%dp{DI~~]b?ɐTvºөY}mk`Tk'#%]mZ`aS<cOl{}wJbˏVa 1)|R)CDR7T.V>I> ->> -endobj - -451 0 obj -<> ->> -endobj - -452 0 obj -<> ->> -endobj - -453 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 454 0 R -/Annots 455 0 R ->> -endobj - -454 0 obj -<< -/Length 1028 -/Filter [/FlateDecode] ->> -stream -xڝV[oH~G?c2gS (J"cc#_ڲglLcg"w|sc<rx!BAx$( 3 Zmƣ#Z;V^uAiӸ$/,,E7ΑoB4DGZjH)G]\F]X0IP[a ĢG~PxvqmbUehei -qwtPQ8ju.amjEW[*̸–U}\q!R줥$Fji2-**(E_{gy=[<ۛlm8r|=>EYlkCmQu.vbAk2r=qyiH!Lvm>y̪"9|8mB2%aQLlH߸„O{qokbP~6'/O> yYZuyĩ3 a&T PkX` ))nu{0!p -aQ4V7{,f=͖=:2r!`:@>~ؐRt$ -fq@ {ûסQ~%aw2N"\$.+-~i[v9:>]n<ݬ<2DS 3-zqw^> !e F$hyq-Wq2O4H8_;bx%]6hScXS(HW/ V -3b~ë+)8LJt0 wu;63tWśΈI4p=;j.\ v)F'\] DskX}$70U\sK_,"endstream -endobj - -455 0 obj -[456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R ] -endobj - -456 0 obj -<> ->> -endobj - -457 0 obj -<> ->> -endobj - -458 0 obj -<> ->> -endobj - -459 0 obj -<> ->> -endobj - -460 0 obj -<> ->> -endobj - -461 0 obj -<> ->> -endobj - -462 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 463 0 R -/Annots 464 0 R ->> -endobj - -463 0 obj -<< -/Length 1815 -/Filter [/FlateDecode] ->> -stream -xڵXn6}c[,SٺMEbdHr;,-v$1Fgf!Ax~CP3F#e & -X}u"Ui}MMh+9dđ -Sʢw IUSR1A~(_U.̳,YV -Uy y -Y~IUDxnOKJ|.dĴYB~XʖR$ 01P\$(xК<x))0 BǤEi5FH2l1!˥ʫx1ծH$x }ؗBJf@v'E -Q?S Vb[VCB ֌}\ۤJsD}B!{fjk$k ɩBQ9a -%2IC c$Šby2?F D=TI h[3mH6,~7KF -ˈQAsX.QgݎBY T6`cXqT )"/nℛWkb4!T ߋzdaʽk-B5զ"ƞ昽pve%I+ )c% Ah(Mn5Hٸ$lB֕Of{B'~ۤ`taɠT?_IL2=d2m)K(rWH` -Oooon/fkl,wmx0ҒI(Gvt .fo5MP3}2m[M+GJ(ت:<E)Jku -7I\l; -[99Y%ާWSRQ~|Krp\#O'Lƒ; - ==^G0[@tpH EA}Pz),3Ğz<N~ Q+bh|'b ,j%3*]7e2kK%ɪvE?K1ZdU~ȤnI +w1VBcZVc?>xl*N-I -"T -]lc\׈./cnJju?Eg YZ846lPn!=5Mh4cpRpj=?< Z'1jDǍшp_a 0h_1">Kz(dZlP a#lg ⺭+]Ry EDu.4a2gn9}pEAsR^x9z:aKf0W7 [>meѻx#82L,9bog/n/MÌ -v\wN#k=DZ1+O.&?z+MI|P(H 4Xִމ2[;`q℉3bcYw(i |u9x}4\blc p1hrh18K^ JIm]R: -!^@=IfKoAkjors}5^/fo -kbT)5M9)"q#:qtcendstream -endobj - -464 0 obj -[465 0 R 466 0 R 467 0 R 468 0 R ] -endobj - -465 0 obj -<> ->> -endobj - -466 0 obj -<> ->> -endobj - -467 0 obj -<> ->> -endobj - -468 0 obj -<> ->> -endobj - -469 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 470 0 R -/Annots 471 0 R ->> -endobj - -470 0 obj -<< -/Length 2030 -/Filter [/FlateDecode] ->> -stream -xڽY[o6~mu^Ij;"б-ɐtc%BY:EspHR뫟WWOa Zm )B97W}VJe)b頦d:-/7E[6P#A(4̣ ʎYnED]CՁ̞龈%uuAl{(>} .]D-\@TArR:\Z&,*$V -P&txܜbVxiLۇsrFk_GR1ڗo|~{]Eaa}yn\^tuģy,O7K!T yMcR@KG}(#h~z99--AhrV`g0ԛ@ԷN *ZWXǹ[ -@id-_-mAQJb@N5"CDkti{3i0RD 聶gA` £P%5Ic w9HQVK8j/J3 Ճbl-H#_ҍmĊ3aԁќb[B ZJ IqZ 3>U\7(>>s sٱz&vZ"!~$@x{P`64 hRhW:"Rd{f9NaN/`Ű@|UaGʬ3?۲`/=7 >PFMϠd(]C -W~_]n($YWV&i[̙%;vgCSpBsTa7Y~%e^{n@r;d$]*}. Q娔X73Fl~M}R̵'ڹFrC\eCFCJ: XPhPb[ve|a͆(J\(ӥ\KzLW!E!M@hePkUo ;a x8}LTꐨR-쓨CyzC(m5vsE9%n쐨=)P ڴIJН䯣X VQYY%yCBۑ9}5'.Plùߟs͍ >k-kmPaDKC -·{mzA v94lCyyPn `{r,0OѢjqJ\rR] (؁Oŭ2s{v(.ȦiuFqq/j^3Pqs1[=-_iR XPx;Ō;|}^~}-W/ƥ"B9 ӣȈQUVC;-$..>:lG uzp>n~P ?C.i8F@ә\lM c#`oE's |8k Ӂ&bTu =-F*x8JճL )GJ)J )aX–'}S*RBZ֓FL59|r私 ->%piS_qml -](9Op6CD]΁@b.̸*4?w榍tybʴΠendstream -endobj - -471 0 obj -[472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R -480 0 R 481 0 R 482 0 R ] -endobj - -472 0 obj -<> ->> -endobj - -473 0 obj -<> ->> -endobj - -474 0 obj -<> ->> -endobj - -475 0 obj -<> ->> -endobj - -476 0 obj -<> ->> -endobj - -477 0 obj -<> ->> -endobj - -478 0 obj -<> ->> -endobj - -479 0 obj -<> ->> -endobj - -480 0 obj -<> ->> -endobj - -481 0 obj -<> ->> -endobj - -482 0 obj -<> ->> -endobj - -483 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 484 0 R -/Annots 485 0 R ->> -endobj - -484 0 obj -<< -/Length 1683 -/Filter [/FlateDecode] ->> -stream -xڵXn"G}HKDl)F$X̰?򿩞a.=0f6ȒmUNUW7C?]_,r?WSDhi8Ҍ` ޢWE5f*_>8Jx=D09;/?=v3e4ڈ||e.[`ه7q9yAȨB&jTH[XƒP\xbn9'.nGpR (ؠUܴ* !2?>zNxׅX Nx}紏c1wL9&qm `MF_0U=pn.&I$&PD%SS~s8ڇh}A5 ˱V_1X1k+~\QL97c`Ii<rCR%_*PwN9 J[XXeh]+\jt -uZpa2ڰu - -T@5sPCT"(nU߷*ƄL!%+ba 'uoYx-5 9en4YcM<{%+h5]"oӧ E0\%.,Uh^Rl{Z[nlCvh;SMa֓O!VvO xbsP%Z~@T6TU z.ZӒhZvPA&NZRPTiacTFM5ã)E,Xj.A BR=gSCf=rlnlԀ/ -keXcYS,Yՠ"*+_>&jv0p6>fHK{(,%k8#-.)l5dSsQ -wQ-^|}'jг[F)+yU~kW>zZzlimN@"xϲX'Ҹ1qh)%- (MK)5|k5`Cl6=̆ 狇x8p5D`]BRhA؟Lwh!>9X~zBN)lyhrYb8s\^EC˶{7Hp y׉x`6IS$8| &;h}ش1ѢOiuJLd{2o.>p4}FK6"4K[}~o1ַancKٞh0h*@CUޏÇT;dpNx75Ceq6ܴaǻ<IΠV)T+7!<<|M>ZF.sUtvg pkɊ'}ć.o$R2K7?Ɋډf$pY_OI/ 9_ EiS+Q4Ie*.pwfWg8u'!Q%y:_R B  W3 -¹cKMqk0\Usj-ҜbeYv5˧g a!{!3Kh È-.E4*P{͢6 -P laǻԙus; +`n/-x^,^Lm `_'B -U{TtpVMk1o^:y?~1O -2XN10Y-QGr+0!tĥ>_^cendstream -endobj - -485 0 obj -[486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R -494 0 R ] -endobj - -486 0 obj -<> ->> -endobj - -487 0 obj -<> ->> -endobj - -488 0 obj -<> ->> -endobj - -489 0 obj -<> ->> -endobj - -490 0 obj -<> ->> -endobj - -491 0 obj -<> ->> -endobj - -492 0 obj -<> ->> -endobj - -493 0 obj -<> ->> -endobj - -494 0 obj -<> ->> -endobj - -495 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 496 0 R -/Annots 497 0 R ->> -endobj - -496 0 obj -<< -/Length 1392 -/Filter [/FlateDecode] ->> -stream -xڵX[OF~G?C_!b&a[!LWCmߞqe -B -7g9s.G&GCP&#V#e-& -4}hrf8j j|>M%FPL,J -D%q:4oskf)Rz4/z5?(1J$ĴlyJj~I=),BЛ[mߌ`f,VZ1K`ŵN7ky`k6:()PAu5*Up[?\Uٴ”JSsR,u`uTId{n.N.Jf W_wurFku(/:Ρ{F9Je(_[Uf[eQ -qh -CMQ (}RcWUPxS+5`kj9\ɧ$|&پ!v~eFDupZe[(Hu?*Az:uYÕiᘊ(?.G7ËoiY*P8y i 'OF..ac }Kr&ыt~30P~ϓ PxrsN-4]m(8U<2YlQCpfOIӋ٧4vlxmߡ}"ū%k0S)fA@` -ƒPLj\JU[6Cjb MwգK;-*Dwh*a-jbCj}婋[bhoasz(w͑A*C $]r05굢 J(R\R,zQȹ(Nh5jwawsC!kW;WU61#- -h9[^w6{(L3.=|+fS嶝4Rk"*Y -_knQ[kKl-lm Vw VFd`)!H=ZЄV[gVL,BWk?U8yAoa/H^ҏ M1nKH'^~s(C(^ݠY? be5pV,B|3rOT/VF 4(ˊwm!ܾn[ [7tC[~txI> ->> -endobj - -499 0 obj -<> ->> -endobj - -500 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 501 0 R -/Annots 502 0 R ->> -endobj - -501 0 obj -<< -/Length 1605 -/Filter [/FlateDecode] ->> -stream -xڽXmo6 7cMCKTCl?wGKHJr" S=cF|y|$jLqwG_ãN6fFדo(,A%HÑ2)E=YXl -(_obrSmV_Oc.ߠ(Q]lJle~~Mogד7>nCO(B;UfXX2/V_EtQc߯a">])J\HYGi,yNgۋ*ٛzCJ`Uˉ/j^"yhf>ޡYV_-쐚`cH]Ӭ-GW2Bc Q^9C0W\/**_h-Py]f7`f ET -5U7*1'Î2kRb,E*l -ŬmbʹٟKBL` 5 -S"j/([%Zb3noM,a9RfP.Fֺ:GX F!ly7O -w$DzP'ܶ6+ba,s=7ѓp#'?><=Wejfߡ9~iaxԱJ-IЀm؀Xi -6b *EMB18qIE–Ы5FC`Ze].&念O7lruS'5~`2QN7(n"[ohᛆqC}X ߂%Z#$mVwbbq;mNͣ=ݩy{Zu%6t0lM&` QO3[벏7FB@Oל[J Z2>g -0,PnȌK dftWc ³Z]T[H':@r0zj C}"WX!~ s0dЗeg+ k-DkXZi2׆WM~?(cX -cj:Vu5m|m6ȼ jj*Cy>؜Ba'?D#laB:D2*,~_,XhAHЈ>lD8 -mߏ  B~K\vIʖ5FC-Z{6s4GRדw\,%cp W/1+XDkSn<6"CmQ9xj`Gc/&$x)Mm^A2+pF3ڡsr@pu_;˧ҁ [zz(zjiry3Κ/뾈@g0TA.F΢ףx>u6_zlrרNm -y:U,l4NV{wԊw^u`k5#~c >n+C%9T߻@~ ih;/wz 4>@]8X%K`%z[OmWwl&}2 HS~(ak8lr:OFRA 6T)F56VW -]ýdbHnᕞ "]T:FՅendstream -endobj - -502 0 obj -[503 0 R ] -endobj - -503 0 obj -<> ->> -endobj - -504 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 505 0 R -/Annots 506 0 R ->> -endobj - -505 0 obj -<< -/Length 1731 -/Filter [/FlateDecode] ->> -stream -xڵXnF}7Ƕ@{<*pTEae%)ogI/ɥH[AlIٹ윝=k~;=0?=!INO.("X4_H4iF0eӓC?ߧ'yXIL-tz5_ǟGWsP~4wg9J2'xv>D`"~%r"OG_frtm3*J}@8M5ZƏ"nesv`S()6E0,HiA Z1]{an*0tAVB8Ln(5Nd=t{Ym´B+QzTc`:KQOcU*/֌?g= |i?Y+Qn?Z%)Jꃔ Jy<ilKwbb~$՘k@_49t^_751=!վ a, GZS~c8VmH = m0+=lR:?(b~, 1;bH$Ā` -)I.pYV#hf]+MmBY T[#X/0FR})n'{WU6/Pu.VJBt@/[^6۞Lq= \iSMOG:~4,QX=|ֶf+ Rv24l3!$C^xJlo}NfeEtTbKcUm ǰE"e;(*7t/;ijѥ6 -}ؠlm VZ=\% 6=.!vZl=`;eOpri- 4D] (/qn ݌/P|\y]9n=+ДRW_|4ux|@|"h:4Tm$<" $9p4+Ի=5BΌP]tk}xOv9f9tvg Τ5%}e;.ɠ(Bht8N]zhۈ>Mwz02#0 @ }FLe}Et=E˝*(zWc7PNocHRF~PwSsI. zP7٩a+u~"¦cn -~@ a`nW\bGBKjnzά)R }F{mV iAォ*Ҙ:$zz`#%#XC{8)Ԋ"K~k[~h 6 VBm=t (qUm\U1l.5d~3/||5~P~}^lb[>oŝ A\j&Zk Zwcr~1[u~oB* ^*D6)SA+cY#,\k`ёtˉ5p139pxQI0ۑ w 0 T9%,-nUZ/-keIѾ9Y9=aUyXPRV6ԕ/jr1>c?\$R#EoOq{:I1yU+vQ•|t܂4dHngm">qtendstream -endobj - -506 0 obj -[507 0 R ] -endobj - -507 0 obj -<> ->> -endobj - -508 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 509 0 R -/Annots 510 0 R ->> -endobj - -509 0 obj -<< -/Length 1302 -/Filter [/FlateDecode] ->> -stream -xڽWn6}cP.GIfR-Pl&ֱSIb?ۑl]([-}8sfx83d/{UIMcClXz -v*E2_ c VD7VwC#< >8߿{?)%92xWȏx6]:p>R;g~] y0;튁IJ$ АkttwrwOcн* b6ZgխFOcdiy>g0;J1'B|;v\, ݩ綩? ~#XOOj|Nv5J0(UkTBl=F{X3CWsFoE+fLˏ+)N#xtKB+P< %_-<.Z[R-Q׮> Be-wRyxPj -TP]%KvAևRℛ]؇[.FJBƒY[v~U[XP(,=а^ƭJh>TM}a_ҹ3=JƠ~%TLˎZ2в﫥:jqaEnsrP-.p@Z\dh`[eu `O9lCr i2.SnwP_a\fc!:A/2s.!6 ~ xv7ejט :͈ԕO׏7 jRRy G#'8*)ֆ5:<0mq4n)seCh6H}y-^*k]߆S2oBhX ;S|!# iAPo *Uo'0(Lu41_ǻ~z2zDQYМC]"`O< 6P̜@'d buzYl^Id6XOLjREpeM%cPo4_ TW eQaRܶ)Ar#0tej/UJendstream -endobj - -510 0 obj -[511 0 R 512 0 R 513 0 R 514 0 R ] -endobj - -511 0 obj -<> ->> -endobj - -512 0 obj -<> ->> -endobj - -513 0 obj -<> ->> -endobj - -514 0 obj -<> ->> -endobj - -515 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 516 0 R -/Annots 517 0 R ->> -endobj - -516 0 obj -<< -/Length 1769 -/Filter [/FlateDecode] ->> -stream -xڽYn7}7c[ GE]Jr( ^*tqwo+Zk(E'=93s~==y?9=!OOޝ3D%hpz"jDP&'?\O"[gy#uz2I|#XWi -~.Yݦc# }(&QDZS~s83*%Ruhc`ŬqE1ܼKBLYVl=$U SТ.= 2flޗpV\o]BY #T[#X+6 - -KqXDIq8o]U۴”JcR,rxm#l7}#ܿJalsهz.Osz%ʑi:ݣ.k8 S cUdlآubbUvhċmD8-6뱇6tP&$?7.1vaJfx91y,>gy' <\\2Y2ώ’W’` oQ K*k;4J\6|~b(wTD@, Vyc!K~B_MjyrtZ?efa&4t&90'6l췁o:RSfǫ`-P1ӂ2 Am7G%v4M/Q*ōoxVKTlHVDsjt;0<aѬ@'q˶a:mjl{>&۹xf=c& rڬʧǬ-0x2~  ?n&."MV݅g BhۙC!uU<v3On{3)[{?Lgs G,M $C^a,8Po^:Wh1=Z>t12{?5j㹙8b&1\oAInSP!z$ Kwowݻ"[eˎ87- zPGkv풤5u@I6r n1imZn|=nrp9Gt~n{(Tf@6Q2 Yikk낕a:f41E+n!ZaMQwPKD`lh8?V?0oG I`e$Z<;9]c~%> xWRGb%Yx(N/ Yt{,hb(^[]_[l{.p{WódI Ui>iRBhͫXXijܶPИDp5GALrW&'.Ewendstream -endobj - -517 0 obj -[518 0 R 519 0 R ] -endobj - -518 0 obj -<> ->> -endobj - -519 0 obj -<> ->> -endobj - -520 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 521 0 R -/Annots 522 0 R ->> -endobj - -521 0 obj -<< -/Length 1904 -/Filter [/FlateDecode] ->> -stream -xڵY]o6}vXY~S|tgː&!Pl9Lecw)]p}!yxy2 '?zՇ#1RMǤ.Ϟ4Q.4[>YѸ+%6$dgbRk,P8Idyoki!P{Ӿ[ RrDZS>P9a8Y[SRb ERFr!=F"1 ?(ȣ1J$ې^a1$Uƀ@hYW$Q;,Ⲝ[S )%]r jZp`-3 ։p\H 7Yu 6b4!Z{٪Av/v"@ضv|jH^J9 -E:u']JX/Vb)k+peUj ``Pc - ~lWaj f{:`eyd:{oVGvFIV>\p 2$F -x}s|tz -GىS~:qǰO"&`숐WflkҰ Er@kd](y4fx==OBIƋmcaEV xE^ҡ^{`hydBd\b79 o2~JOo$;]䶍Ȅ.2zY9Zc -G:j9sV9A$hWdXYy:W_2u -j  2 -[Wl\+"Pa B)NIF'? >GZ@@-{iu*K&>^cJZ-xC4AY v6mAzgM=rY0S%Zlc<2ߞ-{~zniڇ' YB^aK4/vwtT<#Y/@ܚo l~oppZCt]+o|X+aQavX`>2C:gY(09kGpt" m~iN[= //NNRWGFF5:A^~67Gɍ #:qtU?|endstream -endobj - -522 0 obj -[523 0 R 524 0 R ] -endobj - -523 0 obj -<> ->> -endobj - -524 0 obj -<> ->> -endobj - -525 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 526 0 R -/Annots 527 0 R ->> -endobj - -526 0 obj -<< -/Length 1658 -/Filter [/FlateDecode] ->> -stream -xڽXnF}7ǤH7{<ʖplWESD,tqI*Βe)R 7 033gg^bz~F?RDhnfS(} Q $@(te[<2LwjG_M=2V&hQBK4oH(D"jj'!ꭒmӱE]I3iϷap$΅3ƣ,œYGwK8HƸ/N1F))Z<&w;B_( aҷ v- m7?M`~QdGOiݜUX-WC%4ib6~S0Q+\RQ"2 s5j׽0s]p"@D}1n %!&N2VݸU;ªOa|mҪG@{TePU՚p8w -%?pʫվW=g@RtVŬ@8E>(*Os[ +r@CիJ`B?R?8T-ekf)aù1bbV@rn^( غ\I+ Zg|@ߜd dpcbQ%Tu'ԙ50R[c~@gPsd1)΋nwz6hXTRqRZ,a=׺_!Br-YhlDSv;ATjnk%UV7{jqg'iCX ˧ckq+|9T2E", NJTKͫ2z-dƶu}Cs3+ N_얰".n·Ϝ|Ihm -~}V!}tevhЧ(\|XJk7&*lMSM -Ğ0?J ޡ?)MռJ=E੸'$MA-pw,N '182Tq5SSOQp'NazYSȱxv(*NZRNݫ2zSj< (\?O -#{.t'48rJL-EeA02֛Y?2zq˩ERF}/H@QYZ=ly^g_qvgJNxAhh`+./'!3pO;z)NW ]p!ّG":S[ȊB;[m)<Ep8#4XYf>Vc\uk#v/xv*IFw'@$`N4~4cxh@V(,jbbCVRƣm1?zW~Ya{Z;ڇ]ء,̞a+ uUQqiJ\ MG!Be=pHW'.ZVendstream -endobj - -527 0 obj -[528 0 R 529 0 R 530 0 R ] -endobj - -528 0 obj -<> ->> -endobj - -529 0 obj -<> ->> -endobj - -530 0 obj -<> ->> -endobj - -531 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 532 0 R -/Annots 533 0 R ->> -endobj - -532 0 obj -<< -/Length 1665 -/Filter [/FlateDecode] ->> -stream -xڽXn6}c[\/ISdv("PmyֶRINv(Y)YSd ^p8<!C}e_>1D#h<> Kj5bEw{4hcTzzd|fZꭠ -C3,l<,/,*t#ZDE,8Cf YU,RdQ1rELC=:ym'e<>ˍ"R,eŽk -!5Ɛ]N|%aJ/"L0WSDY8[  +|ߨ;5͒XkOTbNGY&%R$V}m|\QL97/( p69 "S"Ѻ -쎺frm/a9RBSHJM;a-8Rl`CX?:*.IRE֛8>hU9rb!TY, ekodž~E{DZ&pFjvr֭sCյ*YhI -ed8E1bգP[X*ž *EMg0⒊[|v0XB7lqн`k#Gmm.#ힻ1Zm1L-C}վ: h!(GQ뷇m^z|`e Ql A.?>ٹQ6|lc -P5g;IoJb -7YޞSLʷy*[6?Ddr=<8kkUF'<Kʴ7h24'n!'tC8P:`n '@~6W Pm`wOۙȩ,gKH!8ahf2sjfOgwg)z7(Y>K x~(of=DrJUi *O`7`;P jςgپ>Wl_<S!Q67>}j؏CA􍲬mIr YXFfpY`Jrs1hN(p܂j!lY1'pHs%Ԫ~.NE>^Z':԰R(Oq9vM{r 9+jv1 -beL1/ָ ҷCz -̹>KCendstream -endobj - -533 0 obj -[534 0 R 535 0 R ] -endobj - -534 0 obj -<> ->> -endobj - -535 0 obj -<> ->> -endobj - -536 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 537 0 R -/Annots 538 0 R ->> -endobj - -537 0 obj -<< -/Length 1809 -/Filter [/FlateDecode] ->> -stream -xڵXn7}7cZ \>*p,WESkw]*ΕRl:3s8r////r?/o"4\^%5)c0Tf]~\^慆$ǁ 8RÚrZ|%15tP_p8PtZ4HŠ~Gd~܌? nnF(ڠ0^o-R_m=f%R)y¬:0{7>棩>U=fvpg+"(١ddva b!6YF1,ٿ6͜C>4r²-OG,Fz0]moh _b. -hmF+$CtAz$e hM3[j]BP'n8"%\hf!x8)'̆+vS%9\ka)DlzEjw(2 ;ۖ7?%Q (xAѸlZ󹷛-ɟQ1s=AI0YS@7 1 دz4 vJq-Z%qXwLfpK՛w;?'BYzWF $c -rH($B?®9áo$PAiI/zX1c~\QL9^(vGِnFT ]:cC|o.a -\:hV{nY Xl}C*)6Yℛ^z +( # -(p}Vݫּ7Tzp6Q8JS]%7 -\WIً\BwZzqQ˧P`[zi -pJi kRRnE{N0$Ǯ^4Y8欒_pl#{bTo[NlL4`#Z_VqWjx)ؖ{Z?J}B$jI5"b|;,oVU9'V WV -#Ǫ@SIT:2Q/2#9 -[/z3sTֵΪ HA݆V>dzg0FΟa0(DKzg룎0z:g9S'{o0`^fN -|3(~gųm}, }N |TؠZ7 ;ꛘzOK(&Gvw#8yꌦYu~ںX b'xxx8ZN &ۜL~Ggдvپ\a 6_ SnmygW6 -~(ZDţ3ȕjZjp0OnAN$\e/YW΃I}qm(^'dJs-h&~f_MVȳZmx1;- [ Hs7sC]#.jk:Ur31=*$98Uw!x~tfbG gZE̷Ή(_tS[yY-׎^ƟWxpoI 9%o{Gkm!d<9N]\aSŁA+%4pS\ٖ#Cr6wĥ>_ֳendstream -endobj - -538 0 obj -[539 0 R 540 0 R 541 0 R 542 0 R 543 0 R ] -endobj - -539 0 obj -<> ->> -endobj - -540 0 obj -<> ->> -endobj - -541 0 obj -<> ->> -endobj - -542 0 obj -<> ->> -endobj - -543 0 obj -<> ->> -endobj - -544 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 545 0 R -/Annots 546 0 R ->> -endobj - -545 0 obj -<< -/Length 1715 -/Filter [/FlateDecode] ->> -stream -xڵXnF}7Ǥh7{<ʒP$WESD9l%);KD[R0噙3ù_./fˋ B //ÒZ1=yyџJcɏ`2_ϻ0 /:#$3"96pZKϾ гOP5@E@i pbV).s:W .|L8:RM'EArO(L&'2٫z 0ߏqGx_fLZ,L/.O_aY# .ʎ"Jj7G)z\\Ü e7ksd]3]ͯcVYe #B-Ծա4)B YJ>rUz?*L*NۡI!Vط+ӉӤcVfԤC{NPRNt #,PL!\J,BWMr"YwɮBW#j&Ca)Vglvh-Z4)dغ{c~vT [ +D3jR塏=# CF3Pnx,`Սy7b?QC!%R3n:s#ՉX/#lu-c6G]|K&wZzزɴ`O(d!ғlMNބ/ - -P&ob) -tSG(/Aӣ0 -F@2Op+:p>O{&=ef}ԑٛΤ?O0zV|xX)`Jtvw =G!۷9"}y̼izP -K6(XAk+( jCn|۟\ǟ3ʻ`O.ޢ -M,7ȊہSxW>H^aHf̾zag8w;xTOR-Em -/^.G΃kV_ލ͋۽?*~N?geJ74Eg<[PRTq{_[^Lkg'IX9Z{<ʇWM`mMP &( "Ju2CZvoRE)F}  09}nU`f H,9?pM'vqM ه3߱B>@%|Cx im^p v -].$ib B PRg]@3LjzZtq

uǣA? :cWIW``k&~iJ\>AWDȺ4ܣZt~RC%endstream -endobj - -546 0 obj -[547 0 R 548 0 R 549 0 R ] -endobj - -547 0 obj -<> ->> -endobj - -548 0 obj -<> ->> -endobj - -549 0 obj -<> ->> -endobj - -550 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 551 0 R -/Annots 552 0 R ->> -endobj - -551 0 obj -<< -/Length 1429 -/Filter [/FlateDecode] ->> -stream -xXn7}7cPˣbɩ -vU( E^[[jW !Wˬ򺰋"pg9gx~R8#Tso2~n87$l~ƨeΒ$3U}:6jIvpʼkE5LHC -ω>{Q#I)ҝ'81 ؏&yʒbrhn4`Tra2 ^ݑld -'u*հ)Ȃa5Һjt - VI8͡.bfI&}uV9f \cT9e#0¢3"3R -ٮܻ_ |_UC -PL=% HTXXNaпaQKEjq [86զ; # -CAU#ӂQ%}Gqݬc"a~CBaݼ b4 -8\\ c^t;iژYi: `4 B^$IIM[:Agu7}DQȜ>ų!Sy)t=ސ6#6bpܧ!TE.~L(pK,lH,PhˬY8Uf ~ eox5xU0M3?qI?秼~uF&QD"="nBqLztAݚ kG\=_> ->> -endobj - -554 0 obj -<> ->> -endobj - -555 0 obj -<> ->> -endobj - -556 0 obj -<> ->> -endobj - -557 0 obj -<> ->> -endobj - -558 0 obj -<> ->> -endobj - -559 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 560 0 R -/Annots 561 0 R ->> -endobj - -560 0 obj -<< -/Length 1433 -/Filter [/FlateDecode] ->> -stream -xڽXnF}7_[NU8K( EmT HxRd) Ù #'?=p!cܑTsoq>0OO~2LǛR-[0r2&(ʆYJY?ejy ))7HuI -HxTgz Am-ULMi2}(Iy.hϛ\DISt<ϢVUyK"c1]ߎדq`fp,H?9UY@WbPeaI4 .!ZkMB&d%1msf/O-WYnk ൨~+Q"]n=PwxxJ;[D]{-C^CB9—* -]':]41FF]}oFAH`pNRLFendstream -endobj - -561 0 obj -[562 0 R 563 0 R 564 0 R ] -endobj - -562 0 obj -<> ->> -endobj - -563 0 obj -<> ->> -endobj - -564 0 obj -<> ->> -endobj - -565 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 566 0 R -/Annots 567 0 R ->> -endobj - -566 0 obj -<< -/Length 1538 -/Filter [/FlateDecode] ->> -stream -xڽXnF}7_]RJr( FcRT|HܥDKN" ̜=Θ_././rOoB,]^H4iF0eˋE?_Y$Vm2On'_o3{>]<{n -m]-Lߢig-w$y1MI9,K]e -3.ٙ"|W'3 !ٙ"|L\[0-H˰ |_mCAK~C~~,OKt*!dO|vt|\t䋧$OE29j\b )<l:D&^03w[O7\Ux(ხNP|? {B4arэef+4O60ߡQ*R0|*IER;U֟D6<`xf/O`mXSƐ !'Fv6of5=%Td@`B)'DDK@a%cZAx%c -{m]cx(4/F_c(`R&|Ca{ΐEak(S4y*ohS$vsνPxTkd?D ņJ7 +E^`)$gu')'o24#7>!@Vqd;( mÅMBBi Q3U~r~"}v($$]x T6] [ |PDq2Y!O<@ƵnYg2-|*[h Hse妹 -伉5|wq!ONrHD MhtUfS<c+;8'MDHMYB+=SMw,m׃a=vFq,H߈m\([x#?.K\Rjl49,8zshY)#3 "]`i1?yOendstream -endobj - -567 0 obj -[568 0 R 569 0 R 570 0 R 571 0 R ] -endobj - -568 0 obj -<> ->> -endobj - -569 0 obj -<> ->> -endobj - -570 0 obj -<> ->> -endobj - -571 0 obj -<> ->> -endobj - -572 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 573 0 R -/Annots 574 0 R ->> -endobj - -573 0 obj -<< -/Length 1397 -/Filter [/FlateDecode] ->> -stream -xXnF}7Ƕ@7{<ʲpTRE!(:fKR1!Βe)R( ů_./ O GP )f"M%H-//~>6v~t=Џ(b&+]"1Wzt! 2J$ĀG,nV'ndB 8AI,h `PGǤ>_=!pN T -MM! -jy`k;b[ %TR!gI"P pot}RT CX;>f06X}ԂAFJSHDOz]IQ؂i8R@0+ا$V -;m7(-.Mۼ-s 5eh<}gzw׷ߣfr(NQ2_Kq̘U'zA4{[[y2_%)' meh{ -hL' Pu`Y4|?M#QPٹ45!txbb8ys<NhvӃ4}8􌦓+4qI<_/K=?fhGM#k%\"sJg[ -8`;/ͯT}?OI6qٻ':E<\KD.,4%570X -ơUZ}ȤG=@{h1ߠOR8lROIOWΡsA%õKI9Q/:n֪I2[hŀkK閙@80?T>6)=8+> ->> -endobj - -576 0 obj -<> ->> -endobj - -577 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 578 0 R -/Annots 579 0 R ->> -endobj - -578 0 obj -<< -/Length 1627 -/Filter [/FlateDecode] ->> -stream -xڽXn7}7c[ GE]Jr( EZʒCv$Wk+]3pF zz~rzBS|9=yw!D0,HM'?ӓd+9O) Y>Q ~wNHÑ2)srm2ɶhp Py+Y2]zȿ슬\~=-hkTdEzw{<{WlKk741݌ߣqVeEmQeM1X vfrsG:}LoJ 2`cHl3+m^[`y Œ[_㴘gMǟ751}EU]!b0"*֚*3A{h+)f"acb6qE1<KBLCvk@%D2^*P>#.˽y.a9RDcHMc:GX F.ly -DTP'6;j&+ba,֖9Ƽi=eEh8]U﷿.2{67*1[]3|.y]\S(6ZK3#h7&Vmhha!o}MA& N\R%j6ګm|x~ByT%x\+1qǃ2*ҩK4F^0:q6ƈ"X.4{ (keThbds#/Ja0Ccfz?Q!u :oI$D%(Ǯfl7тP?GëOY]4EU4B|xYnI1ިa0ʛl/rd|+Wuֻ./YW`pD2B` v20\Wd%dCpBʒCb +G(h`<= /g] -^L%,IۧVkBi490!Ъ vx}QmIeN5G.O(ҵePըIs^̇'ⰎRtB*mgDpa^a0Uv71Q-\?h&'(of󷟠||9A>?AѲH F[;/  AmlHJe=SS®6q_ud, <0*rbJ>bm{&n;qWlp5.3XA]>O^)JXԑTA ֕)0ָ)4,DЛ[1[z6D> ->> -endobj - -581 0 obj -<> ->> -endobj - -582 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 583 0 R -/Annots 584 0 R ->> -endobj - -583 0 obj -<< -/Length 1976 -/Filter [/FlateDecode] ->> -stream -xڭXn6we8G$Kqz7)"PlD[[J%9A=J$ֱ/C70뫛A'v}CPV뫀aABRkLꇅ)YV* ?Q#"H +i%'ETKC}\>Ǔ d_J,PX[%Aq5<`V,gz#_Fϓda-/focA/QMaEq4C@eQ 9h8Z揫ϓzT<?&/l@x΁ CiFa\=ލ[lm;zXޠh65^^[痤1sE(4`Ivz6hQn>6>系c*S"[)l=Nmme -P~J0}G04~&ڠSOE f^=L%&G6K%k;$}9%L a9u^ܚ|/E&J/Yo r Y,Kٚ4I̺@YilRa5Y[OPb ->ٲ0?xgTO(97OqbOfV)=Nvk5uA<0̶ǧRjqzH -pgl(NJPߗʋh{*fx0)oB˿jt& )dk؊iwޭps=aʋ='4 A.z5(l2{åۆє+׻֜RVr_[ `EBސ ^|>ŗLBn G cC ?z);{;:OgsaVn޴f2`^s,83T@~,翔mז_ax 'CF)%ag25j:uia&Z'ny%vt_գ~'w /%N6[ۏsb,X΍;@ɮa32<w;rÎ\^2.=.̅* Hq -޲eE,vJa (Ѣ,0#uﷁr;ah"h?p<}j;ѡ}d ,/_Ǩu!KudN[7CjװmM>Mc> ->> -endobj - -586 0 obj -<> ->> -endobj - -587 0 obj -<> ->> -endobj - -588 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 589 0 R -/Annots 590 0 R ->> -endobj - -589 0 obj -<< -/Length 2111 -/Filter [/FlateDecode] ->> -stream -xڵYr6}wIjNQY:#3ڤT# -I4HJ୩AbW7+/wB4Z$Ǿ9  ~-s}5ZJb/Gtr2W(5M CqnBB v$DR nƋ`1N2Ai }4ȣ$F&M%>5a{X{xr<IM$AVs*y>G}Kq,>v ;尛/KX|-WXk][n#+cؘ0. rpF3cR Np*f6xnbNR%^d hC2iXRu 09ZGfAgG ;fqXC:ؗ,%V$tR7Wά"bڶlzFe:V)A4!6 d0LMٵhXUhXѼ>0>b:*.wPlC~\}>5d{NGJ 2>J{LSmmcӺŔs}~,A'!E J|_*Pdw#\sk|)nu r {3aOp`Ŷ;(P "&Ym^z k -kPsRja/;^{!օPЊ U &# zc޹QH8n^ $:]'P4X -_JÎZl/~ʭ#,Bmm;pP&舰e :K!xLnB VzbEVwʼ}ٜLK>B^Z!AMvUC:q)ؖ{W^eڣ}#!ߕW˪tȋ - 59| *Vy(ǔVe(1C攼#xCUȫծ~[G2.[c/{؃#/k]yA{`ʪrZ3qTa0 _sE՚fa}je.y܎d -;0}doQV73qh:|YB,_F"rjV&zuXɶݒ;p@T~pO0O9.f8}KMְxs&}o-a"5;Aѿ=ANXiVVJuU MnkWOnvlվ -k$0:eûOˉr>Ѿs `1q׏ʵ?,R[$O[HYXͦu/d1ܻs4el y:Næ9v\/pibþ[Z#ٶ("9Ρn!:q<7rmendstream -endobj - -590 0 obj -[591 0 R 592 0 R 593 0 R 594 0 R ] -endobj - -591 0 obj -<> ->> -endobj - -592 0 obj -<> ->> -endobj - -593 0 obj -<> ->> -endobj - -594 0 obj -<> ->> -endobj - -595 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 596 0 R -/Annots 597 0 R ->> -endobj - -596 0 obj -<< -/Length 1392 -/Filter [/FlateDecode] ->> -stream -xڭWnF }s?F e|H$XZ.Kj$R`f؂FEKkHwP'Je5 b[* -TmI,m%iqm|P}nhX)U X=g3y]TEH@1U_&W7S7~T '5ƛ4*BOHbZ`,`LNaUah.R(- c}~9QXN֏AIpMjvDp D򖾘o=V嘒JtwnHeS"--3en[ }UTR?+h#itM[Jc&3=9.+gdf[`]-//˥[!z):=p4jۯUam(Zy3 -[s{7YLLiQ/:~ zG `x;3t*?EĘܰ|̾LAA HP-\->v?]fzmߏ!oo/f^5 Lh71݆|P:/>>w󻛸=8т e6oT߼7 \ V6c<#|Or ~T -Ppt,<݃<ѡsW# `~pNM/V1+ey )kىh R?'>n1^nz5 f~+ EQbps"Bݔ%!.N\*#? endstream -endobj - -597 0 obj -[598 0 R 599 0 R 600 0 R 601 0 R 602 0 R ] -endobj - -598 0 obj -<> ->> -endobj - -599 0 obj -<> ->> -endobj - -600 0 obj -<> ->> -endobj - -601 0 obj -<> ->> -endobj - -602 0 obj -<> ->> -endobj - -603 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 604 0 R -/Annots 605 0 R ->> -endobj - -604 0 obj -<< -/Length 1674 -/Filter [/FlateDecode] ->> -stream -xڽYN#G}G1޾_'1mVy2/df C{.51f25֧A~9=y?>=a$|'_NOޝ ˜`d^`sV=tIbLk]9҈QF!%1Ed"*dlMMlwF[J[ioE\WI,Fl9PUHZD,[[a_VPŔl| ¼bMVUB=- p+J@\_^HZ\FFyRB@%inbDy$(Pس6–B e΋S>J V/9 dɁ:blYt`kY|0M^(it<{8@(zFн4Jӎ\^}X?Bpx3Ի<+g<?Nz UU]p,B~ {0XNi<#}( -2INz7dSpf`/8Pc7wq(4tI&J,^sBe ك1<z;{W3tx??{ʐ3{~oB;zL)!!UQբrKiq' Q%n/e]QcM!|6vt;+)wTs0`9BAq4$ʒ8z:3C!5̱ s\6bo7p}O㿝{T) ;xxJyyp-z.u5R섖G[,]ؚmPj`GR>\U`a7$-ڐ֖a#^7|ąTBv Ȓ nD%pb |*PċB-"va魰/m+tt^uLI!f}sJ{ [`fn)sQ^Wd:ٷSAJLma+![n,H=P|xP¢W4 dņ"lUjt`nƽz\2E^!g#VrM{Ξ2heJPP-.pbh*hO>BTnۘ]KU0^2C7x.QMlg(eԥlOF jN(;ge -/Bj2xָߴa:۩_! ѕ)ݨڕ+]_-Co,H&2Ijc1_Kendstream -endobj - -605 0 obj -[606 0 R 607 0 R ] -endobj - -606 0 obj -<> ->> -endobj - -607 0 obj -<> ->> -endobj - -608 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 609 0 R -/Annots 610 0 R ->> -endobj - -609 0 obj -<< -/Length 1922 -/Filter [/FlateDecode] ->> -stream -xڽYmo6 -W8օ7Nmg`(%WP6%Qb/wX <>$~]_de/W7B $Zj#2f]_ f{@bjB=L&|7=܍(^0Y#(Nuľ*,H΄PGa{l0mWqD0 7Qe9 -Ai]% hcb>&6φ㧙eTF(EyaR "+ LdUE ~yLgp4C__{kheqF-^D6/%k-/I 4}3%ÒAJ9My6Eڂz gkK\J*8.rZj%lh7[kOam;`8]’ gBjXՃaM$,Gt6B"eEi/? ^*HjId -ZrPo[O.>=ƞ{@]#nKaUzKE+4|qV-}R(ܳl]dX[[b)Z|8_-4Bԃczbi[ZVkGVՑ{TUV,ID>^U$Ӂm+Ļi5S:_Џ`p; -t|B<^j(-Q~1I`;3%-6-¼(Nv|&CLG_pj̔>ӐQ]mCtgj|] /m..=I&(2|KN B;=TWj[;TC8> lm IA"\۞rɋL&Ґ3<o@= endstream -endobj - -610 0 obj -[611 0 R 612 0 R 613 0 R 614 0 R 615 0 R ] -endobj - -611 0 obj -<> ->> -endobj - -612 0 obj -<> ->> -endobj - -613 0 obj -<> ->> -endobj - -614 0 obj -<> ->> -endobj - -615 0 obj -<> ->> -endobj - -616 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 617 0 R -/Annots 618 0 R ->> -endobj - -617 0 obj -<< -/Length 1573 -/Filter [/FlateDecode] ->> -stream -xڵXn7}7c QTc( -c"Q:3Jr6 g"A{y{xyF ;?{=??#%g."4_ %ib1Sܢ#u~6cxw[40A!%FH)KJ]v+!Eh>9tHe;ѧC-4O-~xng%qFK9^8n ?q: )h-B(.ї$`K,mkz0%g)3L,SwhQ[^)gjOp{} JHY0Fi,y<ˢq'RZ *$K؁Y~Ρ줴3R.¥$-? W[jg+K^h_aSVRKQ^E8{DYn*VEnhq")5NWV{^ -1$ڸ%1? gkb4WK Uso@a$PDZS~Iq8 j/NܘHhߏ#+fWS%XbZ{TICD/Ylf|m\bk(Ek4k9n~X T 6m0&(PAu5FrUQ|'Fc`P>rpC(PjA5=!Z -(w/A|MiT>BcXV YJ-Vbs;jU+#IZ*l0o{ 5QjTK< lӓ& Ge5 `LQ2`e;l>L|Bq ,-hqvx6&=,.MFOOQ~x{W1}}G(q5;0Ch{I7Vg#v%K3%Jl;dxq}Q̼w:v<]&Wܫ(&cp`'R="z)S9e39Ftw™՘9)O2E xU{N1 |8ղA|˥\ -H&h)YE~Q9;Ei++8Yp߯Eݥp2[kM ])'xwH׏/q), !z8/thYݝo7$Aٷ03p_η Bk+^f`M L|0*U? ?ie  ܀Z =*Is;|+Bۜ4ૄ=RT´l=k ;T=u aجrh~$4KלbeYs8v-M<{$Vl[롌j 7&=FU,D^Z,1:^NaZz9Q`T_M$X)HY=~5V\U|&5U߸/[Y5+- NVWX) -=S> ->> -endobj - -620 0 obj -<> ->> -endobj - -621 0 obj -<> ->> -endobj - -622 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 623 0 R -/Annots 624 0 R ->> -endobj - -623 0 obj -<< -/Length 1716 -/Filter [/FlateDecode] ->> -stream -xڽXn6}c[\^%IxKEQM'jmٕ;e+Eġ!C./Ɨٟ-CP G֘*xqyd$NG?./q-9s9ɱ#O1SN +IL[_u0M|nҖzzp0zwϽEKƋAQ9\E ajfxwpKϓ'8.z` -tk22 pm2(L̞&A]f%ahq1UL`2Τz SEk`1Kv0e^.i^ -^ -sC.б>&D2-Oާ>DH"BL6ťl -7&'669BRbM6@rĐ&І&Ln4 lzEY D.8JWV&~)Ht%q)Rxg? h0l%yee)ؼ A X嵨+D nzjr{ K2's ܵUF0(͒(~+P[uk'd=~Np0N~׿Z  5UVM - Q)SD%qg"A %=F`L(1 -"x4ˬ IA6b/td{#).պ E8ZK@Ue_@ibVubT~HdP'\wJ@?h) z`հ -BQ67F9e!TMyL±`u=.;b/NTV`UP'.*N` -lCo=PN%nn!- z-*Xk@?}% YšJ6tt{^6O,_V|5LԋÄ6`SvC#:1R( 5Cn|/bv|5E{N|QSIˎ=ߏ9ˇ -*׺R;VXU"ՊzRХJF8Ҷlݟ2}ޕӷ\d} ~=A{cS ߗ_ %4{{tQ_4]A}9&y'81Aczc-'L<I.3޼hv $$ֹI|N {t osvMDϰ|$0,Wv 'sGe/~0*s_`\3re@bDm/(3 )|z~Q |AS~>f+yغnbt\)\T#.Z1m&{wӅ SCRq=*)0{z DZ?04`endstream -endobj - -624 0 obj -[625 0 R 626 0 R 627 0 R 628 0 R 629 0 R ] -endobj - -625 0 obj -<> ->> -endobj - -626 0 obj -<> ->> -endobj - -627 0 obj -<> ->> -endobj - -628 0 obj -<> ->> -endobj - -629 0 obj -<> ->> -endobj - -630 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 631 0 R -/Annots 632 0 R ->> -endobj - -631 0 obj -<< -/Length 1613 -/Filter [/FlateDecode] ->> -stream -xڵXnF }Ƕhgg4G'q^dԗ-d{u$Cˑ[0dUl,Z9X rqcem(ϡG TmF+!ŹM!<\&qlyu -Mmcf϶Ҿ*kgXB/jR`"Q@-ʟѢ2+HuClQʭ:IkW?x1o6/Ga뤈s(9-15(\Ѳ$ǜ)\x3 混ɾnUTHL̞2[8dpxY@, ;9#ǁrዅ|gVD+WCTsԝ 1JQ~30Z VH0 e`LˏI)cJ |_>CP)|)Gϊd_Z[ hrM!\Kt+}9 -ubBjl4b; ( $>d3Z 3aHa|!={b_$" (d 7nlWl[%$-|>fHJRj)&ث*1՜ -v5)> -۱bO7sHǠČTjhB{NPR{CV)q_dԹ'Ϫ.=HhW6Mv7)V:.!7KyK68ldJln=8WG)iy:ZǞQ^\U {>X&E~NW7\ݰSF8ЈC.+*@JkRzv)n޵^EYf-C^w%g@C` ?|Ύ;?om|)Hl_9fbI?-䌞W~qh8A -V -iS^l9&Nh8O#sn0LVLaDX7Tpn奬oW:{pˣ3.L}lexW4@<΢L}f8wz/YnVXD+a`16OPW8Fp,RU0 - -ડCj3 > ->> -endobj - -634 0 obj -<> ->> -endobj - -635 0 obj -<> ->> -endobj - -636 0 obj -<> ->> -endobj - -637 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 638 0 R -/Annots 639 0 R ->> -endobj - -638 0 obj -<< -/Length 1355 -/Filter [/FlateDecode] ->> -stream -xڵXn"G}G?c"%}\ -˜`d(A5X0ғg?$_lE>{{7$CВ:$1NQʗ,r4M6w.d4%_wcJy¹C騇Ċ)NjZ:=gP!9[Zqf&OL䡰Xl^CUUi'R찻$m얛3ڃ#-a^:%۴\ǟ3F-s|#g9j*/3T2!:dQ?ZS+<'9'ޗI)ҝO 5c`c[C ͍b04YgrEyukƨpRgpNVd ?uu - fDXm8%Z̏)pmƘCES*ɤ/6הּe.O^ּ߼r$T(V{ӿG8c,Q^R- ̓YrJ%z+dNbs-3*f l)-6ߢ3η%>lBX7x1 --UM4k7208\֣n䧴$̣K^) ,S6__m\M7.{xL6O$fIZ݇^p{v0ܽ /ڒo0BӖS&.Bqo&_ :~RzMUtH!Gewx=WÆZ -bp|[*!U9R Xs> ->> -endobj - -641 0 obj -<> ->> -endobj - -642 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 643 0 R -/Annots 644 0 R ->> -endobj - -643 0 obj -<< -/Length 1227 -/Filter [/FlateDecode] ->> -stream -xڵW[oG~G?cZ_ `ʵ]600V~How]J,#t3g}8J+!-7ÁHÑfS&@}G?t++U~wχbx5L'(ܠ{rq^mp7va+P#jk;Z8FVCi9;4+B߮W \ 9E\;/aM*̸4{k,9+ -dVE(WK8r*Zfy c4A(t.F!_>AqnA'cD>VIx_v)&ū(<ʗ,&2N+ѡYO>F Ț !p} 6\mb6 ,?U*0 -`e`VC %P %.jP寿 hү.il%*֚*p.%0ΌP -XF -y+)2 1;T1T,^̃lKSg3e[mK1 Z@D:L-}ꅦb-8Rl`F:J$˦Zp[ޫU1BձX)U lY={Xn{ƹ/I3m;vr3E`޹WGIaYXuqUiREVUI_EhLX4!6طPƙj,bKCzKa)^?n0~|-CcŔF&+a80┶ZicAyKazvr-ղw̔Zi½1#}#Lsj]ńciy)\rpX(bxXŧqr5W7vUO٤.[s: qߔV7zra|+$RS璧oP?‰UY^XG7.4lt\yhAZ\ {68G'XC -,' - |TmlYiIR7uԴ)ml2]F7~L>a-\5u} --I 7yzB -b4X_[9Lĥ>?حGendstream -endobj - -644 0 obj -[645 0 R 646 0 R 647 0 R 648 0 R ] -endobj - -645 0 obj -<> ->> -endobj - -646 0 obj -<> ->> -endobj - -647 0 obj -<> ->> -endobj - -648 0 obj -<> ->> -endobj - -649 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 650 0 R -/Annots 651 0 R ->> -endobj - -650 0 obj -<< -/Length 523 -/Filter [/FlateDecode] ->> -stream -xڝn@xljIkGڴ8'T*]L ^Vjuf|-8b}C} `L0H6q$* Phr!G/:Ry{_pm:+ ªވH^pbe *i:ʴͫ9G~BV6y`SEЮ i،MǼuYٮmG9 i9∷qB,z']ZkEpJ;t9flo~T!ђd#*@ t<.c Xon $:zĐoc:J"I qǶxmOG턃pn5Cì'#"S5,x܂~yhzA FӴ)Qo{!)vb -W -4Jp!fPkGJ5'`҆BVP{y ˬW\Z._Ov}y;_|&QY=8SvTǣ)TLj;Tv9&T'xPendstream -endobj - -651 0 obj -[] -endobj - -652 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 653 0 R -/Annots 654 0 R ->> -endobj - -653 0 obj -<< -/Length 1644 -/Filter [/FlateDecode] ->> -stream -xڍKsHwevޏ@IYEز] .oK |s͏wO? "^3D5(}`ØFH,(}#Z=?DWa=ZL1cHibfGm'0'_=z/z%2!|Kn 3k՞XW. &$զW57s&=d`2YxNQŔJQ`112F -%G&a6Is)M3/$S& (dl)K)\S6}H -v/h 4M Or -ðڸ_Gݗ 0NGxHe0K6Mx6fI!9H~ -I|ǹRqGl4nB@(Ǵr=q`r$As*̵=y}̙40=n(ry|q.iAH|phj2~ SHdzt6M$B%iModGtgIOg bi6,Q, (f<@J}hQ%3D1fd J̔`:V&.Y|6JjY4yA| 2C0LMV`#AGl|U:,_U(Vt]ct=PۃCǰ.כ+M;}\s\c lozT(h<o\GSӼ|BS)1XM:츬^/M+'%Azb]_hțr}/^ꮥ{F\ JbN80kW[Fp)qj<HI[ DR{I,d]r>JCRQ "*ć).* d\OP}bDMQ#ὂCb1E;ė C>B:qꌺQɿ. >&\.3@& W[u_Aj 5F.F) >ŸeO)Ұ(Z@i\ފ/uxjqy=8\VbB8¡ =0И[,:넆lܸWŦ| ZՉuc kВڷmnS(.nj߂[t_~`q{CwJWN`-9\tcIP9l%k%K {طpSs%67oۛE^ -; $nN?R1lv9HOű7rz nhBa#=Kw'$3679?}VZ{BzTd"sg b@59󬖌YFܸ2:l`>5GgV#bPFytY\t!ҽEL [>5_~ym[b^rMn7Z HCҢeEb4zGWg A`Jv%_DS\Fш}4=)ڱ>՘3vҝ zUN$pxhVgJ Ʒ׎jpN(=fR7M/J̗moOũR8%JU -L/O(Xiܹ%RKs S9lML\;?-Kendstream -endobj - -654 0 obj -[655 0 R 656 0 R 657 0 R 658 0 R 659 0 R 660 0 R 661 0 R 662 0 R -663 0 R 664 0 R 665 0 R 666 0 R 667 0 R 668 0 R 669 0 R 670 0 R -671 0 R 672 0 R 673 0 R 674 0 R 675 0 R 676 0 R 677 0 R 678 0 R -679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R -687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 693 0 R 694 0 R -695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R -703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R -711 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 718 0 R -719 0 R 720 0 R 721 0 R 722 0 R 723 0 R 724 0 R 725 0 R 726 0 R -727 0 R 728 0 R 729 0 R 730 0 R 731 0 R 732 0 R ] -endobj - -655 0 obj -<> ->> -endobj - -656 0 obj -<> ->> -endobj - -657 0 obj -<> ->> -endobj - -658 0 obj -<> ->> -endobj - -659 0 obj -<> ->> -endobj - -660 0 obj -<> ->> -endobj - -661 0 obj -<> ->> -endobj - -662 0 obj -<> ->> -endobj - -663 0 obj -<> ->> -endobj - -664 0 obj -<> ->> -endobj - -665 0 obj -<> ->> -endobj - -666 0 obj -<> ->> -endobj - -667 0 obj -<> ->> -endobj - -668 0 obj -<> ->> -endobj - -669 0 obj -<> ->> -endobj - -670 0 obj -<> ->> -endobj - -671 0 obj -<> ->> -endobj - -672 0 obj -<> ->> -endobj - -673 0 obj -<> ->> -endobj - -674 0 obj -<> ->> -endobj - -675 0 obj -<> ->> -endobj - -676 0 obj -<> ->> -endobj - -677 0 obj -<> ->> -endobj - -678 0 obj -<> ->> -endobj - -679 0 obj -<> ->> -endobj - -680 0 obj -<> ->> -endobj - -681 0 obj -<> ->> -endobj - -682 0 obj -<> ->> -endobj - -683 0 obj -<> ->> -endobj - -684 0 obj -<> ->> -endobj - -685 0 obj -<> ->> -endobj - -686 0 obj -<> ->> -endobj - -687 0 obj -<> ->> -endobj - -688 0 obj -<> ->> -endobj - -689 0 obj -<> ->> -endobj - -690 0 obj -<> ->> -endobj - -691 0 obj -<> ->> -endobj - -692 0 obj -<> ->> -endobj - -693 0 obj -<> ->> -endobj - -694 0 obj -<> ->> -endobj - -695 0 obj -<> ->> -endobj - -696 0 obj -<> ->> -endobj - -697 0 obj -<> ->> -endobj - -698 0 obj -<> ->> -endobj - -699 0 obj -<> ->> -endobj - -700 0 obj -<> ->> -endobj - -701 0 obj -<> ->> -endobj - -702 0 obj -<> ->> -endobj - -703 0 obj -<> ->> -endobj - -704 0 obj -<> ->> -endobj - -705 0 obj -<> ->> -endobj - -706 0 obj -<> ->> -endobj - -707 0 obj -<> ->> -endobj - -708 0 obj -<> ->> -endobj - -709 0 obj -<> ->> -endobj - -710 0 obj -<> ->> -endobj - -711 0 obj -<> ->> -endobj - -712 0 obj -<> ->> -endobj - -713 0 obj -<> ->> -endobj - -714 0 obj -<> ->> -endobj - -715 0 obj -<> ->> -endobj - -716 0 obj -<> ->> -endobj - -717 0 obj -<> ->> -endobj - -718 0 obj -<> ->> -endobj - -719 0 obj -<> ->> -endobj - -720 0 obj -<> ->> -endobj - -721 0 obj -<> ->> -endobj - -722 0 obj -<> ->> -endobj - -723 0 obj -<> ->> -endobj - -724 0 obj -<> ->> -endobj - -725 0 obj -<> ->> -endobj - -726 0 obj -<> ->> -endobj - -727 0 obj -<> ->> -endobj - -728 0 obj -<> ->> -endobj - -729 0 obj -<> ->> -endobj - -730 0 obj -<> ->> -endobj - -731 0 obj -<> ->> -endobj - -732 0 obj -<> ->> -endobj - -733 0 obj -<< -/Type /Page -/Parent 100 0 R -/Resources << -/Font << -/F1 751 0 R -/F2 752 0 R -/F3 753 0 R ->> -/XObject 99 0 R -/ProcSet 750 0 R ->> -/MediaBox [0 0 612.2835 793.7008] -/Contents 734 0 R -/Annots 735 0 R ->> -endobj - -734 0 obj -<< -/Length 577 -/Filter [/FlateDecode] ->> -stream -xڍMo@^&;5G6*d UN(rR)JMfμ%8qY=~L2΅d82H 8z|ϊq {CiVx><>&.ѷiҐn5fI&,KsF:H* R؃ҭ;Ȗ̌@&2g(IimT5?^Nw"s&8qNHXPB3y'y?Q%^.ЁFM%Gv+?cnm;)KV)s\)KQˆ]_1W(ZUh]3 -B`WGÑ.)‚ٶcT?ʟWUY`HqZ|?,w8҆@֗#YfHNc~3aT8-PSE/_XM2t*r 6(r̐okq=UUs0ݿ2`5ehSN]wx.MX>M'+R .XHNW[ab WO#aupDRʄJ mgWendstream -endobj - -735 0 obj -[736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R -744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R ] -endobj - -736 0 obj -<> ->> -endobj - -737 0 obj -<> ->> -endobj - -738 0 obj -<> ->> -endobj - -739 0 obj -<> ->> -endobj - -740 0 obj -<> ->> -endobj - -741 0 obj -<> ->> -endobj - -742 0 obj -<> ->> -endobj - -743 0 obj -<> ->> -endobj - -744 0 obj -<> ->> -endobj - -745 0 obj -<> ->> -endobj - -746 0 obj -<> ->> -endobj - -747 0 obj -<> ->> -endobj - -748 0 obj -<> ->> -endobj - -749 0 obj -<> ->> -endobj - -750 0 obj -[/PDF /Text /ImageB /ImageC /ImageI] -endobj - -751 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F1 -/BaseFont /Helvetica -/FirstChar 0 -/LastChar 255 -/Encoding <> ->> -endobj - -752 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F2 -/BaseFont /Helvetica-Bold -/FirstChar 0 -/LastChar 255 -/Encoding <> ->> -endobj - -753 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F3 -/BaseFont /Courier -/FirstChar 0 -/LastChar 255 -/Encoding <> ->> -endobj - -754 0 obj -<> -endobj - -755 0 obj -<> -endobj - -756 0 obj -[107 0 R /XYZ 230.1367 723.7257 0] -endobj - -757 0 obj -[305 0 R /XYZ 42.5197 729.4939 0] -endobj - -758 0 obj -[311 0 R /XYZ 42.5197 706.7178 0] -endobj - -759 0 obj -[314 0 R /XYZ 42.5197 729.4939 0] -endobj - -760 0 obj -[314 0 R /XYZ 42.5197 657.1125 0] -endobj - -761 0 obj -[483 0 R /XYZ 42.5197 642.3526 0] -endobj - -762 0 obj -[314 0 R /XYZ 42.5197 470.3586 0] -endobj - -763 0 obj -[319 0 R /XYZ 42.5197 584.6804 0] -endobj - -764 0 obj -[319 0 R /XYZ 42.5197 264.7766 0] -endobj - -765 0 obj -[462 0 R /XYZ 42.5197 367.9809 0] -endobj - -766 0 obj -[469 0 R /XYZ 42.5197 530.2436 0] -endobj - -767 0 obj -[349 0 R /XYZ 42.5197 674.4992 0] -endobj - -768 0 obj -[305 0 R /XYZ 42.5197 657.1125 0] -endobj - -769 0 obj -[338 0 R /XYZ 42.5197 399.6334 0] -endobj - -770 0 obj -[327 0 R /XYZ 42.5197 317.0927 0] -endobj - -771 0 obj -[327 0 R /XYZ 42.5197 141.8988 0] -endobj - -772 0 obj -[349 0 R /XYZ 42.5197 400.5933 0] -endobj - -773 0 obj -[349 0 R /XYZ 42.5197 225.3993 0] -endobj - -774 0 obj -[536 0 R /XYZ 42.5197 524.9784 0] -endobj - -775 0 obj -[544 0 R /XYZ 42.5197 706.7178 0] -endobj - -776 0 obj -[582 0 R /XYZ 42.5197 524.9784 0] -endobj - -777 0 obj -[588 0 R /XYZ 42.5197 562.3902 0] -endobj - -778 0 obj -[608 0 R /XYZ 42.5197 578.4635 0] -endobj - -779 0 obj -[308 0 R /XYZ 42.5197 729.4939 0] -endobj - -780 0 obj -[630 0 R /XYZ 42.5197 706.7178 0] -endobj - -781 0 obj -[622 0 R /XYZ 42.5197 541.0517 0] -endobj - -782 0 obj -[359 0 R /XYZ 42.5197 459.1199 0] -endobj - -783 0 obj -[359 0 R /XYZ 42.5197 283.9260 0] -endobj - -784 0 obj -[500 0 R /XYZ 42.5197 645.5525 0] -endobj - -785 0 obj -[372 0 R /XYZ 42.5197 653.1607 0] -endobj - -786 0 obj -[372 0 R /XYZ 42.5197 477.9667 0] -endobj - -787 0 obj -[500 0 R /XYZ 42.5197 330.3641 0] -endobj - -788 0 obj -[372 0 R /XYZ 42.5197 178.6495 0] -endobj - -789 0 obj -[382 0 R /XYZ 42.5197 653.1607 0] -endobj - -790 0 obj -[308 0 R /XYZ 42.5197 657.1125 0] -endobj - -791 0 obj -[504 0 R /XYZ 42.5197 304.5576 0] -endobj - -792 0 obj -[382 0 R /XYZ 42.5197 170.7674 0] -endobj - -793 0 obj -[388 0 R /XYZ 42.5197 641.6007 0] -endobj - -794 0 obj -[531 0 R /XYZ 42.5197 645.5525 0] -endobj - -795 0 obj -[531 0 R /XYZ 42.5197 249.9976 0] -endobj - -796 0 obj -[388 0 R /XYZ 42.5197 107.4339 0] -endobj - -797 0 obj -[402 0 R /XYZ 42.5197 154.3599 0] -endobj - -798 0 obj -[388 0 R /XYZ 42.5197 282.6278 0] -endobj - -799 0 obj -[408 0 R /XYZ 42.5197 472.3885 0] -endobj - -800 0 obj -[408 0 R /XYZ 42.5197 237.0504 0] -endobj - -801 0 obj -[308 0 R /XYZ 42.5197 555.4676 0] -endobj - -802 0 obj -[565 0 R /XYZ 42.5197 610.6101 0] -endobj - -803 0 obj -[565 0 R /XYZ 42.5197 231.1285 0] -endobj - -804 0 obj -[417 0 R /XYZ 42.5197 589.3659 0] -endobj - -805 0 obj -[577 0 R /XYZ 42.5197 259.5376 0] -endobj - -806 0 obj -[577 0 R /XYZ 42.5197 645.5525 0] -endobj - -807 0 obj -[417 0 R /XYZ 42.5197 260.7145 0] -endobj - -808 0 obj -[429 0 R /XYZ 42.5197 706.7178 0] -endobj - -809 0 obj -[429 0 R /XYZ 42.5197 383.1695 0] -endobj - -810 0 obj -[429 0 R /XYZ 42.5197 207.9756 0] -endobj - -811 0 obj -[437 0 R /XYZ 42.5197 129.2391 0] -endobj - -812 0 obj -[308 0 R /XYZ 42.5197 453.8227 0] -endobj - -813 0 obj -[603 0 R /XYZ 42.5197 291.2802 0] -endobj - -814 0 obj -[603 0 R /XYZ 42.5197 645.5525 0] -endobj - -815 0 obj -[437 0 R /XYZ 42.5197 304.4330 0] -endobj - -816 0 obj -[453 0 R /XYZ 42.5197 729.4939 0] -endobj - -817 0 obj -[453 0 R /XYZ 42.5197 657.1125 0] -endobj - -818 0 obj -[453 0 R /XYZ 42.5197 390.3962 0] -endobj - -819 0 obj -[483 0 R /XYZ 42.5197 177.0822 0] -endobj - -820 0 obj -[453 0 R /XYZ 42.5197 119.1666 0] -endobj - -821 0 obj -[495 0 R /XYZ 42.5197 489.4486 0] -endobj - -822 0 obj -[520 0 R /XYZ 42.5197 706.7178 0] -endobj - -823 0 obj -[308 0 R /XYZ 42.5197 352.1778 0] -endobj - -824 0 obj -[500 0 R /XYZ 42.5197 729.4939 0] -endobj - -825 0 obj -[504 0 R /XYZ 42.5197 626.6834 0] -endobj - -826 0 obj -[508 0 R /XYZ 42.5197 508.9051 0] -endobj - -827 0 obj -[508 0 R /XYZ 42.5197 169.9991 0] -endobj - -828 0 obj -[515 0 R /XYZ 42.5197 443.4507 0] -endobj - -829 0 obj -[520 0 R /XYZ 42.5197 351.7384 0] -endobj - -830 0 obj -[525 0 R /XYZ 42.5197 594.5368 0] -endobj - -831 0 obj -[531 0 R /XYZ 42.5197 729.4939 0] -endobj - -832 0 obj -[544 0 R /XYZ 42.5197 208.7874 0] -endobj - -833 0 obj -[559 0 R /XYZ 42.5197 319.5919 0] -endobj - -834 0 obj -[308 0 R /XYZ 42.5197 250.5329 0] -endobj - -835 0 obj -[559 0 R /XYZ 42.5197 706.7178 0] -endobj - -836 0 obj -[550 0 R /XYZ 42.5197 441.2287 0] -endobj - -837 0 obj -[572 0 R /XYZ 42.5197 513.7148 0] -endobj - -838 0 obj -[577 0 R /XYZ 42.5197 729.4939 0] -endobj - -839 0 obj -[595 0 R /XYZ 42.5197 594.5368 0] -endobj - -840 0 obj -[603 0 R /XYZ 42.5197 729.4939 0] -endobj - -841 0 obj -[616 0 R /XYZ 42.5197 729.4939 0] -endobj - -842 0 obj -[616 0 R /XYZ 42.5197 633.9925 0] -endobj - -843 0 obj -[616 0 R /XYZ 42.5197 267.4532 0] -endobj - -844 0 obj -[637 0 R /XYZ 42.5197 729.4939 0] -endobj - -845 0 obj -[308 0 R /XYZ 42.5197 148.8880 0] -endobj - -846 0 obj -[637 0 R /XYZ 42.5197 657.1125 0] -endobj - -847 0 obj -[637 0 R /XYZ 42.5197 302.1332 0] -endobj - -848 0 obj -[642 0 R /XYZ 42.5197 626.6834 0] -endobj - -849 0 obj -[649 0 R /XYZ 42.5197 729.4939 0] -endobj - -850 0 obj -[649 0 R /XYZ 42.5197 682.8458 0] -endobj - -851 0 obj -[649 0 R /XYZ 42.5197 612.9434 0] -endobj - -852 0 obj -[649 0 R /XYZ 42.5197 543.0410 0] -endobj - -853 0 obj -[649 0 R /XYZ 42.5197 473.1386 0] -endobj - -854 0 obj -[652 0 R /XYZ 150.8227 723.7257 0] -endobj - -855 0 obj -<< -/Type /XObject -/Subtype /Image -/Name /G1 -/Width 1275 /Height 1650 -/BitsPerComponent 8 -/ColorSpace /DeviceRGB -/Length 171350 -/Filter [/FlateDecode] ->> -stream -x[pa$V I^:wtMm"B˛hO\U+Kw/: nkr؎ʅn -Bk7l{zMDmWaZ]xH{HQ4[Mb -/ jږ+V841 !niR)UJ 6z aɤrkAa - 7L](vx6y7,B)"#Ub%*։dXHF E&*%ɕE;w3/e'U{yg,B}2ثJ}ҿV 3,, 78D" +sBF8(e4'y%,^'/J-fCONwV>Y͏K"W4}pE*mR"Skof:KDxq\)fjdM啺=ʙXHu&:LލթzkFz[Ϩc,"Ǧr¿ۅ/|8*]w #]{WÅ;CIYX -ojt)jN?J9a[՞_ݿއ CMM;䶏o\M&#w?Xkݛo.-fhà tv(廊]MۇM; -<9/ة8Kv p"I -VRHn˨j3V*ԅWwg5]U?~bsw[Y|ow=iۗu=r}rYnrzZn_鿦4M^_-7d}Kouw*wom-޾/_:䷕7u m~l޻f#SC`Unkv:'ܯc-s!Rc}e׀7Om`675f-޾o?7-nztԢO{~!SP/}( Mroh4j&A=C>8r2A1eݡgp{g{hgGG47(+Њ|F l2߶)L9iR]0Rb*p_;Xwחڶso -uQ9)fyi\Na6ߌDb5/Ǭp]XU24Iqvb -ۈfnR;Iub'x{{R^?>vϏgS:ou5[S?{97^TKެ\ߛ 7t1cS:~BdlЫMrӞL)ݔm 4rlnoN%o=mOu3ݵwxNY+8.+]JR.~EFK9|SQ4'Bv#HƑBcW7_Fn{ζ\eVM}TEɼuEB{fnY_2[%\VOPxұ}_7aOL'_9+^ۣS/yB&N~1/L8qʼniӵ`2NS/Ha/G'_|ibʼnwt^^ىɯ3y_LejM "1{M]Zrp]]3R3L]]j#{gnX]w\LԼGTguA,u>y`O֢yQJ ҬTz?V3sYqv^gm:VBs*S7М-ߓ2#gg|DJ{nB6[5Ipvs$TR{uuB~?XZ;6iqX}C[ܧx\8wh1ֶ֭%mR9x[ MQsipkr2h 7[jA!_XUAa>_煊.mUj6QyzwUy` J@gc$;$`6&3݉fH^@!$$~C81;~>(*T})룺N;Eii& oܞx%gcsOFqsRgccIK)TB"Œr.ħbSĉXh,y$M{YVY8 -z2!  q#foN~tDuLT "TZP#aӃ~Rԁ -葹.iQ Q(ِ ؀uSa5>vWm{Ĭӂ9a"^⋌i&@  -P\)Λ,9B ,^y!P^͉:gq3o9aZ7!|񧛗m]%e:Kt869sXǏ_N|q$oG7s81@ C#HOW-fލ ኆ5m=]vӵѧj{G+"H#ò74Dnh_oﯴWmhyC ")-km]>1XQ穨V} ^:׺Feֽ__P]RhCcO%:Wa2ԟuu`PۈF{)o~mnqk_X9Ǔ@ CxEGחS]EebZ:ڧe]Z[i`2~#0^.3-ˉזv!g2 -393R.š:C˴#@zʉd:X#-BcFedOEN#TS&ĠvCOuhҥ5ӭ]Jв]yQXx|Hy,ҹQl2SN@P㵝/^@ '5ۊ,M2GU~-Q֏B%dtPKuWo)$WB{N-Ra v%ݧZ*f@]L*0 I -^ - /ffߤVr. -ʏz>=aJʽduԡ5S&~Syļ6hplxv=0_بLoavA=@ -舞RjjRiOwݍ,L4@ `x[ob|ڴWt}*?FR#Wl^zLeVD5Y66Y 5LK2vղl1 g~5+fsTM}au詋V6-e{ߖs͢%'pix) *'%3y-\ OZ$q %@ =/2ΊJ [AJ+ -Y(fԼ5]JJ$^8K%Œ% ޾?8&>KĒc.!r BХājyx4~|tؕ-2gy1 %}A%_A87/>ySƏ8?zS,wRCNKMJX@%tcRcNQb)2>+E\9G,lQ(Ӝ l|sm)7vo2ܢ͵߃_02]@ p?]~Y$qq٦/^O t~(3HXMT?>;]%$<#qx4<. Ѯ+XG&ext$8:/#X#G$Bf-r鳢qtLGcE -o'ϷAy^>_a~`p(K+E^@ p^X_S:Ll6rvMطf9Abw+ϓp>΋r\6M "/[AAal.ljb& p(cQbZiW4vk6{{~9%w30,Ϣ&3p; @ Y/}=iNYh\F  W^ؕmGhvq.? ̇{ɘf@ p?{^c|VBm*MoO^Y\DT -+Ap -Q-Dz6(ֱ.VSN-QQէAiqN0 -eP%a:[nAfʽZfKm޿z-/;'W?/3R䧶fO\C>-MBޫIVe y` iQbd,s吳SՙfSkqhhRMEHCws+xx#gJɱyl9x2|fPE+ggq'0;E< ;D_ɸ;Y)<瑿c]*q&@  ܂ŶOHZ{+o-WφWøaߧ0-ۭa;N ۮ+ұ]jڡcZ:}*OW>(n%[ RB(Z,az}J@!QQ^#pֶ~|F,u+׾n\zNN T:_|lNHsbxblupn` /Er$3)qLYQT+ +<7[wѳg%^LAVS]JKkskq-+m;Z_zoR5Nmy?u>ɺp4qw?< x&n&;YXԂ!sqa5fQ\U @ `߼elKc O,KW8=h%X -IyCYkթ3͜l̬: -(w{~~k'kw~Cc:mc-I>{̅+}`{]l MLǟܸY6>67aX¦]X?uϢwYADg[\imWv]{ +JKq]ʽ,K¥o5|z^_7okz3M6uyVK'3)nHp!wp߄8߉,u9?1?1/~sAYҊ(:ݔzOcP?.1_口v=B˄ u.aI".YƯ/~_wf&-]gp\6ih:}u _l>u/׷+.^smW'nN2+g'M5?Ai"zK{1uk3Wl %>%.߷ 0H5/7Y|VV(o#,40u)FU= -羅X%;u -Ώ&yEA ]06l' -^4j҂yAsF -2ϹDz 9rRdЄEMZ|W<|ԫ49w*~!XEuDd)fohǵVƮ,e-շն{MGWevC\b}s=VdAd*/^=/FTUbgO.#׎" lee9ve+0<7xsl@x_aa|- >L #+W/oۯu"' YFe,8ڃhd'A]Y|CVILbaL}1 bRJ?o޲7KߙWm;i+ܳӮ)-۱Q;a= -q"E!h^Ygo@08/Acɚ]9ӬƘ玟l\G 2Jw^n6](^evB[Kh\{LLQBW 5'Z6}L|-aV YV Hvؤ8 qđMNmynGNlam}~zHl234D-Qń_ 91w襎)<^M"t/L`1^HFL ^U&§ -)Q a'V|Yo-̐ğljLN0۾]v-vWolUtoRvEͯbj˲@{ώv﮻[wA08/b<*nWtKAEZG mO)z,z$ZnNVZPGR=~WDIIiQQwg9v끆=OvQ.~MRI+몑jRW&|9[Boc^sͭ{ Z@[SWq J2.ɮfXuHgE--"WhKA ,;N$D0K#&즓e,->cֲ>fkqzޚ7;\D'ڈ( -A)xErQ((²QE(C/Kx@GUv3JX f71RPj>p*?ۭw4lgtp&t)U%'և*W!0ҽڪ(ڧŮ`ܽk]1v6XliX{D`ĵH9梖[WpO~:"e?iޯ>XZAYVay -mvƺ1cۄ!QhziTR!B .l0obI^pqGGʶ)oֻpbm v%f2֕L"]U#amj`QWN䑩_?g HwB"mX8*F徲ٰeeaˣrvZ(mkVBnjdfDWb'w|̺PNk_,|2'<ⱕOy>lƒv:IF91ffxN)65#pi` íXU]V*wWkE=oʷUXUXmȱUlؑWAvk=UlUٶʜ%篷Mᰒ*hP}ڈ;1Q SER1̕Nϫ`~x MXhf}]BC-x๣\2ޮI}}M_ o*^Xiz9ym]֡+s*Y˷Uw砼;fQa>{/ Uk$"Yrb'aWYvШ@sTei@ZFF\QAj2- D2/ -y6>|󮪜Gu }U "`!o1 jƄ *=E>[/f466UEy6v~E!hlTY)b;mgG{ڮ`WZ&W_>lQ|Yw7PCk}ND1s2c c"wZ%&x,=e{WxxWD}}f)߈;ͫ}&0='_Sr4pp*[(wG/'$Uգd6UH.L#/FjHj~᫆[V[VWV_Z}{JO"XG#҆e I1˓˖kbWm>ا);:/rӉ_niaWaA_wz& VUVTU {koC+-u)k &N͓e^TYy;hk\kʙo` K w'²'oq[Z0V~avSu{[9Q7n3.`p -^[A!d,ª$)5jm.I-Idj2Q+v$u\xdcѱu<>>iNHbgN2ʼškJ;_z喃>fZkN|2=3eo*yM;g_|Cj; Tm -X%{h9z 4A)3nĥ$ZP18g`ܼ5tS Hf^YR?Q&+Hľ6,ѧYy6Q4Zƛ*aAT+6a&?}Իĉu Ԋ Qzx1 )b:V2 )F-  -Y12tЕ/4)ftq象ύ,׼(hQ ☐G΍NzLRƛ3>g-1-Ή[?:Gy4"JQf)MU@mK! ō@.%b%>/I>G2 Yz|ޫW1!%!Z J 0(_,1/|Džx\E5N/R R,MoMR\.A^ !-HiQ81ORQQQQQQQQQQ-%*ں n?:ZrZ_96֗oqwirr껳r{3#gDEEEEEEEEEEu2/$ylm4*Sl9`dfRIfwD3s5IQ[I oǿ|,EO$Gi`xpz4d\YB,! KخߡԤD mwhX|vmg %(z!Ik%0IJ2FflgMgxvp -< -~rT\a﮲k=0 C•%P xYɊeDhy@ -G0ST(O2xTp9B&h]#<mA Sc5$䇳lN8 cɹ,~KdG2H2?JQƥDvDb7cTWmxnkeq@YtOQ, GW{Wk̦V .)پ0n3 SqtYD#}>4ni*=p|豗+~sɧ#U -.&YT; xE:Dj]!:~~NJ?_3P(V`l͎b\l%C^iQl&1J6Sɒk#% &Cp-0@8aJbHŐ݁RE_ ud@C$ !  0 I-0ш4 [A d 9O -U_`k@%S>J# 8tii4%/@1I& N _"&Q$B.pK֝U*XJjKpF5D}s.'<c 0[Wb3Y&QZ{K:~{FNTf.3wtc82Veiciol+CJ*@\TC&Ilr*XxߏAx }3.i7~]Prscau}$`ktͅW=kE}G[.B4и|>O^3մ.oGyݏ&-\rZAVǿװ#0`!ļ^)l5hx=_0Wgl{10tmYg^N@;47j A C(XͶ) -Vș|3Q\*OHHK KȒi"5Yr6K>͊VeŨcT9 -UV熫"lMSJ&U+H&[d}fBfo2C Zbg**e~ /z}-7/\5KϬK]FJ\AdB.8PX$)~z8g&g@==) t {+{l\C=֥3)ܗpGlY]ג^-9ЅxLj4ţII+=l 'c0_}WR֯'EܗQQwp&YA`#ko+M8ꉯ\qpU'c@QE x=ܿ8Wg<@,0< -9Tx~?.ТU+rUyl#'3/T;Wn^<#zeMt}lyrqyw*ig)W59ѷ. H!i! @/"m]=\SUC~cI^Zj5ޮ}m{sV@ `]ԵZ $Hm룺jWv o( !$IH H2sg&i Luwgw笮E-WBH2sɝ!g)gydνwN>nڎuEwsg>ԟߓBfQS}AN:$ f(/l0] G^ImQWo'Fgc yB&FLw:4u1B'%%%%%%%%u /š*j{ -==D )rwwƌW'8Ƨ\;Ξ;ޑCxmm8[x0',^4.ԼIoޗ}#K)r`p1}/6oo^ 6D. gdC[g/U=㖞pz`nIo_`_G3]U-}yS&Νj_}=-%+W?mc3f>Gs_-Z5a{]cEeU;Z*v{'s{qΙOVxZ6+{2^g3맛6lwUykwwmQyN #ihRHjL:{EC(tH<˱WFܫG lQe1}c6dùݗ$:.]QZe({cMyiJIIIIIIII%]ПZ4bOU= fA(0M}.{9K':W,Fv IlNt¹zҳnN^01-71mti7ϭn |{>SYoGzC`ZWbKϷi܅u GBzws^  ǒI^9 Q/m۷ٻ½ƿѽ{gc9^oVc=[TW*-vYow۶.*":toݛ 4SUU0p %UւLY2Z%9Jܡ -WޫW^~FdB_$m])@F#U#1^N8l`,1.nB PCϊh,(E0\k hîbg'rwz(Pz -Dd/(J' -ߡߛyߔݳ(uj˟{nW;m7Cr(ȯ.o/٦(ݦP߽@is\bߡro杍C==Lk==5͗`LJP@xX!^W{1uՃ0 f0ltxdR%ky-gy3L\b_4vT,J@C{Kc2z>ѶoԤj{5xGQR<86yfჯX\oSl -~O^ԍ0W&iw[ 5 -eyBiڠ4z[ʔr`ǩnPVVVn)WZJєR 4(V%,I_i '-5 qN4Is9"ؙUJ=%J#޻e힆-ӈ~6LK={!5H`6tl:0Bl`!An#ax1YCFK0F*fZ'>D'|ك -4B]18׮}6֐1qt^ϗ㱀J\}l$% (k~S /,XŹ$|ҜQTk+%%%%%%%%u/I1Bn{6)$ٖ'ٗ$%_Ir̝;%}TdiڮhZ)ilK'͟\7r$IvD)IE)EE%9'M궴Nɘ79cQsEw?dsv﫬>g! -W3tFy@°g]^S)%}|z̧z3?eNs8OCO%-A:a@`a 6y| e_ab2Rϋ"&fx 5浘#;7bb`L"<_>E[idkݹ:Z_ -b:lD.X~eX=~Z$g=]6#)~P 4`7#dl$NмfBo ѐyW11F$%jD 03f=}k/-It١Rcusqҗ'8VtZF}$ 8gu7;֌K5.Z*9޹q8x{V-+XssF95qoɾ F gN '1myƳk?<;'?SPgwY\s/ݻ`w V ONhmLi\Ws&ρMަo~X^.ey<u`  YB `Hc{XgK bA -;A*Ru ?jČ.`ee/Б&} ~1{SFX0U£% cj2)F]ę:; 18C2Px@, t]cln=ũx-ȹC=4$-6 %D-k@^= a":3#^v<!M61p1sj<̀$Ɏ3XWN/\\\ ;^s,dG[5z#kBF-y;/fB^?8sbNMqvM9S+x!E:w'oS=AD?:rvVe W{'t/f<_?Ou/M=#t>'JpRp'Q\)1bLm^$/у@DCTSCp0ӹ;!.̀7s43qG,fȎ6 ;P,:1낭n:PV,@!HPXbI[&R[HUG+g3-kqXTjXE=UX]E p?s pµhgt+cd5'M/!לepnO OgF2_sґ|/*V:@^m+W]OfM睏gMvɼ+.o+`Kƃ3ё3ѹ.Ι}ĸˌuq6WyO4P.\s:(lWb!Ic/住>yOXu?jl4w-{:{Ք9ٓ˧V*4 1 -YskH0CXLDD iHa3M9oaW _R5(F g"7(y)4 A}bm$q-B,6pkpc^+Ff9Hƣ3[0*:԰`ߑ1FedHkZX/o;b"= VaD}To:8UӴ7'p7]p I/|>))))))))x/, _ӋGݗg;aXľ׶ :o:?9mY̔ٙ)SRW%HJ[bmycdDzII8!gLILt.5c}Ϭ)j*(U^?Lχh0n!qGo|]SY|r!xG6* JʲNϟ$!׉wd>`"(&c45gfxaFcQHT:#;$pXӓeWi<%b#!le8b˽SMA1-` !p5xDunɪ"XdP,n@ɀؔ<ލADIߐlf0[,EQ&ކO2/AD2A -5qHZe0 1JvkFW8P!X0Ο &l`lULސ #`2e`@p]ICb~m{J;(԰ jzjzyvv; ܁|O O *#ؙ<wzoWAuݓW: -wxrž׽ DX`Diq@H|ż0&^@OTsLi̯i+T:\6̢_ꂎ!M[ kW$@~t)c'̀ty0 Mև)c %!vsq ^#͔fGZLqx#JU¯*N@6ݢU+M{RRRRRRRRR7Du.f"ڇ9D/RB/`; ‚Ǵ÷(zicz? D7\瘞 ػ!14R+ `F10a&,_J`z -/[(dң'44 rW#~n?sϠ1A[_}0[y`H_-E!UNR`8&nPX9J dcQ ? ?,+ 5jww;#:LLpdvy8ak(e ޙgn7bb\7zv}֧X0/,^Lc@~ \f)))))))))D@40RuW._G?dQ[W`!/^u#Pu;;r9\wMt%tz;rv7}R ; -NOoB9:gԊFq*ccKj*Jw@vy(z]뽝.OG-wW:=.3s[C /%4-mO4 Ч6ۼבWzE[JK³%=ڽ+jZ?V Z* pN t!P$R#$8"kmkֶ[d!Ù]ϵ?\[gŬp>''<VvtC!YwRmMXs`y-g/>\]@Mez -**-?]ҾWbXS]RPT^_m(ԖjkpB ^#]\v¦Xб3k&IkDSb8 ![3wNr]*B.Ǥ:9!m oL#" -wO#i4rb麭iŻ)|nS,IB] n#h~C{2"-I%k'.A2g| LilIL߻25d$"xT=rb[ -@*S$ASEM["?w2Gygun%s K&R]eUYOZv*O=T]r~wceh.>zhuIC/k(>\=},\,*k8?}sުsچM]@[W[&S**w[BEZjOo­jȥsߨ7%G>_Pv@Ӹ2P[O[GN+]pVeV|xNF }ͺX٧=eUI{ D;.SW6oik+j4 55+v=eSjbJv.; _垞ڣm(,ӜۏnQYGwOwF,;{J5C` ,;dtb O4'uOye'*jhihA'zt{zx@$2G7ѐfNӊ%˶eZiR$Nm#5Zk%VʒǒqBT3Xh̀`AJu'r!pX+rk4Z%BOV7)6D$MQ\LN6D{пPܓҘQo/DÝ^i¸&t@cRF Y %DꦁǪ[Ƌ*tj%4C[Ф㈍]yӯC$4 µn[@Mg˯vM NS2 ~n͖vLϭ XBUMsGk.Fxn[FΤ~x;ₓdm>tPȐy..-(i~c13]ӗ{L(',ufiҷ[;gL;E n-4aaKmNk} 4u}/t:gyV{}H2Ch'x82X6wΣ>Io'%!^e 6?6-]iReFu&tzCdz.f?><%H*2 -|xBTkT:8*#`*EJD~J8#=3vE}OP5/, e Aeɋ6S>a\vl$+Ƌ>KË4*Wxn~[#֒Ƌ6>)9T&ᬀ=fʄ!!k>C*р},~fzr/v L&7 -3S4(Ebm]FR86o53?_Cd)lZ47sπ}H~)˃@G1D,eW N"j8vaDžS #hl/ 3T RP)|=; &І"L3-L .F?mRD2hVK%w0c $DX+3Y򏺞1¹'/boФ9S!p~6Âٌ2Ќ &xE&u֝bTuG*gKW͝_5uheS~y]w^kjK?|v < LC t&mi{w&Q\g -'Bw7Y4I'AB )@-!!8.oeek502>sH#Љc;}{*⪥j诞hzT}|rޣ怋=q7}'.w1mxD2h% ?\|7~~z~t}y+00/ -_`&#U`ĂħDC6&سxEFA -j@U2gVMkS4YX!QmP;fϯ^>dРW(zA ٰޔ_ui 5)EC"(fƒ_G:Ɯ%-݆|+ Yc!łHd50kshqG:Մ40\9o$GAʏ> )2`Eoʘv*e7EK:쏟g=,L?_G"]4=6-~?XơCp>2{)n\dę,H<3-S`cqZaVXaVXb*n?~8cCl^|>^Z?^Z $HyIL_7Y/D7EKQhWIkm6Y(ooz4#ݥQM|XWI41<,U4;J"e%rD `:#z&/s,MX3U I&8WxP.sns%Wź&NqXWrCPu7KyŒE%RG UC үzyNHzz] cťc>*M" =yڜ \NCjS}M]cp`,r<VK4Am.~D7UF}mڏ4SN[w.PK (,(b"ja}YiWoO)MX,g*e*2KAH4DSFtvB=) -nU=7lH}h{Qnsֆ50WU"U)G9+GuT.W*B]m1нWYks4Bl\1]⪎s]էS, T6Bac>ysY.ҵ1B;Deare\"ׅ9@+*]*7F8+c3=nЩV$֤]"\(厾QR{QJPo!`J#g X`^0IM5 ZZ{CݫWTp sC+r+qT<~ JEXXz0i*zp?Ej#Y"] QIghAO?;t܂nu|?߲$ɪ|t_&FihO ^ax'r~| -6ܬ6 -+ -+ -+D͊ew0{3JpGE:UV'HU뼷!U8"RkgM"])WEl9qDJM|Fm&WE:ݕ1iehwgؙա)?] -B@ -&1s,Sо?pvTY;N ʱ|/nLz8זqPwm1Z*s,.{(  ETAjDa'8פnbW%PM\"%Fen> ꇂقŠɏde*h9vXdTu/Lt/NvڭZhE8-ũsW^5r ++ơ5!n~>ɞE;oƩT5r,GBw>$-߾C 06~+i#)lEc< &FS+hh7]܌gVV*sI -Ѫg.A;A5P,|a̡!ғx&3kskkc!C^: ?]AOnxOUUljhب4g\vo©JXdVXaVXaF`"^=)婞Uos+z1}g5fg5dkf^㜂1;wUisJy͉eQRyTh C[B\6 +owG2BdNQȴhgٵ37EZ̈a> ϣ焥*::!`[5]5]1u cqP"<&eVO<FK b,%I$89E@`^$t. .ti&ZB9ϟM3}ȈpLΫu.}3 -tg.:{G6"w$4^rd{$B"aX`oLtj{ P/\hw6E@0pquȺ;u2`ָ@w4BzIPΘ-ޞҲ-_T@ÍO҅&6Y Wa#L`s]!NB9?kO]h[X%ad.ZE)2l=ǠORNq۟{}"20(V .9=ݻ ů&5q(): + pu.Į>dgM*Fb`Tu@#Fm3}Ck'YF %V!AZں1FrOҪmZ  EPb.԰J3YrAnyaKeUYaVXaVX@ <1#膵U -ULA ޝ`Я`0+,լ&9eK{KԢF[VGvE{^tzKyMf)_gT yU:P.P$`EtO6+BFYZ⣐].sO̾2%cp=^X=Ѿl[&X[A 55 vq:8f,(lnvwkOS"Aj[5Nu* ض W::;npEZWh ΠY6UTsW5f -BKga`Z($ccR3?"-X]39}pۿ.xo 9 Hنa2??%u9ogHLgWfkz$>>M{w8omB"84=@86㫷vx9ſwH bJ89Dx_uHKs>F. /x {ԙm)BE;ڋ^sVkڪ EE.*"3ݝ>;}3U}fۛjQb3V A -$XD䒐s~$g;}'圓'~}*9x()^kSvҽ/6ɒu+]}tu>>Xy n8QBr~q_L\s֞I缫N+}dC.̧**dQ *ďɟ~غ&iծ;s'k-K>ֹWɕk~'hTEHE>)ӿ~:0n.>(lGz6+u\1/~`ۿsgf*tC:tСZiq+xHkUA?j䔍IbE\ZmX#V 0㧰bR6CO)7&IlvPn+LFI猓*cmF[DǪI Ƥ1Vċr PR]:z\`ArD F#AI$ ueZcZ!23& 4^r"32^XĦQb2 FA;`̙0DBԔ.57ahg )XR |O tK'q8QE^zk`js[v:9c{Ph7euMRVBЊVVugXpfx'\G`EEU'!?kt]svX2ωD?X^ٕy2?rU@:tСC[Ejڌ&DE -<0W*H2Qn*h:b,FkU:숷8 -&d2M驎Dk\:R\b⬥ByPijӄHks!]j9vh#$-6g I; -jyC5傏GuR{ۤv-2j>SM -/1"؏h׵L6QRbK5"(RbsuWxpxi4qGTV䞟9t+ZEP\P,&aYQl-! :$P0[ 7%(<;NV_13iԵA<½0Mg+6 K2ok^Z嘉_%ZY~w@z0vgЏsɍw-qǯ^yG]a/&{_8`]cb}i{D{,؛Mk:SjQQ۫Gv⥁.wT4{Y}W[Z۰8qQNeY{|t?߻ȇ_.ee=F >DB0経K6H\d쿽w_ ^SA/; eĝDWك*:B(j}=d-w~_/PݥY:tСCǭ/eb^*-psUc WXݜ՘+=kgc읶1Qcٗ.\eiDX[#0 e -wRcd2|Y["H&?lmقjAD -n&6L"H:2oDc}e(TSDʠ;Ց,0 e.DZwGYvG[vKRLAk#Hm+Z#:BESSQXs -a/e-^_!tFʆ *g*Te+dޖ -L}$ :fˍngf99|qՃiAZ<'`B(mh][ou7{9v{rAݫ/zHU_v9~X!a@dCgZn17)zO=moKl>jH+ -\2M8ϻ Zq ]/%>;Igσˊ}ՠBe+`i[XEBa }+*:u+%4%͝sƆ֣#X.@ -־88 ^p%7UCp8!*{ wfJޯ^?ym`-\СC:tq `w͋0 -@0J(y[~_G_;de: ÝkNu~G=vK2<'ސޜq_V&G0!lj}e/ ]ZNi鱍;1 >c -V΄ogb&$/VE2<5 lK|`ݼ'~tS!Xiۚy5OV#_LBefj;).Ά&=:tСC`)R"cbaT!D|*|px8oკ5?hi p熷^Bob}Krv<טӘגז1fo[m6{K9ޒnߝ'#woF>v˷ø7=wz5;;;-d4ٲӳӳ4>ۼkPkS@$do܋Ui6؛Z-k[MF$[{ךgA.V!AmXvwzvӂew)2ϡṰ+nzL%TrAN5ؠNVd!*kRe1y'@p}8"v$ӭੋ {F쌒X"ۊ~>H+!5a޵;y~0Rqc??@yI8lsVۋFآHCCٕ}oRyG,˭{?dU`a0M勝}鶷OԱsgw_n``o&s[mћ*}hgrf^qsa^{tСC:t*R k^`Y;Ҍ#'L=R =tSzug5*vO] n>uN䦬DQqhx7TU{bd됉N -^Ȏw`ĈmA +7IVIHL%#%&_  Rְ5Ƶ*=SHPDZ)LU*AKB(K6#KT/<Ӷ]%;U LhL/YYu9BgOo|SLT@kPV0ȋ! XcĠ,˪=/ gry8);\!燎]0̄y{HZ)WkiJv{oƩYQ#yV7z/a;h'TNS/@7ېÈ be/v$IN;쳆t!1.Dq7mxcP(|eEA![ }#jDToi֡C:tq މ%)`QH}.v}tsJ)'Oϙ+WgS8<taL]?r9fR@fYV.@.Q}"@HMg= :ۻz%UC:KL09DY={UQP+BsH#v],(\lfѸ:7`<ᱧAZ5+`%#0#0ˆ%|$A/'YTrSUo8c3/^e -יӬ8j#!Hy220?>Yp[>dEK -cC^E}DUt2 -d||Bg:*3c8rϸ{EL ӻ{x@Љ5Gm+ڻaP#{58N؊ I/\~xw{W{4Հ4 x1=ufؾza,-*})OO<-oXOe tU(:X - $ ³ 2 $e0@ǒz{mֽСkO~O˵u;cm˷;8 ,֖] nY;H& -¬@N+ۯ\ݯdUӛglG GPAl j*?'X3Ӿp}GԱ ~֭M/ z0<86=-?bpsWdk9w%͊y9?\y4WfVm\)T; -"Gy& ,|Qkvhiך3/7yns5FsR #\M#),*#mَ[wQLit*Mޱ\Q,=7{=pGs-&&f35Gϝh׎?Gc -mšƸwjd03K4CͿB̅G҅Weh@hJ7P LKDW//|`i6@ -b6(9ʒDM_UϽϽxX95R¡kc oc -x< XX0PF(qZA5*AC^!:3Ѻb`R@+YEf1hzE9Kw{w@[%v ԆI[{[s֏?>9v g:C~+vbbE 7/v2[JՃRz2hDQ@PV?BMfLoؙk'; }*3]dV WeͪxcP -pj#]eܡW!Q0aFaF@]C{:Oa"`I&N@``'<Ȩ.bºWрnTҸi@HB\n˴ܤj-V3uQ=2ajz)iI [Ant#OzabZEՏ/{vm1"D*+"4^^pVNW5㧭I&/lLzGlytat:͓7<2}au3YW>ކCqh0 D%f4pK7{qyQOdu?U*$7#0(`P)*EJϯ}C4eNQ( -4)Ժ%a5-0ζv|ʆ67cxM{7`i*<6i.& \ݬȆUBqH3֒# Yc{~xJO ? -+Aߙd&43!*=`и}'~;~9 jDL9q6ӞDVFtXW匥7*Ҙ=i@( R=?e'-?bbJ^z98 K#x0& - SD,Zg{EU;n^瀟 5#0#05u\x"0Z -'D`IW$`RdBQ"%CPy- $z}b{{tǞ#;~W}'O IG>}߇[l]ou tP*@ (|Wtlshoȇw_/io>zmϑ]{?8]P$@c0!J2C֯ ^vaw524F2!See"V-?{܉3W&/˽ -,W9$p^S1(~CFp2"sb= [Hk@f"ZOU_ے{Hb@psK-(D&؏?{YV@:haL ,siB EfSxncʲV[Q$Wz7}Z *z 4FX ek&V\Ʌ_|}6 -+jAX걋=g)% +pyF]O0#0#07 EJ -pkB;;Ϸ_>={=;wy. U! -Q䳗.9 ==>wXgωޓ6w{$&spѿR0?: <^@@=3ֵ˟۾lKH gaq靚n}͓\: aیۦ', -e, d0J*I[SIHk-jj!ˬ:'j+N )SG -ׇ}p05iEA D2B?V=_eX P`E ygމ M7f~ń:39-h VO~g~!`ƙv9+Ec"$ 1\GO F[ԥݒ)(%fD' 4OW[AJPoNpUf'=*jp L3(&A>I5 X -l:p1ѰFaFaF<{i`dfՌ̘ck~$+ţmmyz gh[a2ZgOL. -cl4⸪8&V>,^iUD*Uti/ebYltp8/|A8mk{Ub` ŨU-(`MQ>'"-Npn%Q֢%1QG:͎X>;nΚI̕;{1Щ/CLX])ûȐԠ -eo)~!70r1Ik=g_]9mYϕk~]cE*ҿu'#geDK[lA,iuz# ?f#K?V C6"71*RJNvz)pP$U)6be %" D <ݷPRdrA 2|ϲXd -_Vc7P`TM8!/+NtԼHw@#"F -A2r3.9_'ܐT@jw8@.{ۛ8'7uI/t/V>&9uk ˶g}~+w׵[B19݈}ހ٥޿ttv=+3=ިj9j&]=dWxRy4yex1 wvKtwU?v~ ^8Zov5잉F?ŐRT֞Sm.u aּd9D-{)[)۸Ԣ-m]wG[TC]a^Izkj&8r!Eown&)Ws-/*UW=0e\B<qυ?6<<1Ww9\h>k?\w^]sȝfqӻh~׀X$NY200000000zI+~cQL/Cɨ -RyoW\ 2E:CN$!!`z7A|z>oiQpTnpa1ńTݜ`Sv9n ukXBLA97Xr_o.d, ֗F549%("Bg<NxaƅEY -Y|rs!!C B" LцNHX_RbIʼ(@1L*$$@«RG;w*)&퐐 -exKeΈ#iiaa0cHì0ψ|(ӗ.B[[Q*YP/$1qY渜?L\}UIY4ߟp^ֺ~}nNKgۄg%dJTzcMQE^E 1ڏ2i)nI% eQeNO+_Q%Bv -HMZw_D=17⑅ys[t>~s&e\%I%.2?Rf|d>.#ƚi1N[,o\lT5:pBe>E! jSJ)1ef,ZSɅƔ"}rOf?̐b -(HLXs K E ˆKnοU7qZbq; i݉y16f}}N1'Ę; 3 SjX3/ "Dո(HGb=!폿X+:?7.HPCΜ7ؔw)P˂Q -Zd}@SocGy^K٨qekBd j r+aO+ -~=㳢}7* 0aRķz[K@(m>Y>rEï%/<hg1TKjd(ehDI>MLN-_+1 I\, -k6zIj -V'jRjȇZq1+yiQ 5}JCWj[zC064&̒2(I*\RjJ^nL}8uUt2q֬>IWPDՈ]cj>+ɲ prob޸ŦB}R>MgEeDF (B"Ӄ"҂3׍ynpTzp\ݘ'G|{K%Ӑ5SAw)u Xn9pmQ7EdߗNjLح$"iV ^ Rܧ} 2:|4YA#viPzP۴H5{~GWt*]{E*V; Lګxi[A]2RIxgѧWO*McfJn3f c,J :Sβ$$vIys.`!/HO- XuƂA!"x!?Ę32/||שE '+I*N59ቘ9>NUnBO@(-HDQ>枒f3 F[%,׋nA…9_9׿ ttSsb{P_/v:aދe^yL0+kf`````````JN55ZU״ԶW׶nUGZ2p,mmz[8ԝ=c<#UΪ5h9zXKcۅ.,w#e'mf``````````dQv*2d~CS1VqչUX323M٦Kr%)DLbnk^5ϒ8Ј.$,7y -br{lᄤ܍7`^Lxe(gZ$vER!\, ,3)cE^,0/xju)S^OJy31mkқ4Io$Z_OL$+7 aq%޷/.;U'& uS8mJad KNQ謬7UGXK)8֢BL9 7tk8:ك`8G/eAД)$Z-[UKz.N {ax!twd$'9ssr\>ۗWt.rH7p9;`OO҅;H ^'9,pH"Qݟ5 \&G>3K`Fp0RٰT7*ByD(EVދK е#,3-IoU~au-tQC2ƣl=ۗ:?pT;ƒx'g_/ַ>{-$['KF~i -nK -39fj- -Og! nE[4 qB(TdH - dQ"Ow!z'[2@YLZa2Ϋpdva#7Uʞ20pTEF}{U2/8"cE=\\ezx`?4*z^"2$$T(D)۪[W`U[ml۪n-IJrF! ( 0a@!K{Mw:s{y QVbY!w[2\=?\J?</D"H$tÚ`7ʻ $Ώf[5x'*GHe:XVd'*^pĤx_o&蜕.K} l&e?9wP[e?kW_=LO빌+sXx:?"jWt*f8G˝#3g;%X<ݻ^~~W@ z(`ƽ<=]l9Awzثpt:3)>~H$D"HxE:*dOwM.zi{`ġ# Dc`$H@4 16L)~wv6=2p E!&`y=љ΃{ ttK0R!S`"=;Zsv=a ak'?v8Ǡ#3)%-p+-ܗYt꼎I꧶Y I_/xD"H$D"IuQ(egΐe(: \oʔ1> 9g, &c/\4tkCSϽSӜ{ - áSykİwK-1j^ɨo|롟Toڤ1~/u]$cBz -xN'?{ -JV{A7:u:pter6g^~A JF1n13Ǿ>Ke+4^Na/:)і&>qEɛ_<`YQ`tHxU]cA+g q cE} ű:FFmKodؿ*~2j亁>{䧩S`: ]ӊvf -bm6Nӛ'6l*8|*8{bp]{ΰݓUQaUpyQq/c?eU̚H%xl˼9MZ'gMO*Ca8rj렱"رJ?=,?=XJWLEwnYrm@]5VB!>}}™ziLӮWj 4&]Ǚ՜[X sǛ^50VnDB<9"c==[]e Ë;xpcB<9 ExT\^55(x4mri&H$D"HW*,{miaWyez MmjhwjɸpaۖPhx:IFj`JtDA5jL1W Vfk3ޗ~/f΀f+< =8fjpRm'l -|tܲ}gOB4-K0]21AG h߻sխw!71Pc 0c~pvBBD*֌ׂq-ThhaP{7eppU.ԝ뚭A$sDWqm42w>@qt/D"H$D2iՖIgS:U%c7vX X-V[&>nbdq0#ա:fl*̄PVl|wlWCm`*w8 -e&L -x]U›n( -DYϕp-`B؝D h;srZ΁Ypہ-apE\⿔\l:R<:6HxǂsWShhǎz}5u,= -Ӧ$ݴv=7B}ĚK 8Y`k,]JBKC_w@4c8ګsD3UGL"H$D"`~%$5/MG~,0*eCK˪S^,Ծ "MXFZQVAƀ#bDhk6a|Nn\ "l|'48)㼊";;{3bG@9h};N<ĉ~b4'#ct;5N>:MP!Ҷ`#=5SǕB*L@c]tշMu`U~I)c -.vnspdL/xf~[gDN5=l?w >4k) -q8~ji -L8~怽X<`hg|UPU ) Xq߻olX vU~=2D"H$D"]{Tl;Ȟ~Ij* g>i }v^27GZX޻K#;i%S:x"QW <# -)6`1#8)a ?1yhtLTM'á}Ckbʕ" -w6cdoF>y9209#nbA@c> D -#\y`q{wat6قLDvX~$`v4l 3miSܷNŌG|ˍPj﹋.2DQ3Ѥ -C˺.Oס?pР}csN+vѶ=cZC8 Y^M"H$D"HW^Ff6Ռ]0V+?3xY\3#[+v+2mmfR̅xl˄ -fl\4qv |Զ -+ƒ廜wsJ *]Zg? $Rq}@N’gzl*@$*-GL]4i TK^a2wӧ{b u'6w!n([qp KuYg ^ۑxlӫT+ܞ7)?x+S+GؾXf@7\L^pX8SӰmݢ|x8~ +fρd -g.&%H$D"HW._HiaTb,,_clab< u8 b(V +PSccF%TJ7 +:lVkwu/\ 5`cL݈90B H$D"H$>ߢՒspu<!9%5;Q ^5(Yb&dj'70"㹺ɑ}Sׁq]Di)TCC jk)p3XmV;4+Z㜹%qs`^ġЯ5rK^P-j۶sر -p -6HV*h`AY5n/U5vhTNY:0ʿp"}Sc^ |WXR/^]EXY,kYY.XX F! -$ ܕbPTٕ I͑x;[w6^}aȶhGk8-57>;/<rOxt(8 otdj5Z)/n{?qw>XS|۩ ~$'(Fԛ_75>||uhhF譓z= >Uc]/忸8P jŷw{]G/9;vTѱ5+u]ܵVU2J*xbveBؼWn~W{;|w}ռaŵh*d\kt4G ~ּ57on62ViNVŵ}||iGmѨxx=߯n|99س+7yؙsDͱGHT^࠮ WVoS55k?Eߝ]kLTF>WC94[G?q{sXs[BumN6J (lL5ǫPgG_nD4ww_^llK2/Tܱh0:<ͶEw׭6͗65wnVNj8գnۈM݃]UVhfe93 j=6u!shMjH#^+7o5_s3N=;/onSsHFB%T6VHvmjnzmSH}R -Sb盻wE''dr(8nUjSc!PqG#ըU ~&&W6ZݻJ-7D1\62ލj+Ak6415` -cѱH2VW*Dtpm"^9zcx\U]땩a'˓''FGõw<':J#](Z^362yx/W{jͭ[[67BFύN4G75F5ףFN{/1=QЊYd7[\vnV%w5LNF>9o56-4=Sm6GceiWJb5[* x)h8nx.q( f/zUVk:ƫd\!jUnL+/7 Ps* MG j2z\xv#Lsjwj|;z}.gp2W=QEM$4xFu|cdVCԘ)E˄=,^:<3Y9>rZS? ;ک"AQoTZ2b_d6h.z}6j䞵 6W۸&õJqm~6R^>YM$# ג{/E3bVjg'&xr28n1sƾkSv#7[W6[`%s|{o/ػ֍h4W7Z_#?]OF#ek:~oPOzR;eƍa+W<)e_4BOSНGc?i:JzD׫*[geX2,XB ]kyU_«wxO=./3u{yЇBw;ėv?ľ o]^WwSZK,A:oo`u^WwrʾbvxW):PWwšP[+un{m@-XB->v9yɺ[۾hx9}g4YXx3kݔ -oq͗NsKZ@h\KZ; _8 -o϶-|n -?e^U Q73xw?M(v5[[J{sC%OM7.s\wxuaiaNS:/uhQpo߮mwtY+rU~ͥEڞy^OM?oZvOO;f %4@mDsk,Y2ј΋.{uCW\rPJNi.,izj:=B{xyZ f'Y_ʿZjd澛o[w:5-fk2|-xos<m{=5o]ݩDE-Yc9פZ咱7_ҷk{gR@[fl8oɊ2=kQx০? /Wr(=&Uq iutb{w{ew*]{h~8/3y;s57}l xkZݶp'C3y3`$^> jo;7`uzK{h͵̷3wi۩zɨnhص̚ ~m^в{&-Ӫ=V#R/T^OMsmǦ?M]ϣ(['\ig5{hz֍t7?iLsQX5},\Uc8P\p{NI-% Qv-ԝu3(]?޷T*P'qnNk-+y{TY$0*? uK\T/Q2PUf~4H|opZǩqô^͟,w:NMb>Vi.s2!ZO1Z֟?] j!{*u)sp %)٪ޞNM~6%C߅Dzuu qfEv=JR^^xmU%1&UO&y;MS͟m8V{KK -_R-a[-m[/ ӻJ*o^ fBSkn[x g]r -c -oi:JG{v;C_o*d-7S?}N3g 켡:oZ4x}Fi;C/eZ2Y(]fԔb\\8%iwJnk_H.(OzBw(3  oZ8y͙[OMq g$s<&?bvOg`H -'|?ﯶ$!ǏZF;w{$0^;BlȄdvXp۝&yL+B]; z=VZ|8 a['(9{I}6pw](c{x,TFp_0 `?g^nki3p *^rU;˛(۲\* ,0ܞh}_9(G("""""+""""" -/("""""+""""" -/(""""" -( -( -(("""""+""""" -/("""""+""""" -/("""""+""""" -/ -( -l9tђÏ?>$on^Y|K++o7N'o鯖XK92//փSota6ñC+"""2܄6Q?hN /~x(/quO|s̉g~{=|EKyl3ۙ9 -/(""""ӑӖސ~87Qտx?µϾ|7* -/(""""=zcֺWMw]~=~*Ǽ_I}g[m;V~Ï?32:Wo4rP<Û Gޏ^tqKGrYξտ䟵+ -/(""""+Wt֮?i_:5G.?Tk?i ޏsm^Co3V[t -/(""""ӝu7wjzP)o8ܙ,<%]f.X5?3ztcc ۷GꦍOw omZc]?G+"""2M9eOVS|ϻ쮙,j3Px>Bzoy3p -W mw|83 ӡd*߂` -/ -46__#m'3Vx3ǟ{Qgec~o՚6m]v=N]n8鿍VfY=-Y*sæp5ΫHz/}kжNTw3Px{?/zz}׉_OojE^mտm=Ǟ -pЧf/m ru^~)y/zILop* 1T;vvZ8ݰFɋ.(d]2Uq»dŪ>+j\}O?}Yq}1<;׶ - -/(""""N\ -.OZx'*y m&eSnok[Ȓi;97uFTԺM/ ǒr:m ׏+/=<8] -Ƃ;޾; -o~k;=7sUv}W7HcMo󃟾LWDDDd(ӆZ֭\~+`'(EK^QKnm)›^;*ohR|Α_} -ɬH|[>Ool=7O=7}wێ=XU[xO?Jvo.6障~7 @ɄszOxRWDDDd\}a\d ,P0rIhO= S"*p(zi/oz -Ȁy͑;U^"W>f>~Vx>S›o*(|?NrYs3AWWDDDʃ=(UՋo3oI 9αLopѩ+^Li.6W;+"""Gp̹FQj?F[}jݦ9Vx3c>,,ǝ~ 7TrGJhf`) 7KVJ3Wt:sFͶ›YM",ydߓ_4[{LWDDDdd Z'*s ҟnTx_ -o?;r(x̸,sp|aYˮGWDDD\CoIo$s.ސst-]휶N!Sӊ͔ -9VpODE3] e"xg|WE9h:DCԎ] \K+-.YpTOwҳ|;c6yyg7G/^WG?S]_Y~5w(}nJ3(""""}'PyTF{sʖ92:S.O? ?,{–OkmK-L5w#NXֶDWx]$=\o4>-2/^k <c]'r+(""""RfX0s<+!˯739m=׭߼uƚ6Uk^{ٝ^(sQm3^iU,:uEةϿiֵ /n]xcO,7ދCMWuw(I|~2;|)(""""gx҅t.{ϙ{7d)K_BzoC:m^Z o) oȗVYhlƟd)(""""gλ'+n f.]b՜,IWoԊHܱk4adt}g)V82>Q)vXWDDDLғ`w| fp\-,:uŭ=Vjg_Xv=]oS;~Fb}u -YxJzȾ%g.A X};>7{5? -PxA>?|)Bk U1dɊUCNzep'ϻ>/-P6۵n}k7'{7poyǝ~y؅d_M.(("""""2' -( -(‹+""""" -/("""""+""""" -/("""""+""""" -/(""""" -( -( -(("""""+""""" -/("""""+""""" -/("""""[DDDDDUPxEDDDDDWDDDDD^PxEDDDDDWDDDDD^PxEDDDDDE^QxA^Qxa@jmR9(Gp@XrI/^|wӓ熍gq֑ yGtW0o޼жf]}i-}Wh`̡ު{|> :uԩ{N71ލH?xΡܗs6kxkK p 6q^ow~,'nuOA(!7"6{= 7b`yee8\{"U).4 ojhtur&s49\my$̔~+i oܜ:sVEmS-sUqs9gKS{ -eѭs&joږ0z-QsI5V|ﻅ2\^#XIռYX|Q$[U֒[^K\a$۬gS:e?*tixޒRkO&jlU˺]j-hޞoe\@\K|T%cW,v9ikUmqȀks<نljIo}{y\]Әߞ>}+y^x#ܽ{w۶mo[hѢÇ?{L7nظq[c;vxդْ׳^YsQk ###[lYjUnYx^+K򝘘xEMsUccc9R?T?zhŊy^|9۷~[{Qz&)^ŋ&''{gffr={;jݺuv7x#):t_ؕibHFs83fDY,5#w}scb%KZ.jW Gw5|݅r.źW>RKhj)PZo D<ȤɓzΝjR8uTqfK.Ůsdy˖-.GGG˳###e&9޺u4rӦMuƚƍW%5-[,ʿ{/6lmTm(k{mEN|L94s\Y&DQ"䖌WOt\J|62O>]tiSrh駟޼y_8Q3;;wsUǨ!c]RѣGqeFLHKKm۶՚WꏍK3*ߖ qf.vIo+wBkRXr܅ J)kqjR>j>|X-311q;kjtt{dƗ Z'GL~̏=Ĉ̡jkU#GZ׮]F6;gWyokx;^`x#bW9||RԩST\\sk5UE\2Bױ؜";v,Nj&WڽQѪwsoϠ]]+\+SbfSkIPCގ3vh968PX.5gVCƊ۷$poݺUQ̙3ͅ:(_tLuh|Yg7#[{y=joyKXm^|9_x;^K_[Wܹse{O67^~=W_?Zj㚻z])|4wnd xϪ?55Rlɒ%=Z۞hyl.)jGGGǻwnI@--?~ڵ={[j/ Zr׬Yrެܹs6u1N.h7˔!4[@ګ]ʫ|憐?8Gl>9.eέ[Ʈ3gδ$!x)~sNqb2i=:\Y@_`|5b{ܬ-ce.z|oDi[ /t>[@._=d&J޽{+@3$F\Щ:E.s橿8o-ܬ!X p{ƺrQ7Gĵ/.ʗuEWXsI=|pLyl)o.]T3v@IމǏwܿ˗/ceJ|Qv۶m+% /^3^z"cVE%z:qD6&j-2G>!d/)ȑ#XkjcWY|c-[(/o ~{u{Z^{MW+/P?H98kˆZV*[._cǎeH]"dٰaC$96V:N>]4Άn_Ys'bpСAѵķ8<(^n{6𾨌G6oޜ{/ވ捾 16Ʈ.w֒Ǐ疕+W=|pA)w^x--J?jo_ .]ޛgϞK47Pq/2޽{k=tܺukƍՆEjf6m;p{n\Qƨbڵ/^.F]av{sqXm7DOo[3~'ٳ/<Zn߾t,P8^Qtzz"Tߞ>}+t5pz_5kD%Kر-%ׯ_%~ܹs6ݻ۶mE>|ٳgѲI˻wmx6]bEco5>}V2Iϒ{'%ylٲeժUeŏ?x@]MLLD mff&n;:: ݻyիW%@޽{4fll,Ge=ьx`_/0/Z 6{r/RJK.-["eɩZs^x1KNNN 9vϞ=^Mtڵ+?y极ѣ}˖-vü-ٳcxY|y;tP'-'stuvvvΎ͒S{㤥OԽ!z>x/ 2*nE^|wީ-_G|XKrJy4WZo߾Z ߯eZgff%KК/ # .bvW#9ټJ.˱׮]+k-_ؼ!ou [^eC9s8}OyV,_7ܹsj4[|ָeAs]ݱy333Yl̥K^ -!{F[xqu/SRntK$U_#bll,DuǏ#\g >D]hÇü%.H Xu|mZZUV37/U|޽lt@{ evˣX&ka)yF_ZdIեro522g,JŖ˗/Ww~[-[uFCe#v 6D'ϱ-ov`Z.H7ĉծL.q=WQ/=ofޜW,955iӦ2kHM=}j%|S[7x7d@Kr:{{-T/ Dܻwom_˛866V wЮ޼ٳg_ h۷˒blڳ=ǡ4J-.ZXsvhd;c_OòUx@^=|zz~{dWƍ7n|ޱcǏ_Ffþ7޽m۶ɋ-:|gpB߽{_fMdɒ'0G!xrh/۷TG(av޽׭[#?|d6 $RVGWXQmvj,!GS7op^}mo 6TtZB_־rJ|r5gϞݽ{Y?{.ҕߢl۶m=t+>s{s@ bhfK͛=#խ[2pecܺukmRn />ۘ a 7bN;wSec>|rӧOslΟ?_=o.T|"99qUO˪B9նnWm+VOY-('͗\x_G C|~BGl۷"AѲ>mUV۷v2ښ?1XspF>%`t,G 775p'TmŰjk_-DnŔ*/;x iK|Q?k~roy<ÇRC1 bŊ27_K>|zlí[-#>~̙3Ya""p XӪc>h ;~\[ev_~Y |ʕѫ-U5V_>- ssja_{Eǥ"~g9Ըf͚ǏǯG|^er؜!zϞ=y9PcK.AۥU9ˑ_{>yt]]/˧V~"Reڵkڅ =~zmn|.hk"ge6)QK?LMMvF-ɨ4.KW ]֭[0VGHvYrfffKCKUy_Z쳑=ogW jY7 D}﵎/駟0cF͖gxϞ=[}6"ms Ν;ۓr$1"vkn!ƁəIEE==x#V~~29:&}BoW_E}K|AKEwy+`g~^nOϗ6hϟsp3-T-2UKY޹-=,TIeiyΝھ눟=wͩ<[}SA;q5f P֯βqV#[ssc@XFdKZ-󻔥K5㞿UysB?=<|64ܽWĉ"`Şq?-deu0+w;w?ʑJfШƊƮ2):S=<hu 5}j/fWsEj2F\+k׮惽|ETU>m]_q/^\[|QKi:F5OKޚf~Łe2|hj">'k~^w",D09on\lY]:˰<?,Ɖr 4|7ن0/e"ZfwÆ Qgl|)v s\]+&ȢnZʚJ_˥Mbƍw׾)/_^[R߼ys?SVR3`+e -Ae,Zޜj޽WݻzbڵfSDLe{-HQ}QD,955!kλU+ɥY["l֊UЉҥKn=G{쩎䖷#͹Q%/\ލ낼8u՝;wnVWt->|Xrb -f4.Hgtga$pڞt;OMXt{sA9ۿ4mPS7vIqٍ xrk(ʇau{+._s bxMNN6~ӧzuV˖-۰aٳg#ʕr~W^}#V;W>v7nlܸuQ;?~ކ .dݻw+bŊ#G,%_>?;w_K.ŭu%n޽{\c't&0P&ߙ?S]xq5Hx#vEEH 9(MLL4SV͛Q 2|7*_zuF獨,v/9DXFW]+V< w:әwx9+a1g -۶m[ti5 x/_Zݻ7w=xg?˗/߽{wGGG?Nݻ%~(m۶56e˧~[f ]KΧ=++WDWZ*~;6:{zYy&ocL`u[M*t+rk?Ν;K2ec_~\)竍/&gCē'O?~|̙lƗ_~o<|0.,|֭AD/Q9{ʕ_V*zƷ|Kܱms.a]/]T:սսk-] غuݻ9M:^eޞv>ܺ uv 9 T@u0J:YO୽*i|e/2ya٘--]5t9x`ܹ3v5Z{.Zե|"n- uv 9QUu&ޖ|6ce%3^:vEwlUY![Ν-ǿ%;CCv@_S۫_t/9xKo, 1t&ޖgxs-bW嫏q>w>'j3?$𶿇7v5y޽rꃮ/^y/Y{xCZ(ꉜUm㇉N8k=i7s˵kjon) طo_ϖ{x/^~'Nˋ>WZ.'ΘM]j;l6{{W -vsA w]_8Don^&''3D})#pl]y s˖--XOC?,L=͗ԤUVE{23^KiӦزq)%wV5oDv#2eƗӰ;)ZG͛7Yʗhٽ.Rٽ$ zؓ'OS["6V\ɨKy~+ ={,Rs%j}g-#wwލ -3k׮N?.TNӧY… ecN,<\y#מOCG'ٳZ2~y]JkdܹsgUk9;PٽJuzzz:魉(i;D峳yԂH^W4\YU)ٽߵ=yG3_+!? `7oݻ'Owۺuk!ҥK54;;/x:99[oݸq]W۵w V\y! !Dze6lpϟWoY|Ete˖w -={V먎bŊ#G,%_|9.ҥK=o422үX_~}48JΝކ8v͚5q%KvԩSYg|b?ǏwoO޳gʕ+E\7(zcǎ;{I`o5V]'/yމK3 xo޼FZKDjȞk"Ek;gYcO>=tk׮my….}r̙m۶u+Vgi$03MD`x#,]xC*h^r }ܹ7{n6gʻ{nnظwY_^;իõ>LMM'ɓYMO<Ȓ =z4_sN6>k^X"dՍ[}Ql/w]7zڵkՍbʕ+˖gϞ> զA{e_~ӧZ}K믿V{رc}F>=g.[";J{^xẃJS-~-a4K]t~KQl'g׮]qvTҪ.@X~}3b}yڼܔS7W_5wMLLĮgp'Y_k7Wĺ}vtfx,pΝZ@˥zW^y$B-MNNfl/kUk[>j93ݼysԙ#bQaHG5瑶Vx缨~7._|>7Uz駟ylsW>3[[)~~K3Z< VsՍ7jSṔ֭[sNi3-^޽{e{,>vYXgH1FΟ?_md.UT*l,=٪v?ep~Pvff&~89J[zƼEo^D=y >ۆsa\ܥU!7\xqr?\Ưhp9P wPM%]rZOYDn4rn6Zʖws~hVC=D5-9[x<%/?5e>36dɞ^|wީ˗hoL.}UC.ZU;KǖW0)_ŔYv+^Ė8݉'_AO'2omD^-mذ\qTU`۷cWJs}%٪;-7F?Ai$ic%dxǏϜ9_~e{rJ.gH|]~R_ ?\[&Z36Gx\R{˜2z^RrM۱v=%O[tC#+bk3F>s-ZTK/*<ٳo$wfx[Fx߿+-w=6n*WرcG۷Ǯj >(fǏ/^8ZnNԽ3^ o#+|yZRO?43`o%_2oyf=9AL߭[9K\Kw|@-?xUz;vrKڍa19Q!:{I _}Ugz^hY믿^re]p47wU]cFay7sqG(]|mݧ|ڵkhy¬ڧk=n5rǵd_3* =+պWx޽rjtxb^z9V8{x<;w6fksdx>sz˛cW5x'|R^ܳbUu7++y-/yZgtEkuԚT_R8Ɵ63g}vy޽{$cε<{/+ -)~݌_kOU;Qd޸Sջ6-a峳5:/Ljs[7O4Pgv/ Hv4pk׮d1ܬvquўȃ͇^_=:SC4/Bb3* -z]3_7o[mqC0[.Zu;:22sah1;;/x=799[oݸqÝ`PW^}a^++W(%7lؐ7ڹbŊ}Ϟ=W~7JĄe˖'N x#]6~Xn]$HЙb?~%F/_1BJ'T =z4[R N*/^̣"Do޼9"X,0333G̃_~@8l썰Ţ@ .\ZI$cLĸ_38H;[7%GS)U 7nΉ]#/eʕ+٪hdg /w^8op)72̍y2SGJ.Y3U7FR-PtzzDWyTccHeGcٳgsKvT5f9ݷ{'[4#\5?z'OG"j56O>]ti -Q,Ν;KmVmms7޹s|3Smd^l7so\rJu{'C .5s.9EH7y25#aĺʬw}G57G-_|S毹u#U7vr޽[;;b?lG}TfZD~[[8I؞rj1|嗹Ns+8skfԯ\Bê;v숤\Mq|pq ص=snm/=?Tlniy7.^w !NdY@}9ͬ "UVe,kJGz_s&pseWyTUԶlkFpΕr-}5oNnţ殯:N\fs-lrUWXQ}Y j d!b9m۶fekY8bQu"S{jb/ldyȑ#{ svr-L8P2ŋyҫWӑ[e~ZX3= oa*EoƌV2lذ!BPk/e쫽֧"g;7-^v9g|ry朦-رcVNneAHr-2?Κ8QǙáCJU왎299֎86ƮZ vo^tin߻wo%nܿD$9'A]scY5#j9{f_QÇK˞9|pi{'/_'|*V\ Z&MjeΟ?_c=ӱ[j-ÙhPKUՍ133yYc=92y[t/6tT, ຼl..]T]|X'96X'ok׮E+WˊOt2oOZ O׾oڴP ݻ222c 2[ʕ+1z˖-ky@}^:Fŋd޷̅ b$׭[gy~ɋ/ӧO-c#>2ϟ?{c 39b-uD^maV}y*C_qCT(%7o\dIڵ_acw]re`xPZ˼~իWsW\ر#{ƢװUЊ[߿?~_u[Nqqߩ]Pѣ 6={Tj=G<|J_&GwڵQp}]L˗/ؒ掍QXŐw:= O>$sjҥK{׶UτY2k.^xƍ%06wwС|wٲe=3oAnϼ'Ow F˱LLL$-ǿSR}K#qXr۱Wc%ʼ0̛q֭[jL\L[lnE>:uz2EX6[??eڡ p}Wpzz:* -8P].ݜܽ{y r)sNgϞs/_1wj_~%;VkLajpo^vI) ʼ2/ y{Ffact\Mݚ+k,,qxŊ6gϞe?/?LCVU9a ׮]kntddd۶mݻ{fYG>|o][333)c _/W\l!q\yμՙb֩SZ_zup(Μ9;w.3oyn?k|+O?Q855L)}eydIl&9O? Tma 5>}+yƚmގ;ZDnY+W䁔K/^!16gmU]NMV@}z88rE :,-޽˼2/ѱ]*%iFů?|ׯրz[ 2/_<_q>Nq)o߿V]`rj KK1ʼ2/љ\hZdnݺW5~!J{| 䵲 -׹UMyLgGU@W'oܸQ-\fͩSرR- -˼2/Q9fޞ9孯ͧ'Nh/Sn\rJ&[ GέjԞ7̔#V})=%kn͛%S.]j6Rt6ϛQl/'=3Çe^m7rJٳgY^V'~9e2dݻwK"CIrl^~&`ONѾέ"|duES~FR})}vm"tϰex߿_޽{{Xmaj=m!epjkjٵ-'}9qd^ҙwѢEw՜F4F׿UE.[K͇ئ|4mZ7.P+²XSl:jv 1dq8YA.\[LG gϞرcՅ֬Y/Ȓ%KjXmai>ou281`oݺUv2Vyx3ofqrGjyQhUĊ%qlذ!/v(466i%Mjb'/^د0IpIjロέzsŋoܸ1׭rl94ʏ=: )3SQ-*xxܹjܼy3srsM8_QsR.c%MMMeot"j_>'}%K.e9Av d^̛2D6(ƻ"w#w4y󡴹r||O-o]mZϫݻLٳ|P.\(Bw={^73NMME … d6hɓYD؉,t,|I7]6-|wy3-_μb/هWJ&lŋfEf-[V\/k~ٟƍrѢE=jo!?3ohj?t5yx333Yl߾^[lܔwoΝ;YgϞt3:oٳgysnb%O>r MnjcV5eϪ?11d΃Ƕ$+~=姫ft~+hvoR9Wow7ok׮b0 yxrfn Iuopll,t7|322jI~j,̛O?ˉy39>xZx]ĆfNڶ|ΝիWOխu…fZdj?V^BAsȼwݺuZΛUB#bݣRۛy?(/:̉Mq~]4Q!_nݺzQom۶%ƱT'd"Ϲzw+VD6:w>P=ʉLǸSv튷<8`v y{dUG`Ywh# Volo޼yciW4w3fȝ6s2{s|/FҬ\;_]v}0Dͼ=W]n6ұRۗy͒e)'N|_W ر#.L%[e"u޽=/ ۷o:ޱϟǎrͱUVGetȕzN7̔%Ȫ+q>|rD^yɼ(.]o%Faocy7n!kw>{{'vmyofyS=ou^^/믿v\uoܸzw&e^r) \4ؼ`f0yfAׯq?﬽jϼn>fͱʼaϞ=DǏ#:u*8zh{r6"mdeNtyݻwm۶eR<^_Ӑ+fydms/cccm0ފ -\T+ov믿y3F<|dpXjUJ^דy˗fFyœWf F. V^:TmfW-Oeu~wڵώ1~as´Z[~ОÛ6߻woО_zuʕ ZUaʄrpKͧ)ܹY3p!z2`v ysPPӒ}rA3c8\N9(W_}5/;˖-k^אrgkgpΝS{~PaU[{˚i'j]GEO>VvmsyHVqE`T?"FvڢECގ-M˼ccc-Ip4S}̙\k+^I^y] 5?>Ur/eVl{zG#jfU{w^ܿ^?p@rSG㿈,uVvv}r^gK.& FƉQ5s̼ .̛3%^͋K橞VM6) jڵ^a۞gtteĉdwԌ?Μ9ӽm. xw=oǏ6G bsT޹sg`j9k׮ŷ#:t>k"  2/ȼ  ]~3۷:YpW_}wujj*_vYؼysd/^%z;::dg d^K*}vtرcȼ^xɓyZ6p%}xwgffryAY`ܛ-6kSf6<s6 <~c }m}.\hgϲsJӧĉ՚'y"e;wVk˞ߥfNvϭ[֮][8ٳg:et|6;2/oH杚$p±W⏌-pm?cG-Z>,Y[E*uVX,9zXbKH=`GW;Q|2oDdk'yK|(*Xg'ŋ嗇7^ru-vos}ؑyxC23n߾ēc˖-eۼsNfΟ?1xٳ[j3>}zff& ɒj9r$X{ѹsr>(K\{{=^{ru Tf>:hQoU ߟGZ']vdV9_30#a|;./#dޯ:^\_+Huosll,f7|322jT|맟~}]~?ܼ2$]v]ܪԩSzܤ9^^8NDN}0QvZؽ+?5Sc\vԒyLd^̻nݺ~f -ŋ|9덓dtXnݚ76uTضm[-2)ܯ%~tڵko_|ŠGs(T"* Zs.ٻw+:ԬW3\vԯ͹ &2/V9uUx{Z6Sjr.BVmwUˑndժU6)!̙3YRĉv͛=ڀ˞-5ҟ~u4.ˎ率Ld^s垍tlTk7\m[EMWBkV=z47~)I4\v{j46㏛om߾=*-SV;h͹g[Fc^O粣~me0yywQsto6tmͻVˍ,iNҖ˕̳/\Pލ?#D'[K<{ |lπAEZW\E,/-=ow>}H[mK捷@ccc?Zx~7\op6/.[pk1KlqիW\KsϼCHy3o7oZ>]hѝ;wJ\ziqyO2믿ѣ gϞvرc>5eO:ksAȳׯ_oFYɪZ-s\8.]Z?ys?̱Wr"wWy֭[9|rۜ{zGڜ`"0[ڭ[tڵ9/3#GTʫ߈xT+m45kŋg_~Ym<6*lܸ$h͛lN&μx{Ŭ~:Vz4e:沚h[l|A)iY1V]jΥ?%_t)zŊwuo׷o2wԱ9&2/sɼ -&&&2WVx:68Pmӽ{6lPkMy3y&runի^~sm;frxmbY{k6Ր޽\bl=w6{hOolQ62ȼW/5dzz}/^xJǫL_fTիW7gT˼[e-!u>svxٲeݻw=qe\>|o5ҟϤoc'6//޸qc3;Ў:9D`իY!"Wo=w̛4|Zkg5ݻs3GFF:W_ w~שLߵksV5ҟ9J.]:ٳ3}Ѭme0y:Ʒk׮-Zs҇e˖%KTpK㏌j3gj`eH^y 93{>}[;)Ch62ȼtɼ-.]Zhz;2L1|uSsxtttӦMW&ה-Wkrʕ+g6:o$V|H@5ҟ$iU >9##juQ{sLd^˼u׭[w7#˗/G,w Hׯ__h9ʣGP֠ޱcG:|.N8);9s_ .ĩ_J5Ϯ]62111clض|Ѭme0e^ŋHOy@d^y@d^d^y@d^yy?Ǐȼx%KȼVzȼU}u?zٳYkFt{ݨ3k糵jGT:cOk;k8y{95(ʇaۛ6mZ`;W駟j5ۅ :k׮~z8q"^Y-g_qì ڵk˗//;Zlٳg{| =olѣZf7nX~}ŋkb⭁2 {j1;w&VTno-ʚΝkX._ܳ[laسgOGGGmvC o[>_S/{IqF5hSX"ŋ$2K??YtҨoeL޷o_/Im_WVfcG%MD՜>D~{%#yV/(Kg}V/֭[yW^] \fċ̒ 7:_-[dj2D"n/ewɾ7ϟ?ժ3w]=>>vrrZ/4ܽ{7 \%Wtg۽{wK%KWQe> -sb0H1yjj<5?1ۃZvtwxkqF5+ag׮]=+D0n^6ג\2ofZ6 _uD ?^ݶy m(}7###=ߚUB|7b`bWg3:u_ֲ͖  ڵ/ԩSQ?lwˇ8#m۶-pZ_sFիW j;y̫W֮nN\%S\ ܨhѢ\KF)}¬R֭[esgySjCs=Yrҥ{,4_wZiiف8jڵyvn>9s&/|mּu7[4/_|EUV>|8^=k9_O>Mr -\Ky;̌=OPvUο{rN{6=qyu/4BGo?m۶^sm;^Dލ7Yi͚5N<$E˴`?y7uO>]Ogm$Eo\].mypÇyﯿ6rm>i跆X^=gr[S8˼ܻwСCynQ}VQ?efmy̼-f0)w###.]2<؛7oV.S'oy\RQP"3j{ۜWlUB;MNNݻܹs2nyl^{יyj?k^sӵ efҫrHmCAJY]eYe:wqΝ)0kȼ/Qg \Ü3_s3oD͛7ey-ZW]v wp|\* sرcH1$Gѝ={تZw;v56SV7shի22| -U^\X;˗/oYeը;] ҥK`_OO)?={n:8#?~<ݻ̽dhyL̪}/7G, _~d055JDeqn󈣫7n3SG7o|poK -zUKԶwRW^t)>"YEN,WN>|957yUE U|kqF5˰w$g<)"!.au#4;?~<>>^O՘"}e{9ݻaÆZkC}\ZF)fffnݺ3f/d.W,_Nb93;::7N<{>6p~NN<9hsU o5cccQX!bqFlIO}\;b??srά=֢3,[,o߾~5̥91STKyam^sytYÇ7n\zuʕ͋ @5fҫblck]}a <#g,ot/=ԖQz3󞏂;wݻswpqe1/_[)Be+;6~ٌ~NJ%ߪ97wgU??5-–3ճ08#~w/^zSoD_4:Pm --\Y+W?Ư^% (|rψ| z6iüÇf]\>ĹnpR̙39zeEmL32/DvtttӦMyc|sE3o^\**R5r::^UD\>㡏z{rHPOn(͛7,Yb*y#fXlYT+Q.rMT仌9c,^8C_ե 7o\hqŊŋåɒKFrvu߾}Hy/_[.!rϞ70cm%:ݻwȑPe޵k探2/A7>Rr֭EEaΓ Q:911V+T3CMNNV=zzHw"eEge2j2o&2Q7ܖ-[Zz2Bn߾U[e+y^2Cݽ{Y:9{ΝltϼIA?"FdTKΝG$^Df7]8]\x1C/|7:WǿCd|ټ -?՜[ k3ĕ[= `$xy{i\… eA/Җy2^-j!n֭\Vֶm9kΝ*rf͚xyȑZy3ҥK O:կ֭ӧJʼC u[~W7-κI .O) }ŋG>x鯄իW?S\x3Xcǎ~=K~8BS2+=zKگnɼE;;w̼囪=<|𬙷Ӫ?}fٵkֶ>Q77Dm+ɼW^W5^Vtw}:#lٲ;0ttR{Y^+Vؽ{wyӧOٿ6=Y;+Z^esUuݻ/8qȹTy rʕ+j333={>/Cݱ{Cd[+kμyYE>"lfdWrw|||ևر:9h]hѝ;wJyt6zƍtU.\).5:S oݺURcJ w5mcG׿^ռT~`5u~Zpviӿtͩ?k+_LƜ7O>ɓ/^Ysڵ/^Nݴiӊ+2eҙM@CMNNFd^Ç :qĪUrѧm۶x{U,X9sfܾ}{˖-ei eoN;ʼs}_|/,o\'ٳgP#  2/ȼGxq2w͌<~g>*lڴp !W\0lٲ2/ȼYzu|x 2/e.\߁׭[' o/^LOO?yӧ]?w\G ͼ1W_}U6C(2q^2$%:fr)cǎ_ 殫EjXBVuV)x2 ۭ̣Ekadd2[۶m?v3VH5Ȕ/wD87|ͷfffS-ݫT\i؛yϼǏIV׮]ˬ/xrf2Q;fmyЪX^(ʼ2/o;wW!E~zO?4<855U %-]f^J}ԩTq; >|8QDf3}eck1:?7掶m'+'="fյ;fޞV (%,롕F:KϽw<@W-VGŋ/X "Fjgm3>t^Y(\D*ܺukK*S-7nܨYԩSͼӱZwq.\(;O6u-9FVPyxe9;k֫-[JPj7?*I}1ޞ߼ys}KjTu6{:t("s5֞UԽ9PU>|x̛z3rٟ0~geyk_[ȼVy_y#6'siRXιsjy9`$Z}vfE3|'Vybrrr޽սw"jɒ%۱;_vt>6~^8q<:YETʕZv;ש>vX˼gx>{ȼv3S*-2( _Wlm5ʕQwNұٳg;ʧVW)jzYj';V\ÜӲ|սebdl[ʾ.O!O -΃0_[^i? -]w캺w^==ލh?cf&R8tPuZFߟ4Y(R{ӯTxhTﳇ _Wvz9k5Wmn?nÎDռu/2/şmk ?x ܢE,s V}]ŋSu%ן+ظ'ʼ^ݴiӊ+j7+k4Q5[*Iye^[l)+eۿުk׮_&R', ZoYYZIϞ=3D6Jȼ  2/ȼ   2/ȼ  ky@d^y@@d^y@d^y@d^d^y@d^yy@d^y@@d^y@d^y@d^d^ 2/ȼ  2/2/ȼ  2/ȼȼ  2/ȼ   2/ȼ  2/ȼ  2/2/ȼ  2/ȼȼ  2/ȼ  d^y@d^yy@d^y@@d^y@<<޿"% P"B 8* LKCj\^Lxb*,I(6܂(ŀ[C ǻ`h0r{#F=z8/<眹׾G?U=wޮ=3g4/4/h^мy@y@ 4/4/h^мy@y@ 4/ד 4/h^мh^мy@  4/h^мh^мy@  4/h^мh^мyɰt9zɉ%_} uI' ڜmݦ{5↎:׬YSkapWWX[#h^ Š*m -Qhz=C46;V6Cy9T&~oVXҢXkդ84<\{[aq7[\魯ջqH5o@v4oToW YA]:p GiաGn&n3Yi^Uakϒ8rI -CM/onWI'-^z>H-ȯZl:-pn˛zww> IΉ6FJ $>U+Kvnjs߆jN6}Ij^4/S&0h-Zn|VD&> X=Hy5/0}wNlmU:pq1ܦM19cţ.ۢ@5Q6] ~#mS ._thOz/]jƗ,!drqrsǗoz*4ch~YͶak_?\ͺ.kaxuko+*֞& !ӯxf;o5ob7aXJ Kwk/~Vwt  Dֵ9_^[iqI g5$%motA\wki qnO4o?{՗U -ӈyeiE7C׾ VQZ(ੌmš;U1A^ ˴ qm8];|m)[P PasBjM9{9C3Yuڐ3'\h^мh^мy@  4/h^мh^мy@d߾ۻ.Gw,?}.GW󚙙ռh^33333ӼkfffffWyLj^4i^͋533333ͫy5i^͋533333ͫyѼfffffy5/4E󚙙ռh^33333ӼW󚙙ռh^33333ӼkfffffWyLj^4i^͋533333ͫy5i^Iмfffffy5/4E󚙙ռh^33333ӼkfffffWj^33333Ӽh^kfffffWyLj^4i^͋533333ͫyѼfffffy5533333͋ռfffffy5/̬g}s9͂;hU%+>[GrQ?˗> nk$W'O|拋Ͽλpz^'>wy70+?ƭi^͋5333'6gQ+ _w.BFŷI}gGnnGօ7?tWt3<իݽgVx™ 8y"\ӯ8-}j^͋53339uOu'־_ŷǯyo[d'ϝm90^o^*ijҋWznB9 ּ̜kW{@5Fۿ2 Nn+.5E󚙙|ArH͡հѧ^ͿmybӺyKBdeó:[jy?&̖߾}g/^m-;_<~ ܶT:(\j^4YϕJgeEW5יּKK/}z̜z.#>r޳7q>[nxekίSy>+5E󚙙YVzÕlܼBWN=򔋶m;Uw; >xfޡ}7l-CM?yL%izpko}>G1}o (>ʼn_q n/=\[Wj^33336V_^:鳾5N{3P 7+w]=7~u(gͥ߶ռ̎=PVu/p!ؼ`zbKțw4o֡3HyL~WYj^4d/|lJ$K0f_pK O^<3H7Z?#y4E󚙙hf7;wIu:68;y5/ټGy553330ٹ`7w5'g/u/k^ͫyѼffffq?Xdϟh7Klѭ͂;fsгO^cټڳw_퍖NuOo{t^=ռh^333Q߶Q@qK=ߟ-ZcfΟ-][ɝ]5$j?*qe`sgn}Xj^4٨vw?SpąC#N 㳾yP7ڦcnxek^{3a݉_3O]_矜Lj^4٨v^3UT۶l{K -Җ߾tZM}(4f\.lO}ƿ?7~kdeW+ (*S Ϥռh^333ڐs6?q൩y3O .XtOo4onv|yO8sa|{>}r޲wtǞvY˗=0Ql^{O3y55333xX5knKWzk_ʼ[w{Nvk?/ח>>C⃶3^Qr朲Lj^kffffrۻVu2GrQ|ʣܼ;V yK精24{?񝿯^l9׾zGzi|ɽ?hzu#y&5ռffffVM?yq]>"t9?oMؗ.m?ɧ˭y5/̬6nǝ~Eqn=lޗz]Sм_,gpPkA~*-ٵw0Fxuɩxtݨj^ͫy̬iCx',OoUvy8p3?vgKǷxG3s!ռE>j?y;-yWY/77$WWyF͸$~[.j;?/)n{-;=S:ܵgAOBϞw%+ó |k7Ņުy}svw^ͫy5ڪտ.~ڛ?ÿvNԳy;jd4i_Y_}O8sa|UXҭyxWj^3333ݬ⟯/gg?`=SܼK}d4o3Ͽ:I{_ǥ,^n=5*qqBj#OhO-ͫy5/`->e:Yۼw;8Qb sCGcjCoMs*]>[H pHIhtEөlA5R81y=#oޜ7~Mͨ59jO}Jtףy5xֵ[&RSt}DMmVOۺ7\[5vn YT#i9I}63mWᇋmx4oP4`MchȽYL_?K)?Džc) UARh|cT=RVXN6Vg͛s|tmC?[ۧkjRg pfMU9d[§ӣ)T:6}!wjͥ/[%o{w`j^Xf^g#loNϋ"+;Qϰ|޽7KNƷo"5w 0~JiFyv6WڼI知+kߚom!_CU·swz -5y4o}^?wh4gNl;ڼ駥8xSgνռ5 $r~0^u8Wh^Թ9 Uߡ4˯;MJ7Z{&mOt)~ڼm&-hPN/zyмColnAu0KQ},M6ڼײ$E0xq~~GQ{/EUVߚSZ{yr N>xS@mWVJ޼7=y{9?xOnS jʼWEoMjN|;iڼ4tuoA -k>g.F͛yK% U/U{ŔS܃r?)tW}׾53>985oo9&[Dn9bh^çyǏ⛈fΜnTL?(.5Q~ޞ;6͛<{niۆ̷z.^ެy4oC7N^C4&|m:с6|7cyw9T4goMMn)j痬7k^͛@ཊAr圳e6TONП  SSI9sS&0oH<@|Oã:[{7}իFX6/h^{KkRϦvhڷOv{+b#fJj_|YӼyƵy4|` ^hj4k:PCwupFo.LRǮyѼ[֞GW>Tӗ:|vA4Vy4o|HwcRj^4/yfo"x7o'){ռ yGؼ>xi3^3?rO[isu5E0sWtb NykheR8 WlT;yO$=KnD;́@ 4/h^4/h^мy@@ 4/h^4/h^мy@  4/h^мh^мy@  4/h^мh^мy@  4/h^мh^мy@  4/h^мyмy@  4/h^мyмy@  4/h^мyмy@  4/h^мyмy@ 4/4/h^мy@y@ 4/4/h^мy@y@ 4/4/h^мy@y@ 4/4/h^мy@@ 4/h^4/h^мy@@ 4/h^4/h^мy@@ 4/h^4/h^мy@@ 4/h^мh^мy@  4/h^мh^мy@  4/h^мh^мy@  4/h^мh^мy@  4/h^мyмy@  4/h^мyмy@  4/h^мyмy@  4/h^мy@y@ 4/4/h^мy@y@ 4/4/h^мy@y@ 4/4/h^мy@y@ 4/h^4/h^мy@@ 4/h^4/h^мy@@ 4/h^4/h^мy@@ 4/h^4/h^мy@  4/h^мh^мy@  4/h^мh^мy@  4/h^мh^мy@  4/h^мyмy@  4/h^мyмy@  4/h^мyмy@  4/h^мyмy@ 4/4/h^мy@y@ 4/4/h^мy@y@ 4/4/h^мy@y@ 4/4/h^мy@@ 4/h^4/h^мy@@ 4/h^4/h^мy@@ 4/h^4/h^мy@@ 4/h^мh^мy@  4/h^мh^мy@  4/h^мh^мy@  4/h^мh^мy@  4/h^мyмy@  4/h^мyмy@  4/h^мyмy@  4/h^мy@y@ 4/4/h^мy@y@ 4/4/h^мy@y@ 4/4/s T&<AA&Ɖ!LU3e'DFAA@/DGt4yo=ZksTRy}9/_~w8/p^ y8/p^ y8/1#ǙJj[S9R{h3y SjC<+yAw}=7>ʺ6Q'߸Gyg'=o7Wھ+w3I>o|}o60W} ʤ0RڿSJ4=D/j2b+´eEAD^La=MR(mNv0l{Z(ߘNGh5)WJ 31|l~)_5{+)ĸRV5ܼZ -2OݾZ-kƮ^@^c74/= nNvv3;qs$ o4GEGu"ɢ7L-tJ;1tD9SH^SZʗ*4 lN{PUVL,=[ #Vp#<`ctfd\Wڹ/DڍN"${#JVs+39bF9aMfqc^ƈ\lD-߿r$KK/K:P<-/'tssKGj -±F8/cy֢5eئfg*@{BB_WkV|(wNƉr+"e|^&pG`[B&fPXrX'De(/tyȰvQ] J.veƑ*礵%#٩XX(u5B;s;͂a )[Uʹ&b'CeOXsCl&Y$["/yެ%ccI9_ Ry|L5|q1K }īp^ƶd,8>,JҹӔL$9ϸԝe -G¾&;~n+>9Cy4TkEWV(\"JCT -TSyU* \24e@&tNJ24 -e'd;`#Vmåu]'}[cW'VTR%pڂ€+怸OcMn\|m6J:)MvzpNSѳmϲyCKce;E>#+V)3H:eRdTq^8/cv\$VTd s)ܮ셥@mݕhoTS,[xi]/72ys^ܜ~gegI5BhmE4pgIݽݫ"yʚg[~潭Z|ds6.[Sg׼#ϯrEHMsl}[TaR'|yQq('6n]㬍W,~i=WUKiyk^EZ?{]@^5SGٳ<~R \v#g+,\D!5ȯұURTzu߼{̥BtBNnO -iDQX8EěWMR.ZS{:o*GBk#/|x߾7m<PLi3ylҤR"pVP~ʗ{|G*յckq(諞ȉSy*F;o:6n-/5 ^9 CC=tnNzJ~u 6u+ ȱ=#YW=NYۓ:!0ɑ٫ֈm7\wשXPXҨ.@X7#.UW\im*!U#|~t\ MS޺&(pc7WNFzJm 3>Zv=N'[ߚ3.ST=)9oSj@ǻޘSr'~qF,|ĕ)I]m0}(ybȒbAr-pvU~?~kVVUwY&i6-J|k dooz -}QRkiyk$jެk"V,)L$g~{ѤS?W=qP9;wџ~:㩷2Y:js#sS!/b 9n50&7-l1\E*N6G,_+eMkw-hg}أ4د#OЊVRI -U\*q^CQt|%7 $ťTkq|7/]"˺Iizbۖ,~?CV's/'井Lڞwg̤EC9:sW3i˛}q!srTIƮu8/17Yue -wg絿M%oˮz}_Mj5^YvSTrO!{kI\q7n|eT  -_-GaRZKJz: 7S544u #ZeASw-lJλ9fMk{A:M"/ >7D~M\k5q ߽k߄|H|e݌_\7-ox;v -خ?kZTsJԺ 'ɴٯ]*955Qd㾵eNM'It؊9k/3];M˺zzYj?_IUJ| \2*0^Ƒ̑]7&ݛUlכ.xlEQke8ksQ$zITw ˍT:.tO_>cWXqLnhVZ-.z?>b9hZ5%ݛ7jcFi-,mh;?M>as5l+/~dzֺ 2)Kry۬(6_ϿG<-[^~Җ44Lm\n1+'>BġR)O}'zN6ErE3b\Y\W=huҁ]'ቧ~JuplLZ-r]e!w=t~@{RGuet2E_s'_E*gņ'(B -ソ冥tn,UcJl?oVvRd'~?1M)okՆb?{dOWQw'L_m4qŴL㨆Jwsx\*Bz6֍}qtCx<$=f?9ܛ$Ro}ks{9ɺ}pgj;`Ҽe͕#bk^vCCBy4U<˔2ƂE#g׳^y%hk -K0D|*N1KD"73rK 5=0o=ns{?FzO`ǹO@^H79;O9g=>'`0e#[V=pILM iHFb;Ѱ 2 ; O4hw~ʺ3%Eݗ EvlyvX!gAhٽ{q!AuaUL-aJ̉z7^= (JM,h v?}ϜwhQGfy@ `]AebI[OɬB;bw+7y[箿;QqI9ð^+Skh0ض iL(gG؅=qfXÛn^u7̞-AVVRٶCR6QT:i|4k4Î`8p~ZzWA -liho{vwᅝ7ֽ2k~(887Z:W.!q77+rcڸ[^˺A%|p+MԐzQb9*fI7.1D EI<* /7bD9ew whmki9/@ u%s~s>]wſ:{-(|T]E(%'}\E]Vc0 zɩ7ˍ0&n}b.\9pK/]:x%F|eHL%|S1XBMe*cnj{u?yAO]\⢁|cnTQU ©5eRn{h/hvАŃC/+5ᑵK -*)2ёX-oE,0PK칿>Q\pQK,xK/Xk`^s*y yub,sQ۲^2dU,}H1X ˷:9vې .fhvRD~Id%2 @ dMbxb>y'1^/eW|4n]d oǼLJ4i߫nL+vʤGRSozƳ>$Jp\cRR=*R&84kfƥ0DbMʤ$Ґ4%Ys\: &f8cDu2p,1+tmuRҢ)ԥ;H~_`E-َQv9x LKrQ/M%"% hA{i9RҐ[ qo" pM~*Zbt⺖9DRoM1(1pw.{"@ QB.,y#ٜ|n&C}>M{#ɞEI༾u2T%F(L2u,]D۴ u+q;dz'۰ =z)G0ݡ>8b'Сr"(0J:tҪ~Y^ pfQ"̡kr^@  NRrx7;I]EGݱܲ =k(d|4oLP =W3O(ϪyY-WYn]MW-^1x-A;j#5eNl1rdw[QJQvE*TU,ɿ*V{Un3r^@ D= -,R-tg%̍;vg$C&(5*U!ԭjǕ -cYUL5oWMccXiu.{W㘻Hkv%hu -9?Ƹ~ӣ,OP 9/r^@ D^7!.A ۑq}ݎjS~;^u:ˢ\ځ*͠{W}ksHqGYcec.qW:{b-e s>A&G՘sϏx?#Gz$]mgeޝ@ qbWU7SQ]O̍#ex|dif{oNwÉdԒ iFG`pWu )e *"g -Ruw3?V.H»%drGd^f녒W&$A>,k<""@ zfv2wISHޚ`pC+4-|֗/frEmCEaê 5eXUCeUCEuwmXʪî~Ũ<)Wxꈚ)OuK~WJ\aFq\d~UzjsEuL>H/tAmԵӐhRXiԍCMݣuWӾҸ &B< 8e˹CmU*EleʫU~ zІ5)զtCB3tiwU:lZ~hr #& cE`LLw>!#n6r\͘O[1)S0`bs©S*8-`rmGc4=SV[lK4 ,J#%,eJK~Eʓhɯhwيc`(wj1jɽa3r^@ qHK,q۽a\{K5c_5쒟+y%ڠq_4'1dB ((j/wPCA؂ݲ! ۧd|*N/=C^$)3I26̘ mq݆S.>ksC?-1qIW֌ͷnc*u^J -:B󼽖N?|<~^0mFYEE3yNV5|E~\\'i&}0y@ Gx;hZrx*N$c&,i&I%ʃ %aJXI+#q;u'q1Q4)-iJY%1듸'n}E̽Qkoڝw%I1Ij0T D2JcIh%bqs_O'?OaR* uUa~Xq㼒Yn0Uv4Zَ<*N.Âǔ~I{'zkR2BB}^uWSA_1Wze3bSŶ5#E @}+RE4P'nJQ)e+ VIאQ,-T.!ܮJ( qM͋WV{OE]7mٗή[^{oB/S:jUK⺶LܿG̴P? W,fViϩ~nyеS~6]zS0wy&64 -_u(DzlG֡.5[9ʓh4)߲sQu70`+QqJ/ur^@ x0I2G{4>`Kosxa b)%󶙲vdx&! R]}uXY%#pWO;^: 49?4;&jI}:OSC63V~{Ɉ?(9nhJ+@g^RկyCN-o8|)IS -*?o e+O4+se̾wp&RV9ъOOz4A!Ť v!)$M:{'3܁݀jGww@cGTsjr\c^2e= ˋ-#͸YV+>L5f\ZOSu^uΉJ,B@@BTD;0\9VKf-&Sw/( DiG&nhƔܙ+3ge@΋@ IILdץ8 yL*>E Qu]^;fVY՜yk慪 [V3nNi.j;;(lDP@Qc41zD1*(FAP@DňK4y^&1ɼ7$qCBwBwK{߽9mn׽U9-,LK|W/UK2JEEbբQQپT lu:K]lxijzAK[GnU@e0eTg'!ƼE\kjmgRV/_VO[9H= -WzG @XN<L NpP6yvg͡k0HsjEC{| BL, L{kvvLxF_x쓵Vcbstr$2x0 ChrWJ0h~$};ߝnvș*?6s]Dj,?i8\zow|Sc'/]5X1D%s^H{?]9~xٖC9zԅ[M{pHv'{!4j-ߞY~yˡܴ816Bdt8Qwኦ[{뱳mGδ3h8rKyEs?{GNY9mf݈mW~!bV촥/$C:_ ĹBL+z$ )*E=hCIt -Ў`BY;>IodЭ\R &5@E7Rg%l~'m!$&H@t 5$ņV~Ș mfe\y{cw3Sbk'I/&ͼsgK'n`\M\b?_TՐ.IN<|J|*xp'Or^fPNnW6dM6dPD`y@~N?:"iԌLo&^!ުB}|kr1uA)0_U)f -|/ ՅB¼M39+OW[[GSYx:_4< *1cV%B4)Y~U>k7h7V{`a -boU~mnlouZF9/s\90G T@J$CtVLO ?N}>vg"qO'Y's,W^ks6^6xrȥC9Q\grk忭Tz 2o}v,fNi$BAH>IzzᖹyJbqдQpᡃ〔$ %5u{E1?OS̗nYG֫k^,/*i;P/Yo?[/7L-mNDp,$,4psP~EkLM7 -ϗM[RtίV-箷16e2i01+ [֋7U CWlA">+ː5]0?z{x|Wgoӡ+FK]ZeKEg!xֆo—MP3Lo2+DSS&IB\ɇǪM*BRh={Lff:9Y9D$mZ6 -R1IzCr|~7.&HW fmv@Eꠐ kjW$0C$,Lνh2[m ݏQxUv] A4#aӔ؂K^|mkwn/sB'OYM w64X=$rmԒK$<qE줺IKUDc d: ;ml:i^1RdZLV]}+Di#`@6T+[ ԀwC qF- -Ԭ -[Shu k䣤 -XԉGk1Fn2iA%Azg$\KJn(P&u߁GyR*5!ҤN%Nd\m{aH%}c !]5_bVh?c$O{Q',h0iK&ڰyy2 fRTg)VDĥ]C:|@E\">Ụ-+ b3BCTt+V w*v2sENMj eA~y ?[1R 2&l&l=?KK艽ϼ"yS^Z_Pj<M~lC)a@ԥ=JA>g|=㑏ʷ~_}ݟ۳o7'~"͘"VT ؋~'Kk{x[zxIM<3]Z`$N ҭLQ+yrdW6dM6d'Zv>x%%!@$ *ݨ)3__>UaڢN'O[2mAS,LOȐ|B왑>U!y$#2#_f;ਮ+[;0Il'mPb1qʩ1LX!hf$TbCxb$6qq[ʱHh-޹ERa>NjwҪݳSٗ*7'-RKju-NڝbZZݎw:%].'YMqSqIr{uρJ{ؐ.4MQDނ\FLR)4X,dҹ mtp5_vr&K8؝"vȔ2{ -+(Mq]~3;y`żq\̛9SЫm\Ļ'X5nBHXquWP–WCN+M}_U4 =`, w4Ƕd۳ŧЁ坫2UϋYo+#:IDV>[p'caFaj)c*Bys7+A8^##mZށ8:W_Xb . g`Iͼ☀P\pLn[D =)?Y1iQhgN>Kn/H.;? J Rz"]HQ5IԙmGԉRaZE$zcV [[R=;nJg+!6ym6l6P -j TJi\'d{/yvHU+d -B}PzII҄twMzn]zn}P*Ԥ -{d0_ e#}۞buPF?.8{>b;kܝ$u'J]PG8`OҗznK= ru$9NC/uW];Iius75^\6+A?;%%*My yBSu ;fK-Q~%]j)r42T1˂IEf(cYkB8qj,Ӏ23RϽjFBв GV҅41Yhu -m.[RĶ=MN7d> &6sw-6M?UirI]bKs >H!9X$!5;&6mO[+M FH?a1 $r7; Rt2Sj!;PkLrӽ!U'uŗ$5(-s NwC%Jy/QivxZbϾ%ggiRU-pMqsL Vy[EH5 =O9G;*.F -#zt &rJ[Y62zM"DY@%1e^_FErŧC(ˆģz,Fafz313}"DMuczW5kK9t)V͌08RF1_p YuR9fKM]yn HxhXSy"*nxU}6φ+yd˾2fX')TCu;b#LA9H@'߹̽vL>^g}QM ecb,MͰɷ,zOD),G#Ƭyg3mfmf۝Hm֡րÀVG ;+% =ܻ<5){2=4i_P!e Yžl2KI5tFLޣ[3rr@YADyP6AE1ˋ?'wCc\ubKۈ,wuF -3=z췔y8̺0ΕQT1yo5{{;9 !M 6/w<{!.>6W "PL!XO$U|pl`ԯQF b5|q0PA8Bt Lҗ?iBq5& -|9pW'(hĤ@wT5Vg\mZxc^mym6l6l-,>E婲tې_;wa 7p فgyx oP~}N;?5?98}IꈟaOcOގ32)ar8p,X5HOT= 8=O83<~z=OCð'Cx-Fa5: -RG#B).t&Vd+;N}u9ƒsoZyVC(%Dݪ}!]":L濮13<'+5KżǞ_,;MƼy43BC]äٗ(8+aBisXڧL֙A_ fW*b'&ҌPٙDPM/ؐ FX nbƽyIkú3{iceG,h)A,,@; -PL0- S0!ym6l6l[:&)@9p ƢaKjT8C Tcsm@KgLfڸA盘||qRGбy˄bpqs;n\ CFu擈\Itza7u|)dMc:g;2LJz(k\Ո?B&ff f+csׄR_&СgD._b+s6̃bes5P1[Aysw/TQ&Ss HD)Rȝ5M K Z5\ -R~U&BI1!hL/ BAe?Am~qW',f -V5EC OǦ*zN,~+Q<0gC -eNC'$1Z hBP9LUaS=% -5~B5H1gx5 Ӵ1Hk|J\ tt/ U<{(8CW :z- 5d|Z7O6kmfmvgZ x5KkQ(JBhMuH_!k\hR#|`S7jU!FX܋ L;ђUE%=ޒCޒ{JyJ<Ҟnoi7`~#aog򊟆KJ{Jvt.OA[жͿfY6IF_z_.+ml~hkЊnS}¶i[S.K{CRa}RIRܱz[kuuN jX #2{z^S݈!E7?ړtOIe׉ ˯ 'Fw"5+XhR B s4삎6e^ƊU߹wU%z ͼfmfmẃ{0!#j@-d6*Ʉq@|^7q WUrMlAdT%bOM6]nv]bSjrĽ!w>\\R]T,R%EhMZdv]hNaqJ>\|SjLRĆT>MMPs -.] ] A)6Wh ”]MNٗ$7$MN%6`N}:$_.Ent֧}oRߑi, *$nLdAY)⬇u}z32o틍pd[8f+_z]7}X/5x?k q[sHՂG)%YH[Ա3wK5M75-l^W-_i]сv&:C"Xg V>D@ݛ?,tFuvVYsx"7U o2eG߿p}6b+:xJQ]?w!hFT5duOv~@"L1YJfR C-01T!i %Y:GOݟ_ꩋ,FI Gn"=į$"2fD>M#a_LLgQnOvfH.j:kmݳ6l6lγ[TXXvZ'ek7_yMAǪ[-nj+YU|гc¶-Wmi[sզޕ{ttS/l{ -;NXt$ke:oܝt&(ŽcҖWZ'ʭYbFb*HoAHH<[) rgx IHRZD_Ҙr:ӝm[BZ^PNHeibChq*LIu/{gUAȾ/PGQrN I'!$@ҁ+!D=}9:?:raU;5xc=qC5j?صgִOe@H -~A7-/.|yڜu}AѨDtD·u2yƏvhf%^MV' -?w]UYѤ$+n&Y\e'+"VF78Զ3=]{ߒ{^Q0oG@3nh?U*ڤ4tk(hPT<ɶőӗL4*7Fa=E7*ҙW=C= -m?BiHYU>xKQ8UJpKIF[6FY6EQ=Re)֒*M&{g)663%hz&8. ˈ[PMlvrqV*S~kQ_B޳98"Z?hFZeܖ =0dȬ\2_qt^eSa` BM8`Km S7gljY~RRxoH$cIQ\+&ɋ숢LJbt" {,JCc(j:ʼHiH7Њ '0퀬dF&E>W$]v5S1Zǚl.\@jxuVx}C'{gWT?;3B-ˠ%{duXO1;fd,6Zr܆YKg/ȼhSaa;;\I%NUDt$VUE(\[+Z8dYqΒ9ud6w4ϿHr5i.\K&KzWhdfyvy9*UWЙW=C=b^UEp@d|4ɸX5<ƔFuKIx&b2nH`6EG[KyELIUM{4d4"4<$<,i\ncǰ%QL~F7){,/AXPFҥk~s"\hXj{,]KISS6( !GeG$o&tɩ%W6tVEW -HYle$ HJqYCY b~֘VZ-)r%&,QQ.\ 2:aF5կO..fVZXr⒤wFZRj~lu:V$E&Nt:1IDo ,xEbt㔫nڪ7K K|) I"[8&?PN$XPfe(|]IG%Ts74]n'ȂD\~4v#v"p=κ:њO-5MJ^3Zt7>>hrJ'|uMCdQ@v -o%DT8I$A$c!5þ`vX y!*h]5-珟u9Tr Ҭp<,w|3~]I=14);Ҳ*Չy=Up9J63z衇z_E\0"1;s {Ъ5Ӓjʘ-rxsvgȸ4f$PY1&;Ί4ŘmIXcnA͜-80(`H0d'3ӟYUf ٱ[!nJEJ #Z a.e^kNyD-ʈMJhȈOJO0bQQI-Ƙ4>)'Δ>l<=~odD8L] sĩ2g#%ʍ,cjѰD\bG?m#LBT5W AYe(EQDF1 -JWRjcyRˏ_pqPE2gU5"kݲ2c)IiN&#!ee?\(ڱ+ޔ{,HFwHQc<¶:N\;:=;]vZ=x犊W)Q/J$)*:{N{ҩ:pvttt<><>zyn%:{9z9𓎮xqN}pK0*"sH`9v+puUtF~Gν~p\QzDG:5/ ]|~v5hԳfC3ּ{ 8(3Ų`=7dهXAfEY038>;/^Ixmlۉ]껟(Z6,R=O9;@[5!rY{5%"mLwZ雗0 3Lo9pS흮{aUXiV߈\TۺLA9g6BOS]-/#H+ƏCg^=C=C; $3#. q#Oy^MQ n/UJpE~QVrJYLg~cniIm2n6godHrn%k+ek6gPSr_Nnͪ.݆I-PRT+}:jfzf&ce{9k>4KV:'b̈́ZMk`2R3/)hrڌ41a|cn5\_Q4)Ɣ7c~V[ʲKj'D?]4"cRW# -#} -"߄ĔO[ɩhZ~#EbI5UIWRB&>D) M6@WUڟDXU0]&l}";$^Boӽ3 erNGV&1՜{]ׇ[ވMʲUՃnuk_T{oieʂu,u)򰂎9.O-/G F .8;komΫ.ژVtsK"]̈g"CDc9"_Y`{Ͽr9/ԑqIa0TYQFjKjH^yC=C=W^X"w,:Lhd._ƣnb,yf)]>%9&*B@!Ur]3R22YT2ք™́TjBԬZSÁ"+оDGbBZ"[[-[,Atm0]̔iY9OWT$# Y-}5"(*a^{)~ڐyK5hίyeJJ9gFuԓ%V.Zh\x)c}+0pd?3iIYK_Y{gv}x=#]9}C]SLRm|W;yǗ=_|}*"(p $'wN},'Ycjl>u_'rT@JYNvN&cBU1;7$*{vKWeHF,)w|*x[ h -}3z衇zǝu(yb9YSstFlI5Ͱ5Snqinfelj36Sv˃ @s)RT@#Y{;@YC!MQt}v?}Pl'CNFV}dyG` Z_ ! %hQ*6̫z衇zq1LЄy1#os[%Tq(UdV35!H. -,Te.86nԄ+¬T @L5 C(ց[/]e ]b)V",aֺ, xBn GߗS÷DQx0WoW<pkيe~U4 -BU,jlWmPEhs-*j#eB^ѮD2$fjo(I*VFژ =2(rI"?Xb<h̼ͯ3m4Mj*,(NiLV166z0wFދWnp+Ξj:}0ɋS$bB,(~(IHmnK?Os 9*>0=1r(h@@RKY_՛p6yEF(6]FmП9ehB&t;=tC=C='s4I$ꡗl)2jnbَt -t[(d](etM gͮ0v[05u3`v -S3 j,p3̂Y15w-d6ئRS)LOi`jl]^T?&+C_uLy]}2LSAl]B#,E)y[U&SJ.dTUW B-;ĸ5`F^Q "hߕoUah*hI^Ō/Z{|*C4 H-w(cmc%ݖMmz۾ OE%)"Gk'z+g;h2HUP[Tm~}yK@s15K5yw#'I -<2,c a(zfE{뺆#Œ*%*Ͳ8֨ ѤYZS&:aneZ|Nu?-϶ A~L*iKd`LTG_ݣA&m(&q "//{'b ZIPA(#kᣭrw3z衇zǽ¼<47#YF7` h_5:*l-(KRjvG[KMtIhbiXbEj +زp4AoJ#ͥQ[#+ Tyi];Pl*[VF0aSաL\m"Eze{TduHB-zgXkMFHo6REQTN@UsBiGSmb6?~VCˋhVUV?^4`ZR)\52|e'*VV%AԔ@FpwDxn *yzS< LZAFK]Z|j?dUp%Θy35.\-7xB1rM%/H;#btnB0;?_0IGFwcw\  ƓAP%̘ uW?N\W>mC% <ޥ&|p[5\TC8ZK@W8hLBǿ9 ?1mxhZº+@5h G~-e`otIyȁUЙW=C=@ȟ[~{\L'~-ώQz/_vOvOtOtώ'[ݟO?kZ[ZG-m-Gt?mv> Wy%90byxtW]XlD `O^v>y}/>~xǵ:zuʳ L>)h?KZڡ=W{GkK[5B| lжqz5;?MӁ=C ̫3z衇z=ļ R$" "/*P@l4&O/H"H\W%'u9ii9Y rӳҳ׻;ɺ9 rrrrrrfoKt,)?¹Sih -[t;=,-fʦml[ӸӕXcrI%Yq紐%/t]캁o yxۘ$R*%=S%|g3/iy +CzC3jrӏH8R"}iXM AC88{-Lϓ9c-E;0 /!HvIp;6 -БVӤ}䀸(i%qх[Bw_jNዕ˄O_1YpEuic8> *̀kh Χ!{=]b͏;ȥe8@ YQ~qBWOOX\+@:̫z衇zqJʒ>1x0(f9J&'|$wHDm,wc&fJ1଎JYcLR\za֚XJ;I6*d7&U1lu cfbXWlR4xfAvGj`ޙ)kETjbluŰi-ccUxQɶ -cre:)3 /@ 0Fd-x p"E9ҷ&?oo'īx ˘~U1 - 2֦6LEį9rg9܊ -rLC׽ >VښUĒ2H\KS8,EOuIHIȩ?Sf$,?͏+_͢@_E<<˺4;D\EhǮwf;;Z Ky}c_?nZxA/UhXb;s!3& -H$FH8%nV;2D}1+|Wւ֒ſOB\feDUa9wg4?kD=2oI}/ki~|^k2ĖdE@c՛s2Jb6`7> dzWg^=C=C{,G"%5cM•[W/ZYxE|{F##;E+l+S jRW~&. *"Bن < u8m v=m 6[Cg8툠\TcB7[hv|;fCc4Q,) w&]o`l04OB gSY>d+8fJRM㌤jlQB|nhD^ ~Vċ~|E[/fyG+k=`+1*8]oݔPG6ƙg Ovy -)k毣EAbuA/>DIU2 - q hKBKvթkàO8ě YUN TU{H{SRw;`^R_1Sy*PԪ] Ū]ܕҪ(+cðs_I)}w)CW8O ?a[μz衇z衇D` & HQd|N@mb hd,U&j.1[T& EX[H֩Tuy:SW횊яvL9~n#cc&1PK\h 7;?aOԄ€%>b[l^iü0zS0c0n Z!#vN^$1jB)lNMp W|PTӸ^B?1%yy#+=ٰyY)m}O<0s 4'l瓗WQ /m|Ƅ5-{ -1:RuȜ&k -c+*DJ"9{Yۻ10tPM&;ӭK~A&8L^7om3glz87{nA_P~I g4!qUk3k y'e,,+&-wRaL{Gn?Dv= w7q2.l٧{o7Mmߺx#*`H?NɷQkb̫aO> +9ph^gY\5 yHI}`ÑJhLD x&#=xsE0oNtxuC=C=N0ieǰ!~Rtu8UA,+ltE8]Dv@NB([[D3;BV"hd;1CX- B6,=A|xy\328# KPP${Ϝhlتg%;>>2g}S}:Ph)nH+k|nstVǞy/_T {erKdT׍}6jHȒJ3͵E{ }śbiUK&\7(ߐU{*2ٶ,#ȲUUTmq^])_}/Qa@DnL[5[׿ꬭE Y,kn{-L{mfFNΩ~iَ'l{<P;g"r+\o]ї3&UleUUe{l9\K>ku*^^q;!+-LpCu+\f%M{&bڂݶlz/{ߏ;J*wY {c|; `۩^ fXOi Ӌ솇4izVs[}vNϧwثh&-dV*=z`rt'4L34L34SW:#N)m* - Ygoc7bQ~HC{5#|p." 0F#|a [g\oXٰuE÷= v6a`{,oĥd!KnJ"J^3~tXng.ܹ(jxì`G&67쵷\.qnOJ%I DP i̫fifiv@D<""e\Ra*0MfimȎSJ+ϧ)֘bkH-m65'ʚlIdo`boL5b9n5ژPVt.^kb`;g9_ڔloL4v%{URZڀUs;oԥ[ZӬiV-ֶtskFIVkܘlO>ВKfbXcs칕M=eQ o - NJ* 2TrbXreÇ9,[cRƮkr7Yl36!7%JU/^rPpRo;gʵZXjŖʫ׺(U; i,g-ϳUV+T+-;]GOiuK"Zgͱj>ϳV+)./GTudQRK;c***)vbMՑkb&o̳8P|t{Ge'%.hDDاJGWIiyRv:L,ȵU½À0=Zɖo~iP(L>;d=Ykf.aj؞Wgc\Kd@~iv&!bZ)]\\n:0-CfMS|WH^.1|'Nat:6j:ƼififwA%),DUyP%T*=Ɍ]xM EI@E0gT>Os/KpzYOYi*_\5 4aI)AقP{+^^rE n2/1dD>ARd|ٯ[A);HE{^}0 -`MЏN><~o/tDtCj(R`ܾv˷GR]@fMξSC2F/q$ж9%%C0dWV/Nm]Z?[HnA%Ԃ$uETQJOn Vsr?]D- d IPDCOdZkUOG]34@P0 q{ CX3y5L34L3 #f?fr!PPr4ž/.IEs]Zִ-ŭ-%i%MKS)l&&sSZIVkKfSI[%Ҙ^ذ\lbV^=[U /0r+#a׉KWXfGUBuy􋓙GjQ}TRbeKߴс ubIA譝zO$Lv"蘂@ 1+/CR<zȀ%IJ(`Hlt -* -ƴF em$Q@mb\t#é -#*˘Ö0GcQVR);1$dSdTQ&L> _{WVƀ1XZDdzB]=PKrQPr0E`w^1D_"^ȃ 2SäLb0B 0_t^y5L34L3S1 ^zwۍQ/*S7)]!˗e ?hxkDȪЈAA!#Ď 42$&($zDh$.Ÿ8k`Q74k3:ksZ^Mj⠣Nj -j$aN Wg/_[홙5-WDΣ ̻ذ,CFW1.iXٜrF$9R!UuAHSѻ \ 0 A=<?4' f,U -p% X K -M]Dv p7˘`kH-vpwWVT -DXI)\G*PIQuS-Ƌ2 ]4Do}?qPg.,.DAc%vRʎGtxQ} 062/Kq] - " qƋVp06|`vܵfjfif1+b]VjiL4XZR-- kc!ZfO5ZoۛLmE^}|_jѥR|u>$øa|7q/c]S՘3p)r1_5|/?]E~p(z%jtR#7Eg{uOziKKO]4bi,k|/;rYe.~{,G=^ --z$U{QL%541/E#P!`nG? -*/AgX C耞yOQpH^1LN0%nBEZ1}ܯ٢x}/?NǠ_Ic7;J)UP3{=T1S0b5Zun#ˮ D`rXef/1zn7L,!K1X9:RY1%T*+Y ZJJָB%DMK!^]GXȷpB+DH -QCEdF\ F_MU @\E&}LӃ6pAYj˜2 -X{ b}yTu^T2VXmVv|0C1m ߮7Cu|PC=f/C1˰iC^|7SCcga w|QO'FuSӦsϯLJ+CJ[J!eItPyukG7zbחBfħ48Kg5jw^kԈQ8]((()DT HK"\EyA1%S h7q ,J1?oI$K$HQHxN?LAp_I[1!L޾ yE!hCyա f`^ cXuK[jA2ؿɡLUW+waTRBi:+Ԋz(є}$E=WthFc')Qy)N7Ej1fifi{(2cnܪ)F"G9;趪;I;Ұ -@ ЦS8RHBVHۉZ,ٖ{OoKa)Mafsiв%M޽sӓ-rl3gr=?ޑ[$8|?yJŁUkGIZ+Y|.#wHE^-9F~,2*+dV9eW_-EoZ);Zz8JrKjՊ5W_'[{ 2jUчxhAMϗ͵u b"  -ȱk&3^5yBeްٻ<{?eJnoy_0 - -Wq+/!M{HN;< ECblVܯrNOɨq -^N??TzRuŢ̇yŔ(K/ǜ z{<<-j^y -roqEkœZ "JxgOsռ7̊=g -{iσ &فz90ąg_ x̋’f-eњT. ա;r<-neZLԞt\/-<ZCgSM瘻TtiW٘V ӒhS3h}>vEM[LKӢbft=jcbRS<S.0m*R9l_څ=C/o X4tܫb:}РƝmq/vx+ !i+ZJaq^K"!8i{gݭs e;.ܶP].4o=?4Þ7ۀl]pFo y2­ -qպD$ysb&޿=9?3iL0/üb !lu#K69+<@k~=X#'u.98_aɑVl?*;"=&K &K#p$KdBe (u\qiAИ1IwH~+Dk=gzѻ|iQp?~&3PVpq勑w}_ -%?H -u1ߵq%;":1bkKDIU}|.U3TQڢ]EuR\ْS^,jPVv֋TF՗W9\n'n\#{+8Ӊ[ºo߁Z'^({Z8}Xx;?K/cޅ'+KÉ+L̉Zgޙ5swѫFLz"B -ɛ+cNږrۙCb4!T6Lr*R.;"98\$Kg(`iV$+DW\L[nX.K45X.=3OBY}k%,t?Q{mh*8?WoM|~MMį%DHN^8x׶C$ؖu}݅vOQ*jt]H U|oFx|ga2s.[1]_T՚mhﱣ!_Y]R]_Vxr61myDQRbvWGk`}[~`"2>lHOw}\x}=IBwSi7]ݗgM)hK*h~x׉@[y֗{ْ\Ok^A~6_WpU:CͺN8n[^-X/ p}<,k|[eQWtQW''`8peʛ M݅Ӈ_jE*:vJ - Ǽ>XnvhMo]JM?yk*\f|NmcG-3j x zfKD6Cyax֓0Yf,-Lv6Lޞ|{CCqaKFO^)9R.I - =$9'OE#dᲄpYR,.=6xgyC"3$!G3'Wž}ܵi页v:4?{= zFM:bZcS2'3w΢ >JWkBy,!ЋL!ϢimY&[6[81:1Oi2}*ʪ4HjG}|;Tw;9xmxX_llmw 9@ۛ3x`r󓸍JWv]y{LzCiԛ45gyi鮣si͛vZlw^19>y?]kG+S7eZӌ]ƾ7<6S95&st ?Cb\E kQ xRmnzDop&J> ; fa@h¼yn38鶳tń5ŚP!oEN҂.~C, Aڲp#n8žxgI ?CnwH>S$hќg\g/ZaP:8"ne atn\ ;łi{L/pr+/eY9,iI f"Έ86>~;sxNw9u"6pb7hVeIS+ݵy^th|oMɴԤjw\ -eyAYn9p@=[^\)=)9{"J~|1q_|@ƧW 93=|C.&,Q·yx lyb)v+To!>7i[њMi|+MgS65gQ-CF1T#e, t*[VϦFT>;إ:Ǝ\=j1i)-CKzKu =JʚE2Lc_FEأ5vk TsEMǧWF(ˏsyN -Y#3N -u F%/6 -$ZE~>5!#yDPZoUV4}.Xs?g–;c^+fڍ4fMEmݔ{\eOfn{M>#ҠSٗSi2vcO3|=<: 9w_`A (""¼DDDDDDDDD8Nn*a,zcSQeG>ӡ7u mBs' -̭z!U큧W#g%)pyZlLt,~{*RCp0řP!BpqqbDlGVmG$K#cN߰qwl{G_9Uhϩhˣr69>CQc%o\+ZshW\ \\c#~64QTg,tCP[LX<2TDIs?ުLU I_НRT\H)5v2ʚ⒍jco?|W -+KfyvGMO25'IS>6I1CXL޴yݲ#i_}ݑ`^Ӹݧ)?UT/oϝ={_2gyeM~&>! I^0"taEOαҵƪ&[5< i& kfD" @ ̋fbKgY.HdLL-=ܖ2Şa_aO%E֏6n$O^~#+EX'9n6YsL)̛9ymia0{d{d[ɚe2gFXg,U{^^9-]WՑ(?rSaUCbPHXB"OСSg]{պ<|/ -ro+f1QF{UY -!~,"Uڽ>յӸ+wwcaʦ{yfS TÝ^֐w}|E\fW!uߞb^YC[&M9k @ MlQ*¦z쎇e]>}hKJ9M.*ʘbKDؓ#퉑([R5yeKf_i[H_&̱&  SSxSp{iai"IQ QĹN}̟yۋ+O>+poT"[r'"[`?/S"Y3@ٙ|ڙxy~D5z͏ξת{\Ti?}jP&J)ɽ8s 27 7*iX؋xH2(X&vڳc]ZE%3J[vno$#={WԕxP2qĺ`D9a1ȖWzFBGyA @x% #4cYՕ:>>~%s"s\PZ\YoꓳFwtF1![[fIɾ\,Hdޔ0֦hcGUt}<04D?D)!|7x'OBT^ V(V<4991+r`ަ=U g?J]svW5.m zf>ų_fqc9I /|>,CU8(yA @yN}گ"v ϔߊAWzBObWHl"c."eEYwy 0U\N4HEӠQU)3"jZJ LҘoHP1`,|U5sޓe];m%lXtM3M 8}hƲsyA @yrF'LTtꘃ[s4HO3nX]+%bW{YZj+r*vwTy;;"wsu rU[qe6Wɷ V諿}wGe]^|Gf& 8ci]>]_V^5אV^sjq0Gcg|H/nRB9`" -K ǜeS+x)ْО%Zi12`FK -tƲ,W a^n@ &.j1#bS/5$ED82vAa~9۶|i N]7=61z~ 3筞=scOgm1?nւ1+c0w~bWO;*u`K|KJ3JlTwB d8Pޠd0|OEJɣ[F@ADtȘa(Y`&ePM?;V V!ާҐX໽umz.wkYUaװsUt|-> )C A @Mns5nn/=W+YY,v{xxꮬGq&oC'2#oh -H/@ 4a~Ui۞d]?\aA/@ 4armE%ـjw7vtyZ{[J-%[Vnz[VݲӾ۾VZVTp^®)TبH$ a=&Z,AHUc"z0jZvtP.Ւ;z-ec|%Az{ikXAM2/ L8h#XvqS4r -U:j2XKʪ; 5%~fƭ/jY۶RRZRWmsO'Bh#^?E@ MLIî!DQ]Ċ\`4H %Ì疊aƮɝzˈ]cF;c`\o~"3J5A#*-O"Ҷ\K*(IX,|}N0 sIcW .{L?4_3[C(jQJ,D:eƦ^`bŐ };pոbm۞ڶҪX̶xi_01X\yK]yA @ypԐ_ GD*Y( F1/׭eƮփ̶ڲw6}έUj.^FL#"I}4:,\Ha(,Ȝ`P vͩb_DO oaA!=yPypQ'K??m]>]I8z6*M|aib*rX/b5Ϳ{ޓkW瞺 =8b""A%ˏW/020/@ 4WMXQ !4;vVmw5mqTʭuu经:Gn,tw;stu仏UvUu?W^x"Yu߉Ϫy}•!$w -Gx@͐ n1SbW0hu&^&G* ~̫Ipw uι:Oц --ײhD2ƚb\#4&|]E`V}Z?[$xXx*.FOWņu]͛Z%uNwGIMVW߮ŏ8@~n 3@ &*r yLGOgfM4ŦL[3-&pp[ۺTui~LGF R<mΘzͫϪzO/ ܍]ۼ+^[}Yrar@K.hfŒ~RjđqC7>70sa-$3roK$YW)8~)r׆| Ymz{3>_-嵇}*ek*c*]e,eyn'S*D mk=^0/@ hBH9#fѽ.Wt%9Җ?ytTUl*:IRIm$$$D$lPQ[G89N3A}_T%- ;WU,;/U^W|/_ IC:VP2 -ED ¹Ȅ06 -ӕEŋsZ|coPֿ,əþ./.iy"nJPp2eY“drd8t[=[:IeNӽ`mXl~[7-k'nҷk m $VMI?S¹G:l]}.Ө[TIQTuDB\YQe5VV>Zl,3+ƿDn%4h -N 8wqk Ѧhm^ۺbg"㒃Y闏w6V{cKuKJ[|ir՛g=-o?ăOkO{闞M-YQoI1OKk:5dZ埿6>2NGc/ /5\ -aqL2/{IE.y"<\_ʗkPXOfB+!&~sXbA - -+Cٚ0nk05,=k/!kA5q\C_ja~}LvkPBk[̔GrEL5f3_nl0u0uݼ3(a7v`ܺthH&.]TGq }>+,ΕHhC'Ϭ)[08͏ - )M( "Hm܄䜶^i.Ѿ֗-KlVeo(=';n}_˾31^+B #ڑv&䬿(RQQQQQQQQ3Ы@Wג ({;vYMSTOej 2L*eA|&4L_Ɨ0šlY0S᪃P}C0_nB{HUB7j4|}XBc0[N#*Lvḋ7ܖ[UEKc/SBvKݷHЏ[#Jkӎc^<+Һ)+eJ}bDʊ$y$萁N| sN~u d+:!|mpZ (2[?H.l}g;L^f`\6߼` 鴞4X' S1Pz@'zk7Č== =:l+EceL qȚ`$|XsP{K˲ -04c4$ߚ\wk#۲_kWkSޥKEEEEEEEEuSep⫄ۘ"vHn &$'ur3Pi[`2fgDs/F/GQh.oO*ofG"r"  zBpvcϏ¹|n$1AGGѡG_IʉdE1kgqsuvmv]7exr֐57Y1Wstkgk1+*^s~Ctڙh{ia@>;L![8Gek0~s$_mbrf$dG1kfg!DE|Iޅ:}Knߎ R{R#:x%¼jH*g^o%V=?Ɉb/e^********{{:}Sð $8Wiܴn;aC7N:e:Suh%F]s6EC! \i_pu^âm!V|Uj娂ʂ݊,2ܾޯ.O6#n?zgl`_LJ]930Ҿ8+UkJ W̕Ձ|m _LMX~_R IJ) Sk5LE8Wo6Խ.Ə N7y)~/}JQQQ楢a^y 鳘qYs؍3&D1Ltvc4m@eGq9WL㲧b<~UnÜ-6k7ELaWa˃A 81k4Oe[%m8(Ţj|{ZFU]Wgև%ԅsR0?{guqť(Jlh"AΛcy咶l>$E. E/AjFFFY9lWƒxH$[)q;;3%-N¿>yvw8?_{b -}/ykZ~- u_5>晋/Vq75y39i25RFnf1ĎB,-|†bvqpa - >b (إQ?d |eh$Y:h 43Jn6!i2U6ȧL|ʀbFwh6)ac&Z߸$BE,|)nIC;chFĬѓ7JYHi4 Id=t'EZri?dCt^lOmÿߛ2?, TB(3L$.Mh!AH۸Ǡ3`;ES kH-b -A7_1@ٶKIu!@Iڨ墵 MR^Ps6&RB:w_!a#7pIADO6&<7\BYꭕkE}n@N>`m ~8haovaTELa)\(Ro7o6pnN>BQgC?{躢ﮬ?+ 4}zاBwy#;R]i/yzM=`/#soG͛meZt7UqGgbgWfGgngw͗o国C;t}]{}]V_'f-]Vo՛i̵zsM~U[:D[w3썴]jsgpGWdWw3kڼ]ɝLK{rgw~+싈~z?;؀x[W_'ܓH6⭾{ M;&➞ǂҧ̰& kV%, +J.^=^+*HTX9Zc*,^T'/܅ggN;1>_oԳ1wbb7y 3o_2VOON̟ss'Γɹ㟰1oOЫgV{8>1^z||=5ə_\^WX"2/6^RÈdYfei[^CT„]QƟ-,uydVZ憢ь|WpSwzꅠ|ԍu(Rp -ֲ}NwU+ wUvN>BwKa7hktKJpzqN諓ܳ.>L߷Y[*;zkQ l@-WUلxKCȼZɼ+eY5ckI& -gf?:wsyznÉ3gsxI/~@ǩ3b想3Ō*^xr!3>T옶 -I+q*Đj"F7+DWOل]؄4=闤bƊ"ά%Mzg.ĭ(SO%vffYHIJY[-(U%7=',cR԰emYET.TȼI^U&4j~o5u}6srR7עg\)Zn䞾;pT=:P?Yp眨bXZz)ޓ]Jx҆t'Q#& 4 -)42릙BƼ*hauS+C3 -y0bB蠅;hAV4jG°,(csV(c3FOz5 Ivsۑ2{+h*x2/F0Sgd//鵠uB̄&2rA7qz -q+3sQV [1dG.Hup!=mZ⦆1Sr:O~]S6O6)}ML3)gsz,eLIa#OUړ3j.f d C넑!w_6Kڛ3GcoV( Ro={FڟshoNhI==9sQg!j7+䥇Q^F#\(QG:x :^h|m+neqP6ƶV=%v9Q1jCtxwhKW۾֮VoyrM l#/~E 4(l:8˼ru94 4ȼX#WH5c YU80YV eoT]-kezFU8`j~k -;.S*0eETR vqY_sK<[ sJUgW/|z*^^7)OTQ,iYxe]VeqD-*pW.d^ ԋR.ieR+ce\YR& cYeU2P\ʴfm:w=nr2\P"SrM&?qܥ7~:q??ctl4u#fӯ1gzV|9ʱWU|93/~M:`f_=:׎NvlcS;O}lO|˩>eQSX]ƥ xI-/hE=.oBȼBӗ*+"UaR5\VҊ -)l/)c29;ߓSO?>uz ӫ~w'.3q6ޣ=Fp*{g=7OLdwSpJva& ĀU XĠ2{º2QhgW Ű]Pmb&i&UJ'`T栽zw" -l/fM"++ihWeM+j -,ȼWWD5i=QWb=*ͼRMxF>LC۟7=#t-%f͞}wH]=MNc_߅:oNqFo71Ksܔ1Y/Ju.mdo]/eT62C9zWfrWy1II+M|)ݒ]=Q# )`mI]l/)YժTᲦUp -*ȼZkF.iˣy$2tG#g"v!bv)nA'w -ظ:"&!kr_PiyHdtF4ئAl `؛],d2/I*T\g4RlEaFȹk/7NM]#pK֞CRm +neoy(ݿ[vmݝ[1̶TћoiъK_8]##wmPE;h*GN[a=^A;֏~ (q#cRݼ`ZCT  y1÷M?o/xGiS[DKYRMcm{OzcH\ֶ1SUl|m6skz.TxVyK˚#x[I>Ö6.u^\bmgpd_> {Vr_|tEy[R-Z ms_ 9^ -yu^輍)>#@e]#iǜ_Z/iS#u#|k[[}ksu3h^nԼcyκkS}OM/"o:.?'k^мܳy^soV~g76<6V4/h^мy@y@ 4/4/h^мy@y@ 4/4/h^мy@@ 4/h^4/h^мy@@ 4/h^4/h^мy@@ 4/h^4/h^мy@@ 4/h^мh^мy@  4/h^4ALendstream ->> -endobj - -xref -0 856 -0000000000 65535 f -0000000012 00000 n -0000000182 00000 n -0000000327 00000 n -0000000409 00000 n -0000000543 00000 n -0000000635 00000 n -0000000769 00000 n -0000000848 00000 n -0000000985 00000 n -0000001074 00000 n -0000001183 00000 n -0000001293 00000 n -0000001403 00000 n -0000001513 00000 n -0000001627 00000 n -0000001730 00000 n -0000001872 00000 n -0000001960 00000 n -0000002069 00000 n -0000002177 00000 n -0000002284 00000 n -0000002392 00000 n -0000002507 00000 n -0000002614 00000 n -0000002717 00000 n -0000002821 00000 n -0000002928 00000 n -0000003036 00000 n -0000003147 00000 n -0000003259 00000 n -0000003371 00000 n -0000003484 00000 n -0000003595 00000 n -0000003715 00000 n -0000003822 00000 n -0000003930 00000 n -0000004040 00000 n -0000004152 00000 n -0000004261 00000 n -0000004375 00000 n -0000004481 00000 n -0000004588 00000 n -0000004699 00000 n -0000004811 00000 n -0000004917 00000 n -0000005024 00000 n -0000005118 00000 n -0000005272 00000 n -0000005364 00000 n -0000005470 00000 n -0000005581 00000 n -0000005689 00000 n -0000005803 00000 n -0000005902 00000 n -0000006002 00000 n -0000006092 00000 n -0000006236 00000 n -0000006334 00000 n -0000006447 00000 n -0000006554 00000 n -0000006669 00000 n -0000006786 00000 n -0000006893 00000 n -0000007000 00000 n -0000007106 00000 n -0000007214 00000 n -0000007308 00000 n -0000007449 00000 n -0000007543 00000 n -0000007651 00000 n -0000007754 00000 n -0000007858 00000 n -0000007963 00000 n -0000008070 00000 n -0000008175 00000 n -0000008282 00000 n -0000008397 00000 n -0000008512 00000 n -0000008605 00000 n -0000008744 00000 n -0000008837 00000 n -0000008944 00000 n -0000009046 00000 n -0000009149 00000 n -0000009238 00000 n -0000009377 00000 n -0000009470 00000 n -0000009577 00000 n -0000009670 00000 n -0000009810 00000 n -0000009901 00000 n -0000010007 00000 n -0000010110 00000 n -0000010200 00000 n -0000010340 00000 n -0000010435 00000 n -0000010544 00000 n -0000010638 00000 n -0000010721 00000 n -0000010760 00000 n -0000011287 00000 n -0000011527 00000 n -0000011667 00000 n -0000011692 00000 n -0000011932 00000 n -0000013015 00000 n -0000013040 00000 n -0000013280 00000 n -0000014359 00000 n -0000014944 00000 n -0000015100 00000 n -0000015257 00000 n -0000015413 00000 n -0000015570 00000 n -0000015726 00000 n -0000015883 00000 n -0000016039 00000 n -0000016196 00000 n -0000016352 00000 n -0000016509 00000 n -0000016665 00000 n -0000016822 00000 n -0000016978 00000 n -0000017135 00000 n -0000017291 00000 n -0000017448 00000 n -0000017604 00000 n -0000017761 00000 n -0000017918 00000 n -0000018076 00000 n -0000018233 00000 n -0000018391 00000 n -0000018548 00000 n -0000018706 00000 n -0000018863 00000 n -0000019021 00000 n -0000019178 00000 n -0000019336 00000 n -0000019493 00000 n -0000019651 00000 n -0000019808 00000 n -0000019966 00000 n -0000020123 00000 n -0000020281 00000 n -0000020438 00000 n -0000020596 00000 n -0000020753 00000 n -0000020911 00000 n -0000021068 00000 n -0000021226 00000 n -0000021383 00000 n -0000021541 00000 n -0000021698 00000 n -0000021856 00000 n -0000022013 00000 n -0000022171 00000 n -0000022328 00000 n -0000022486 00000 n -0000022643 00000 n -0000022801 00000 n -0000022958 00000 n -0000023116 00000 n -0000023273 00000 n -0000023431 00000 n -0000023588 00000 n -0000023746 00000 n -0000023903 00000 n -0000024061 00000 n -0000024218 00000 n -0000024376 00000 n -0000024533 00000 n -0000024691 00000 n -0000024847 00000 n -0000025004 00000 n -0000025159 00000 n -0000025315 00000 n -0000025470 00000 n -0000025626 00000 n -0000025866 00000 n -0000026929 00000 n -0000027548 00000 n -0000027705 00000 n -0000027863 00000 n -0000028020 00000 n -0000028178 00000 n -0000028335 00000 n -0000028493 00000 n -0000028650 00000 n -0000028808 00000 n -0000028965 00000 n -0000029123 00000 n -0000029280 00000 n -0000029438 00000 n -0000029595 00000 n -0000029753 00000 n -0000029910 00000 n -0000030068 00000 n -0000030225 00000 n -0000030383 00000 n -0000030540 00000 n -0000030698 00000 n -0000030855 00000 n -0000031013 00000 n -0000031170 00000 n -0000031328 00000 n -0000031485 00000 n -0000031643 00000 n -0000031800 00000 n -0000031958 00000 n -0000032115 00000 n -0000032273 00000 n -0000032430 00000 n -0000032588 00000 n -0000032745 00000 n -0000032903 00000 n -0000033060 00000 n -0000033218 00000 n -0000033375 00000 n -0000033533 00000 n -0000033690 00000 n -0000033848 00000 n -0000034005 00000 n -0000034163 00000 n -0000034320 00000 n -0000034478 00000 n -0000034635 00000 n -0000034793 00000 n -0000034950 00000 n -0000035108 00000 n -0000035265 00000 n -0000035423 00000 n -0000035580 00000 n -0000035738 00000 n -0000035895 00000 n -0000036053 00000 n -0000036210 00000 n -0000036368 00000 n -0000036525 00000 n -0000036683 00000 n -0000036840 00000 n -0000036998 00000 n -0000037155 00000 n -0000037313 00000 n -0000037470 00000 n -0000037628 00000 n -0000037785 00000 n -0000037943 00000 n -0000038100 00000 n -0000038258 00000 n -0000038413 00000 n -0000038569 00000 n -0000038724 00000 n -0000038880 00000 n -0000039120 00000 n -0000039952 00000 n -0000040355 00000 n -0000040512 00000 n -0000040670 00000 n -0000040827 00000 n -0000040985 00000 n -0000041142 00000 n -0000041300 00000 n -0000041457 00000 n -0000041615 00000 n -0000041772 00000 n -0000041930 00000 n -0000042087 00000 n -0000042245 00000 n -0000042402 00000 n -0000042560 00000 n -0000042717 00000 n -0000042875 00000 n -0000043032 00000 n -0000043190 00000 n -0000043347 00000 n -0000043505 00000 n -0000043662 00000 n -0000043820 00000 n -0000043977 00000 n -0000044135 00000 n -0000044292 00000 n -0000044450 00000 n -0000044607 00000 n -0000044765 00000 n -0000044922 00000 n -0000045080 00000 n -0000045237 00000 n -0000045395 00000 n -0000045552 00000 n -0000045710 00000 n -0000045867 00000 n -0000046025 00000 n -0000046182 00000 n -0000046340 00000 n -0000046497 00000 n -0000046655 00000 n -0000046812 00000 n -0000046970 00000 n -0000047127 00000 n -0000047285 00000 n -0000047441 00000 n -0000047599 00000 n -0000047839 00000 n -0000047936 00000 n -0000047961 00000 n -0000048201 00000 n -0000049205 00000 n -0000049230 00000 n -0000049470 00000 n -0000050306 00000 n -0000050331 00000 n -0000050571 00000 n -0000051044 00000 n -0000051069 00000 n -0000051309 00000 n -0000054168 00000 n -0000054209 00000 n -0000054365 00000 n -0000054521 00000 n -0000054761 00000 n -0000057137 00000 n -0000057202 00000 n -0000057359 00000 n -0000057516 00000 n -0000057673 00000 n -0000057830 00000 n -0000057988 00000 n -0000058228 00000 n -0000060380 00000 n -0000060471 00000 n -0000060628 00000 n -0000060785 00000 n -0000060942 00000 n -0000061099 00000 n -0000061256 00000 n -0000061413 00000 n -0000061571 00000 n -0000061728 00000 n -0000061968 00000 n -0000064357 00000 n -0000064448 00000 n -0000064606 00000 n -0000064763 00000 n -0000064920 00000 n -0000065077 00000 n -0000065235 00000 n -0000065392 00000 n -0000065550 00000 n -0000065705 00000 n -0000065945 00000 n -0000067338 00000 n -0000067419 00000 n -0000067576 00000 n -0000067733 00000 n -0000067890 00000 n -0000068047 00000 n -0000068204 00000 n -0000068362 00000 n -0000068519 00000 n -0000068759 00000 n -0000070662 00000 n -0000070769 00000 n -0000070926 00000 n -0000071083 00000 n -0000071240 00000 n -0000071397 00000 n -0000071554 00000 n -0000071711 00000 n -0000071868 00000 n -0000072025 00000 n -0000072183 00000 n -0000072340 00000 n -0000072580 00000 n -0000074082 00000 n -0000074163 00000 n -0000074320 00000 n -0000074477 00000 n -0000074635 00000 n -0000074792 00000 n -0000074949 00000 n -0000075106 00000 n -0000075262 00000 n -0000075502 00000 n -0000077991 00000 n -0000078040 00000 n -0000078197 00000 n -0000078354 00000 n -0000078510 00000 n -0000078750 00000 n -0000080577 00000 n -0000080692 00000 n -0000080849 00000 n -0000081006 00000 n -0000081164 00000 n -0000081322 00000 n -0000081480 00000 n -0000081638 00000 n -0000081795 00000 n -0000081952 00000 n -0000082109 00000 n -0000082267 00000 n -0000082424 00000 n -0000082664 00000 n -0000085248 00000 n -0000085297 00000 n -0000085454 00000 n -0000085611 00000 n -0000085768 00000 n -0000086008 00000 n -0000088071 00000 n -0000088144 00000 n -0000088301 00000 n -0000088458 00000 n -0000088615 00000 n -0000088772 00000 n -0000088929 00000 n -0000089086 00000 n -0000089326 00000 n -0000091345 00000 n -0000091444 00000 n -0000091601 00000 n -0000091758 00000 n -0000091915 00000 n -0000092073 00000 n -0000092230 00000 n -0000092387 00000 n -0000092544 00000 n -0000092702 00000 n -0000092859 00000 n -0000093099 00000 n -0000094652 00000 n -0000094717 00000 n -0000094874 00000 n -0000095031 00000 n -0000095188 00000 n -0000095346 00000 n -0000095503 00000 n -0000095743 00000 n -0000097985 00000 n -0000098066 00000 n -0000098224 00000 n -0000098381 00000 n -0000098538 00000 n -0000098695 00000 n -0000098852 00000 n -0000099010 00000 n -0000099167 00000 n -0000099407 00000 n -0000100636 00000 n -0000100685 00000 n -0000100842 00000 n -0000100999 00000 n -0000101156 00000 n -0000101396 00000 n -0000102510 00000 n -0000102583 00000 n -0000102741 00000 n -0000102897 00000 n -0000103054 00000 n -0000103210 00000 n -0000103366 00000 n -0000103523 00000 n -0000103763 00000 n -0000105664 00000 n -0000105721 00000 n -0000105878 00000 n -0000106035 00000 n -0000106191 00000 n -0000106347 00000 n -0000106587 00000 n -0000108703 00000 n -0000108818 00000 n -0000108975 00000 n -0000109132 00000 n -0000109289 00000 n -0000109446 00000 n -0000109603 00000 n -0000109759 00000 n -0000109915 00000 n -0000110073 00000 n -0000110229 00000 n -0000110384 00000 n -0000110539 00000 n -0000110779 00000 n -0000112548 00000 n -0000112647 00000 n -0000112804 00000 n -0000112961 00000 n -0000113117 00000 n -0000113273 00000 n -0000113430 00000 n -0000113587 00000 n -0000113744 00000 n -0000113900 00000 n -0000114056 00000 n -0000114296 00000 n -0000115774 00000 n -0000115815 00000 n -0000115971 00000 n -0000116128 00000 n -0000116368 00000 n -0000118059 00000 n -0000118092 00000 n -0000118249 00000 n -0000118489 00000 n -0000120306 00000 n -0000120339 00000 n -0000120496 00000 n -0000120736 00000 n -0000122124 00000 n -0000122181 00000 n -0000122338 00000 n -0000122495 00000 n -0000122652 00000 n -0000122809 00000 n -0000123049 00000 n -0000124904 00000 n -0000124945 00000 n -0000125102 00000 n -0000125257 00000 n -0000125497 00000 n -0000127487 00000 n -0000127528 00000 n -0000127685 00000 n -0000127842 00000 n -0000128082 00000 n -0000129826 00000 n -0000129875 00000 n -0000130032 00000 n -0000130189 00000 n -0000130346 00000 n -0000130586 00000 n -0000132337 00000 n -0000132378 00000 n -0000132535 00000 n -0000132692 00000 n -0000132932 00000 n -0000134827 00000 n -0000134892 00000 n -0000135049 00000 n -0000135206 00000 n -0000135364 00000 n -0000135519 00000 n -0000135674 00000 n -0000135914 00000 n -0000137715 00000 n -0000137764 00000 n -0000137922 00000 n -0000138079 00000 n -0000138236 00000 n -0000138476 00000 n -0000139991 00000 n -0000140064 00000 n -0000140221 00000 n -0000140378 00000 n -0000140535 00000 n -0000140692 00000 n -0000140848 00000 n -0000141003 00000 n -0000141243 00000 n -0000142762 00000 n -0000142811 00000 n -0000142968 00000 n -0000143125 00000 n -0000143282 00000 n -0000143522 00000 n -0000145146 00000 n -0000145203 00000 n -0000145360 00000 n -0000145517 00000 n -0000145674 00000 n -0000145831 00000 n -0000146071 00000 n -0000147554 00000 n -0000147595 00000 n -0000147752 00000 n -0000147909 00000 n -0000148149 00000 n -0000149862 00000 n -0000149903 00000 n -0000150060 00000 n -0000150217 00000 n -0000150457 00000 n -0000152519 00000 n -0000152568 00000 n -0000152725 00000 n -0000152882 00000 n -0000153039 00000 n -0000153279 00000 n -0000155476 00000 n -0000155533 00000 n -0000155690 00000 n -0000155847 00000 n -0000156004 00000 n -0000156162 00000 n -0000156402 00000 n -0000157880 00000 n -0000157945 00000 n -0000158102 00000 n -0000158259 00000 n -0000158416 00000 n -0000158573 00000 n -0000158730 00000 n -0000158970 00000 n -0000160730 00000 n -0000160771 00000 n -0000160928 00000 n -0000161085 00000 n -0000161325 00000 n -0000163333 00000 n -0000163398 00000 n -0000163555 00000 n -0000163712 00000 n -0000163869 00000 n -0000164024 00000 n -0000164179 00000 n -0000164419 00000 n -0000166078 00000 n -0000166127 00000 n -0000166284 00000 n -0000166441 00000 n -0000166598 00000 n -0000166838 00000 n -0000168640 00000 n -0000168705 00000 n -0000168862 00000 n -0000169020 00000 n -0000169177 00000 n -0000169334 00000 n -0000169489 00000 n -0000169729 00000 n -0000171428 00000 n -0000171485 00000 n -0000171642 00000 n -0000171799 00000 n -0000171956 00000 n -0000172113 00000 n -0000172353 00000 n -0000173794 00000 n -0000173835 00000 n -0000173992 00000 n -0000174149 00000 n -0000174389 00000 n -0000175702 00000 n -0000175759 00000 n -0000175916 00000 n -0000176073 00000 n -0000176230 00000 n -0000176387 00000 n -0000176627 00000 n -0000177235 00000 n -0000177260 00000 n -0000177500 00000 n -0000179230 00000 n -0000179897 00000 n -0000180053 00000 n -0000180210 00000 n -0000180366 00000 n -0000180523 00000 n -0000180680 00000 n -0000180837 00000 n -0000180994 00000 n -0000181151 00000 n -0000181308 00000 n -0000181465 00000 n -0000181622 00000 n -0000181779 00000 n -0000181936 00000 n -0000182093 00000 n -0000182250 00000 n -0000182407 00000 n -0000182563 00000 n -0000182720 00000 n -0000182877 00000 n -0000183034 00000 n -0000183191 00000 n -0000183348 00000 n -0000183505 00000 n -0000183662 00000 n -0000183819 00000 n -0000183975 00000 n -0000184131 00000 n -0000184287 00000 n -0000184443 00000 n -0000184599 00000 n -0000184756 00000 n -0000184913 00000 n -0000185070 00000 n -0000185227 00000 n -0000185384 00000 n -0000185541 00000 n -0000185698 00000 n -0000185854 00000 n -0000186009 00000 n -0000186164 00000 n -0000186322 00000 n -0000186480 00000 n -0000186638 00000 n -0000186796 00000 n -0000186954 00000 n -0000187112 00000 n -0000187270 00000 n -0000187428 00000 n -0000187586 00000 n -0000187744 00000 n -0000187902 00000 n -0000188060 00000 n -0000188218 00000 n -0000188376 00000 n -0000188534 00000 n -0000188692 00000 n -0000188850 00000 n -0000189008 00000 n -0000189166 00000 n -0000189324 00000 n -0000189482 00000 n -0000189640 00000 n -0000189798 00000 n -0000189956 00000 n -0000190114 00000 n -0000190272 00000 n -0000190430 00000 n -0000190588 00000 n -0000190746 00000 n -0000190904 00000 n -0000191062 00000 n -0000191220 00000 n -0000191378 00000 n -0000191536 00000 n -0000191694 00000 n -0000191852 00000 n -0000192010 00000 n -0000192167 00000 n -0000192407 00000 n -0000193069 00000 n -0000193208 00000 n -0000193364 00000 n -0000193521 00000 n -0000193678 00000 n -0000193835 00000 n -0000193992 00000 n -0000194149 00000 n -0000194306 00000 n -0000194463 00000 n -0000194620 00000 n -0000194777 00000 n -0000194934 00000 n -0000195091 00000 n -0000195248 00000 n -0000195405 00000 n -0000195464 00000 n -0000197885 00000 n -0000200311 00000 n -0000202730 00000 n -0000202773 00000 n -0000204189 00000 n -0000204246 00000 n -0000204302 00000 n -0000204358 00000 n -0000204414 00000 n -0000204470 00000 n -0000204526 00000 n -0000204582 00000 n -0000204638 00000 n -0000204694 00000 n -0000204750 00000 n -0000204806 00000 n -0000204862 00000 n -0000204918 00000 n -0000204974 00000 n -0000205030 00000 n -0000205086 00000 n -0000205142 00000 n -0000205198 00000 n -0000205254 00000 n -0000205310 00000 n -0000205366 00000 n -0000205422 00000 n -0000205478 00000 n -0000205534 00000 n -0000205590 00000 n -0000205646 00000 n -0000205702 00000 n -0000205758 00000 n -0000205814 00000 n -0000205870 00000 n -0000205926 00000 n -0000205982 00000 n -0000206038 00000 n -0000206094 00000 n -0000206150 00000 n -0000206206 00000 n -0000206262 00000 n -0000206318 00000 n -0000206374 00000 n -0000206430 00000 n -0000206486 00000 n -0000206542 00000 n -0000206598 00000 n -0000206654 00000 n -0000206710 00000 n -0000206766 00000 n -0000206822 00000 n -0000206878 00000 n -0000206934 00000 n -0000206990 00000 n -0000207046 00000 n -0000207102 00000 n -0000207158 00000 n -0000207214 00000 n -0000207270 00000 n -0000207326 00000 n -0000207382 00000 n -0000207438 00000 n -0000207494 00000 n -0000207550 00000 n -0000207606 00000 n -0000207662 00000 n -0000207718 00000 n -0000207774 00000 n -0000207830 00000 n -0000207886 00000 n -0000207942 00000 n -0000207998 00000 n -0000208054 00000 n -0000208110 00000 n -0000208166 00000 n -0000208222 00000 n -0000208278 00000 n -0000208334 00000 n -0000208390 00000 n -0000208446 00000 n -0000208502 00000 n -0000208558 00000 n -0000208614 00000 n -0000208670 00000 n -0000208726 00000 n -0000208782 00000 n -0000208838 00000 n -0000208894 00000 n -0000208950 00000 n -0000209006 00000 n -0000209062 00000 n -0000209118 00000 n -0000209174 00000 n -0000209230 00000 n -0000209286 00000 n -0000209342 00000 n -0000209398 00000 n -0000209454 00000 n -0000209510 00000 n -0000209566 00000 n -0000209622 00000 n -0000209678 00000 n -0000209735 00000 n - -trailer -<< -/Size 856 -/Root 2 0 R -/Info 1 0 R ->> - -startxref -381292 -%%EOF diff --git a/CyUSBSerial_SDK_Linux/common/header/CyUSBSerial.h b/CyUSBSerial_SDK_Linux/common/header/CyUSBSerial.h deleted file mode 100644 index 6324b3f..0000000 --- a/CyUSBSerial_SDK_Linux/common/header/CyUSBSerial.h +++ /dev/null @@ -1,1842 +0,0 @@ -/* -## Cypress USB Serial Library header file (CyUSBSerial.h) -## =========================== -## -## Copyright Cypress Semiconductor Corporation, 2012-2013, -## All Rights Reserved -## UNPUBLISHED, LICENSED SOFTWARE. -## -## CONFIDENTIAL AND PROPRIETARY INFORMATION -## WHICH IS THE PROPERTY OF CYPRESS. -## -## Use of this file is governed -## by the license agreement included in the file -## -## /license/license.txt -## -## where is the Cypress software -## installation root directory path. -## -## =========================== -*/ -#ifndef _INCLUDED_CYUSBSERIAL_H_ -#define _INCLUDED_CYUSBSERIAL_H_ - -#ifdef __cplusplus - #define CppCALLCONVEN extern "C" -#else - #define CppCALLCONVEN -#endif - -/*This is to export Windows API*/ -#ifdef WIN32 - #ifdef CYUSBSERIAL_EXPORTS - #define CYWINEXPORT CppCALLCONVEN __declspec(dllexport) - #define WINCALLCONVEN - #define LINUXCALLCONVEN - #else - #define CYWINEXPORT CppCALLCONVEN __declspec(dllimport) - #define WINCALLCONVEN - #define LINUXCALLCONVEN - #endif -#else /*Linux and MAC*/ - #define CYWINEXPORT CppCALLCONVEN - #define WINCALLCONVEN - #define LINUXCALLCONVEN - #ifndef BOOL - typedef bool BOOL; - #endif -#endif -/*************************************************************************************/ -/*******************************Constants*********************************************/ -/*************************************************************************************/ - -/*@@Constants -This section contains details of the all the constants -that are part of Cypress USB Serial driver library. -*/ -#define CY_STRING_DESCRIPTOR_SIZE 256 /*String descriptor size */ -#define CY_MAX_DEVICE_INTERFACE 5 /*Maximum number of interfaces */ - -/* -Summary -This section contains USB Serial library version information. -*/ - -/* Major version number for library. */ -#define CY_US_VERSION_MAJOR (1) - -/* Minor version number for library. */ -#define CY_US_VERSION_MINOR (0) - -/* Patch version number for library. */ -#define CY_US_VERSION_PATCH (0) - -/* Version number for the device. */ -#define CY_US_VERSION ((CY_US_VERSION_MAJOR) | \ - (CY_US_VERSION_MINOR << 8) | \ - (CY_US_VERSION_PATCH << 16)) -/* Library build number. */ -#define CY_US_VERSION_BUILD (59) - - -/*************************************************************************************/ -/****************************Data Type Definitions************************************/ -/*************************************************************************************/ - -/*@@Data Types -This section defines the data types that are used by -Cypress USB Serial driver library. -*/ -#ifndef UINT32 - typedef unsigned int UINT32; -#endif -#ifndef UINT8 - typedef unsigned char UINT8; -#endif -#ifndef UINT16 - typedef unsigned short UINT16; -#endif -#ifndef CHAR - typedef char CHAR; -#endif -#ifndef UCHAR - typedef unsigned char UCHAR; -#endif - -/* Summary - CyUSB Device Handle. - - Description - The handle is used by application to communicate with USB serial device. - The handle is obtained by calling CyOpen. - - See Also - * CyOpen -*/ -typedef void* CY_HANDLE; - -/* -Summary -Function pointer for getting async error/success notification on UART/SPI - -Description -This function pointer that will be passed to CySetEventNotification and get -a callback with a 2 byte value bit map that reports error/events triggered during UART/SPI transaction. -The bit map is defined in CY_CALLBACK_EVENTS. - -See also -* CY_CALLBACK_EVENTS -*/ -typedef void (*CY_EVENT_NOTIFICATION_CB_FN)(UINT16 eventsNotified); - -/* -Summary -This structure is used to hold VID and PID of USB device - -Description -This Strucuture holds the VID and PID of a USB device. - -See Also -* CY_DEVICE_INFO -* CyGetDeviceInfoVidPid -*/ -typedef struct _CY_VID_PID { - - UINT16 vid; /*Holds the VID of the device*/ - UINT16 pid; /*Holds the PID of the device*/ - -} CY_VID_PID, *PCY_VID_PID; - -/* Summary -This structure is used to hold version information of the library. - -Description -This structure can be used to retrive the version information of the library. - -See Also -* CyGetLibraryVersion -*/ -typedef struct _CY_LIBRARY_VERSION { - - UINT8 majorVersion; /*The major version of the library*/ - UINT8 minorVersion; /*The minor version of the library*/ - UINT16 patch; /*The patch number of the library*/ - UINT8 buildNumber; /*The build number of the library*/ - -} CY_LIBRARY_VERSION, *PCY_LIBRARY_VERSION; - -/* -Summary -This structure is used to hold firmware version of the USB Serial device. - -Description -This structure holds the version information of the USB serial device. -It has major version, minor version, patch number and build number. - -See Also -* CyGetFirmwareVersion -*/ -typedef struct _CY_FIRMWARE_VERSION { - - UINT8 majorVersion; /*Major version of the Firmware*/ - UINT8 minorVersion; /*Minor version of the Firmware*/ - UINT16 patchNumber; /*Patch Number of the Firmware*/ - UINT32 buildNumber; /*Build Number of the Firmware*/ - -} CY_FIRMWARE_VERSION, *PCY_FIRMWARE_VERSION; - -/* Summary -Enumeration defining list of USB device classes supported by USB Serial device. - -Description -This is the list of USB device classes supported by USB Serial device. - -See Also -* CY_DEVICE_INFO -* CyGetDeviceInfo -* CyGetDeviceInfoVidPid -*/ -typedef enum _CY_DEVICE_CLASS{ - - CY_CLASS_DISABLED = 0, /*None or the interface is disabled */ - CY_CLASS_CDC = 0x02, /*CDC ACM class*/ - CY_CLASS_PHDC = 0x0F, /*PHDC class */ - CY_CLASS_VENDOR = 0xFF /*VENDOR specific class*/ - -} CY_DEVICE_CLASS; - -/* Summary -Enumeration defining list of device types supported by USB Serial device in each interface. - -Description -This is the list of device types supported by USB Serial device when the interface type is -configured as CY_CLASS_VENDOR. The interface type can be queried from the device by using CyGetDeviceInfo -and CyGetDeviceInfoVidPid APIs. - -The member of CY_DEVICE_INFO structure contains the interface type. - -See Also -* CY_DEVICE_INFO -* CyGetDeviceInfo -* CyGetDeviceInfoVidPid -*/ -typedef enum _CY_DEVICE_TYPE { - - CY_TYPE_DISABLED = 0, /*Invalid device type or interface is not CY_CLASS_VENDOR*/ - CY_TYPE_UART, /*Interface of device is of type UART*/ - CY_TYPE_SPI, /*Interface of device is of type SPI */ - CY_TYPE_I2C, /*Interface of device is of type I2C */ - CY_TYPE_JTAG, /*Interface of device is of type JTAG*/ - CY_TYPE_MFG /*Interface of device is in Manufacturing mode*/ - -} CY_DEVICE_TYPE; - -/* Summary -This enumeration type defines the available device serial blocks. - -Description -USB Serial device has up to two configurable serial blocks. UART, SPI, I2C or JTAG functionality can be -configured and used in these serial block. Windows driver binds to a serial block rather than the entire device. -So, it is essential to find out which serial block to which current communications are directed. These enumeration -structure provides the possible SERIAL BLOCK Options. - -This enumration data type is a member of CY_DEVICE_INFO structure. - -This data type information doesn't apply for non-windows operating system. - -See Also -CY_DEVICE_INFO -CyGetDeviceInfo -CyGetDeviceInfoVidPid -*/ - -typedef enum _CY_DEVICE_SERIAL_BLOCK -{ - SerialBlock_SCB0 = 0, /*Serial Block Number 0*/ - SerialBlock_SCB1, /*Serial Block Number 1*/ - SerialBlock_MFG /*Serial Block Manufacturing Interface.*/ - -} CY_DEVICE_SERIAL_BLOCK; - -/* Summary -Structure to hold information of the device connected to host. - -Description -The structure holds the information about device currently connected to host. The information -can be obtained by using CyGetDeviceInfo and CyGetDeviceInfoVidPid APIs. - -The information includes VID, PID, number of interfaces, string descriptors, device type -and device class supported by each interface. Device type is valid only if the interface is CY_CLASS_VENDOR. - -See Also -CY_VID_PID -CY_DEVICE_CLASS -CY_DEVICE_TYPE -CyGetDeviceInfo -CyGetDeviceInfoVidPid -*/ -typedef struct _CY_DEVICE_INFO { - - CY_VID_PID vidPid; /*VID and PID*/ - UCHAR numInterfaces; /*Number of interfaces supported*/ - UCHAR manufacturerName [CY_STRING_DESCRIPTOR_SIZE]; /*Manufacturer name*/ - UCHAR productName [CY_STRING_DESCRIPTOR_SIZE]; /*Product name*/ - UCHAR serialNum [CY_STRING_DESCRIPTOR_SIZE]; /*Serial number*/ - UCHAR deviceFriendlyName [CY_STRING_DESCRIPTOR_SIZE]; /*Device friendly name : Windows only*/ - CY_DEVICE_TYPE deviceType [CY_MAX_DEVICE_INTERFACE]; /*Type of the device each interface has(Valid only - for USB Serial Device) and interface in vendor class*/ - CY_DEVICE_CLASS deviceClass [CY_MAX_DEVICE_INTERFACE]; /*Interface class of each interface*/ - -#ifdef WIN32 - CY_DEVICE_SERIAL_BLOCK deviceBlock; /* On Windows, each USB Serial device interface is associated with a - separate driver instance. This variable represents the present driver - interface instance that is associated with a serial block. */ -#endif - -} CY_DEVICE_INFO,*PCY_DEVICE_INFO; - -/* Summary -This structure is used to hold data buffer information. - -Description -This strucuture is used by all the data transaction APIs in the library to perform read, write -operations. -Before using a variable of this strucutre users need to initialize various members appropriately. - -See Also -* CyUartRead -* CyUartWrite -* CyI2cRead -* CyI2cWrite -* CySpiReadWrite -* CyJtagWrite -* CyJtagRead -*/ -typedef struct _CY_DATA_BUFFER { - - UCHAR *buffer; /*Pointer to the buffer from where the data is read/written */ - UINT32 length; /*Length of the buffer */ - UINT32 transferCount; /*Number of bytes actually read/written*/ - -} CY_DATA_BUFFER,*PCY_DATA_BUFFER; - -/* Summary -Enumeration defining return status of USB serial library APIs - -Description -The enumeration CY_RETURN_STATUS holds the different return status of all the -APIs supported by USB Serial library. -*/ -typedef enum _CY_RETURN_STATUS{ - - CY_SUCCESS = 0, /*API returned successfully without any errors.*/ - CY_ERROR_ACCESS_DENIED, /*Access of the API is denied for the application */ - CY_ERROR_DRIVER_INIT_FAILED, /*Driver initialisation failed*/ - CY_ERROR_DEVICE_INFO_FETCH_FAILED, /*Device information fetch failed */ - CY_ERROR_DRIVER_OPEN_FAILED, /*Failed to open a device in the library */ - CY_ERROR_INVALID_PARAMETER, /*One or more parameters sent to the API was invalid*/ - CY_ERROR_REQUEST_FAILED, /*Request sent to USB Serial device failed */ - CY_ERROR_DOWNLOAD_FAILED, /*Firmware download to the device failed */ - CY_ERROR_FIRMWARE_INVALID_SIGNATURE, /*Invalid Firmware signature in firmware file*/ - CY_ERROR_INVALID_FIRMWARE, /*Invalid firmware */ - CY_ERROR_DEVICE_NOT_FOUND, /*Device disconnected */ - CY_ERROR_IO_TIMEOUT, /*Timed out while processing a user request*/ - CY_ERROR_PIPE_HALTED, /*Pipe halted while trying to transfer data*/ - CY_ERROR_BUFFER_OVERFLOW, /*OverFlow of buffer while trying to read/write data */ - CY_ERROR_INVALID_HANDLE, /*Device handle is invalid */ - CY_ERROR_ALLOCATION_FAILED, /*Error in Allocation of the resource inside the library*/ - CY_ERROR_I2C_DEVICE_BUSY, /*I2C device busy*/ - CY_ERROR_I2C_NAK_ERROR, /*I2C device NAK*/ - CY_ERROR_I2C_ARBITRATION_ERROR, /*I2C bus arbitration error*/ - CY_ERROR_I2C_BUS_ERROR, /*I2C bus error*/ - CY_ERROR_I2C_BUS_BUSY, /*I2C bus is busy*/ - CY_ERROR_I2C_STOP_BIT_SET, /*I2C master has sent a stop bit during a transaction*/ - CY_ERROR_STATUS_MONITOR_EXIST /*API Failed because the SPI/UART status monitor thread already exists*/ -} CY_RETURN_STATUS; - -/* Summary -This structure is used to store configuration of I2C module. - -Description -The structure contains parameters that are used in configuring I2C module of -Cypress USB Serial device. CyGetI2cConfig and CySetI2cConfig APIs can be used to -retrieve and configure I2C module respectively. - -See Also -* CyGetI2cConfig -* CySetI2cConfig -*/ -typedef struct _CY_I2C_CONFIG{ - - UINT32 frequency; /* I2C clock frequency 1KHz to 400KHz*/ - UINT8 slaveAddress; /* Slave address of the I2C module, when it is configured as slave*/ - BOOL isMaster; /* true- Master , false- slave*/ - BOOL isClockStretch; /* true- Stretch clock in case of no data availability - (Valid only for slave mode) - false- Do not Stretch clock*/ -} CY_I2C_CONFIG,*PCY_I2C_CONFIG; - -/* Summary -This structure is used to configure each I2C data transaction. - -Description -This structure defines parameters that are used for configuring -I2C module during each data transaction. Which includes setting slave address -(when device is in I2C slave mode), stopbit (to enable or disable) and -Nak bit (to enable or disable). - -See Also -* CyI2cWrite -* CyI2cRead -*/ -typedef struct _CY_I2C_DATA_CONFIG -{ - UCHAR slaveAddress; /*Slave address the master will communicate with*/ - BOOL isStopBit; /*Set when stop bit is used*/ - BOOL isNakBit; /*Set when I2C master wants to NAK the slave after read - Applicable only when doing I2C read*/ -} CY_I2C_DATA_CONFIG, *PCY_I2C_DATA_CONFIG; - -/* Summary -Enumeration defining SPI protocol types supported by USB Serial SPI module. - -Description -These are the different protocols supported by USB-Serial SPI module. - -See Also -* CY_SPI_CONFIG -* CyGetSpiConfig -* CySetSpiConfig -*/ -typedef enum _CY_SPI_PROTOCOL { - - CY_SPI_MOTOROLA = 0, /*In master mode, when not transmitting data (SELECT is inactive), SCLK is stable at CPOL. - In slave mode, when not selected, SCLK is ignored; i.e. it can be either stable or clocking. - In master mode, when there is no data to transmit (TX FIFO is empty), SELECT is inactive. - */ - CY_SPI_TI, /*In master mode, when not transmitting data, SCLK is stable at '0'. - In slave mode, when not selected, SCLK is ignored - i.e. it can be either stable or clocking. - In master mode, when there is no data to transmit (TX FIFO is empty), SELECT is inactive - - i.e. no pulse is generated. - *** It supports only mode 1 whose polarity values are - CPOL = 0 - CPHA = 1 - */ - CY_SPI_NS /*In master mode, when not transmitting data, SCLK is stable at '0'. In slave mode, - when not selected, SCLK is ignored; i.e. it can be either stable or clocking. - In master mode, when there is no data to transmit (TX FIFO is empty), SELECT is inactive. - *** It supports only mode 0 whose polarity values are - CPOL = 0 - CPHA = 0 - */ -} CY_SPI_PROTOCOL; - -/* Summary -This structure is used to configure the SPI module of USB Serial device. - -Description -This structure defines configuration parameters that are used for configuring the SPI module . - -See Also -* CY_SPI_PROTOCOL -* CY_SPI_DATA_TRANSFER_MODE -* CyGetSpiConfig -* CySetSpiConfig -*/ -typedef struct _CY_SPI_CONFIG -{ - - UINT32 frequency; /*SPI clock frequency. - ** IMPORTANT: The frequency range supported by SPI module is - 1000(1KHz) to 3000000(3MHz) - */ - - UCHAR dataWidth; /*Data width in bits. The valid values are from 4 to 16.*/ - - CY_SPI_PROTOCOL protocol ; /*SPI Protocols to be used as defined in CY_SPI_PROTOCOL*/ - - BOOL isMsbFirst; /*false -> least significant bit is sent out first - true -> most significant bit is sent out first */ - - BOOL isMaster; /*false --> Slave mode selected: - true --> Master mode selected*/ - - BOOL isContinuousMode; /*true - Slave select line is not asserted i.e - de-asserted for every word. - false- Slave select line is always asserted*/ - - BOOL isSelectPrecede; /*Valid only in TI mode. - true - The start pulse precedes the first data - false - The start pulse is in sync with first data. */ - - BOOL isCpha; /*false - Clock phase is 0; true - Clock phase is 1. */ - - BOOL isCpol; /*false - Clock polarity is 0;true - Clock polarity is 1.*/ - -}CY_SPI_CONFIG,*PCY_SPI_CONFIG; - -/* Summary -Enumeration defines UART baud rates supported by UART module of USB Serial device. - -Description -The enumeration lists the various baud rates supported by the UART when it is in UART -vendor mode. - -See Also -* CY_UART_CONFIG -* CySetUartConfig -* CyGetUartConfig -*/ -typedef enum _CY_UART_BAUD_RATE -{ - CY_UART_BAUD_300 = 300, /* Baud rate of 300. */ - CY_UART_BAUD_600 = 600, /* Baud rate of 600. */ - CY_UART_BAUD_1200 = 1200, /* Baud rate of 1200. */ - CY_UART_BAUD_2400 = 2400, /* Baud rate of 2400. */ - CY_UART_BAUD_4800 = 4800, /* Baud rate of 4800. */ - CY_UART_BAUD_9600 = 9600, /* Baud rate of 9600. */ - CY_UART_BAUD_14400 = 14400, /* Baud rate of 14400. */ - CY_UART_BAUD_19200 = 19200, /* Baud rate of 19200. */ - CY_UART_BAUD_38400 = 38400, /* Baud rate of 38400. */ - CY_UART_BAUD_56000 = 56000, /* Baud rate of 56000. */ - CY_UART_BAUD_57600 = 57600, /* Baud rate of 57600. */ - CY_UART_BAUD_115200 = 115200, /* Baud rate of 115200. */ - CY_UART_BAUD_230400 = 230400, /* Baud rate of 230400. */ - CY_UART_BAUD_460800 = 460800, /* Baud rate of 460800. */ - CY_UART_BAUD_921600 = 921600, /* Baud rate of 921600. */ - CY_UART_BAUD_1000000 = 1000000, /* Baud rate of 1000000. */ - CY_UART_BAUD_3000000 = 3000000, /* Baud rate of 3000000. */ - -}CY_UART_BAUD_RATE; - -/* -Summary -Enumeration defines the different parity modes supported by UART module of USB Serial device. - -Description -This enumeration defines the different parity modes of USB Serial UART module. -It supports odd, even, mark and space parity modes. - -See Also -* CY_UART_CONFIG -* CySetUartConfig -* CyGetUartConfig -*/ -typedef enum _CY_UART_PARITY_MODE { - - CY_DATA_PARITY_DISABLE = 0, /*Data parity disabled*/ - CY_DATA_PARITY_ODD, /*Odd Parity*/ - CY_DATA_PARITY_EVEN, /*Even Parity*/ - CY_DATA_PARITY_MARK, /*Mark parity*/ - CY_DATA_PARITY_SPACE /*Space parity*/ - -} CY_UART_PARITY_MODE; - -/* -Summary -Enumeration defines the different stop bit values supported by UART module of USB Serial device. - -See Also -* CY_UART_CONFIG -* CySetUartConfig -* CyGetUartConfig -*/ -typedef enum _CY_UART_STOP_BIT { - - CY_UART_ONE_STOP_BIT = 1, /*One stop bit*/ - CY_UART_TWO_STOP_BIT /*Two stop bits*/ - -} CY_UART_STOP_BIT; - -/* -Summary -Enumeration defines flow control modes supported by UART module of USB Serial device. - -Description -The list provides the various flow control modes supported by USB Serial device. - -See Also -* CyUartSetHwFlowControl -* CyUartGetHwFlowControl -*/ -typedef enum _CY_FLOW_CONTROL_MODES { - - CY_UART_FLOW_CONTROL_DISABLE = 0, /*Disable Flow control*/ - CY_UART_FLOW_CONTROL_DSR, /*Enable DSR mode of flow control*/ - CY_UART_FLOW_CONTROL_RTS_CTS, /*Enable RTS CTS mode of flow control*/ - CY_UART_FLOW_CONTROL_ALL /*Enable RTS CTS and DSR flow control */ - -} CY_FLOW_CONTROL_MODES; - -/* -Summary -Structure holds configuration of UART module of USB Serial device. - -Description -This structure defines parameters used for configuring the UART module. -CySetUartConfig and CyGetUartConfig APIs are used to configure and retrieve -the UART configuration information. - -See Also -* CySetUartConfig -* CyGetUartConfig -*/ -typedef struct _CY_UART_CONFIG { - - CY_UART_BAUD_RATE baudRate; /*Baud rate as defined in CY_UART_BAUD_RATE*/ - UINT8 dataWidth; /*Data width: valid values 7 or 8*/ - CY_UART_STOP_BIT stopBits; /*Number of stop bits to be used 1 or 2*/ - CY_UART_PARITY_MODE parityMode; /*UART parity mode as defined in CY_UART_PARITY_MODE*/ - BOOL isDropOnRxErrors; /*Whether to ignore framing as well as parity errors and receive data */ - -} CY_UART_CONFIG,*PCY_UART_CONFIG; - -/* -Summary -Enumeration defining UART/SPI transfer error or status bit maps. - -Description -Enumeration lists the bit maps that are used to report error or status during -UART/SPI transfer. - -See Also -* CySetEventNotification -*/ -typedef enum _CY_CALLBACK_EVENTS { - - CY_UART_CTS_BIT = 0x01, /*CTS pin notification bit*/ - CY_UART_DSR_BIT = 0x02, /*State of transmission carrier. This signal - corresponds to V.24 signal 106 and RS-232 signal DSR.*/ - CY_UART_BREAK_BIT = 0x04, /*State of break detection mechanism of the device */ - CY_UART_RING_SIGNAL_BIT = 0x08, /*State of ring signal detection of the device*/ - CY_UART_FRAME_ERROR_BIT = 0x10, /*A framing error has occurred*/ - CY_UART_PARITY_ERROR_BIT = 0x20, /*A parity error has occured*/ - CY_UART_DATA_OVERRUN_BIT = 0x40, /*Received data has been discarded due to overrun in - the device*/ - CY_UART_DCD_BIT = 0x100, /*State of receiver carrier detection mechanism of - device. This signal corresponds to V.24 signal 109 - and RS-232 signal DCD*/ - CY_SPI_TX_UNDERFLOW_BIT = 0x200, /*Notification sent when SPI fifo is empty*/ - CY_SPI_BUS_ERROR_BIT = 0x400, /*Spi bus error has been detected*/ - CY_ERROR_EVENT_FAILED_BIT = 0x800 /*Event thread failed*/ - -} CY_CALLBACK_EVENTS; - -/*************************************************************************************/ -/*********************USB Initialization APIs************************************/ -/*************************************************************************************/ - -/*@@USB Initialization API -This section has all the APIs that handle device initialization and -fetching information about the device connected. -*/ - -/* - Summary - This API is used to initialize the library. - - Description - The API is used to initialize the underlying libusb library and - is expected to be called when the application is being started. - - Note: The API is used only in Linux and Mac OS. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_DRIVER_INIT_FAILED on failure - (Failure could be because of not calling CyLibraryExit previously) - - See Also - * CyOpen - * CyLibraryExit -*/ -CYWINEXPORT CY_RETURN_STATUS LINUXCALLCONVEN CyLibraryInit (); - -/* - Summary - This API is used to free the library. - - Description - The API is used to free the library and should be called - when exiting the application. - - Note: This API is used only in Linux and Mac library. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_REQUEST_FAILED on failure - - See Also - * CyOpen - * CyClose - * CyLibraryInit -*/ -CYWINEXPORT CY_RETURN_STATUS LINUXCALLCONVEN CyLibraryExit (); - -/* - Summary - This API retrieves number of USB devices connected to the host. - - Description - This API retrieves the number of devices connected to the host. - In Windows family of operating systems the API retrieves only the number of devices that are attached - to CyUSB3.SYS driver. For other operating systems, it retrieves the total number of USB devices present - on the bus. It includes both USB Serial device as well as other devices. - - Note: In case of Linux and Mac apart from providing number of devices connected, it builds the - device list which is used for opening the device and obtaining device handle. Thus the API should be - called during device discovery in the application. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_DEVICE_NOT_FOUND if there are no devices attached. - * CY_ERROR_REQUEST_FAILED if library was not initialized. - - See Also - * CyGetDeviceInfo - * CyGetDeviceInfoVidPid - * CyOpen - * CyClose -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetListofDevices ( - UINT8* numDevices /*Number of Devices connected*/ - ); - -/* - Summary - This API retrieves the device information of a USB device. - - Description - This API retrieves information about a device connected to host. In order to - get the device information on particular device user needs to provide the device number. - To identify the device of interest, the application needs to loop through all devices connected - and obtain the information. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_REQUEST_FAILED if library is not initialized (Only for Linux and Mac). - * CY_ERROR_INVALID_PARAMETER if the input parameters are invalid. - * CY_ERROR_DEVICE_INFO_FETCH_FAILED if failed to fetch device information. - * CY_ERROR_ACCESS_DENIED if access is denied by operating system. - * CY_ERROR_DEVICE_NOT_FOUND if specified device number is invalid. - - See Also - * CY_DEVICE_INFO - * CY_DEVICE_TYPE - * CY_DEVICE_CLASS - * CyGetListofDevices - * CyGetDeviceInfoVidPid - * CyOpen - * CyClose -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetDeviceInfo( - UINT8 deviceNumber, /*Device number of the device of interest*/ - CY_DEVICE_INFO *deviceInfo /*Info of device returned*/ - ); - -/* - Summary - This API is used to retrieve the information of all devices with specified Vendor ID and Product ID. - - Description - For a given VID and PID, the API returns deviceIdList and deviceInfoList. - The deviceIdList contains the device numbers of all the devices with specified VID and PID. - Using deviceInfoList application can identify the device of interest. - Information that is provided includes interface number, string descriptor, deviceType and deviceClass. - - - Return Value - * CY_SUCCESS on success else error codes as defined in the enumeration CY_RETURN_STATUS. - * CY_ERROR_REQUEST_FAILED on if library is not initialized (Only for Linux and Mac) - * CY_ERROR_INVALID_PARAMETER if the input parameters are invalid. - * CY_ERROR_DEVICE_INFO_FETCH_FAILED if failed to fetch device information. - * CY_ERROR_ACCESS_DENIED if access is denied by operating system. - * CY_ERROR_DEVICE_NOT_FOUND if specified device number is invalid. - - See Also - * CY_DEVICE_INFO - * CY_DEVICE_CLASS - * CY_DEVICE_TYPE - * CyGetListofDevices - * CyGetDeviceInfo - * CyOpen - * CyClose -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetDeviceInfoVidPid ( - CY_VID_PID vidPid, /*VID and PID of device of interest*/ - UINT8 *deviceIdList, /*Array of device ID's returned*/ - CY_DEVICE_INFO *deviceInfoList, /*Array of pointers to device info list*/ - UINT8 *deviceCount, /*Count of devices with specified VID PID*/ - UINT8 infoListLength /*Total length of the deviceInfoList allocated - (Size of deviceInfoList array)*/ - ); - -/* - Summary - This API is used to open the USB Serial device. - - Description - This API is used to open USB Serial device based on the device number. - - Note: The argument interfaceNum is used on Linux and Mac OS while obtaining handle for specific - interface. In Windows family of operating systems, this argument should be set to zero. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_REQUEST_FAILED on if library is not initialized (Only for Linux and Mac) - * CY_ERROR_INVALID_PARAMETER if the input parameters are invalid. - * CY_ERROR_DRIVER_OPEN_FAILED if open was unsuccessful. - * CY_ERROR_ACCESS_DENIED if access is denied by operating system. - * CY_ERROR_ALLOCATION_FAILED if memory allocation was failed. - * CY_ERROR_DEVICE_NOT_FOUND if specified device number is invalid. - - See Also - * CyGetListofDevices - * CyGetDeviceInfoVidPid - * CyGetDeviceInfo - * CyClose -*/ -CYWINEXPORT CY_RETURN_STATUS CyOpen ( - UINT8 deviceNumber, /*Device number of device that needs to be opened*/ - UINT8 interfaceNum, /*Interface Number*/ - CY_HANDLE *handle /*Handle returned by the API*/ - ); - -/* - Summary - This API closes the specified device handle and releases all resources associated with it. - - Description - This API closes the device handle and releases all the resources allocated internally in the - library. This API should be invoked using a valid device handle and upon successful return - of CyOpen. - - Return Value - * CY_SUCCESS on success. - * CY_ERROR_INVALID_HANDLE if handle is invalid in case of Linux/Mac. - * CY_ERROR_INVALID_PARAMETER if handle is invalid in case of Windows. - * CY_ERROR_REQUEST_FAILED on error in case of library being not initialized (Only for Linux and Mac). - - See Also - * CyOpen -*/ -CYWINEXPORT CY_RETURN_STATUS CyClose ( - CY_HANDLE handle /*Handle of the device that needs to be closed*/ - ); - -/* - Summary - This API is used to power cycle the host port. - - Description - This API will power cycle the upstream port. It will reenumerate the device after the power cycle. - - Note: This API is not supported on Linux and Mac - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid in case of Linux/Mac. - * CY_ERROR_INVALID_PARAMETER if handle is invalid in case of Windows. - * CY_ERROR_REQUEST_FAILED on error if request was failed by driver. - - See Also - * CyResetDevice -*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyCyclePort ( - CY_HANDLE handle /*Valid device handle */ - ); - -/*************************************************************************************/ -/********************************Common APIs*********************************************/ -/*************************************************************************************/ - -/*@@Common APIs - - These APIs provide an interface for accessing GPIO pins, error status notification on UART/SPI, - getting library and firmware version and signature. -*/ - -/* - Summary - This API sets the value of a GPIO. - - Description - This API is used to set the value of a GPIO. It can only set the value of a - GPIO that is configured as an output. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED on error when request is failed by USB Serial device. - - See Also - * CyGetGpioValue -*/ -CYWINEXPORT CY_RETURN_STATUS CySetGpioValue ( - CY_HANDLE handle, /*Valid device handle*/ - UINT8 gpioNumber, /*GPIO number*/ - UINT8 value /*Value that needs to be set*/ - ); - -/* - Summary - This API retrieves the value of a GPIO. - - Description - This API retrieves the value of a GPIO. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range and - also when handle is invalid in case of Windows. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device. - - See Also - * CySetGpioValue -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetGpioValue ( - CY_HANDLE handle, /*Valid device handle*/ - UINT8 gpioNumber, /*GPIO number*/ - UINT8 *value /*Current state of the GPIO*/ - ); - - -/* - Summary - This API is used to register a callback for error/event notifications - during UART/SPI data transfers. - - Description - The API is used to register a callback for error/event notifications while - doing data transfer on UART or SPI. A callback will be issued based on the - error/events sent by the device. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_STATUS_MONITOR_EXIST if notification callback is already registered. - - See Also - * CY_CALLBACK_EVENTS - * CY_EVENT_NOTIFICATION_CB_FN - * CyAbortEventNotification -*/ -CYWINEXPORT CY_RETURN_STATUS CySetEventNotification( - CY_HANDLE handle, /*Valid device handle*/ - CY_EVENT_NOTIFICATION_CB_FN notificationCbFn /*Callback function pointer*/ - ); - -/* - Summary - The API is used to unregister the event callback. - - Description - The API is used to unregister the event callback. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_REQUEST_FAILED if API is called before registering callback. - - See Also - * CySetEventNotification -*/ -CYWINEXPORT CY_RETURN_STATUS CyAbortEventNotification( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API retrieves the version of USB Serial library. - - Description - This API retrieves the version of USB Serial library. - - Return Value - * CY_SUCCESS - - See Also - * CyGetFirmwareVersion -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetLibraryVersion ( - CY_HANDLE handle, /*Valid device handle*/ - PCY_LIBRARY_VERSION version /*Library version of the current library*/ - ); - -/* - Summary - This API retrieves the firmware version of the USB Serial device. - - Description - This API retrieves the firmware version of the USB Serial device. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device. - - See Also - * CyGetLibraryVersion -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetFirmwareVersion ( - CY_HANDLE handle, /*Valid device handle*/ - PCY_FIRMWARE_VERSION firmwareVersion /*Firmware version.*/ - ); - -/* - Summary - This API resets the device by sending a vendor request. - - Description - The API will reset the device by sending a vendor request to the firmware. The device - will be re-enumerated. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device. - - See Also - * CyCyclePort -*/ -CYWINEXPORT CY_RETURN_STATUS CyResetDevice ( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - The API writes to the user flash area on the USB Serial device. - - Description - The API programs user flash area. The total space available is 512 bytes. - The flash area address offset is from 0x0000 to 0x00200 and should be written - page wise (page size is 128 bytes). - On return, transferCount parameter in CY_DATA_BUFFER will specify the number of bytes actually - programmed. - - Note: Length and page address needs to be 128 bytes aligned. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device. - - See Also - * CyReadUserFlash -*/ -CYWINEXPORT CY_RETURN_STATUS CyProgUserFlash ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER *progBuffer, /*Data buffer containing buffer address, length to write*/ - UINT32 flashAddress, /*Address to the data is written*/ - UINT32 timeout /*Timeout value of the API*/ - ); - -/* - Summary - The API reads from the flash address specified. - - Description - Read from user flash area.The total space available is 512 bytes. - The flash area address offset is from 0x0000 to 0x00200 and should be read - page wise (page size is 128 bytes). - On return transferCount parameter in CY_DATA_BUFFER will specify the number of bytes actually - read. - - Note: Length and page address needs to be 128 bytes aligned. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device. - - See Also - * CyProgUserFlash -*/ -CYWINEXPORT CY_RETURN_STATUS CyReadUserFlash ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER *readBuffer, /*data buffer containing buffer address, length to read*/ - UINT32 flashAddress, /*Address from which the data is read*/ - UINT32 timeout /*Timeout value of the API*/ - ); - -/* - Summary - This API retrieves the signature of the device firmware. - - Description - This API retrieves the signature of the device firmware. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device. - */ -CYWINEXPORT CY_RETURN_STATUS CyGetSignature ( - CY_HANDLE handle, /*Valid device handle*/ - UCHAR *pSignature /*Signature returned*/ - ); - -/****************************************************************************************/ -/********************************UART API's**********************************************/ -/****************************************************************************************/ - -/*@@UART API - APIs used to communicate with UART module of the USB Serial device. - These APIs provide support for configuration, data transfer and flow control. -*/ - -/* - Summary - This API retrieves the UART configuration from the USB Serial device. - - Description - This API retrieves the UART configuration from the USB Serial device. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not UART. - - See Also - * CY_UART_CONFIG - * CySetUartConfig -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetUartConfig ( - CY_HANDLE handle, /*Valid device handle*/ - CY_UART_CONFIG *uartConfig /*UART configuration value read back*/ - ); - -/* - Summary - This API sets the UART configuration of USB Serial device. - - Description - This API sets the UART configuration of USB Serial device. - - Note: Using this API during an active transaction of UART may result in data loss. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not UART. - - See Also - * CY_UART_CONFIG - * CyGetUartConfig -*/ -CYWINEXPORT CY_RETURN_STATUS CySetUartConfig ( - CY_HANDLE handle, /*Valid device handle*/ - CY_UART_CONFIG *uartConfig /*UART configuration value */ - ); - -/* - Summary - This API reads data from UART device. - - Description - This API is used to read data from UART device. User needs to initialize the readBuffer with buffer pointer, - number of bytes to read before invoking this API. - On return the transferCount parameter in CY_DATA_BUFFER will contain the number of bytes read. - - Return Value - * CY_SUCCESS on success. - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if input parameters were invalid. - * CY_ERROR_REQUEST_FAILED if the device type is not UART. - * CY_ERROR_IO_TIMEOUT if transfer was timed out. - * CY_ERROR_PIPE_HALTED if pipe was stalled during data transfer. - * CY_ERROR_DEVICE_NOT_FOUND if device was disconnected. - * CY_ERROR_BUFFER_OVERFLOW if data received from USB Serial device is more than requested. - * CY_ERROR_ALLOCATION_FAILED if transaction transmit buffer allocation was failed (Only in Windows). - - See Also - * CY_DATA_BUFFER - * CyUartWrite -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartRead ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER* readBuffer, /*Read buffer details*/ - UINT32 timeout /*API timeout value*/ - ); - -/* - Summary - This API writes the data to UART device. - - Description - This API writes the data to UART device. User need to initialize the - writeBuffer with buffer pointer, number of bytes to write before invoking the API. - On return the transferCount parameter in CY_DATA_BUFFER will contain the number - of bytes written. - - Return Value - * CY_SUCCESS on success. - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if input parameters were invalid. - * CY_ERROR_REQUEST_FAILED if the device type is not UART. - * CY_ERROR_IO_TIMEOUT if transfer was timed out. - * CY_ERROR_PIPE_HALTED if pipe was stalled during data transfer. - * CY_ERROR_DEVICE_NOT_FOUND if device was disconnected. - * CY_ERROR_BUFFER_OVERFLOW if data received from USB Serial device is more than requested. - * CY_ERROR_ALLOCATION_FAILED if transaction transmit buffer allocation was failed (Only in Windows). - - See Also - * CY_DATA_BUFFER - * CyUartRead -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartWrite ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER* writeBuffer, /*Write buffer details*/ - UINT32 timeout /*API timeout value*/ - ); - -/* - Summary - This API enables hardware flow control. - - Description - This API enables hardware flow control. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE on error if handle is invalid in case of Linux/Mac. - * CY_ERROR_INVALID_PARAMETER on error if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT on error if request was timed out. - * CY_ERROR_REQUEST_FAILED on error if request was failed by device or if device type - is not UART. - - See Also - * CyUartGetHwFlowControl -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartSetHwFlowControl( - CY_HANDLE handle, /*Valid device handle*/ - CY_FLOW_CONTROL_MODES mode /*Flow control mode*/ - ); - -/* - Summary - This API retrieves the current hardware flow control status. - - Description - This API retrieves the current hardware flow control status. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not UART. - - See Also - * CyUartSetHwFlowControl -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartGetHwFlowControl( - CY_HANDLE handle, /*Valid device handle*/ - CY_FLOW_CONTROL_MODES *mode /*Flow control mode*/ - ); - -/* - Summary - This API sets RTS signal in UART module. - - Description - This API is used to set the RTS pin to logical low.. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not UART. - - See Also - * CyUartClearRts - * CyUartSetDtr - * CyUartClearDtr -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartSetRts( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API can be used to clear RTS signal in UART module. - - Description - This API used clear the RTS. It sets the RTS pin to logical high. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not UART. - - See Also - * CyUartSetRts - * CyUartSetDtr - * CyUartClearDtr -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartClearRts( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API sets DTR signal in UART. - - Description - This API used set the DTR. It sets the DTR pin to logical low. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not UART. - - See Also - * CyUartClearRts - * CyUartSetRts - * CyUartClearDtr -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartSetDtr( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API can be used to clear DTR signal in UART. - - Description - This API can be used clear the DTR. It sets the DTR pin to logical high. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not UART. - - See Also - * CyUartSetRts - * CyUartSetDtr - * CyUartClearRts -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartClearDtr( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API can be used to set break timeout value . - - Description - This API can be used to set break timeout value . - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not UART. - - See Also - * CyUartSetFlowControl -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartSetBreak( - CY_HANDLE handle, /*Valid device handle*/ - UINT16 timeout /*Break timeout value in milliseconds */ - ); - -/***********************************************************************************************/ -/**********************************I2C API's****************************************************/ -/***********************************************************************************************/ - -/*@@I2C API - - These set of APIs provide an interface to configure I2C module and do - read/write on the I2C device connected to USB Serial device. -*/ - -/* - Summary - This API retrieves the configuration of I2C module of USB Serial device. - - Description - This API retrieves the configuration of I2C module of USB Serial device. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not I2C. - - See Also - * CY_I2C_CONFIG - * CySetI2cConfig -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetI2cConfig ( - CY_HANDLE handle, /*Valid device handle*/ - CY_I2C_CONFIG *i2cConfig /*I2C configuration value read back*/ - ); - -/* - Summary - This API configures the I2C module of USB Serial device. - - Description - This API configures the I2C module of USB Serial device. - - Note: Using this API during an active transaction of I2C may result in data loss. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not I2C. - - See Also - * CY_I2C_CONFIG - * CySetI2cConfig -*/ -CYWINEXPORT CY_RETURN_STATUS CySetI2cConfig ( - CY_HANDLE handle, /*Valid device handle*/ - CY_I2C_CONFIG *i2cConfig /*I2C configuration value*/ - ); - -/* - Summary - This API reads data from the USB Serial I2C module. - - Description - This API provides an interface to read data from the I2C device - connected to USB Serial. - - The readBuffer parameter needs to be initialized with buffer pointer, number of bytes to be read - before invoking the API. On return, the transferCount field will contain the number of bytes - read back from device. - CY_I2C_DATA_CONFIG structure specifies parameters such as setting stop bit, NAK and - slave address of the I2C device. - - Return Value - * CY_SUCCESS on success. - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if input parameters were invalid. - * CY_ERROR_REQUEST_FAILED if the device type is not I2C - * CY_ERROR_IO_TIMEOUT if transfer was timed out. - * CY_ERROR_DEVICE_NOT_FOUND if device was disconnected. - * CY_ERROR_BUFFER_OVERFLOW if data received from USB Serial device is more than requested. - * CY_ERROR_ALLOCATION_FAILED if transaction transmit buffer allocation was failed (Only in Windows). - * CY_ERROR_I2C_DEVICE_BUSY if I2C device was busy processing previous request. - * CY_ERROR_I2C_NAK_ERROR if request was nacked by I2C device. - * CY_ERROR_I2C_ARBITRATION_ERROR if a I2C bus arbitration error occured. - * CY_ERROR_I2C_BUS_ERROR if there was any I2C bus error while an on going transaction. - * CY_ERROR_I2C_STOP_BIT_SET if stop bit was set by I2C master. - - See Also - * CY_DATA_BUFFER - * CY_DATA_CONFIG - * CyI2cCWrite -*/ -CYWINEXPORT CY_RETURN_STATUS CyI2cRead ( - CY_HANDLE handle, /*Valid device handle*/ - CY_I2C_DATA_CONFIG *dataConfig, /*I2C data config*/ - CY_DATA_BUFFER *readBuffer, /*Read buffer details*/ - UINT32 timeout /*API timeout value*/ - ); - -/* - Summary - This API writes data to USB Serial I2C module . - - Description - This API provides an interface to write data to the I2C device - connected to USB Serial. - The writeBuffer parameter needs to be initialized with buffer pointer, number of bytes to be written - before invoking the API. On return, transferCount field contains number of bytes actually written to the device. - CY_I2C_DATA_CONFIG structure specifies parameter such as setting stop bit, Nak and slave address - of the I2C device being communicated when USB Serial is master. - - Return Value - * CY_SUCCESS on success. - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if input parameters were invalid. - * CY_ERROR_REQUEST_FAILED if the device type is not I2C - * CY_ERROR_IO_TIMEOUT if transfer was timed out. - * CY_ERROR_PIPE_HALTED if pipe was stalled during data transfer. - * CY_ERROR_DEVICE_NOT_FOUND if device was disconnected. - * CY_ERROR_BUFFER_OVERFLOW if data received from USB Serial device is more than requested. - * CY_ERROR_ALLOCATION_FAILED if transaction transmit buffer allocation was failed (Only in Windows). - * CY_ERROR_I2C_DEVICE_BUSY if I2C device was busy processing previous request. - * CY_ERROR_I2C_NAK_ERROR if request was nacked by I2C device. - * CY_ERROR_I2C_ARBITRATION_ERROR if a I2C bus arbitration error occured. - * CY_ERROR_I2C_BUS_ERROR if there was any I2C bus error while an on going transaction. - * CY_ERROR_I2C_STOP_BIT_SET if stop bit was set by I2C master. - - See Also - * CY_DATA_BUFFER - * CY_DATA_CONFIG - * CyI2cRead -*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyI2cWrite ( - CY_HANDLE handle, /*Valid device handle*/ - CY_I2C_DATA_CONFIG *dataConfig, /*I2C Slave address */ - CY_DATA_BUFFER *writeBuffer, /*Write buffer details*/ - UINT32 timeout /*API timeout value*/ - ); - -/* - Summary - This API resets the I2C module in USB Serial device. - - Description - This API resets the I2C module whenever there is an error in data transaction. - - If resetMode = 0 the I2C read module will be reset. - If resetMode = 1 the I2C write module will be reset. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not I2C. - - See Also - * CyI2CRead - * CyI2CWrite -*/ -CYWINEXPORT CY_RETURN_STATUS CyI2cReset( - CY_HANDLE handle, /*Valid device handle*/ - BOOL resetMode /*Reset mode*/ - ); - -/***********************************************************************************************/ -/**********************************SPI APIs****************************************************/ -/***********************************************************************************************/ - -/*@@SPI API - These set of APIs provide an interface to configure SPI module and perform - read/write operations with the SPI device connected to USB Serial device. -*/ - -/* - Summary - This API retrieves the configuration of SPI module of USB Serial device. - - Description - This API retrieves the configuration of SPI module of USB Serial device. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not SPI. - - See Also - * CY_SPI_CONFIG - * CySetSpiConfig -*/ -CYWINEXPORT CY_RETURN_STATUS CyGetSpiConfig ( - CY_HANDLE handle, /*Valid device handle*/ - CY_SPI_CONFIG *spiConfig /*SPI configuration structure value read back*/ - ); - -/* - Summary - This API sets the configuration of the SPI module on USB Serial device. - - Description; - This API sets the configuration of the SPI module in USB Serial device. - - NOTE: Using this API during an active transaction of SPI may result in data loss. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if the request is timed out. - * CY_ERROR_REQUEST_FAILED when request is failed by USB Serial device or when device type is - not SPI. - - See Also - * CY_SPI_CONFIG - * CyGetSpiConfig -*/ -CYWINEXPORT CY_RETURN_STATUS CySetSpiConfig ( - CY_HANDLE handle, /*Valid device handle*/ - CY_SPI_CONFIG *spiConfig /*SPI configuration structure value*/ - ); - -/* - Summary - This API reads and writes data to SPI device connected to USB Serial device. - - Description - This API provides an interface to do data transfer with the SPI slave/master - connected to USB Serial device. - To perform read only operation, pass NULL as argument for writeBuffer and to perform - write only operation pass NULL as an argument for readBuffer. - On return, the transferCount field will contain the number of bytes read and/or written. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid in case of Linux/Mac. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_REQUEST_FAILED if the device type is not SPI or when libusb reported - unknown error in case of Linux/Mac. - * CY_ERROR_IO_TIMEOUT if transfer was timed out. - * CY_ERROR_PIPE_HALTED if pipe was stalled during data transfer. - * CY_ERROR_DEVICE_NOT_FOUND if device was disconnected. - * CY_ERROR_BUFFER_OVERFLOW if data received from USB Serial device is more than requested. - - See Also - * CY_DATA_BUFFER - * CyGetSpiConfig - * CySetSpiConfig -*/ -CYWINEXPORT CY_RETURN_STATUS CySpiReadWrite ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER* readBuffer, /*Read data buffer*/ - CY_DATA_BUFFER* writeBuffer, /*Write data buffer*/ - UINT32 timeout /*Time out value of the API*/ - ); - -/**************************************************************************************/ -/*****************************************JTAG APIs***********************************/ -/**************************************************************************************/ - -/*@@JTAG API - These set of APIs can be used to enable or disable JTAG module on the USB Serial device. - Once the JTAG is enabled, read and write operations can be performed. - When JTAG is enabled other modules in the USB Serial device cannot be used. -*/ - -/* - Summary - This API enables JTAG module. - - Description - This API enables JTAG module in USB Serial device and the function disables all other functionality - till CyJtagDisable is invoked. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid in case of Linux/Mac. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if request was timed out. - * CY_ERROR_REQUEST_FAILED if request was failed by device or if device type - is not JTAG. - - See Also - * CyJtagDisable -*/ -CYWINEXPORT CY_RETURN_STATUS CyJtagEnable ( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API disables JTAG module. - - Description - This API disables Jtag interface in USB Serial device. This API must be invoked before exiting the - application if CyJtagEnable was previously invoked. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid in case of Linux/Mac. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_IO_TIMEOUT if request was timed out. - * CY_ERROR_REQUEST_FAILED if request was failed by device or if device type - is not JTAG. - - See Also - * CyJtagEnable -*/ -CYWINEXPORT CY_RETURN_STATUS CyJtagDisable ( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API can be used to write data to JTAG module. - - Description - This API provides an interface to write data to JTAG device connected to USB Serial device. - The writeBuffer need to be initialized with buffer and length of data to be written before invoking - the API. Upon return, transferCount field in CY_DATA_BUFFER is updated with actual number of bytes written. - - Note: CyJtagEnable must be called before invoking this API. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid in case of Linux/Mac. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_REQUEST_FAILED if device type is not JTAG or when encountered - unknown libusb errors in Linux/Mac. - * CY_ERROR_PIPE_HALTED if there was any pipe error during transaction. - * CY_ERROR_IO_TIMEOUT if transfer was timed out. - * CY_ERROR_DEVICE_NOT_FOUND if device was disconnected. - - See Also - * CY_DATA_BUFFER - * CyJtagRead - * CyJtagEnable -*/ -CYWINEXPORT CY_RETURN_STATUS CyJtagWrite ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER *writeBuffer, /*Write buffer details*/ - UINT32 timeout /*API timeout value*/ - ); - -/* - Summary - This API reads data from JTAG device. - - Description - This API provides an interface to read data from JTAG device. - The readBuffer need to be initialized with buffer and length of data to be written before invoking - the API. Upon return, transferCount field in CY_DATA_BUFFER structure - is updated with actual number of bytes read. - - Note: CyJtagEnable must be called before invoking this API. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle is invalid in case of Linux/Mac. - * CY_ERROR_INVALID_PARAMETER if specified parameters are invalid or out of range. - * CY_ERROR_REQUEST_FAILED if device type is not JTAG or when encountered - unknown libusb errors in Linux/Mac. - * CY_ERROR_IO_TIMEOUT if transfer was timed out. - * CY_ERROR_DEVICE_NOT_FOUND if device was disconnected. - * CY_ERROR_BUFFER_OVERFLOW if data received from USB Serial device is more than requested. - - See Also - * CY_DATA_BUFFER - * CyJtagWrite - * CyJtagEnable -*/ -CYWINEXPORT CY_RETURN_STATUS CyJtagRead ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER *readBuffer, /*Read buffer parameters*/ - UINT32 timeout /*API timeout value*/ - ); - -/**************************************************************************************/ -/*****************************************PHDC APIs***********************************/ -/**************************************************************************************/ - -/*@@PHDC API - Set of PHDC class request APIs. The PHDC class requests include set, clear feature and - PHDC get status. -*/ - -/* - Summary - This API sends a PHDC clear feature command. - - Description - This API sends a PHDC clear feature command. - - Note: Meta data feature is not supported by USB Serial device. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle was invalid. - * CY_ERROR_IO_TIMEOUT if request timed out. - * CY_ERROR_REQUEST_FAILED if request was failed by device. - - See Also - * CyPhdcSetFeature - * CyPhdcGetStatus -*/ -CYWINEXPORT CY_RETURN_STATUS CyPhdcClrFeature ( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API sends a PHDC set feature command. - - Description - This API sends a PHDC set feature command. - - Note: Meta data feature is not supported by USB Serial device. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle was invalid. - * CY_ERROR_IO_TIMEOUT if request timed out. - * CY_ERROR_REQUEST_FAILED if request was failed by device. - - See Also - * CyPhdcClrFeature - * CyPhdcGetStatus -*/ -CYWINEXPORT CY_RETURN_STATUS CyPhdcSetFeature ( - CY_HANDLE handle /*Valid device handle*/ - ); - -/* - Summary - This API retrieves the endpoint status of PHDC transaction. - - Description - The API retrieves the status of PHDC transaction. It returns 2 bytes of data pending bit map - which is defined as per PHDC spec. - - Return Value - * CY_SUCCESS on success - * CY_ERROR_INVALID_HANDLE if handle was invalid. - * CY_ERROR_IO_TIMEOUT if request timed out. - * CY_ERROR_REQUEST_FAILED if request was failed by device. - - See Also - * CyPhdcClrFeature - * CyPhdcSetFeature -*/ -CYWINEXPORT CY_RETURN_STATUS CyPhdcGetStatus ( - CY_HANDLE handle, /*Valid device handle*/ - UINT16 *dataStatus /*Data pending status bit map*/ - ); - -#endif /*_INCLUDED_Cypress USB Serial_H_*/ diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9.tar.bz2 b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9.tar.bz2 deleted file mode 100644 index 0c5da3264c80e4cbeb3b4b2dfecbb4c9175a5927..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 421971 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

`qQRABpl;W6d8{s*~V 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 W{`H_g*s`hr_`8xR!i0fE@SeauVJZ>; diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/AUTHORS b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/AUTHORS deleted file mode 100644 index b43d995..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/AUTHORS +++ /dev/null @@ -1,45 +0,0 @@ -Copyright (C) 2007-2009 Daniel Drake -Copyright (c) 2001 Johannes Erdfelt -Copyright (C) 2008-2012 Nathan Hjelm -Copyright (C) 2009-2012 Pete Batard -Copyright (C) 2010 Michael Plante -Copyright (C) 2010-2012 Peter Stuge -Copyright (C) 2011-2012 Hans de Goede -Copyright (C) 2012 Martin Pieuchot - -Other contributors: -Alan Ott -Alan Stern -Alex Vatchenko -Artem Egorkine -Aurelien Jarno -Bastien Nocera -Brian Shirley -David Engraf -David Moore -Felipe Balbi -Graeme Gill -Hans de Goede -Hans Ulrich Niedermann -Hector Martin -Hoi-Ho Chan -James Hanko -Konrad Rzepecki -Ludovic Rousseau -Martin Koegler -Martin Pieuchot -Mike Frysinger -Mikhail Gusarov -Orin Eman -Pekka Nikander -Peter Stuge -Rob Walker -Sean McBride -Sebastian Pipping -Stephan Meyer -Thomas Röfer -Toby Peterson -Trygve Laugstøl -Vasily Khoruzhick -Vitali Lovich -Xiaofan Chen diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/COPYING b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/COPYING deleted file mode 100644 index 5ab7695..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/COPYING +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/ChangeLog b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/ChangeLog deleted file mode 100644 index 298a7b2..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/ChangeLog +++ /dev/null @@ -1,4377 +0,0 @@ -commit ab9cd5a7be637f7b793987971a706b1d11c27ded -Author: Peter Stuge -Date: Fri Apr 20 08:10:11 2012 +0200 - - libusb-1.0.9 - -commit 696400ad83531bcf944c71164a46f9ccb6a33df3 -Author: Peter Stuge -Date: Fri Apr 20 08:08:34 2012 +0200 - - AUTHORS: Update list of contributors - -commit 19f94537ea55586dd85f8d627fcfaa6173069ea1 -Author: Peter Stuge -Date: Fri Apr 20 06:41:34 2012 +0200 - - AUTHORS: Add Martin Pieuchot as copyright holder - -commit 1a1c633d7912a2565f6af0c9294e10a759d40e05 -Author: Peter Stuge -Date: Fri Apr 20 06:41:12 2012 +0200 - - AUTHORS: Add Hans de Goede as copyright holder - -commit 9477f793341d59cc861acb283e6cb03b5730ac91 -Author: Peter Stuge -Date: Fri Apr 20 06:40:45 2012 +0200 - - AUTHORS: Add Peter Stuge as copyright holder - -commit 4b0dfe9770356af3c51103a9b3d63c5f8cc63d8b -Author: Pete Batard -Date: Mon Apr 2 15:47:53 2012 +0100 - - AUTHORS: Update Pete Batard's copyright years and email address - - libusbx.git commit f98eaca0985364be00fcfde3fd3884075092a4e9 - - [stuge: Remove unrelated changes] - -commit 9f0ea78357b7b1654cb3e7de6ff57f5f378b68f1 -Author: Peter Stuge -Date: Fri Apr 20 08:35:04 2012 +0200 - - AUTHORS: Update Nathan Hjelm's copyright years - -commit 8d38506ebc9fb57a40113e5a7739572a42b826d8 -Author: Peter Stuge -Date: Fri Apr 20 06:36:08 2012 +0200 - - README: Add the BSDs, punctuation, mailinglist link, and remove Daniel - -commit 05cbe2de45806db309343cdf298d8569c55863e5 -Author: James Hanko -Date: Wed Oct 19 17:32:34 2011 -0700 - - Linux: Search for /dev/usbdev. USB device special files - - If neither the (now deprecated) usbfs filesystem nor udev is available - then libusb searches for device nodes also in /dev where they may be - created if the kernel was built with the option CONFIG_USB_DEVICE_CLASS. - This helps on embedded systems such as Android, and all mdev users. - - Fixes #119. - -commit a806d169e6b5f675289cb9307fcd6b908edd9219 -Author: Peter Stuge -Date: Fri Apr 20 04:32:47 2012 +0200 - - Add a timestamp in log messages - - Fixes #34. - -commit 03f4d40c748506c85f88427dd53afd5c663a2929 -Author: Peter Stuge -Date: Fri Apr 20 02:24:44 2012 +0200 - - Include library version in the very first libusb_init() debug message - -commit 84d5eafd1f24a1c6f77f0c2a2ad40e1fbfdea381 -Author: Martin Pieuchot -Date: Thu Apr 19 13:33:36 2012 +0200 - - OpenBSD: Provide libusb_get_device_speed() data - - Because the different speed values used by the libusb and OpenBSD's - usb_device_info structure are compatible, keep the code simple and - just copy the value returned by the USB_GET_DEVICEINFO ioctl() call. - - Fixes #45. - -commit c145ec09732fac2eef53accc07314040d22b64a5 -Author: Peter Stuge -Date: Fri Apr 20 00:11:01 2012 +0200 - - doc/Makefile.am: Remove username from SF web rsync upload command - - Commit c407a2d97b6f8715d3452257a0adac40a20178e6 did it for tarballs. - - libusbx.git commit ca159f15737e9097a4d031c9950f281c42af040a - -commit 6506013c6d4face34cfec79dd0584e9f528cbc6a -Author: Pete Batard -Date: Tue Apr 10 13:30:24 2012 +0100 - - Windows: Remove #define compile time options in the backend source code - - * The DYNAMIC_FDS, AUTO_CLAIM and FORCE_INSTANT_TIMEOUTS options - were introduced for development/testing and don't appear to be - used by the Windows backend users => remove them. - - libusbx.git commit 4cccbed825fe1dc138121640a6497d7d05aac159 - -commit e291e369b975692dfa1a0f029244af597fa61220 -Author: Pete Batard -Date: Tue Apr 10 13:05:37 2012 +0100 - - Windows: Warn on one libusb_get_device_list() memory allocation failure - - libusbx.git commit 24d595aa71e7fd0f14d40e933a33f852f7269c8b - -commit 2f40a03ea0552cd8b5ce3d7667b20dc04da061da -Author: Pete Batard -Date: Tue Apr 10 13:05:37 2012 +0100 - - Windows: Add textual error name to debug message on auto-release errors - - libusbx.git commit 24d595aa71e7fd0f14d40e933a33f852f7269c8b - -commit 3c7f85a49b42ac36c6d41294858518c554ac4694 -Author: Pete Batard -Date: Tue Apr 10 13:05:37 2012 +0100 - - Windows: Silence warning about unused function guid_to_string() - - Commit 6b1982b1bd321b55698ce537e64648e8aec85f6f removed the #ifdef - around guid_to_string() but this ended up causing a warning when - the function wasn't being called. Add it back with correct _MSC_VER. - - libusbx.git commit 24d595aa71e7fd0f14d40e933a33f852f7269c8b - - [stuge: Rewrite commit message for libusb.git] - -commit eb55963a6b33799ea76c34f538f21e86f235ea62 -Author: Pete Batard -Date: Tue Apr 10 13:05:37 2012 +0100 - - Windows: Base DUMMY_HANDLE on LONG_PTR instead of LONG - - libusbx.git commit 24d595aa71e7fd0f14d40e933a33f852f7269c8b - -commit d930865987de523061eca259a7fed11aea626831 -Author: Pete Batard -Date: Tue Apr 10 13:05:37 2012 +0100 - - Windows: Prefer calloc() over malloc() and cast all allocations - - This silences VS2010 intellisense warnings on memory allocation. - - libusbx.git commit 24d595aa71e7fd0f14d40e933a33f852f7269c8b - -commit df35117ce58b74fa530baaaccc30adaf432398ea -Author: Peter Stuge -Date: Thu Apr 19 22:55:44 2012 +0200 - - Add libusb_get_version() API function - - Let's see how this will be used. Fixes #53. - - libusbx.git commit 37dfd16c8c2f36c81c86de303072def0dc405e32 - - [stuge: Remove unrelated changes] - [stuge: Add struct libusb_version member rc for release candidate suffix] - [stuge: Add struct libusb_version member describe for git describe output] - -commit 29d5f63c5765f36ea65b55c4cd5f36e1f10a4dae -Author: Peter Stuge -Date: Thu Apr 19 22:25:07 2012 +0200 - - Windows: Rename VS2005 solution and add VS2010 project files - - libusbx.git commit fcad0941e52eb2fd6d57d3327f420db14dfabf0b - - [stuge: Remove xusb references] - [stuge: Add newlines at end of new files] - [stuge: Rename libusb_20??.sln to libusb_vs20??.sln] - -commit b217ec1f904c4382010a3a834a7c58d595b594cf -Author: Pete Batard -Date: Sat Mar 31 22:32:56 2012 +0100 - - libusb/Makefile.am: Fix missing DLL .def file from make dist - - libusbx.git commit 10dc1ea9a799b13b7423968130da812aa97289bf - - [stuge: Use EXTRA_DIST in libusb/Makefile.am instead] - -commit 54cb51d8417e0128eb9088bf628db138c9daa2a0 -Author: Pete Batard -Date: Sat Mar 31 22:14:47 2012 +0100 - - Makefile.am: Fix msvc dir not being included in make dist - - libusbx.git commit a8a80b60a14e3a8269e42dedf34fda66da8e0e50 - -commit 38d5ba472c6cb728ec818a0c8d964b632c8a7992 -Author: Hans de Goede -Date: Fri Mar 30 13:40:32 2012 +0100 - - Linux: Don't spam the console with 'device unconfigured' errors - - libusbx.git commit 3c968be61befc47d33562843e5479ff67303b0c4 - -commit 93f14087b2e79d71ba1e53c0b9c7da655dd1258e -Author: Nathan Hjelm -Date: Thu Apr 19 05:52:58 2012 -0600 - - Darwin: Silence warning: cast from pointer to integer of different size - - As per http://marc.info/?m=133483651109899 - - Reported-by: Xiaofan Chen - -commit 0efc2086646200d8dee86cbbb1e98136383a05c3 -Author: Pete Batard -Date: Thu Mar 29 23:21:25 2012 +0100 - - .gitattributes: Add export-ignore for .gitattributs and .gitignore - - This keeps the git files out of archives created by gitweb. - - libusbx.git commit 2250152b251243f75c951533ae7b1139a785cfe6 - - [stuge: Removed unrelated whitespace changes] - -commit a7ef55c02f0116b94cb75831e5d90ad258c662f8 -Author: Pete Batard -Date: Wed Mar 28 01:02:02 2012 +0100 - - Windows: fix Clang warnings about unused assignations - - libusbx.git commit c0e7b289fdb35687b90263b14426319d2b96b132 - -commit ac8eed67e1595ee5a069623e48362d8a85dcb252 -Author: Pete Batard -Date: Mon Mar 26 23:34:25 2012 +0100 - - configure.ac: LT_LANG([Windows Resource]) makes windres check redundant - - libusbx.git commit 4f9fd6a29a712b0e3312983e9ff153e6d7ed0822 - -commit 89ce6f7d05dc8ff4a441a01b192d2e20857f6c48 -Author: Pete Batard -Date: Tue Mar 27 00:03:07 2012 +0100 - - Windows: Bring .vcproj x86_64 output directories in line with x86_32 - - libusbx.git commit abdb4437ea1897226076fa706651e350dba1cfd5 - -commit 77743c6f5b3cfa2d06dcb32204bc65d8bd4fec80 -Author: Hans de Goede -Date: Fri Mar 9 11:31:11 2012 +0100 - - Linux: Fix a comment in handle_iso_completion() - - Fix the comment at the end of handle_iso_completion, we don't stop on - urbs / isoc packets with less data then requested, which is a good - thing since it is a normal condition for isoc transfers. - - Signed-off-by: Hans de Goede - -commit 5b87c2c7475a8d68270e19336afec0c5a08579ca -Author: Hans de Goede -Date: Fri Mar 9 11:31:10 2012 +0100 - - Linux: Remove bogus status handling from handle_iso_completion() - - Remove a useless check+set of status because: - 1. The check is always true; and - 2. The new value is never used - - Signed-off-by: Hans de Goede - -commit e23d8f67eab947e5d41216e0139f0a50d1342ef8 -Author: Hans de Goede -Date: Fri Mar 9 11:31:09 2012 +0100 - - Linux: Translate isoc packet status codes to LIBUSB_TRANSFER_ codes - - During testing of my usbredir code I hit a scenario where my libusb - app was seeing EXDEV as status in the transfer's iso_packet_desc. - - This happened because we didn't translate linux negative errno errors - in each isoc packet's status to LIBUSB_TRANSFER_ status codes! This - patch adds these translations. - - Signed-off-by: Hans de Goede - -commit 7199bc2c9c351b553b6175a588237ee793719281 -Author: Hans de Goede -Date: Fri Mar 9 11:31:08 2012 +0100 - - Linux: Fix URB return code handling - - During testing of my usbredir code I hit a case where EOVERFLOW was not - handled in handle_control_completion(). Instead of just fixing this one - case I've audited (and fixed where necessary) all handle_foo_completion() - functions to know about all errors documented in - linux/Documentation/usb/error-codes.txt. - - Note that for handle_iso_completion() this patch actually removes the - handling of some codes, since these can never occur on an iso urb (they - can only occur on the iso packets included in the urb, see the next patch - in this series). Also, in case an unknown status is encountered on an iso - urb this patch sets the urb's status to ERROR rather then leaving it at - completed. - - Signed-off-by: Hans de Goede - -commit 98bc7b8d125c2756deadfc889dcefd4e6f2fcd02 -Author: Hans de Goede -Date: Fri Mar 9 11:31:07 2012 +0100 - - Don't print an error when libusb_cancel_transfer() fails with NOT_FOUND - - As stated in the documentation for libusb_cancel_transfer(), - LIBUSB_ERROR_NOT_FOUND is an expected return value for - libusb_cancel_transfer() under certain circumstances, so - printing an error every time this happens is undesirable. - - Even more so because under Linux IOCTL_USBFS_DISCARDURB sets errno - to EINVAL when the kernel can't not find the urb in the kernel's - urbs-in-flight list, which means that the urb has already completed - at the host controller level but it has not necessarily been reaped - yet. IOW under Linux libusb_cancel_transfer() may yield a result of - LIBUSB_ERROR_NOT_FOUND *before* the transfer's callback has been - called! In conclusion there is no way for applications to avoid - calling libusb_cancel_transfer() on already completed transfers, - and these errors can and do happen frequently for some USB traffic. - - Signed-off-by: Hans de Goede - -commit 4db8275da59996eb1c22d2e9e9c527fa58b288ad -Author: Hans de Goede -Date: Fri Mar 9 11:31:06 2012 +0100 - - Linux: Fix cancel_transfer return value when cancelling a multi-urb transfer - - If we fail to cancel the last urb of a multi-urb transfer because it - has already completed (errno == EINVAL on DISCARD_URB), then the entire - transfer has already completed, so returning NOT_FOUND is consistent - with what the documentation for libusb_cancel_transfer() says. - - But if we've successfully cancelled the last urb, and then another urb - fails with errno == EINVAL, this means that we've still cancelled the - transfer, as it has only *partially* completed. - - Signed-off-by: Hans de Goede - -commit b22253ba9cbd399299b534a8c5e3bbac3f240963 -Author: Peter Stuge -Date: Thu Apr 19 04:05:29 2012 +0200 - - libusb-1.0.pc: Mention OpenBSD and NetBSD in description - -commit 6aa0fc60d94e3123de230d3fbc9196814c0e466e -Author: Peter Stuge -Date: Mon Apr 16 05:59:44 2012 +0200 - - io.c: Add debug message with the callback address on completed transfer - -commit de41604560a57b2279ac1d0a10b8192a9224d284 -Author: Xiaofan Chen -Date: Sun Apr 15 11:50:27 2012 +0800 - - Experimental support for NetBSD using the OpenBSD backend - - Signed-off-by: Xiaofan Chen - -commit 404054cb508881c9bd6bc575b66c4f509046b4af -Author: Peter Stuge -Date: Thu Apr 19 00:41:45 2012 +0200 - - configure.ac: Separate per-OS backend selection from per-backend settings - -commit 2eba7e4197cf9afa77451186e1a116ee3ae91adc -Author: Xiaofan Chen -Date: Sun Apr 15 07:17:18 2012 +0800 - - Linux: Silence unused variable warnings when without CLOCK_MONOTONIC - - Signed-off-by: Xiaofan Chen - -commit bc790a9c414871cc1d33f1c7686048434a700e45 -Author: Peter Stuge -Date: Sat Apr 7 05:20:36 2012 +0200 - - examples: Use snprintf() instead of sprintf() in dpfp and dpfp_threaded - - The OpenBSD C compiler generates a warning for every use of sprintf() - and for a good reason. Reported in http://marc.info/?m=133376187514495 - - Reported-by: Xiaofan Chen - -commit bffa232dca51bcc41df71c5735fa56370b7509ad -Author: Peter Stuge -Date: Sat Apr 7 03:55:36 2012 +0200 - - OpenBSD: Fix warning: 'hpriv' may be used uninitialized - - As reported in http://marc.info/?m=133376187514495 - - The variable would be used uninitialized when the internal list of - open devices is empty as obsd_handle_events() checks which device - the event fd belongs to, which can not actually happen, but if it - ever does happen then we will now return LIBUSB_ERROR_NO_DEVICE. - - Reported-by: Xiaofan Chen - -commit 6b1982b1bd321b55698ce537e64648e8aec85f6f -Author: Moses McKnight -Date: Fri Mar 30 21:53:20 2012 -0500 - - Windows: Fix build on VC++2003 which doesn't support variadic macros - - Change _MSC_VER tests to check for >= 1400 instead of > 1200 because - Visual C++ did not support variadic macros until VC++2005, as per - http://msdn.microsoft.com/en-us/library/ms177415%28v=VS.80%29.aspx - - Since usbi_dbg() is a function and not a macro with the old MS C - compilers the functions guid_to_string() and windows_error_str() - need to be compiled unconditionally, and the compiler should remove - the dead code when debug logging is disabled on newer compilers. - -commit 58ac0355e547080c82d02685a32480b891383d3d -Author: Peter Stuge -Date: Sat Mar 31 03:44:40 2012 +0200 - - Windows: Don't use a log function body macro for old MS compilers - - The duplication is a lot more straightforward than the previous LOG_BODY - macro, which also didn't handle the special debug case correctly. The - duplicated code is fortunately not very long. - -commit 76af4c99bd6122c1dd7b58858b669c919d8c8806 -Author: Peter Stuge -Date: Thu Mar 22 01:52:59 2012 +0100 - - libusbi.h: Add IS_EPIN() IS_EPOUT() IS_XFERIN() and IS_XFEROUT() macros - - The macros make backend code a little simpler to read, since the - transfer and endpoint direction is checked in several places across - the supported platforms. - -commit e3d0a4cb9e2f9872c9fdbb22d7ded169e111fc8f -Author: Peter Stuge -Date: Wed Feb 22 14:21:54 2012 +0100 - - Add LIBUSB_TRANSFER_ADD_ZERO_PACKET flag to indicate need for ZLP - - Some protocols which use USB require an extra zero length data packet - to signal end-of-transfer on bulk endpoints, if the last data packet - is exactly wMaxPacketSize bytes long. - - This flag allows applications to inform libusb about this requirement, - so that libusb can handle the issue transparently. - - At the moment the new flag is only supported on Linux, and submitting - a transfer with the flag set returns an error at submit time on other - systems. Hopefully implementations will soon follow for other systems. - - References #6. - -commit 7e0c747cc5ed0a31f38dff5eb5f03d4043b05ada -Author: Peter Stuge -Date: Sun Feb 19 06:58:16 2012 +0100 - - libusb.h: Add comma after last value in enums to ease future expansion - -commit c20ec7a927c05e0b960269751c26ab2b6e0b39ab -Author: Peter Stuge -Date: Sun Feb 19 05:39:33 2012 +0100 - - Linux: Rework bulk continuation check to generic kernel version check - - The old check_flag_bulk_continuation() tested for one specific running - kernel version. The new kernel_version_ge() instead allows to test the - running kernel version against major, minor and sublevel parameters. - -commit cf8f5a7be821099b143fcea8e4ba553daa22818b -Author: Peter Stuge -Date: Sun Feb 19 05:32:10 2012 +0100 - - OpenBSD: Correctly catch attempts to do isochronous OUT transfers - - LIBUSB_ENDPOINT_OUT is the value of the direction bit, which is 0 for - OUT transfers, so the previous condition could never evaluate to true. - -commit ae8e86cffb81858af5eeddbf2ea1aec6d55f573d -Author: Peter Stuge -Date: Sun Feb 19 00:42:20 2012 +0100 - - Darwin: Do not reject devices with product id 0x0000 - - Fixes #128. - -commit 4630fc22cff8ad3e1afa9b223378c0aabe282b5c -Author: Peter Stuge -Date: Mon Feb 13 16:59:51 2012 +0100 - - Do not call timerfd functions when timerfd is not being used - - When libusb was built with timerfd support but used on a system - without timerfd support the library would hang indefinitely on - completion of the first transfer, since timerfd functions were - being called unconditionally and the error returned when timerfd - was not being used caused a confused internal state. - - Many thanks to Ivo Smits for looking into the issue, proposing - an initial solution, and helping with testing! Fixes #73. - -commit c40f3df1efbb9232b525e5f675746762ca2304b8 -Author: Michael Plante -Date: Sun Feb 12 13:49:35 2012 -0500 - - Windows: Fix MSVC6 IDE warning on line continuation in libusb-1.0.rc - - * libusb\libusb-1.0.rc(21): Could not find the file LIBUSB_RC. - * only shows up first time after opening workspace. - * shows up on either build or clean. - * not actually due to rc.exe, but prior to it. - * probably an IDE bug. - * does not show up when running an exported makefile. - - Signed-off-by: Michael Plante - -commit 5526841023101bafa280755c3bd19fc44b9c32a0 -Author: Pete Batard -Date: Sat Jan 7 23:30:23 2012 +0000 - - Windows: Add Renesas SuperSpeed support for libusb_get_device_speed() - - * tests conducted using a Renesas PCIE USB 3.0 controller and driver and - a mass storage USB 3.0 confirm that USB_NODE_CONNECTION_INFORMATION_EX - uses (undocumented) value 3 for SuperSpeed - -commit 3df437680f8f5406795ec5f32d96612d327b2ca4 -Author: Peter Stuge -Date: Fri Feb 10 18:06:43 2012 +0100 - - autogen.sh: Try to use libtoolize before trying glibtoolize - - This helps on Mac OS X where an old glibtoolize is included in the - system and newer, manually installed, versions provide libtoolize. - - See also http://marc.info/?m=132490560131894 - -commit 4afbc78fe09bfc3dd7a609e5f82e9272c9e6226d -Author: Peter Stuge -Date: Wed Feb 8 15:54:21 2012 +0100 - - Rename the lsusb example program to listdevs - - This is intended to reduce confusion with the much more significant - lsusb utility which is part of the usbutils package. - -commit 57ab55159298b7057e0dd9b3854f7fd1550588ed -Author: Sean McBride -Date: Fri Dec 9 13:44:21 2011 -0500 - - core.c: Fix clang warning about useless store to a variable - -commit 32bbbd133e24c24d02646c0f7d1963404d4955f2 -Author: Sean McBride -Date: Fri Dec 9 13:43:46 2011 -0500 - - Darwin: Clarify comments on event thread creation and termination - -commit 6cf3285a4e0dfaec0fe53b8eb6a9281e3c5bcb6c -Author: Sean McBride -Date: Fri Dec 9 13:43:46 2011 -0500 - - Darwin: Fix incorrect mutex protection of libusb_darwin_acfl global - -commit 662ced422cf1ffce68753296a81dccf87f3a1c57 -Author: Sean McBride -Date: Fri Dec 9 13:43:46 2011 -0500 - - Darwin: Use retained runloop variable instead of CFRunLoopGetCurrent() - -commit 952a9bb6116afc69c4bae4714c2eb0713bf62a6d -Author: Sean McBride -Date: Fri Dec 9 13:37:22 2011 -0500 - - Darwin: Fix libusb_init() and libusb_exit() refcount race condition - - Use OSAtomicIncrement32Barrier() and OSAtomicDecrement32Barrier() - in darwin_init() and darwin_exit() to be thread safe. - -commit 721cc1c19fc8e88c4482ab3d1e8a34fa100c403c -Author: Sean McBride -Date: Fri Dec 9 13:33:28 2011 -0500 - - threads_posix.c: Fix prototype warning by including threads_posix.h - -commit f6ef0fca4b36657c1a0885c18cc4c4afcb4f7339 -Author: Dave Camarillo -Date: Fri Sep 23 11:56:58 2011 +0100 - - Windows: Fix crash during enumeration with >= 64 connected devices - - * indexes were outgrowing the unref_list array before realloc, - resulting in out of bound access and crash. - -commit e280760331e8b39ad3530235653644654166b322 -Author: Pete Batard -Date: Tue Oct 26 16:31:13 2010 +0100 - - Windows MSVC6: Remove SetupAPI, AdvAPI32 and OLE32 dependencies - - * this ensures that libusb dependent applications only need - to link with libusb on Windows - * (copied from Pete's msvc08 mods to msvc6 by Michael) - -commit fa66c93253855c9146011a6854d65df6d390039f -Author: Pete Batard -Date: Tue Dec 13 21:18:10 2011 -0500 - - Windows: Output an error message on calls to libusb_get_pollfds() - - Signed-off-by: Michael Plante - -commit 637145ed29ee7c7b13ac45d10cf1f798fc06cbd9 -Author: Pete Batard -Date: Thu Jun 3 22:14:20 2010 -0500 - - io.c: Fix comment since pthreads isn't the only threading libusb uses - -commit bb37939ab44a54a054f73e2f381808b12fb9cb33 -Author: Michael Plante -Date: Mon Aug 2 19:59:12 2010 -0500 - - libusb.h: Cast in libusb_get_string_descriptor() to avoid MSVC6 warning - - On MSVC6 bitwise OR promotes to int, causing the warning. - -commit ca09754471acba9a22fe8fc09170e5660d1d5c5d -Author: Michael Plante -Date: Fri Dec 23 16:50:21 2011 -0600 - - Windows: guid_to_string() is only discarded when macro-usbi_dbg used - - * usbi_dbg encloses all references to guid_to_string - * MinGW/cygwin warn about an unused function, so the #if - squelches this warning - * MSVC6 uses a variadic function form of usbi_dbg instead - of a macro, so the compiler still "sees" guid_to_string - and it therefore needs to always be defined for MSVC6, - even if it's only a stub. - * So we define it if usbi_dbg is used OR if MSVC6 is used. - - Signed-off-by: Michael Plante - -commit 8e15adcb0089882d10269ab77d35e193770ab90e -Author: Pete Batard -Date: Tue Nov 15 01:11:12 2011 +0000 - - Windows: Fix undefined datatype 'LONG_PTR' in MSVC6 - - * issue reported by Elmi - - Signed-off-by: Michael Plante - -commit 17ad642cae618cc09c5516612fa3880d4b6b8635 -Author: Pete Batard -Date: Sun Nov 13 23:10:15 2011 +0000 - - Windows: Fix for MSVC6 preprocessor not accepting blank parameters - - * unlike later iterations of Visual Studio, MSVC6 does not accept - blank parameters on macro calls [eg. CALL(a, ,b)] - * blank params were used with the DLL_DECLARE and DLL_LOAD macros - * issue reported by Elmi - -commit c591a7cbf7dbc6fbb4368e65cf58a8cd02582aeb -Author: Michael Plante -Date: Tue Oct 26 11:39:38 2010 +0100 - - Windows: Switch MSVC6 .dsp project files from MBCS to Unicode - - * MBCS (which is different from UTF-8) only makes sense if - supporting Windows 95/98, which we don't - * (try to match Pete's vcproj changes in MSVC6) - -commit 536e424fd7d057fc3f20f9939f9de4572e51c815 -Author: Michael Plante -Date: Tue Dec 13 21:39:40 2011 -0500 - - Windows: Add missing MSVC6 lsusb.dsp project file - - Signed-off-by: Michael Plante - -commit c56828857eb7ba6fb4f7701693dbb3fe4e75d5f6 -Author: Martin Pieuchot -Date: Mon Jan 30 09:59:30 2012 +0100 - - OpenBSD backend - -commit d2285744c7fa4007bb411be354268209d350b0f2 -Author: Xiaofan Chen -Date: Fri Jan 13 18:07:34 2012 +0100 - - configure.ac: Darwin: Move -lobjc from LIBS to PC_LIBS_PRIVATE - - Since commit 40327cd134718475f6cec8935b856d4fdff2099c it is neccessary - to explicitly include -lobjc not only when linking libusb itself, but - also for programs linking statically against libusb. References #63. - - See also http://marc.info/?m=132505900202378 - -commit 93b0e09d53ed1d177631af9182378492481a790a -Author: Xiaofan Chen -Date: Fri Jan 13 13:04:00 2012 +0100 - - examples: Link only with ../libusb/libusb-1.0.la and not with -lusb-1.0 - - Previous _LDFLAGS included both the freshly built libusb in ../libusb - and -lusb-1.0, where libtool would usually resolve the latter to an - already-installed libusb library in the system. The extra reference - to a second libusb library resulted in failure to build examples on - Mac OS X in some cases, and is plain wrong. - - See also the thread at http://marc.info/?m=132637593623667 - -commit cdc5df8f1b206a7c19bc221e8a9a97d5d98deb85 -Author: Peter Stuge -Date: Thu Jan 12 10:34:55 2012 +0100 - - libusb/Makefile.am: Avoid recursive variables in .rc silent-rule - - Not every make supports recursive variable expansion so some automake - versions complain about non-POSIX variable names ever since commit - 70bec4a9f8ec28d36c731011fa24d37c74ad3523 which added support for - silent-rules in our rule to compile the Windows .rc file. - - This commit removes the recursive variables and instead uses the - simple and generic GEN message and associated variable. - -commit a8e2e7cab278fbfcba91909eaf762cf66da9eda5 -Author: Ludovic Rousseau -Date: Sat Sep 24 18:27:54 2011 +0200 - - Core: Fix #122 warning: no previous prototype for ‘usbi_log_v’ - - Declare the usbi_log_v() function before using it. - -commit e88ecb1e65604c222f82da586bb9e9066d66fbba -Author: Sean McBride -Date: Fri Oct 14 14:40:29 2011 -0400 - - Darwin: Set a name for the background thread on Mac OS X 10.6 and later - - The call to pthread_setname_np() makes it easy to identify the - background thread in the Xcode debugger and in crash reports. - -commit 60bad550dcb31a315a667a6614c52f712c82f45f -Author: Peter Stuge -Date: Thu Sep 22 21:42:35 2011 +0200 - - libusb/Makefile.am: Add libusb-1.0.rc dependency on version.h - -commit 70bec4a9f8ec28d36c731011fa24d37c74ad3523 -Author: Peter Stuge -Date: Thu Sep 22 21:38:29 2011 +0200 - - libusb/Makefile.am: Make the libusb-1.0.rc rule support silent-rules - -commit fa9b682a638e54a4556ef6bd343ef56d6300a520 -Author: Peter Stuge -Date: Thu Sep 22 21:17:37 2011 +0200 - - configure.ac: Enable libtool support for Windows Resource language - -commit 58c73ddca310f757fc7ca75197bf3d7ca58ce29a -Author: Sean McBride -Date: Mon Sep 19 12:52:44 2011 -0400 - - descriptor.c: Use size_t for minor 64 bit compliance improvement - - Fixes #121. - -commit 27ec326a9f1bff4481702b35f39897c65a5db586 -Author: Sean McBride -Date: Mon Sep 19 12:42:33 2011 -0400 - - Darwin: Fix warnings about mismatched signed/unsigned compare - - References #121. - -commit 59cc79f2c8e5da41fe2c761bf1e1d9cd18ddac81 -Author: Sean McBride -Date: Mon Sep 19 12:38:20 2011 -0400 - - Fix unused variable warnings when without timerfd and/or when on Darwin - - References #121. - -commit 1cc5b4a9fb984e83681ae5c797fa6b22bc20f809 -Author: Ludovic Rousseau -Date: Fri Sep 16 18:07:56 2011 +0200 - - Correctly handle LIBUSB_TRANSFER_OVERFLOW in libusb_control_transfer() - - sync.c: In function `libusb_control_transfer': - sync.c:122: warning: enumeration value `LIBUSB_TRANSFER_OVERFLOW' not - handled in switch - - Fixes #120. - -commit c55f581f43885f8576d8e2ebf4d46cd7ff3c1030 -Author: Pete Batard -Date: Mon Sep 19 16:01:37 2011 +0100 - - Windows: do not set altsetting 0 as part of libusb_release_interface() - - * pointed out by Travis Robinson and Xiaofan Chen - * similar to a change advised by Alan Stern for the Linux kernel: - http://marc.info/?m=122790204410765 - -commit efd3fae8f95ef7797ecd4b5731b198f100007d6a -Author: Pete Batard -Date: Mon Sep 19 15:45:35 2011 +0100 - - Windows: fix communication with hubs - - * issue reported by René Haunstrup in http://marc.info/?m=130503019227814 - -commit a8d1eb7963e5811e16e8fb7e157cf3a00d888347 -Author: Pete Batard -Date: Mon Sep 19 15:41:39 2011 +0100 - - Windows: add USB 3.0 controller support - - * Windows 8, NEC/Renesas, TI, Fresco Logic, Etron, VIA, ASMedia - (some of which untested!) - * includes workaround for NEC/Renesas USB 3.0 root hubs - -commit 48a19497bdd14325738ac9197d8cf4ebe1daa2d4 -Author: Pete Batard -Date: Mon Sep 19 15:28:03 2011 +0100 - - Windows: add static keywords and drop duplicated or unneeded code - -commit af407286ba2fd346755297e56e365d84b98090d5 -Author: Pete Batard -Date: Mon Sep 19 13:59:46 2011 +0100 - - Windows: fix 'windows_error_str' defined but not used when not logging - -commit abc3143ba1989a48f62246c2afb0eb4c3c5f7917 -Author: Peter Stuge -Date: Thu Sep 22 10:19:17 2011 +0200 - - libusbi.h: Silence unused context variable warnings when not logging - -commit 69b71c896a153a307360cf21be67b3b6e1e09a2d -Author: Pete Batard -Date: Mon Sep 19 13:06:22 2011 +0100 - - Windows: copy DLL file regardless of ddk_build.cmd dll argument case - -commit fdbac8971212bda3a42feeeaeb92fd8e49c7e904 -Author: Pete Batard -Date: Sun Sep 18 20:06:45 2011 +0100 - - Windows: Add uint32_t typedef for old MSC so that DDK can build lsusb - -commit c471d55e909d84012f065715703dad454d1fa421 -Author: Vitali Lovich -Date: Fri Sep 16 08:53:25 2011 -0600 - - Darwin: fix port leak in darwin_clock_gettime() - -commit 477f3917f8c123e36993f9c0ba8156ca0f16ccfa -Author: Vitali Lovich -Date: Fri Sep 16 08:50:40 2011 -0600 - - Darwin: remove unnecessary run loop invalidation during libusb_exit() - -commit f52094f37ccaff8137f5ce39867d2dba9b0f6bf9 -Author: Vitali Lovich -Date: Fri Sep 16 08:49:54 2011 -0600 - - Darwin: fix port leak during libusb_exit() - -commit 8a2f7b5c0520e6099f2c624cd0994c60867c1628 -Author: Vitali Lovich -Date: Fri Sep 16 08:48:28 2011 -0600 - - Darwin: fix potential leak on libusb_claim_interface() error - -commit b1ee2ef8d0b67dcc51c15742cb2decb386cffd9b -Author: Nathan Hjelm -Date: Fri Sep 16 08:41:01 2011 -0600 - - Darwin: Fix #117 transfer size 64/32 bit issue for transfer callbacks - - The transfer size is now always truncated to 32 bits. - -commit c407a2d97b6f8715d3452257a0adac40a20178e6 -Author: Peter Stuge -Date: Thu Sep 15 17:04:43 2011 +0200 - - Remove username from SF FRS rsync upload command - -commit cbc2d7b2de58cf5fb02d9e5a39be0870527f8632 -Author: Peter Stuge -Date: Thu Sep 15 16:48:35 2011 +0200 - - Support release candidate versions in configure.ac and libusb-1.0.rc - -commit 384a528ed7adde935681313dacc5cd79e4be9ea1 -Author: Peter Stuge -Date: Thu Sep 15 16:32:47 2011 +0200 - - Tidy .gitignore a little - - There's no xusb, we need a glob pattern for matching .exe files, and - fpusb tarballs aren't very common in the libusb source dir. - -commit 9ad3643391a7fc6ce97aa77ffaf97d244fd9e613 -Author: Hans de Goede -Date: Wed Sep 14 10:53:48 2011 +0200 - - Docs: Clarify that libusb_handle_events_timeout() tv param can't be NULL - - The example code and API doc for libusb_handle_events_timeout() could be - interpreted as it being OK to pass a NULL pointer for the tv argument (I - interpreted it like that when I first started coding for libusb). - - This patch changes the docs to make it clear that one must always supply - a tv struct to libusb_handle_events_timeout. - - Signed-off-by: Hans de Goede - -commit e1c06fb070c1328a3b78c7da8b9e779d466edd97 -Author: Peter Stuge -Date: Wed Sep 14 08:23:43 2011 +0200 - - Makefile.am: Do not remove ChangeLog on make distclean, fixes #116 - - [pbatard: Remove it on make maintainer-clean instead] - -commit 0c5bf03eb829e51dcf19562fc4f745937235ea51 -Author: Vitali Lovich -Date: Wed Sep 14 07:02:06 2011 +0200 - - Darwin: Reduce race likelihood between cancellation and device disconnect - - References #88. The race condition still remains, but this change - makes it less likely to trigger. - -commit 3e6e257f55156c4600f3116a0befba8cee62872a -Author: Peter Stuge -Date: Wed Sep 14 04:00:33 2011 +0200 - - Document that libusb_get_device_list() can return any libusb_error code - - Fixes #87. - -commit 737ba04ea40f19564b445fbb489907529e75edc9 -Author: Pete Batard -Date: Thu Jun 16 10:49:13 2011 +0100 - - Linux: Fix #81 URB double free race condition on device disconnect - - A submitted transfer that has just been failed by the kernel could be - picked up by an event handler to be cleaned up, where freeing of URB - memory would race with the submit function doing it's own cleanup and - freeing as a result of the submit failing. - - libusb_submit_transfer() always holds itransfer->lock, so the race can - be avoided by taking that lock also in the cleanup path and checking - that the URB memory has not already been freed before freeing it there. - - As http://libusb.org/ticket/81#comment:14 notes there is still another - possible, but unlikely, race condition between libusb_submit_transfer() - and an event handling thread. That will require more work to solve. - - [stuge: Add check in cleanup path that URBs have not already been freed] - -commit 1b0f758a334d78d3832d17d694ac0c931da36050 -Author: Peter Stuge -Date: Wed Sep 14 03:00:14 2011 +0200 - - Add libusb_error_name() API function - - Until we have i18ned error messages we can at least offer easy - translation from numeric error code to the error code's name. - - [hansg: switch() on enum to get a compiler warning if a case is missing] - [hansg: Better return value when called with an unknown error code] - [hansg: Fix DEFAULT_VISIBILITY in definition to compile on all platforms] - -commit e16805130a04b2642891e86b8f479e6343ca17da -Author: Peter Stuge -Date: Wed Sep 14 02:30:18 2011 +0200 - - Add libusb_has_capability() API function - - Since it is currently not planned to change the filename of the libusb - library between libusb-1.0 versions at least on Windows systems it's - important to have a capability API. - - Currently there exists only one capability; LIBUSB_CAP_HAS_CAPABILITY, - which tests support for the libusb_has_capability() API. - -commit 2dc2fa2a56408e515d25359323b4ea2f1bbec14a -Author: Sebastian Pipping -Date: Tue Sep 13 20:38:26 2011 +0200 - - Fix typos in introductory documentation - -commit 0a828082aeedc6d19b6de4e3b10cc9762352fa7f -Author: Pekka Nikander -Date: Tue Sep 13 18:57:43 2011 +0200 - - Linux: Add libusb_open() debug and error messages with the device path - - Fixes #109. - -commit 6583372125d73543fe0db9fdc59850b9c6aa50d9 -Author: Pekka Nikander -Date: Tue Sep 13 18:52:36 2011 +0200 - - Add debug message with libusb_open() error code - - References #109. - -commit f797ecb3b4e653594f8ebc0c9d9e2ca579062779 -Author: Hans de Goede -Date: Mon Sep 12 18:11:20 2011 +0200 - - Document libusb_handle_events_completed() and _timeout_completed() - - Signed-off-by: Hans de Goede - [stuge: Note that the old racy functions should be avoided by new code] - -commit 6696512aade99bb15d6792af90ae329af270eba6 -Author: Graeme Gill -Date: Sat Sep 10 15:47:05 2011 +0200 - - Fix #56 race condition causing delayed completion of sync transfers - - The sync API had a race where it would check a condition to know if it - needed to call a libusb_handle_events() function. However, the check - was done outside of the lock that is held while the condition is set, - so another thread could completely serve whatever was needed to make - the condition true between it being checked and the event handler being - called. This situation would be detected after a libusb-internal timeout - of 60 seconds, after which the transfer would be completed without - error, but with significant delay. - - Original patch at http://marc.info/?l=libusb-devel&m=127252114815709 - - Changes by Hans de Goede: - - Renamed the "race-proof" functions from libusb_handle_events*_check() - to libusb_handle_events*_completed() - - Drop r = 0 setting in libusb_handle_events_timeout_completed() - (to make both completed checking cases identical flow wise) - - Signed-off-by: Hans de Goede - [stuge: Simplify libusb_handle_events_timeout() change with a goto] - [pbatard: Fix _handle_events_timeout() and _completed() definitions] - -commit cfee5446cdb2974c1e90c7c379a365c495975aef -Author: Nathan Hjelm -Date: Fri Aug 26 23:06:40 2011 -0600 - - Darwin: Use a condition to signal async thread ready in libusb_init() - -commit d1bd234f7e1b1ff4168b8f605e2038e87a0e361f -Author: Nathan Hjelm -Date: Thu Jul 21 22:34:12 2011 -0600 - - Fix #64 use of reserved identifiers throughout libusb - -commit a97762a8a121de1ad3deb9e861088b69bb6a155b -Author: Nathan Hjelm -Date: Thu Jul 21 22:31:09 2011 -0600 - - Darwin: fix libusb_get_device_list() and libusb_claim_interface() leaks - -commit 8723df191fcedc6161732fd06d12df392c6dea3f -Author: Nathan Hjelm -Date: Thu Jul 21 22:28:47 2011 -0600 - - Darwin: use kIOMasterPortDefault instead of creating a master port - -commit 0eb7e43759003610d1afe6148aa6ff4f5859ccb0 -Author: Peter Stuge -Date: Wed Jul 27 03:15:03 2011 +0200 - - Allow devices with zero configurations to be discovered - - At least in Linux, wireless USB devices have zero configurations until - they have been authorized. This device state can be set for any USB - device using: - - echo 0 > /sys/bus/usb/devices/?-?/authorized - - An unauthorized device would previously make usbi_sanitize_device() - return LIBUSB_ERROR_IO, although there really was no I/O error. - - Reported-by: Carl-Daniel Hailfinger - -commit 5010c3e80423d13acee6eeb4af974e8a9bcdd006 -Author: Peter Stuge -Date: Wed Jul 27 06:17:48 2011 +0200 - - Linux: Continue enumeration even if one device returns an error - -commit 2bf8848fb5c85ace0f445c0820a0c173cf76bf43 -Author: Hans de Goede -Date: Fri Jun 17 10:19:00 2011 +0200 - - Linux: Handle single- and two-digit kernel versions like 3.0 and 4 - - The code has been tested with various version strings. - - [stuge: Remove bogus string length check and optimize for newer kernels] - -commit 0288bf24f91eca9f433ebad91a7eb6c0e3e29133 -Author: Pete Batard -Date: Thu Mar 3 18:35:35 2011 +0000 - - Windows: Provide libusb_get_device_speed() data - - * use (currently superspeed unaware) USB_NODE_CONNECTION_INFORMATION_EX - - Fixes #45. - - [stuge: Explicitly convert OS device speeds to libusb device speeds] - [pbatard: Add breaks overlooked when adding explicit conversion] - -commit 382b7deaadd7e2f1d08c9e921e460bb3abf130b2 -Author: Trygve Laugstøl -Date: Tue Jul 19 23:20:40 2011 +0200 - - Darwin: Provide libusb_get_device_speed() data - - References #45. - -commit 44d6319f57e7e2c77347da228ed032e62716b438 -Author: Hans de Goede -Date: Thu Feb 17 15:06:40 2011 +0100 - - Linux: Provide libusb_get_device_speed() data from sysfs - - References #45. - - Signed-off-by: Hans de Goede - -commit c8c40bcbd22abca922ff31c4ed6a75fd7af78b59 -Author: Hans de Goede -Date: Thu Feb 17 13:17:55 2011 +0100 - - Add new API function libusb_get_device_speed() - - Reworked version of my earlier patch, largely modelled after (if not - copy and pasted from) Trygve Laugstøl's similar - commit 5a6541e0d80fb1f21e2b960bc2337a612f9d74fb in - git://git.libusb.org/libusb-trygvis.git - http://git.libusb.org/libusb-trygvis.git - http://git.libusb.org/?p=libusb-trygvis.git;a=commitdiff;h=5a6541e0d - - This patch does not add any OS specific code. The supporting code in - each backend follows in separate patches. References #45. - - Signed-off-By: Hans de Goede - -commit 0db8cba7f2c372f0127c7df9724e5a35e93f2069 -Author: Nathan Hjelm -Date: Sun Mar 20 00:25:44 2011 -0600 - - Darwin: Improve device enumeration performance - - The device location is saved, and later used whenever iterating over - devices. Fixes #111 and #112. - - [stuge: Formatting fixes and split out libusb_get_device_speed() change] - [stuge: Combine with patch that uses the saved device location] - -commit 511ec4301deb516691e39e3df5b90fe28cb2bb0f -Author: Hans de Goede -Date: Thu Feb 17 12:49:36 2011 +0100 - - Linux: Use __read_sysfs_attr() to get busnum and devaddr - - Remove code duplication. - - Signed-off-by: Hans de Goede - -commit e05bbc59ca7b896e2b825bde59bf883ac8c09f5c -Author: Hans de Goede -Date: Thu Feb 17 12:45:10 2011 +0100 - - Linux: Add __read_sysfs_attr() helper function - - On Linux we often need to read (postive) integers from sysfs. This patch - adds a helper function for this. This is a preparation patch for adding - a libusb_get_device_speed() function to libusb. - - Signed-off-by: Hans de Goede - -commit 20e26dda0f86dafa3436b152e090b5f3410c8ce4 -Author: Hans de Goede -Date: Tue Feb 8 16:37:18 2011 +0100 - - Linux: Stop kernel from re-attaching in-kernel driver after reset - - When an interface is bound to the usbfs driver (iow claimed), the - kernel will unbind it, and then after the reset do a device_attach - on the interface, which will bind the default in kernel driver to - the interface. - - So if an app has detached the in kernel driver, and claimed the - interface and then does a libusb_reset_device. Things end up with - the interface no longer being bound to the usbfs driver (so no longer - claimed) and instead it is bound to the in kernel driver (iow the in - kernel driver is re-attached). - - We can stop this from happening by releasing all claimed interfaces - before the reset, as the kernel will not do the device attach after - reset, if no driver was bound to the interface before the reset. - - Signed-off-by: Hans de Goede - -commit 4e294dc9848aab86b31d2fff228cf97e7eadf913 -Author: Hans de Goede -Date: Thu Feb 17 12:35:46 2011 +0100 - - Core: Use USB_MAXINTERFACES rather then sizeof(claimed_interfaces) - - claimed_interfaces is a long and thus its size differs on 32 - versus 64 bits, this patch uses USB_MAXINTERFACES instead of - sizeof(claimed_interfaces) on interface number range checks - for consistent behavior independent of the arch. - - Signed-off-by: Hans de Goede - -commit a68f956dd4c29d6ed799f04f07a3346317843999 -Author: Hans de Goede -Date: Wed Feb 9 12:40:35 2011 +0100 - - Linux: Fix warnings seen when compiling with gcc-4.6 - - Compiling with gcc-4.6 results in the following warnings: - os/linux_usbfs.c: In function 'op_get_configuration': - os/linux_usbfs.c:1144:6: warning: variable 'r' set but not used ... - os/linux_usbfs.c: In function 'op_handle_events': - os/linux_usbfs.c:2091:40: warning: 'status' may be used uninitialized ... - os/linux_usbfs.c:2044:6: note: 'status' was declared here - dpfp.c: In function 'save_to_file': - dpfp.c:228:9: warning: variable 'ignore' set but not used ... - dpfp_threaded.c: In function 'save_to_file': - dpfp_threaded.c:257:9: warning: variable 'ignore' set but not used ... - - This patch fixes these. (The second comes from handle_control_completion() - which gcc seems to inline into op_handle_events().) - - Signed-off-by: Hans de Goede - [stuge: Add fixes for dpfp examples and update source references] - -commit 209b5ccd827039b933b730e3f29abd0d72d3c6c6 -Author: Vitali Lovich -Date: Tue Jun 14 08:51:57 2011 +0200 - - Darwin: Fix #108 crash when a device is unplugged - -commit d3543e9140536a9751811b44f8496489be1e6bb7 -Author: Peter Stuge -Date: Mon Jun 13 22:58:23 2011 +0200 - - libusb.h: Add missing LIBUSB_CLASS_ codes currently defined by usb.org - - LIBUSB_CLASS_PHYSICAL - LIBUSB_CLASS_SMART_CARD - LIBUSB_CLASS_CONTENT_SECURITY - LIBUSB_CLASS_VIDEO - LIBUSB_CLASS_PERSONAL_HEALTHCARE - LIBUSB_CLASS_DIAGNOSTIC_DEVICE - - Per http://www.usb.org/developers/defined_class - -commit 08bc7ffb6a3b65afc6795cd048a890ee8da7d954 -Author: Peter Stuge -Date: Mon Jun 13 22:53:40 2011 +0200 - - libusb.h: Add LIBUSB_CLASS_IMAGE in addition to LIBUSB_CLASS_PTP - - The old LIBUSB_CLASS_PTP name is kept for compatibility. Fixes #106. - -commit 3d7938d85a33cd98553c0c898a8dd0490826b077 -Author: Peter Stuge -Date: Mon Jun 13 22:52:48 2011 +0200 - - libusb.h: Fix LIBUSB_CLASS_PRINTER description typo - - References #106. - -commit 5d0526af1a922afab02cdbdf4bb7078702759571 -Author: Sean McBride -Date: Fri Feb 11 11:28:04 2011 -0500 - - Darwin: Fix #100 warning cast to pointer from integer of different size - -commit bb8854ff5680136e29b57505300f131c2646f258 -Author: Sean McBride -Date: Mon Jun 13 22:26:43 2011 +0200 - - configure.ac: Fix #97 clang warning about -fgnu89-inline - - Remove the test that sets the flag since GNU89 inline semantics are not - required by libusb. - - [stuge: Also remove reference to the test result] - -commit cb3c2e488f298b78027c9d5fc0bec0e5ba27d761 -Author: Pete Batard -Date: Wed Jun 15 01:38:58 2011 +0200 - - Windows: Make cancel_io() in poll_windows.c static - - References #97. - -commit 6635dbb4acb5ee556a020e431b15c954edfcbd29 -Author: Peter Stuge -Date: Mon Jun 13 22:21:02 2011 +0200 - - Windows: Make upperize() in windows_usb.h static - - References #97. - -commit 9479ce9dae3d0dbe2ce693bd02ccceb018a75fe9 -Author: Vitali Lovich -Date: Wed Mar 16 17:33:57 2011 -0700 - - descriptor.c: Fix buffer read overflow caught by valgrind - - In parse_interface() an unexpected descriptor would be parsed without - validating the descriptor's length. It is possible for size to be 0 at - this point, which means that the parsing would read past the end of the - source buffer. Fix #83 by checking the length of the remaining buffer - before parsing. - -commit c775c2f43037cd235b65410583179195e25f9c4a -Author: Vitali Lovich -Date: Wed Mar 16 19:51:40 2011 -0700 - - Clean up in-flight transfers and device handle when closing a device - - Any in-flight transfers should properly invalidate their references - to device handles that are being closed. Additionally, they should be - removed from the transfer-in-flight list. This is done with the events - lock held to protect against another thread processing the same transfer. - The events lock is initialized as a recursive mutex, because the device - close code might itself be called while an event is being handled. - Fixes #82. - - [stuge: Trivial rework to reduce indenting] - -commit 74282582cc879f091ad1d847411337bc3fa78a2b -Author: Vitali Lovich -Date: Wed Mar 16 19:43:30 2011 -0700 - - Add recursive mutexes to threading abstraction - - This is necessary for the device close path which needs to attain the - events lock, but which might itself be called while handling an event. - The events lock is necessary to properly clean up transfers which might - still be pointing to the device. References #82. - - [stuge: Move usbi_mutex_init_recursive() into threads_posix.c] - [stuge: Must also #define _XOPEN_SOURCE 500 to be able to build] - [pbatard: Un-inline usbi_mutex_init_recursive() to make Cygwin happy] - -commit 8f1bc0659136faf312dabe8fe67380a798299d33 -Author: Vitali Lovich -Date: Wed Mar 16 19:48:35 2011 -0700 - - Add USBI_TRANSFER_CANCELLING and _DEVICE_DISAPPEARED status flags - - The flags are used to indicate if a cancellation has started, and if - a cancellation has failed because the device is no longer available. - References #82. - -commit 87ba8a9ead4fd9e81ae3c5a894f698779de1f2c2 -Author: Vitali Lovich -Date: Wed Mar 16 19:50:04 2011 -0700 - - Linux: Detect and report that device has gone away while discarding URBs - - Return LIBUSB_ERROR_NO_DEVICE if the device is no longer available - (ENODEV) to discard the urbs. References #82. - -commit 2c85c363cddd72b9ab425f05e2ee03e0b1df24f1 -Author: Peter Stuge -Date: Mon Jun 6 02:46:46 2011 +0200 - - libusbi.h: Add comma after last value in enum usbi_transfer_flags - -commit 5d7be3e1337f2444097504931ac0f2f0997b2b05 -Author: Peter Stuge -Date: Sun Jun 5 23:28:07 2011 +0200 - - threads_posix.h: Whitespace fix - -commit 18db4813e844fc6929680afcc9b793abcb06876a -Author: Peter Stuge -Date: Sun Jun 5 23:21:08 2011 +0200 - - libusb/Makefile.am: Correct threading files in libusb_1_0_la_SOURCES - -commit 5f30c81f66e8dd61f8eae16de548697708f9bd18 -Author: Alan Ott -Date: Thu Jul 21 16:37:48 2011 +0200 - - Linux: Fix #70 race condition in sysfs_get_device_list() - - Change the way libusb chooses between using sysfs and usbfs for information - about the attached devies. Using the old method, a race condition could - occur if a device was unplugged just before (or during) the call to - libusb_get_device_list(), corrupting the internal sysfs_can_relate_devices - and sysfs_has_descriptors variables and preventing libusb_get_device_list() - from working in future calls. - - The old method was based on the assumption that if certain sysfs files - (eg: busnum) could not be opened, that indicated an inadequacy of sysfs - (ie: the running kernel's sysfs version did not contain those files), - when in reality those files couldn't be opened because the device had - been unplugged. - - The new method checks the adequacy of sysfs during libusb_init() - (op_init()) and if a sysfs file cannot be opened, it is now assumed that - it is because the device has been unplugged, not because sysfs is - inadequate. - - Signed-off-by: Alan Ott - [stuge: Include closedir() bugfix posted in ticket by Arne Laansoo] - [stuge: Remove dead code in sysfs_scan_device() found by Hans de Goede] - -commit 40327cd134718475f6cec8935b856d4fdff2099c -Author: Sean McBride -Date: Thu Feb 10 17:11:29 2011 -0500 - - Darwin: Fix #63 error when apps use Objective-C garbage collection - -commit 3ba2fae24886fec89410e5f2295f65363edcc2df -Author: Sean McBride -Date: Fri Feb 5 11:50:34 2010 -0500 - - Darwin: Fix #28 clang analyzer warning about unbalanced retain/release - -commit b67120f047f7eafa15c88c66fa61cef40805ec1f -Author: Sean McBride -Date: Fri Feb 5 11:50:34 2010 -0500 - - io.c: Fix clang analyzer warning about unused variable - - References #28. - -commit 51af85d03a098d7d99ea544e8e9535b5476bab33 -Author: Peter Stuge -Date: Tue May 10 10:44:18 2011 +0200 - - .gitignore: Add m4 subdirectory created by libtool - -commit c569e5b3b314538f45d0b3b6f14ce3dbdfee1be9 -Author: Ludovic Rousseau -Date: Mon Nov 15 14:45:50 2010 +0100 - - Linux: Do not include useless pthread.h - - The code does not use threads so no need to #include - Fixes #74. - -commit 82af9f9d440ef49015652c699157cf62020f097a -Author: Pete Batard -Date: Tue Mar 8 17:41:05 2011 +0000 - - Windows: minor code improvements - - * mostly warnings from VS2010's Intellisense - -commit 7e636dbe06001b9ac68e452a2fdc05e33fbb4e3a -Author: Pete Batard -Date: Tue Mar 8 17:40:39 2011 +0000 - - Windows: prevent set_configuration request from being sent using WinUSB - - * multiple WinUSB set configuration requests can stall a device and - WinUSB does not support setting of alt configuration in the first place - * issue reported and investigated by Xiaofan Chen - -commit 578c50c99646e5ebbcfbea653524a519b843ebcd -Author: Graeme Gill -Date: Tue Mar 8 17:39:16 2011 +0000 - - Windows: fixed default WinUSB timeout and ineffective policy settings - - * default WinUSB timeout was 5 seconds, which may be to small. - PIPE_TRANSFER_TIMEOUT policy is now set to infinite for all EPs. - * other WinUSB policy settings were called before the endpoints - had been set. This is now fixed. - -commit 25fa63ea1cfe02e784cb62d3b869fd15e62b5b6e -Author: Pete Batard -Date: Tue Mar 8 17:37:40 2011 +0000 - - Windows: Don't leak pipe fds - - use _open() and _close() rather than _open_osfhandle() and CloseHandle() - - * use of CloseHandle() prevented the pipe fds from being - relinquished on libusb_exit() - * leaked fds could lead to the OS running out of new fds - and LIBUSB_ERROR_NO_MEM being returned as a result - * using _open() avoids _open_osfhandle() redef for cygwin - * issue reported by Stephano Antonelli - -commit 3ccd9bddec316ee4b867959fd7f616eb4d410997 -Author: Peter Stuge -Date: Tue May 10 10:05:29 2011 +0200 - - Windows: enumeration overhaul - - * uses multiple passes in a single call - * uses a hash table, in anticipation for hotplug - * adds a (dummy) HUB interface for harmonization - * adds calloc on device struct creation in core - (to detect and avoid unnecessary double initialization) - -commit bb108cbe39802785d10fe025b74ca5ee19734151 -Author: Pete Batard -Date: Tue May 10 00:56:18 2011 +0100 - - Windows: MS project files part 4 - MSVC6 project files - - Fixes #57 and #1. - -commit 78896ae99b9c2d5672fc93c5bad0f5e8e75c53ea -Author: Pete Batard -Date: Tue May 10 00:53:09 2011 +0100 - - Windows: MS project files part 3 - VS2005 project files - - References #57. - -commit 9e5f4277e379a82f5d32e81db1bd0ffaa6637596 -Author: Pete Batard -Date: Tue May 10 00:38:49 2011 +0100 - - Windows: MS project files part 2 - WDK project files - - References #57. - -commit c1e75431418cdfc10ec963d823fce479cdae6840 -Author: Pete Batard -Date: Tue May 10 00:38:12 2011 +0100 - - Windows: MS project files part 1 - support files & preliminaries - - * adds the MSVC support files used by MSVC6, VS2005 and WDK - * also adds missing defines required by MS compilers in libusb.h - * also anticipatory sets .gitattributes for CRLF handling - * also adds manually maintained .def file for import lib generation - - References #57. - -commit 85a14f43e0ce27cd47f84fdaeacbaa81cebdb886 -Author: Peter Stuge -Date: Mon May 9 08:12:24 2011 +0200 - - Move library version number from configure.ac to libusb/version.h - - This is neccessary to support native MS builds. The Windows resource - file libusb/libusb-1.0.rc must include the release version, which was - previously only available after configure had run and had substituted - the numbers into a generated libusb/libusb-1.0.rc file. - - The version atoms are now stored as CPP style #defines in libusb/version.h - so that the .rc no longer needs to be generated but can simply include the - header file and access the version information directly. - - The m4 macro LU_DEFINE_VERSION_ATOM() was added to configure.ac to get - version atoms from libusb/version.h for use in AC_INIT(). The macro - handles C and C++ style comments in version.h, but can easily be made - to fail by obscuring the file. Please don't do that. - - Tested with MinGW using autoconf, and manual compile of libusb-1.0.rc - using RC.EXE Version 5.2.3690.0 from Visual C++ 2005 Express Edition. - -commit 3481f52b014110f6c291e5a15e79ba774dcdfacf -Author: Peter Stuge -Date: Tue May 10 08:36:32 2011 +0200 - - Windows: Debug builds create the same .dll file name as non-debug - - Thanks to Pete for pointing this out! - -commit 9da8cf5c9ed9bd381a77d8170fc0556edbcce4dc -Author: Pete Batard -Date: Tue Mar 8 17:18:48 2011 +0000 - - Windows: explicit use of ANSI or WideChar calls - - * This is in anticipation of adding MSVC project files - that use Unicode rather than MBCS - -commit ae675c1f49dc00b695fce7296903f60998cc28ed -Author: Pete Batard -Date: Tue Mar 8 17:16:23 2011 +0000 - - Windows: Remove SetupAPI, AdvAPI32 and OLE32 link-time dependencies - - * this ensures that libusb dependent applications only need - to explicitly link against libusb on Windows - - The run-time dependency on Cfgmgr32.dll, OLE32.dll and SetupAPI.dll remains. - -commit 356e312511e4892977636da52ec497ad2c716032 -Author: Pete Batard -Date: Tue Mar 8 17:12:33 2011 +0000 - - Add .gitattributes to avoid Windows line ending issues with autocrlf - -commit 61c120f025f3dee04eeb88159d7c0403a8bf91fe -Author: Peter Stuge -Date: Sun Feb 27 09:37:54 2011 +0100 - - Windows: Touch up FileDescription and ProductName resource strings - -commit 99b4ddcd893834a4be8b5884037b650e57ba0ba2 -Author: Peter Stuge -Date: Sun Feb 27 07:20:40 2011 +0100 - - Windows: Remove emulated direct device access via HID API - - Either use a library such as HIDAPI to communicate with HID class - devices, or replace the kernel driver for the device with one that - offers support for the complete libusb API. - -commit 4be84ab49c838d534d3a1b8a64ffa89774984ee7 -Author: Peter Stuge -Date: Sun Feb 27 06:59:15 2011 +0100 - - Revert libusb_strerror() until we have i18n and l10n - -commit 0e177f22fcc69d9aab6fb410e85f3413f478c94c -Author: Pete Batard -Date: Wed Jan 19 14:00:12 2011 +0000 - - dpfp_threaded: return instead of pthread_exit() to avoid Cygwin warning - -commit e65878f21b0a0bb96debcb292dc03ce3c4ebb701 -Author: Pete Batard -Date: Wed Jan 19 13:52:08 2011 +0000 - - Windows: Rename various variables named "index" to avoid shadow warnings - -commit 019bf73bb2677dc7720bc8280527316adcbaa506 -Author: Pete Batard -Date: Tue Oct 5 12:50:53 2010 +0100 - - Windows: Fix logic in enumeration of driver name and port number - -commit 24494ed5db27737fc607fc35dda722521c9fe4d4 -Author: Pete Batard -Date: Tue Oct 5 12:50:13 2010 +0100 - - Windows: Allow claiming any interface in composite device using WinUSB - - Issue reported by Benjamin Dobell, see #48. The call to - WinUsb_QueryInterfaceSettings() is removed since it doesn't work - on any other interface but the first (a WinUSB limitation). - - This allows the use of WinUSB.sys in lieu of the usbccgp.sys - "USB Generic Parent" default driver for composite devices. - -commit 9c8e6545f2fbb171f81a9451eaf2d09e1fbc13b3 -Author: Pete Batard -Date: Tue Oct 5 12:47:15 2010 +0100 - - Windows: Allow arbitrary bConfigurationValue in config descriptors - - Unlike bInterfaceNumber, bConfigurationValue does not have to be - either sequential or contiguous. The bConfigurationValue is now - included in debug output. Fixes #48 reported by Benjamin Dobell. - -commit dcd002974e511879320233fd5b0600e06bdc5620 -Author: Thomas Röfer -Date: Fri Nov 19 22:03:11 2010 +0100 - - Darwin: Schedule isochronous transfers further in the future - - This is required to make OpenKinect transfer data at 30 fps. This - change was originally made by Theo Watson, and Thomas improved on it. - The commit came via OpenKinect into libusb thanks to Kyle Machulis and - Hector Martin. Fixes #66. - -commit e83fad33dbaf9f37811da6d4cd9d3be554817944 -Author: Thomas Röfer -Date: Fri Nov 19 22:03:11 2010 +0100 - - Darwin: Fix #65 memory leak in submit_iso_transfer() - - This was also independently fixed by Hoi-Ho Chan, but Thomas caught - an additional problem with his fix. - - This commit came via OpenKinect into libusb thanks to Kyle Machulis - and Hector Martin. - -commit 1a2d21fe42ad5a157651c787e2f500fc162c325b -Author: Peter Stuge -Date: Sat Feb 26 04:21:05 2011 +0100 - - configure.ac: Refactor Windows backend settings into one occurence - - The Windows backend is used both with MinGW and Cygwin, and since most - settings are identical they can be set in one place. - -commit 717f47621d18de16b87e237f3740299f43e4ca1c -Author: Peter Stuge -Date: Mon Nov 15 19:58:51 2010 +0100 - - configure.ac: Rename AM_LDFLAGS to LTLDFLAGS and actually use them - - The new variable name tries to clarify that libtool is being used. - Linker flags must thus always be specified with -Wl. - - Factor out the libtool flag -no-undefined from host specific cases. - The flag is required to build a Windows DLL, but is correct also for - the other supported systems. - - Also, start actually using LTLDFLAGS in libusb/Makefile.am, so that - libtool will see the options set by configure. - -commit 3cbe5736469c1c52049752c137ae11387e9b079d -Author: Peter Stuge -Date: Sun Nov 21 23:38:46 2010 +0100 - - configure.ac: Clean up PC_LIBS_PRIVATE and AM_LDFLAGS - - Move linker options for when linking the library itself from - PC_LIBS_PRIVATE into AM_LDFLAGS. PC_LIBS_PRIVATE should only - contain flags needed to link applications statically against libusb. - Fixes #72. - -commit ef39d1510580b9fcbacf13443fa7a4e553a9a88e -Author: Peter Stuge -Date: Fri Feb 25 02:33:29 2011 +0100 - - configure.ac: Call AC_CONFIG_FILES() for each output file - - This avoids a problem with Windows line endings. - -commit 6e52ea067711e6e7e1b2882757fb61b11b6f8feb -Author: Peter Stuge -Date: Sun Nov 21 23:37:27 2010 +0100 - - configure.ac: Whitespace changes and trivial reordering - -commit 44b85dabc3f4efe0918a598f981675aa3765cc26 -Author: Peter Stuge -Date: Sun Nov 21 23:10:35 2010 +0100 - - configure.ac: Quote AC_COMPILE_IFELSE() input - -commit 19d5882c398e49a453ff78494db23b7f4d13c37c -Author: Peter Stuge -Date: Sun Nov 21 23:09:02 2010 +0100 - - configure.ac: Define booleans to 1 when set, instead of an empty string - - This makes the generated config.h look a lot nicer. - -commit c24649d796c8b5c97af79a41856422def2e593bc -Author: Peter Stuge -Date: Sat Oct 30 22:28:59 2010 +0200 - - configure.ac: Clean up redundancy and fix LIBS on Linux - - LIBS, AM_LDFLAGS, OS_ conditionals and THREADS_POSIX had a bit of - redundancy throughout the file, and on Linux LIBS ended up missing - the -pthread flag. - -commit 0bd4a4dd89ff64b99ab55bfc0c5782502c10c676 -Author: Peter Stuge -Date: Sat Feb 26 04:08:38 2011 +0100 - - configure.ac: Touch up Darwin and Cygwin OS messages - -commit 16cf11a1213272afd616598fa3aba0941e66ec3c -Author: Peter Stuge -Date: Sat Oct 30 22:13:05 2010 +0200 - - configure.ac: Do not use -pthread on Darwin - - It's not needed because Darwin has POSIX Threads in libc. Fixes #96. - -commit a120747d561929682cd0276ea4c13fb22fad8554 -Author: Peter Stuge -Date: Sat Oct 30 22:07:37 2010 +0200 - - configure.ac: Check for poll.h, and for nfds_t on Darwin - - On Linux, assume nfds_t is always available. - - On Darwin, fall back to unsigned int when poll() exists but there - is no nfds_t, such as on Mac OS X before 10.4. - - On Windows (both MinGW and Cygwin), always use unsigned int instead - of nfds_t, and don't check for poll.h because we use our own poll() - implementation. - -commit 21d03d12f92c0d9bd7990861ca0ebf5009f82799 -Author: Nathan Hjelm -Date: Tue Oct 5 20:08:08 2010 -0600 - - Darwin: Add support for control requests on endpoints other than 0 - - Signed-off-by: Nathan Hjelm - -commit 9bfacd760b40f1137a7835198c6028cbdaddeb18 -Author: Nathan Hjelm -Date: Tue Oct 5 23:11:50 2010 -0600 - - Darwin: Add more error checking for libusb_open() - - Now also check the CreateDeviceAsyncEventSource() return code for errors. - - Signed-off-by: Nathan Hjelm - -commit 478cd4a30728595fd742aa192d8149ee4216d4bc -Author: Peter Stuge -Date: Wed Nov 3 21:46:53 2010 +0100 - - Core: libusb_get_next_timeout() must consider all flying transfers - - If transfer->flags indicated that a transfer had a timeout, but no - timeout was actually set, then libusb_get_next_timeout() would look - no further for a timeout, ignoring any transfers later in the list - which had a timeout set. - - Since libusb has an internal 60 second timeout this bug could not - cause complete lockup, but it could cause a 60 second timeout even - when a transfer was submitted with a shorter timeout. - -commit 7802e4a3e38bcefccf96ae510ec2c6b7a959b8b5 -Author: Ludovic Rousseau -Date: Mon Nov 15 14:55:51 2010 +0100 - - Linux: Correctly catch read() errors for sysfs config descriptors - - read(2) returns ssize_t (signed) and not size_t (unsigned) or int. - - Silence "warning: comparison of unsigned expression < 0 is always false" - and fix #75. - -commit 4c7f3c8c3012bddba058afd2abdda792944fcda1 -Author: Peter Stuge -Date: Sun Jan 23 04:01:25 2011 +0100 - - Linux: Refactor cancellation into one function for all transfer types - -commit 011f1f297bc134188fab9960da1b1b9f0bd541aa -Author: Peter Stuge -Date: Sun Oct 17 08:19:56 2010 +0200 - - Linux: Refactor discarding of URBs into a function and return all errors - - The Linux backend did not always return errors according to the - libusb_cancel_transfer() documentation. - -commit 26246df19cb4d88954a5aa9ed5f6b859e451df85 -Author: Peter Stuge -Date: Sun Jan 23 04:01:01 2011 +0100 - - Linux: Set private number of URBs also for control transfers - -commit 295c9d12e25bc2dbdd8b42bd67a1f7120f0631a1 -Author: Alan Stern -Date: Sun Oct 17 06:57:06 2010 +0200 - - Linux: cancel URBs in reverse order - - In a multi-URB transfer, URBs should be cancelled in reverse order of - submission. This prevents races that might otherwise occur (after URB N - is cancelled, data may be transferred for URB N+1 before it too can be - cancelled). Fixes #8. - -commit 07df377a5df25e9c1811b554dc00eb8c40e5b995 -Author: Alan Stern -Date: Sun Oct 17 04:17:32 2010 +0200 - - Linux: report correct value for urb->actual_length - - Transferred bytes are returned correctly by the kernel for every URB, - even when an error occurs. Hence they should always be included in - the transfer statistics. The same is true for isochronous packet - length and status. - - [stuge: set itransfer->transferred so data is stored at correct offset] - -commit b26db49208c7a6ef0a99645142af21ce80c57c22 -Author: Alan Stern -Date: Fri Oct 22 11:13:34 2010 +0200 - - Linux: improve reporting of URB error status codes - - Fix the way overflow errors are handled (they can occur in any - transaction, not just the last one in a transfer) and add tests - for other commonly-occuring error statuses. - -commit efc29733ad31f81883a7ac51a6cc6cda9ad4feb9 -Author: Alan Stern -Date: Tue Oct 5 11:08:40 2010 -0400 - - Linux: improve detection of BULK_CONTINUATION kernel support - - Clarify the comments describing the BULK_CONTINATION flag, and improve - the subroutine that checks whether the flag is supported by making it - "future-proof", i.e., by working properly with kernel version numbers - higher than 2.6. - -commit bd267cf92269e0c4cd8eef795b91eefb2c63452e -Author: Peter Stuge -Date: Mon Nov 22 05:14:00 2010 +0100 - - README: Update webpage URL and add Peter's email address - -commit 845b715675703c5f1bc907f6302ece416c9f112c -Author: Peter Stuge -Date: Wed Aug 4 07:30:22 2010 +0200 - - libusb is not just for Linux! - -commit 67d9ef7b6877e17f2deec81cd41dc0948f6bed4b -Author: Nathan Hjelm -Date: Tue Oct 5 19:48:39 2010 -0600 - - Remove USBI_OS_HANDLES_TIMEOUT and fix int/isoc timeouts on Darwin - - Backends set USBI_TRANSFER_OS_HANDLES_TIMEOUT for transfers instead. - Darwin only handles timeouts for bulk and control transfers, so the - backend now sets that flag accordingly, making libusb core handle - timeouts for interrupt and isochronous transfers. Fixes #31. - - Signed-off-by: Nathan Hjelm - - [stuge: rework libusb_get_next_timeout() and enum usbi_transfer_flags] - [stuge: fix typo; set USBI_TRANSFER_TIMED_OUT flag correctly] - -commit 370922dfbe0964c0b8a0c1974bb1d7b85ac10607 -Author: Peter Stuge -Date: Sun Nov 14 03:14:00 2010 +0100 - - Silence "warning: suggest braces around empty body in an 'if' statement" - -commit 0f85015bdf87f3bca0d86ed87c9b976176640922 -Author: Konrad Rzepecki -Date: Sat Nov 13 14:09:22 2010 +0100 - - Disallow libusb_get_string_descriptor_ascii() with index 0 - - String descriptor 0 is the list of supported language IDs in the device, - which can't have an ASCII representation. Calling the function with - index 0 is thus not really useful. Fixes #43. - -commit 3b41c31d3fa2c1f93649cc5fc0f59acbf3efd5a1 -Author: Ludovic Rousseau -Date: Fri Mar 19 15:35:14 2010 +0100 - - Use const for the usbi_parse_descriptor() format string - - Constant strings should be "const char *" instead of "char *". Silence - "discards qualifiers from pointer target type" warnings. Fixes #61. - -commit 7f2e9f0776386997d2b4c4c47598ab88e3caeb7a -Author: Hector Martin -Date: Wed Aug 25 03:21:57 2010 +0200 - - Linux: Fix usbfs/sysfs config descriptor handling on big-endian - - usbfs endian-swaps, sysfs doesn't, not the other way around. Fixes #51; - descriptor endian parsing is backwards using sysfs on big-endian hosts. - usbfs is untested. - - Signed-off-by: Hector Martin - - [stuge: checked against Documentation/usb/proc_usb_info.txt] - -commit 2aa8984e59cf0f492e7fbebb8924f54f6160cc5e -Author: Ludovic Rousseau -Date: Tue Aug 17 20:53:04 2010 +0200 - - examples: #include without directory name - - The libusb-1.0 directory name belongs in the compile command, e.g. - via pkg-config --cflags. Fixes #58. - -commit 7da756e09fd97efad2b35b5cee0e2b2550aac2cb -Author: Ludovic Rousseau -Date: Thu Jun 24 10:14:24 2010 +0200 - - Add missing argument to libusb_wait_for_event() documentation, fix #55 - - In the libusb_wait_for_event() sample code in the section "Letting other - threads do the work for you" the call to libusb_wait_for_event() was not - updated by commit 1df713d622ab4f0b03aad72d903ac7beb8fb3b90, which added - the libusb_context *ctx parameter to the function, so the sample code - was broken until now. - -commit 678c242705b29f9cb6cc421b5625a6485ae58047 -Author: Peter Stuge -Date: Sat Oct 16 14:22:30 2010 +0200 - - examples: Silence warnings about return value of fwrite() - -commit 9cd9059bf9baac69a9d6c909f4c1e000592fa260 -Author: Peter Stuge -Date: Sat Oct 16 11:47:14 2010 +0200 - - Linux: Don't free() URBs prematurely on hardware error; fix #54 - - When an URB in a multi-URB transfer had an error, handle_bulk_completion() - would free all URBs and segfault once the next one completed, instead of - cancelling the remaining URBs and cleaning up as usual. - - This is basically the patch from the ticket, plus some restructuring - for increased readability of the function. - - Many thanks to Brian Shirley and National Instruments for finding and - fixing this! - -commit 116d34f608b02f4e14668450b158acf5db726f95 -Author: Pete Batard -Date: Tue Oct 5 12:43:41 2010 +0100 - - Windows: add support for filter drivers - - * precedence is driver > upper filter > lower filter, and defined - in struct driver_lookup lookup from set_device_paths() - -commit eb833fcd837e3aac2e497438b14c8612254c28ce -Author: Pete Batard -Date: Tue Oct 5 12:36:49 2010 +0100 - - Windows: fix errcode shadow warning, and string and DLL_DECLARE fixes - - * use FormatMessageA, and overall improvement of windows_error_str() - * use safe_strlen() always - * better typing/init default - * more explicit debug message for devices with no driver - -commit 1feadb5f78e1d2cdfd2aaf0011e041c2848bae37 -Author: Pete Batard -Date: Tue Oct 5 12:29:32 2010 +0100 - - Windows: use IOCTLs for HID input, output and feature reports - - * fixes feature reports not providing actual read size - (reported by Axel Rohde http://marc.info/?m=127033070021994) - * removes the USE_HIDD_FOR_REPORTS macro - * IOCTL usage inspired from HIDAPI by Alan Ott - -commit d7c25451f4075d2a12eb5cbc91ff3de8c0292da0 -Author: Daniel Drake -Date: Mon Oct 4 20:03:58 2010 +0100 - - Fix libtool version setting - - This was being set too early to take effect. - -commit a6fb54e2eef4e393bd06829bc3bdc746ea9d41a6 -Author: Mike Frysinger -Date: Mon Oct 4 20:01:07 2010 +0100 - - Populate the pkg-config Libs.private field - -commit a9b4065f048e750b7317f6434406fd528b69bf33 -Author: Mike Frysinger -Date: Fri Aug 20 00:09:46 2010 -0400 - - Linux: fix build failure when CLOCK_MONOTONIC does not exist - - This is not available on all platforms. - -commit d192c5bd32736fde0080d756de6221287af34891 -Author: Daniel Drake -Date: Mon Oct 4 18:45:18 2010 +0100 - - Update libtool version info - - With input from various people on the mailing list, update the libtool - versioning info and start to update this on every release. - - The next libusb release will not need a change here. All following ones - will. - -commit e65f69a7ef3de357c867ddaac9598efe407078b6 -Author: Pete Batard -Date: Thu Aug 5 16:40:09 2010 +0100 - - Updated documentation for unsupported Darwin/Windows calls - -commit c8bab4e19413d70c515a2eaf747a75b7f66fdc0b -Author: Pete Batard -Date: Sun Sep 19 14:24:25 2010 +0100 - - Windows: Make libusb_pollfd() return error - - Windows does not have numerical file descriptors but does have the - concept of event sources. Exposing these event sources will require - some careful thought and design, to be completed later. - -commit bd623f70d99fad8b975f8d4ee62ea4b1abf1272f -Author: Daniel Drake -Date: Sun Sep 19 14:21:01 2010 +0100 - - MinGW: Use --add-stdcall-alias linker option - - Naming of symbols inside the library is inconsistent on Windows: - http://wyw.dcweb.cn/stdcall.htm - - Use this linker option to add aliases which add compatibility with - the "MSVC DLL" platform when a DEF file is used. It also better matches - the appearance of the Windows API itself. - -commit 29f9f9e3af3340df6a955881a93caf9d2a6d08d6 -Author: Pete Batard -Date: Fri Aug 13 11:59:49 2010 +0100 - - Introduced calling convention (for Windows) - - Under Windows, a variety of compilers and configurations are available, - meaning that the manner of parameter passing (e.g. registers vs stack) - can vary. - - Match the Windows API calling convention and document this appropriately. - This calling convention will be used regardless of the configuration of - the user's development platform. - - The only user-level complication is that all functions used as libusb - callbacks must use the same calling convention as libusb. The - LIBUSB_CALL macro is provided to make this easy. - - Signed-off-by: Michael Plante - Signed-off-by: Pete Batard - [dsd: slight change of strategy, add documentation] - -commit be523f1fe7c136c3fca06ae9c96aff44a22482ba -Author: Pete Batard -Date: Fri Aug 6 21:56:04 2010 -0600 - - Windows: fix string copy in sanitize_path - - The NULL byte was not being copied. - -commit 7fd36af9f749ce8bf96f89cefd519a9f46825573 -Author: Pete Batard -Date: Fri Jul 30 00:30:31 2010 +0100 - - Windows: DuplicateHandle failure is not a warning - - This is because WinUSB handles are not duplicable, and generate a - lot of these warnings. - -commit 33cd2f68b4d500e852e354e5acae3d9a96a8ec26 -Author: Pete Batard -Date: Fri Jul 30 00:23:05 2010 +0100 - - removed trailing whitespaces - -commit e47849afe9381c864683220eac9ce7bcf43f7883 -Author: Pete Batard -Date: Wed Aug 4 18:18:32 2010 -0600 - - Windows: Mark interfaces as unused when releasing - - Without this important cleanup, the autoclaim code could attempt to - reuse an unclaimed interface as if it were already claimed. - -commit b30ca141a0bdce26e7cfdd91d346e49051532ee7 -Author: Pete Batard -Date: Wed Aug 4 18:15:59 2010 -0600 - - Windows: fix device path string duplication - -commit e8d7a89503d5655c4b04da718c6971e25ff48162 -Author: Nathan Hjelm -Date: Mon Aug 2 21:27:38 2010 -0600 - - Darwin: Cache device configuration value - - Cache device configuration value to bring the Darwin backend more in - line with the libusb spec. To handle buggy devices GetConfiguration is - not called unless the device has more than one configuration. - -commit fe5d1d2050f715ffa8cbd35a378ac969a1a01584 -Author: Xiaofan Chen -Date: Fri Jul 30 15:56:43 2010 +0100 - - Fix inconsistencies between prototypes and definitions - - This removes some warnings on cygwin regarding a name clash against - the standard library "index" function. - -commit 3b538c43e11b805a37d93b6283d270d5d5f0d1f5 -Author: Hoi-Ho Chan -Date: Tue Jul 27 21:04:17 2010 -0600 - - Darwin: handle kIOReturnUnderrun - - This return code indicates that the device returned a data packet - less than the max packet size. In libusb backend terms, this is - a successful transfer. - -commit 9a4249f8a104b98a15a7e3ba7ecae9a385ed9027 -Author: Pete Batard -Date: Sat Jul 10 17:51:13 2010 -0600 - - Add Windows support - - Via Cygwin/MinGW, libusb now has windows support. - Thanks to contributors: Michael Plante, Orin Eman, Peter Stuge, - Stephan Meyer, Xiaofan Chen. - -commit d38dd5e3d2a872f7064eea084ddea8c33811dd7d -Author: Hoi-Ho Chan -Date: Sat Jul 24 13:48:00 2010 -0600 - - Darwin: write iso transfer details into correct packets - -commit fbff5b4b665ff2ebc948162617cf7f4f5d2fabeb -Author: Nathan Hjelm -Date: Sat Jul 24 13:42:57 2010 -0600 - - Darwin: fix interface object leak - -commit dffc09835d6860ae9b6a62c39af5be346188cb05 -Author: Nathan Hjelm -Date: Sat Jul 24 13:41:03 2010 -0600 - - Darwin: clean up some debug messages - -commit 946d1abbca397b8e88a1b0b4df176dcc5e3b7348 -Author: Nathan Hjelm -Date: Sat Jul 24 13:39:16 2010 -0600 - - Darwin: Don't open devices during scan unless we have to unsuspend - -commit 3b6d9ac82e2599cad7817d21e909a42275ddc4c4 -Author: Peter Stuge -Date: Fri Jun 25 08:08:13 2010 +0200 - - Linux: Handle early complete of multi-URB transfer - -commit a516fcb99376686d2d0028e5ac69950c57a55b9e -Author: Daniel Drake -Date: Wed Jul 21 17:49:21 2010 -0600 - - Only compile dpfp examples when sigaction is available - - It's not available on MinGW. - -commit a1d831ef82e1700f4ebb9df6ca5cef74be757c08 -Author: Aurelien Jarno -Date: Tue May 25 09:32:19 2010 +0200 - - configure.ac: fix bashisms - -commit 7211aba6e290f9805e911959b2a43a4b3ec56d4f -Author: Daniel Drake -Date: Fri Jun 25 12:01:58 2010 -0500 - - Only include sys/time.h on appropriate platforms - - This header doesn't exist on windows. - For libusb, determine at configure-time if the header is available. - For libusb.h, use gcc predefined macros to only include the header - on platforms that need it. - -commit b33c3cb9651459de1f3d549677cbac67a017a295 -Author: Daniel Drake -Date: Tue Jun 22 18:45:38 2010 -0500 - - Linux: Fix log message commit - - Forgot to test this. - -commit 139648d5723190734a51c1c66ddf41c3e87adf10 -Author: Ludovic Rousseau -Date: Mon Jun 21 10:19:29 2010 +0200 - - Only initialize the default context when it is requested - -commit 22d61cd0891d8304dfc1a70579cf154fd8e6644a -Author: Daniel Drake -Date: Tue Jun 22 18:20:23 2010 -0500 - - Linux: fix log message that was being unconditionally sent to stderr (#44) - - This message was put in place to aid libusb-compat-0.1 users, who - may run into the change that libusb-0.1 allowed you to usb_open() a - device that you don't have write access to, but libusb-1.0 does not. - - As explained on the ticket this change is dangerous so it should go through - the usual logging mechanism. I also added a similar regular log message - to libusb-compat-0.1. - -commit 82065a2c5e9d5ad0b2bb28792d12462f2fa150f0 -Author: Ludovic Rousseau -Date: Thu Jun 10 18:41:27 2010 +0200 - - Fix 2 documentation typos - -commit 351c062aacdde0b0fa7972ee9b7c6b355dcee110 -Author: Ludovic Rousseau -Date: Wed Apr 21 16:49:33 2010 +0200 - - add AM_MAINTAINER_MODE - -commit a7c056c14867e1cc3ef83682f2706cdbdca7c4ce -Author: Pete Batard -Date: Thu Jun 10 17:00:25 2010 -0500 - - Factorize event handler interruption code - - This will be additionally used by the windows backend which modifies - the fd set frequently. - -commit fc0af8e3f76925ad09e0fbc6d233d500753ee375 -Author: Pete Batard -Date: Sat Jun 5 12:14:19 2010 -0500 - - Abstract low-level event handler operations - - The Windows backend uses something other than UNIX file descriptors - for event handling. Abstract out the operations to allow for this. - -commit 64383fb5b55a74b706967836e81cef61e57df86a -Author: Pete Batard -Date: Tue Jun 1 11:38:14 2010 +0100 - - fixes the possibility of using a broken timercmp on Windows - - Microsoft's implementation of timercmp does not work for >= or <=. - -commit f6d60a9a8fcf06629812da886e3a5de592624b61 -Author: Pete Batard -Date: Mon Feb 1 19:26:13 2010 +0000 - - Switched to standard int pointer type for windows 64-bit compat - - On 64-bit Windows a pointer is 64 bit, but long is still 32 bit for - backwards compatibility. - uintptr_t nicely hides this difference and also works on Linux. - - [dsd: add appropriate include] - -commit a2fa855ce3795e31905b255267874af0603168bc -Author: Michael Plante -Date: Tue Mar 9 16:39:46 2010 -0600 - - added doxygen, dpfp, msvc, and xusb stuff to gitignore - -commit 845d96a9c30b6f053208ed6b5b5d4ad1655e2026 -Author: Daniel Drake -Date: Mon May 31 19:56:34 2010 -0500 - - Add reference counting to default context - - Michael Plante pointed out that if 2 users call libusb_init(NULL) within - a process, we end up creating 2 default contexts, one of which is lost. - - Add reference counting so that the default context is reused and - destroyed only after the last user. - -commit 0e77f017fd3d1bdec4aced0429a380d3e434081b -Author: Daniel Drake -Date: Thu May 27 19:24:49 2010 -0400 - - Fix libusb_init() error handling - - 9996ccaed7 introduced a problem in that mutexes could be destroyed - in the error handling codepath before they had been created. - Pointed out by Michael Plante. - -commit b03de9d07bf9a6b0c4e6cba9ec06b5271a22e621 -Author: Michael Plante -Date: Mon May 24 11:57:10 2010 -0300 - - Modify log functions to compile with MSVC6 - - MSVC6 does not support variadics. - -commit aa77b02da65afb0332b9e6853dae9e4dcda00bfa -Author: Pete Batard -Date: Sun Feb 14 19:46:05 2010 -0600 - - Add type parameter to the list_for_each_entry() and _safe() macros - - typeof() is a GCC extension, not supported by target compilers such - as MSVC. - -commit b92b16f437079208c8dfb1dc2380893846a07ee9 -Author: Daniel Drake -Date: Wed May 19 17:37:29 2010 -0300 - - Fix a usbi_pollfd leak in error path - - I accidently missed this when applying Pete Batard's earlier patch. - Pointed out by Michael Plante. - -commit 8aceb5c99056aaed6e6f2db1b303817e37e9fe8c -Author: Pete Batard -Date: Sun Feb 14 19:47:30 2010 -0600 - - Rename all interface parameters to usb_interface or interface_number - - Remove the use of the ambiguous "interface" where possible without - breaking the API. - 'interface' is a preprocessor #define already associated with COM on Windows, - that can cause a conflict as soon as windows.h is included. - - There are a few more places where interface is still used, which should - be changed for libusb-2.0 - -commit d7031ee8e1c449af23b2674fe18d9fc652c9bd80 -Author: Pete Batard -Date: Mon May 17 19:30:27 2010 -0300 - - Stricter types and casts - -commit 9996ccaed740f8fcec4287a478ccaaa573f9865a -Author: Pete Batard -Date: Mon May 17 19:16:54 2010 -0300 - - Fixes to error handling and exit codepaths - - Various locks and things were being leaked/left open when handling - errors and during deinitialization. - - [dsd: small tweaks] - -commit 371ca4e440894bd1c845971418aa24c9d3919e63 -Author: Nathan Hjelm -Date: Thu May 13 19:38:05 2010 -0300 - - Darwin: Define IO_OBJECT_NULL if not already defined - - Needed on Mac OSX 10.3 - -commit 7ba92cff94bbba19284749c614c26141d3023f37 -Author: Hans Ulrich Niedermann -Date: Fri Jan 29 12:08:52 2010 +0100 - - libusb_cpu_to_le16: macro->static inline function - - The libusb_cpu_to_le16 macro was a ({ ... }) expression, which - generates the following compiler warning every time it is used, - (and that is several times for every #include ): - - libusb.h:880: warning: ISO C forbids braced-groups within expressions - - With this patch, #include stops generating compiler - warnings on gcc 4.4. - - As libusb.h heavily relies on the use of static inline functions - those can be relied on to work properly, and there should not be - any significant difference in the code the compiler generates. - -commit 3473ac6c6fab32202d02d87679ebdb24e7d2df98 -Author: Francesco -Date: Tue Mar 9 16:35:35 2010 -0600 - - Add libusb_strerror() to get short error message in English from enum - - [dsd: small tweaks] - -commit 5b69f3b7b0610d5f518954792ddc93332a41d292 -Author: Michael Plante -Date: Thu Feb 25 19:39:22 2010 -0600 - - Fix libusb_device::lock memory leak - -commit a636df4ca1b87ed3094a87828c022092a80ba613 -Author: Pete Batard -Date: Wed May 12 21:46:31 2010 -0300 - - Whitespace cleanup - -commit 23b5db8b3e353176dfa0635bfb6f0e2658f6e3de -Author: Peter Stuge -Date: Tue May 11 00:51:43 2010 +0100 - - Add internal abstraction for POSIX Threads - - This prepares for a Windows backend without dependency on pthreads-w32. - - pthread_* is renamed to usbi_* and PTHREAD_* to USBI_*. - - A usbi_mutex_static_t and usbi_mutex_static_lock() and _unlock() are - introduced for statically initialized mutexes, since they may be - implemented using other types when pthreads mutexes aren't used. - - Move -pthread from libusb/Makefile.am to host-specific THREAD_CFLAGS in - configure.ac. This will enable optional use of -lpthread for cygwin. - - [dsd: minor tweaks, and roll in a change based on patches from Pete - Batard to only build dpfp_threaded example when we're using pthreads] - -commit a04cbb0095a78aeed3f65aaf06c46069d0ac184a -Author: Daniel Drake -Date: Tue May 4 19:01:59 2010 -0300 - - v1.0.8 release - -commit 53b47299531974fa8901b74a163f3c8ebae4eec9 -Author: Daniel Drake -Date: Thu Apr 22 18:12:51 2010 -0300 - - Linux: don't set SHORT_NOT_OK on bulk out URBs (#20 - - Setting this flag is illegal, and the behaviour we're looking for - is already in place for host-to-device transfers without this flag. - -commit 1519828b7ee1fce46d4c51fc097d52e01b8e0bb4 -Author: Daniel Drake -Date: Tue Apr 20 20:14:09 2010 -0300 - - Linux: Handle failure to read active configuration during enumeration - -commit 45168627cc15aee3875192f34286110dbbd27095 -Author: Nathan Hjelm -Date: Tue Apr 20 19:43:06 2010 -0300 - - Darwin: don't reuse cached descriptors during enumeration - - Descriptor reuse was causing scans to return invalid information when - the device at a location has changed. - -commit 3af329db6dcbfb96d24867c757f9e125e5b7b0e5 -Author: Daniel Drake -Date: Mon Apr 19 19:36:55 2010 -0300 - - v1.0.7 release - -commit ceb8cacd6d2a4189de0db2ee46d45217511c69be -Author: Daniel Drake -Date: Mon Apr 19 19:31:12 2010 -0300 - - Document that fd set contents are an internal implementation detail (#36) - -commit 9bea500b5747bdeba7c8251d45608558e71a1db5 -Author: Martin Koegler -Date: Mon Apr 19 19:22:46 2010 -0300 - - Linux: correct config descriptor endianness fix - - The seek_to_next_config codepath deals with both sysfs and usbfs; - make sure we only convert values in the usbfs path. - -commit 02df59a309e813c50b8230de99e69fb4e1814279 -Author: Martin Koegler -Date: Mon Apr 5 17:11:32 2010 +0200 - - Linux: Fix endianness handling of usbfs config descriptors (#27) - - driver/usb/core/devio.c function usbdev_read translate the follwing files - to CPU endianess: - - le16_to_cpus(&temp_desc.bcdUSB); - le16_to_cpus(&temp_desc.idVendor); - le16_to_cpus(&temp_desc.idProduct); - le16_to_cpus(&temp_desc.bcdDevice); - - All other data is passed without any change. - - libusb/os/linux_usbfs.c calls usbi_parse_descriptor with host_endian=1 - for config descriptors. According to the kernel code, they must be - processed with host_endian=0, as they are not translated by the kernel. - - Signed-off-by: Martin Koegler - -commit ec303b01a5d4e51c000a283853af65059fa62285 -Author: Nathan Hjelm -Date: Tue Mar 23 16:22:08 2010 -0600 - - Darwin: fix enumeration of devices with non-consecutive addresses (#23) - -commit cd809e2f7cee3874b7ae16b2c482a8b63a90e4a5 -Author: Bastien Nocera -Date: Mon Mar 8 10:50:51 2010 +0000 - - Add more interface classes - - As used in bluez. - -commit 1ce4aa67d849f5cad8a21072dc1c7b42158ce817 -Author: Nathan Hjelm -Date: Thu Mar 18 11:32:32 2010 -0600 - - Darwin: Cleanup async callback code, catch request timeouts - -commit 68af9f8d731f700267335941a8214d34ab518cc8 -Author: Nathan Hjelm -Date: Thu Mar 18 11:31:46 2010 -0600 - - Darwin: fix endianness of control setup packet - - IOUSBLib expects the control request to be in host byte order. - Swap the request into host byte order. - -commit cfce4d127184f4e4f334976151a0f80594bb5e22 -Author: Nathan Hjelm -Date: Mon Feb 15 14:10:08 2010 -0600 - - Darwin: fix memory leak in process_device - - Credit to Mike Colagrosso for finding this bug. - -commit 161893cfbefefe315f657677705abe090fc526f2 -Author: Nathan Hjelm -Date: Mon Feb 15 14:09:19 2010 -0600 - - Darwin: use logging functions - - Use usbi_warn, usbi_err, and usbi_info instead of _usbi_log. - -commit 2a72f38548208044dc3aa62681419d006c35732d -Author: Nathan Hjelm -Date: Mon Feb 15 14:07:44 2010 -0600 - - Darwin: support multiple calls to libusb_init - - Credit to Orin Eman for finding this bug. - -commit a4186794d87124503db2f5f51f51ce90bb95daa7 -Author: Daniel Drake -Date: Sun Nov 22 17:20:53 2009 +0000 - - v1.0.6 release - -commit 8392ff22136fccaf1e15d186157609b8dd127bc5 -Author: Ludovic Rousseau -Date: Sun Oct 25 10:06:41 2009 +0100 - - lsusb example: make print_devs() static - - lsusb.c:26: warning: no previous prototype for ‘print_devs’ - -commit 9cc6bfaa15239bb6db1c1570b9beb6df2f848951 -Author: Ludovic Rousseau -Date: Sun Oct 25 10:05:10 2009 +0100 - - Darwin: fix warning in darwin_error_str() - - os/darwin_usb.c:63: warning: return discards qualifiers from pointer - target type - -commit 4c706d2fb6b2c43b10d72ac5dff51cac4d939f1a -Author: Nathan Hjelm -Date: Sat Nov 21 17:06:43 2009 +0000 - - Darwin: allow devices to be opened multiple times - - Allows libusb applications to access multiple interfaces of the same - device in the same application. - - Also fixes a set alt interface bug. - -commit 0232fc559cdacb9561f982dd6d28feb4435b3e4e -Author: Daniel Drake -Date: Sat Nov 21 17:01:32 2009 +0000 - - Increase libusb_handle_events() timeout to 60 seconds - - The internal timing seems to be working, this will be a better test of - it before we make this timeout unlimited. - -commit 0bd7ef5d8697973a026c36c15d6276177b4ec4ea -Author: Daniel Drake -Date: Sat Nov 21 16:57:25 2009 +0000 - - Refine timerfd header check (#18) - - Require glibc-2.9 for the working timerfd support. - -commit 90d8fcab9018b8e6887a7e0592d1e5f692117234 -Author: Daniel Drake -Date: Sun Nov 15 12:17:13 2009 +0000 - - v1.0.5 release - -commit 11d591058e3f105b0e90c23bbf58b18de691e690 -Author: Daniel Drake -Date: Sat Nov 7 10:43:59 2009 +0000 - - Update documentation about early completion caveats - -commit f796c9528a71aa55326b6f0c9c7c5ec073d2bf92 -Author: Ludovic Rousseau -Date: Sun Oct 25 09:59:51 2009 +0100 - - Add libusb_get_max_iso_packet_size() to libusb.h - - core.c:777: warning: no previous prototype for 'libusb_get_max_iso_packet_size' - -commit 4783008b7e711de9cb31631e60dda995f44068de -Author: Daniel Drake -Date: Wed Oct 28 20:33:49 2009 +0545 - - Use timerfd for timeout handling - - Use a new file descriptor from the timerfd system calls to handle - timeouts. On supported systems, this means that there is less hassle - figuring out when the poll() timeout should be, since - libusb_get_next_timeout() will always return 0 and the timeout events will - be triggered as regular activity on the file descriptor set. - - Add API function libusb_pollfds_handle_timeouts() to detect whether - you're on a platform with the timing headache, and flesh out the - surrounding documentation. - -commit 9b120c2b3735566533c179aa8ca758fe45899a38 -Author: Daniel Drake -Date: Sat Nov 7 10:03:07 2009 +0000 - - Use AM_SILENT_RULES for building - -commit ef6ea6c3ae38e4524f10e16e8cb88177d39c4826 -Author: Daniel Drake -Date: Fri Nov 6 21:54:08 2009 +0000 - - v1.0.4 release - -commit 217f57617e0cff0d1bd6d726b243f04c6b179773 -Author: David Moore -Date: Fri Nov 6 21:37:25 2009 +0000 - - Linux: Add support for the new URB_BULK_CONTINUATION flag - - Add support for the new USBDEVFS_URB_BULK_CONTINUATION flag to libusb. - - This flag, which is expected to be available in usbfs starting with - kernel 2.6.32, allows the kernel to cancel multiple URBs upon receipt - of a short packet. This capability allows libusb to preserve data - integrity of large bulk transfers that are split into multiple URBs. - Without this support, these URBs must be canceled in userspace upon - receipt of a short packet, a race condition against future transfers - which might partially fill these canceled URBs. - - This patch automatically detects whether a supported kernel is present - and enables the use of the flag when possible. - - [dsd: tweaks to supported kernel detection, and some inline - documentation of this mechanism] - -commit 69830057547396f893f0d7b3125a05d016313b10 -Author: Daniel Drake -Date: Wed Oct 28 15:13:22 2009 +0545 - - Transfer locking - - At least on Linux, there were some possible races that could occur if - a transfer is cancelled from one thread while another thread is handling - an event for that transfer, or for if a transfer completes while it is - still being submitted from another thread, etc. - - On the global level, transfers could be submitted and cancelled at the - same time. - - Fix those issues with transfer-level locks. - -commit 98f1b30d24359cb3185051b8df9ebb663cc10369 -Author: Daniel Drake -Date: Mon Sep 14 08:01:24 2009 +0100 - - Clarify that timeout 0 means unlimited timeout - -commit 858684f0dd25921e09565034a88709dbf6f6c61b -Author: Daniel Drake -Date: Fri Sep 11 22:09:12 2009 +0100 - - Linux: more flexibility with monotonic clock - - Some users have reported that CLOCK_MONOTONIC does not work on their - systems - I suspect it is available on x86 but perhaps not some - of the more uncommon architectures. We should fall back on - CLOCK_REALTIME in these cases. - - Also, CLOCK_MONOTONIC_RAW seems even more monotonic, so we should use - that if it is available. - - We now test different clock IDs during initialization to find the - best one that works. - -commit fe0d8dce1ed704915d501e7da700440c78144211 -Author: Nathan Hjelm -Date: Fri Sep 11 18:00:29 2009 +0100 - - Darwin: handle overflows - -commit f46716f42040986203fa6e873bfdabe1be2900ec -Author: Daniel Drake -Date: Thu Aug 27 21:14:54 2009 +0545 - - v1.0.3 release - -commit 5b489b8b2a5aba7b8b804e5af6d2628735548238 -Author: Toby Peterson -Date: Sun Aug 23 10:04:59 2009 +0545 - - Darwin: 64-bit type fixes - -commit ad8ae04d0b52009af0b1180e005f7554d2bbb26c -Author: Nathan Hjelm -Date: Sun Aug 23 10:02:55 2009 +0545 - - Darwin: fix crash when reading descriptors after close - - Fix a crash which occurs if the user does the following sequence on a - device: open, close, get_configuration_descriptor. - -commit 45ae2aecf5512dcff059b2a416534e81c6a00c88 -Author: Daniel Drake -Date: Sat Aug 1 13:55:15 2009 +0545 - - move bug info to bug tracker - - Protection needed: http://www.libusb.org/ticket/4 - Losing data: fixed in previous commit - -commit 126129e174062c2a27423817a459e5113f777789 -Author: Daniel Drake -Date: Thu Jul 9 22:09:04 2009 +0100 - - Linux: try harder not to lose any data - - We would previously lose any data that was present on a cancelled URB. - Work harder to make sure this doesn't happen. - -commit 0334ee642b47dfe1ca9db64b22e7702ea14b3f09 -Author: Daniel Drake -Date: Sun Jun 28 19:49:10 2009 +0100 - - Add libusb_get_max_iso_packet_size() - - As pointed out by Dennis Muhlestein, libusb_get_max_packet_size() - doesn't really do what the documentation might suggest because it - does not consider the number of transaction opportunities per - microframe. - - Add a new function to do what is useful for isochronous I/O. - -commit 615f18e64e96ae4ecc8e43d0de00933059a5209a -Author: Daniel Drake -Date: Sat Jun 20 22:33:21 2009 +0100 - - Linux: fix sending of zero length bulk packets - - Note that there are is a kernel bug preventing this from working - properly at the moment, even after this fix. - -commit 86f79fbf61c2018bdf009c7ebf92b38f3a16fd0c -Author: Nathan Hjelm -Date: Fri Jun 19 22:18:44 2009 +0100 - - Darwin: Don't cancel transfers on timeout - - ...because the OS does this for us. - -commit d4bd9ed4de19a9c766f7a23eea8c852cdd61c18f -Author: Daniel Drake -Date: Sun Jun 14 19:23:21 2009 +0100 - - Don't terminate enums with commas - - g++ -pedantic doesn't like this - Reported by Eberhard Mattes - -commit 8be256082eb9bd8e243d89529f742926bb29a21b -Author: Daniel Drake -Date: Sat Jun 13 17:19:07 2009 +0100 - - v1.0.2 release - -commit 060e006e663fd59c281be29b71eb197e02b210e8 -Author: Daniel Drake -Date: Wed Jun 10 21:42:05 2009 +0100 - - Linux: fix config descriptor parsing on big-endian systems - - Multi-byte fields in the configuration descriptors that come back from - usbfs are always in bus endian format. - - Thanks to Joe Jezak for help investigating and fixing this. - -commit c4a905022f684da9a4a853eb9232a81a53df2652 -Author: Nathan Hjelm -Date: Sun Jun 7 22:29:35 2009 +0100 - - Darwin: improve handling of disconnected devices - -commit 6b69f54451762ef590b9c938ab000c07cf9099a3 -Author: Nathan Hjelm -Date: Sun Jun 7 22:26:37 2009 +0100 - - Darwin: fix parsing of config descriptors - - This was a confusion between configuration numbers and zero-based - configuration indexes. - -commit 2b3a9ffa776b383cb2dbc3c55e490e32e4c3c22b -Author: Daniel Drake -Date: Sun Jun 7 22:19:53 2009 +0100 - - Eliminate -Wsign-compare compiler warnings - - This was due to an API inconsistency which can be safely worked around. - Hopefully we'll remember to fix the API next time we come to break - things. - -commit cad5cb55c37137e94e35c74fdabfe42a5cbd229b -Author: David Moore -Date: Wed May 27 23:15:54 2009 -0700 - - Make synchronous transfer APIs robust against signal interruption - - libusb_control_transfer and libusb_bulk_transfer are designed to be - synchronous such that control is not returned until the transfer - definitively succeeds or fails. That assumption is violated if a signal - interrupts these functions because there is no way for the application - to continue waiting for the transfer without resubmitting it. This - patch changes these synchronous APIs so they do not abort in the case of - a signal interruption. - - Signed-off-by: David Moore - -commit b501795985a23109f176d296e7b544b4c6354528 -Author: Alex Vatchenko -Date: Thu May 28 15:58:50 2009 -0400 - - pre-gcc-3.4 compatibility - - The -fvisibility and -Wno-pointer-sign options are not available on - old GCC versions. - -commit 00bb2805e994887f0a754a825c3ce03d22393386 -Author: Daniel Drake -Date: Tue May 26 15:53:26 2009 -0400 - - Fix memory leak in config descriptor parsing - - Pointed out by Martin Koegler. - -commit 068ff5b8a83fec0a9a91c80535a25b89a9ae64e8 -Author: Daniel Drake -Date: Tue May 12 19:20:51 2009 -0400 - - Update AUTHORS - -commit aa24c04e4043e39674b59ff0d302b2365cd0078f -Author: Daniel Drake -Date: Tue May 12 19:03:37 2009 -0400 - - v1.0.1 release - -commit 44767677447fae4267131f99c591b14117486cac -Author: Daniel Drake -Date: Tue May 12 19:01:44 2009 -0400 - - Add BUGS file - - Probably missed a couple of outstanding issues - -commit e0365a6f22e0e7f330ac931df031cf6f17f453d1 -Author: Nathan Hjelm -Date: Sun Mar 22 21:13:29 2009 -0400 - - Darwin: get_config_descriptor bugfixes - -commit 5fd0e8478240fece646a58a3c6114001a73be99f -Author: Daniel Drake -Date: Wed Feb 25 12:33:33 2009 -0300 - - Fix compilation of Darwin backend - - My fault. Reported by ihryamzik@gmail.com - -commit b49f6bf5c910d0fd694ecf165d7927673707bff9 -Author: Nathan Hjelm -Date: Mon Feb 16 21:39:29 2009 -0300 - - Darwin backend - -commit d859158581e9a3250f36cdeeb8ea67cda04053bd -Author: Nathan Hjelm -Date: Mon Feb 16 21:30:49 2009 -0300 - - Make endianness macros endian-independent - - Implementation suggested by David Moore. Needed for proper universal - code support on Darwin. - -commit 9196f58bdc8b9e967261df39865215faa5d39cfa -Author: Nathan Hjelm -Date: Mon Feb 16 21:25:18 2009 -0300 - - Abstract clock reading into OS layer - - This will differ on Linux and Darwin, at least. - - [dsd: minor style tweaks] - -commit e91207860cac09b3afaafc4c14221b78d585c59a -Author: Daniel Drake -Date: Mon Feb 16 21:20:28 2009 -0300 - - Fix endianness in device descriptors - - Pointed out by Nathan Hjelm. - -commit ccf6d3d2f6acf9b9a1cb5e1f1b03f382ae509b17 -Author: Nathan Hjelm -Date: Mon Feb 16 21:13:52 2009 -0300 - - Only link with librt on Linux - - [dsd: tweak configure.ac change] - -commit 894539931e4b4bd85708fe98b956049243cd6fb0 -Author: Hans Ulrich Niedermann -Date: Mon Jan 26 00:31:48 2009 +0100 - - API docs: describe libusb_transfer_cb_fn type - - Add some text describing the libusb_transfer_cb_fn function type - with the semantics I have gathered from reading other parts of - the API docs, referring to the proper section for more details. - - [dsd: tweaked the description slightly] - -commit abe34a2656f8f9f21e53603796c536585e6233ef -Author: Hans Ulrich Niedermann -Date: Sun Jan 25 18:21:59 2009 +0100 - - Make empty array in struct compatible with C99 - - If the compiler is known to be running in C99 mode, - use "flexible array members" ("foo[]"). - - If the compiler is running in any other mode, continue - using the non-standard but widely common "foo[0]" syntax. - -commit 620075c7400764d9bb539b5c02065c45c2e8251e -Author: Hans Ulrich Niedermann -Date: Sun Jan 25 18:20:45 2009 +0100 - - Avoid signedness errors in API docs example code - -commit c754ae294cfe96ec4738d6641137c9e6c56330c7 -Author: Daniel Drake -Date: Sat Jan 17 00:25:40 2009 +0000 - - Decrement poll() result when internal pipe has been handled - - When we receive data on the internal control pipe, we need to correctly - decrement the number of ready file descriptors before passing on the - remaining work to the OS implementation. - -commit b9ca960f2ba271d2b1a58e22b7c70464d69f6c8a -Author: David Moore -Date: Sun Jan 11 21:46:17 2009 -0800 - - Prevent transfer from being submitted twice or improperly canceled - - This ensures that tpriv->urbs and tpriv->iso_urbs are always set to NULL - whenever a transfer is not submitted. In this way, submit_*_transfer() - and cancel_*_transfer() can error check to ensure that the transfer is - in the correct state to be either submitted or canceled, preventing - potential memory leaks or double frees. - - Signed-off-by: David Moore - -commit d2a8ec2da8abcd8f4648ed118da16191011982dd -Author: David Moore -Date: Wed Jan 7 22:31:09 2009 -0800 - - Linux: Fix race condition in cancel_bulk_transfer() - - This fixes a race condition in cancel_bulk_transfer(). In the old - version, awaiting_reap and awaiting_discard are incremented in - cancel_bulk_transfer() and decremented in handle_bulk_completion(). - However, since these events may take place in two different threads, - these variables may reach zero before all URBs have been canceled, - triggered spurious callbacks and duplicate frees. - - This changes the logic to use a single variable "num_retired" to replace - both awaiting_reap and awaiting_discard. num_retired is incremented - only in handle_bulk_completion() and thus there is no race. The handler - will know that all URBs have been canceled when num_retired becomes - equal to num_urbs. - - This change also simplifies a great deal of the logic in both functions - and is a net reduction in the amount of code. - - Note that some variables such as "reap_action" probably need to still be - protected by a mutex, and this patch does not address that issue. - - Signed-off-by: David Moore - -commit 34b9eebe35d8167d43cffb6ad6175f6b2251b572 -Author: Daniel Drake -Date: Sat Dec 13 20:06:49 2008 +0000 - - v1.0.0 release - - It's here! - -commit b1d636dde418dc8fe6a8f037dea0d800e57c6b94 -Author: Mikhail Gusarov -Date: Wed Dec 10 15:24:05 2008 +0600 - - EOL-whitespace fixes - - Signed-off-by: Mikhail Gusarov - -commit 4a9ac382ba5149ae5b3d0962d6a840b5e0dc13aa -Author: Daniel Drake -Date: Tue Dec 9 21:43:37 2008 +0000 - - Linux: fix reading of active configuration - - Shannon Chuang pointed out that we only read 1 byte into an - uninitialized integer, and then return the whole thing. - -commit 81a7310d92461ba7b1d98aeff7c4c007fab07120 -Author: Daniel Drake -Date: Tue Dec 9 21:39:11 2008 +0000 - - Fix double free in descriptor parsing error path - - Pointed out by Shannon Chuang. - -commit 9b4b53453db56ba9c1d707a645bbe6c7a02a3c81 -Author: Daniel Drake -Date: Fri Nov 21 13:28:32 2008 +0000 - - Improvements to multi-threaded I/O system - - Documentation brushed up, and I realised that another function is - needed for tight event handling loops -- they must be able to check - if an open/close operation is trying to interrupt it. - -commit 0e5b0fcb77a90b8bd95ad23669da472af31ef069 -Author: Daniel Drake -Date: Fri Nov 21 11:00:47 2008 +0000 - - SourceForge website upload system changed - -commit a133875e6e2f52eff53ac03f505d59cbdd33e178 -Author: Daniel Drake -Date: Fri Nov 21 10:54:57 2008 +0000 - - v0.9.4 release - -commit c32aa662769b676ff3247778664fccc71fc427ec -Author: Daniel Drake -Date: Thu Nov 20 15:31:10 2008 +0000 - - Pause event handling while opening and closing devices - - Ludovic Rousseau found that crashes often occur if you close a device - while another thread is doing event handling. - - Fix this by adding an internal control pipe, which the close routines - use to interrupt the event handler and obtain the event handling lock, - ensuring that no other thread is handling events while the device is - closed. After the close completes, it signals all the event handlers - to start up again using the usual mechanism. - - Also modified libusb_open() to do a similar thing, so that event - handlers are interrupted in order to realise that a new poll fd has - appeared. - -commit 1d7cf3d0fa8698eae25097cbda1870be90ff6f5e -Author: Bastien Nocera -Date: Thu Oct 30 14:35:23 2008 +0000 - - Add libusb_attach_kernel_driver() - - Add support for re-attaching a driver to a device under Linux. - - [dsd: fixed handling of return value, and added LIBUSB_ERROR_BUSY case] - -commit 914a4e70657c86b5094770aa2d898c978b1cdf41 -Author: Daniel Drake -Date: Sun Nov 2 21:45:54 2008 +0000 - - Linux: handle low-level transfer errors - - Handle more URB error status codes, thanks to Lou and Alan Stern. - -commit d25b566b3b8febafdda4211de724b4727dd4b7e0 -Author: Aurelien Jarno -Date: Thu Sep 4 13:50:49 2008 +0200 - - Support for out-of-tree building - - Contrary to libusb 0.1, libusb 1.0 does not support out-of-tree building - for the documentation part. This patch fixes that by using a - doxygen.cfg.in file, which contains @top_srcdir@ to refer to the - location of the libusb source code. - -commit 8674c67ef78e1cf89db1fa584a4304f7c5ddcc5f -Author: Daniel Drake -Date: Sun Nov 2 15:00:39 2008 +0000 - - Document the logging style - - Suggested by Lou. - -commit 94936cbcfe3f02eb65c8b91e29896604316259d8 -Author: Daniel Drake -Date: Wed Aug 27 22:44:24 2008 -0500 - - Async I/O documentation touchups - -commit 2f8f1b1a900f5b9828e5e2ff93c2b26a44fd9de2 -Author: Daniel Drake -Date: Wed Aug 27 21:23:10 2008 -0500 - - Doc: fix typo in events lock section - -commit 046e681e4ac6b697e40458ee0f5baf3cd8763bb0 -Author: Daniel Drake -Date: Sat Aug 23 01:00:21 2008 -0500 - - v0.9.3 release - -commit fec6eaa4eecdf7e0b8299157a5dabef94417f193 -Author: Daniel Drake -Date: Sat Aug 23 00:57:44 2008 -0500 - - Reset internal transfer flags on submit - - This fixes a problem pointed out by Lou, where resubmitting a transfer - that previously timed out never timed out again, as if the timeout had - been set to 0. - -commit 81627bd38900ec9701ab69c141aa51a9abea1f60 -Author: Daniel Drake -Date: Sun Aug 10 17:09:48 2008 -0500 - - Add libusb_get_configuration prototype - - Pointed out by Lou - -commit 1631eaefcc7cdf7047c6b9225618a9aa1b3d87d1 -Author: Daniel Drake -Date: Sat Jul 19 17:51:28 2008 -0500 - - v0.9.2 release - -commit 0d9c40d7f3eee15ada624b5caab2cfb912144fdc -Author: Daniel Drake -Date: Wed Jul 16 09:22:12 2008 -0500 - - Linux: fix sysfs directory handling - - The length of the directory name varies, e.g. when you have nested hubs. - Use dynamic allocation to be able to deal with any length of name. - -commit 66c9847ad54b126ccafd4877292454ab57d0c115 -Author: David Engraf -Date: Wed Jul 16 09:16:38 2008 -0500 - - Linux: correct usage of MAX_PATH - - Thanks to clarification from Artem Egorkine, MAX_PATH already includes - space for the trailing NULL. - -commit 6494f07a6d1b73ce786ae581c4ff691e39e61d19 -Author: Daniel Drake -Date: Tue Jul 8 21:15:54 2008 -0500 - - Linux: fix bulk/iso transfer double-cancellation - - Reset counters to 0 so that it's possible to cancel a transfer twice - without breaking things. Not sure that I want to support this properly, - but this makes it work at least. - -commit 9140f5b414e37a3714cde9c6d6c87c963338a83a -Author: Daniel Drake -Date: Sat Jun 28 21:28:44 2008 -0500 - - v0.9.1 release - -commit 83a029062c1d2bfb584d7a6ee94915583d37464c -Author: Daniel Drake -Date: Sat Jun 28 21:24:49 2008 -0500 - - Add missing GET_CONTEXT() - -commit fbad9a5426f0369394c88987355a8fb06a741ca1 -Author: Daniel Drake -Date: Sat Jun 28 21:18:41 2008 -0500 - - Linux: Compatibility with new sysfs descriptors file - - As of 2.6.26, the descriptors file now includes all descriptors, not - just the active one. - -commit 819e65f880ca43526036e56c65c415042c91f58f -Author: Daniel Drake -Date: Thu Jun 26 22:47:05 2008 -0500 - - Allow user data pointer to be passed through pollfd notification API - -commit 1df713d622ab4f0b03aad72d903ac7beb8fb3b90 -Author: Daniel Drake -Date: Tue Jun 24 23:01:51 2008 -0500 - - Introduce contexts to the API - - Suggested by David Zeuthen. This allows multiple libraries in the same - process to independently use libusb without interfering. - -commit 9818151c60a85aea6af24cb0996a92c3726c9864 -Author: Daniel Drake -Date: Tue Jun 24 21:31:13 2008 -0500 - - Revert "Temporary workaround for event handling serialization issue" - - This reverts commit 2d3a1111caff40ebb87983c861ff548cdc9e5946. - This was based on the assumption that dying threads would automatically - release mutexes, which is not the case. - -commit d5f82893fab3f1c13b1af4ba17aac72479bad7d5 -Author: Daniel Drake -Date: Fri Jun 20 23:04:53 2008 -0500 - - Overflow handling - -commit 546dee211eefbdd280fd1fc9dee84a9b52105078 -Author: Artem Egorkine -Date: Tue Jun 17 18:27:38 2008 -0500 - - a fix for SIGSEGV in handle_bulk_completion() - - We cannot dereference tpriv after calling - usbi_handle_transfer_cancellation() because that function may invoke - the user-supplied callback which may free the transfer. - -commit 947ba8056456a5215724fb502e3e09d50016f699 -Author: Daniel Drake -Date: Mon Jun 16 22:50:50 2008 -0500 - - Refine configuration selection again - - At Alan Stern's suggestion, just offer the bare "set configuration" and - "get configuration" functionality, and let applications worry about the - specific race conditions and unusual situations. - -commit e7a7a49d0331ee0e14145f6e7ec39763b36314ac -Author: Daniel Drake -Date: Sun Jun 15 15:29:38 2008 -0500 - - docs update - - Add a THANKS file, make copyright notices easily accessible, update TODO - -commit 217534e4b396081e038ee5f94c813d1668963673 -Author: Daniel Drake -Date: Sun Jun 15 15:23:29 2008 -0500 - - round up poll timeout - - Pointed out by Richard Röjfors, otherwise we end up busy-looping with - a poll() timeout of 0. - -commit 5ad79b324bc5e11a75a585398a1e81c26f05e758 -Author: Felipe Balbi -Date: Sun Jun 8 12:34:48 2008 +0300 - - fix doc about libusb_open() - - libusb_open() returns int instead of libusb_device_handle. - - Signed-off-by: Felipe Balbi - [dsd: small correction] - -commit 2d3a1111caff40ebb87983c861ff548cdc9e5946 -Author: Daniel Drake -Date: Thu May 29 17:26:26 2008 +0100 - - Temporary workaround for event handling serialization issue - - Ludovic Rousseau pointed out that libusb_unlock_events() is not called - when a thread gets terminated with a signal, meaning that event waiters - will not be woken up in this case. - - Add a temporary hack to libusb_event_handler_active() so that at least - the other threads will realise on the next iteration of their event - handling loop. - - The real fix will likely involve reworking most of this. - -commit 514bb8790cfe8b93ccfff82bc17081b1030acce0 -Author: Daniel Drake -Date: Thu May 29 12:35:01 2008 +0100 - - Refine libusb_set_configuration() semantics - - Applications will generally want to set a configuration before claiming - interfaces. The problem is that the interface may already be set, and - someone else may have claimed an interface (meaning that all calls to - set_configuration will fail, even if it's for the same configuration). - - There are now 2 options: - 1. Use the new libusb_get_configuration() to determine active - configuration before calling libusb_set_configuration() - 2. Or just call libusb_set_configuration() as usual, which will do - nothing if that configuration is already active. - -commit d1292f8e7300051239a7ed2769d221dc7a6f9fca -Author: Daniel Drake -Date: Sun May 25 23:42:42 2008 +0100 - - v0.9.0 release - - First libusb-1.0 beta release - -commit 4cd249388e4ed2ca03f1263984ab67df5030bb65 -Author: Daniel Drake -Date: Sun May 25 22:59:09 2008 +0100 - - Take lock before raising event waiters condition - - This avoids a race between the user checking for active event handler - and then blocking on the condition variable - -commit 7c525480ab3c4db9205bfe30bb0d2bef9096c444 -Author: Daniel Drake -Date: Fri May 23 15:57:07 2008 +0100 - - Implement serialization of event handlers - - Now offers a mechanism to wait for events while another thread is - doing the event handling. Complicates things for MT async apps, but - then again it's a bit of a tricky combination to start with. - -commit ff0660a415ecfd0879600eaad1c5899b6d93a30a -Author: Daniel Drake -Date: Sat May 24 21:28:31 2008 +0100 - - allow LIBUSB_DEBUG env var to control message verbosity at runtime - - Based on ideas from Ludovic Rousseau - -commit 4d788967e3f8d75eaf3a1ac1ee8e2e8bed0601c1 -Author: Daniel Drake -Date: Fri May 23 15:58:11 2008 +0100 - - don't print messages by default - - Add libusb_set_debug() API to set message verbosity. - - Ludovic Rousseau pointed out that applications may close stdout/stderr - descriptors, which might then be reused. - -commit bef33bb9eba0da04ee7488d9cd5e6ab12bc61c0c -Author: Daniel Drake -Date: Mon May 19 15:43:27 2008 +0100 - - Fix memory leak in libusb_control_transfer - - Pointed out by David Engraf: we weren't freeing the transfer buffer - -commit a345bacb6f07ebb2122402041a9e8092d4a20a4d -Author: David Engraf -Date: Mon May 19 15:16:32 2008 +0100 - - Linux: fix handling of ioctl failure - - The return value of some ioctl commands in linux_usbfs.c are not - handeled correct. The ioctl function returns != 0 and errno is set with - the error code. - -commit e44396a458ecea9e5edd9a7577e617571c76860d -Author: David Engraf -Date: Mon May 19 15:13:38 2008 +0100 - - critical memory leak in handle_events - - This patch closes a critical memory leak in handle_events. The fds - variable is malloced but never freed. When I'm calling - handle_events with a timeout of 0, my system runs out of memory after a - few seconds. - -commit eb25630f52bc9848b444e439632c899977d887b0 -Author: Daniel Drake -Date: Fri May 16 23:50:20 2008 +0100 - - More informative libusb_open() return code - - Hopefully one of the last API tweaks... - -commit 2b2e9c40b195261b09ac52ebdb93eef25c79de90 -Author: Daniel Drake -Date: Fri May 16 22:37:56 2008 +0100 - - Fix endianness with descriptor handling - - Alan Stern pointed out that usbfs gives host-endian data, but sysfs gives - bus-endian. - -commit 1298c51f516a7bf04ca9add1b7db14417cdc66f3 -Author: Daniel Drake -Date: Mon May 12 18:46:37 2008 +0100 - - Backend documentation for porting efforts - - Hopefully comprehensive enough for people to get started. - -commit ade26afc42c34ceb1c45afcadd2ea5e8240eaca4 -Author: Daniel Drake -Date: Mon May 12 15:43:30 2008 +0100 - - Linux: fix caching of guessed configuration - - Reported and tested by Xiaofan Chen - -commit e25d590a9198995b4f0b6afeb41ecae318715e7e -Author: Rob Walker -Date: Sun May 11 21:14:18 2008 +0100 - - Linux: fix bulk transfer early completion - - We were forgetting about the remaining urbs when a non-final urb - completed early. - - [dsd: some touchups and a warning message for a corner case that we don't handle] - -commit fec7c84163e25b8f811632828334d75da82bcb16 -Author: Daniel Drake -Date: Sun May 11 20:31:58 2008 +0100 - - Handle hot-unplugging - - This involved moving from select() to poll() because there is no way to - distinguish usbfs's POLLERR condition with select(). - -commit aeb905fa5d78cdbba80a680aa7a2bb7338f27f65 -Author: Daniel Drake -Date: Sun May 11 16:04:35 2008 +0100 - - Documentation work - -commit ba5d9a45c06311204f51faef41d1ee215bb5b823 -Author: Daniel Drake -Date: Sun May 11 15:36:24 2008 +0100 - - Endianness of control setup packets - - Document behaviour where host-endian and bus-endian (little) should be - used respectively. - - Also remove packed attribute from libusb_control_setup as all fields - are naturally aligned. - -commit 7bedc3b2683f35ee1dd39a2ebe0ec05be0019f38 -Author: Daniel Drake -Date: Sun May 11 15:11:59 2008 +0100 - - Document that releasing interface causes SET_INTERFACE control request - -commit f2ede9876cd4f5cfa7751b975670fa449187fe3d -Author: Daniel Drake -Date: Sat May 10 21:45:42 2008 +0100 - - Support unconfigured devices - -commit 8ebb4ccdfaf5f095a1c38787d909d280ea64405c -Author: Daniel Drake -Date: Sat May 10 20:56:44 2008 +0100 - - Linux: fix caching of active configuration for non-sysfs - -commit c3844f7aeb2176636ce6e6ef697659fdb0b30048 -Author: Daniel Drake -Date: Sat May 10 14:42:43 2008 +0100 - - Fetch configurations by index (not value) - - Otherwise there is no way to know which values to look for. - -commit d77052c0d630e33737c38d601fd633155f6b2229 -Author: Daniel Drake -Date: Sat May 10 00:12:53 2008 +0100 - - Linux: comprehensive sysfs vs usbfs access - - Be more flexible when certain parts of sysfs are not available. - -commit 74bc842bac1a32a26323da6c3e8af2f66e1b5cfa -Author: Daniel Drake -Date: Fri May 9 19:38:13 2008 +0100 - - Linux: no need to store usbfs node path - - This can be computed from bus number and device address - -commit fe4adcc99e30115204ab832ad3e0170c9aca7629 -Author: Daniel Drake -Date: Fri May 9 14:34:31 2008 +0100 - - Rework configuration handling - - libusb no longer caches descriptors in libusb_device but backends are - intended to be able to provide copies from memory. In the common linux - case we can use sysfs. - -commit 5741bfe01a2481b8c3830c80edc3637bf62a7e16 -Author: Daniel Drake -Date: Fri May 9 14:36:14 2008 +0100 - - libusb_get_device_list() can return negative error code - -commit 45413101b78298e9332b22a34bc6bc159000ad8a -Author: Daniel Drake -Date: Thu May 8 23:09:21 2008 +0100 - - Linux: fix clear_halt implementation - - The ioctl expects an integer. - Bug found with the assistance of Soumen Mondal - -commit 10d4e427cc171dfd6ad7f43a33ce3cfebcd7aa04 -Author: Daniel Drake -Date: Thu May 8 23:04:52 2008 +0100 - - Documentation work - - Partially based on some libusb-devel discussions - -commit ded0a249322571a075e3ed3528021864247dfa55 -Author: Daniel Drake -Date: Mon May 5 22:57:48 2008 +0100 - - Linux: enumerate devices and descriptors from sysfs - - Suggested by Alan Stern. This avoids waking up any suspended USB devices. - sysfs is not available on all systems, so the usbfs mechanism is still - in place as a fallback. - -commit 885c2a5de69d6b7d8902bb55d6d83680a5a1a6e5 -Author: Daniel Drake -Date: Mon May 5 21:34:31 2008 +0100 - - documentation touchups - -commit 59c205d542b43d79fe28622dbe8f03a3a3300b6f -Author: Daniel Drake -Date: Mon May 5 21:17:03 2008 +0100 - - more error code sanitization - -commit 88055d4b5913102a90ff666f75fd922c74860dc5 -Author: Daniel Drake -Date: Mon May 5 20:57:43 2008 +0100 - - Isochronous transfer helper functions - -commit a95c943ed301dcd20e92b0b3b255568899a4c42e -Author: Daniel Drake -Date: Mon May 5 17:54:33 2008 +0100 - - free open devices on exit - -commit b27fff633843824744df7d334cb89ece329cafa6 -Author: Daniel Drake -Date: Mon May 5 17:47:49 2008 +0100 - - move descriptor parsing into main library - - OS modules now provide functionality for fetching device/config - descriptors - -commit a304eca71f22c6df7d70a901483b30f1b8e93378 -Author: Daniel Drake -Date: Mon May 5 16:22:33 2008 +0100 - - Detect endpoint halts and unsupported control requests - -commit 7da521954ba661d3f537440c31a84b66e974d56b -Author: Daniel Drake -Date: Mon May 5 01:00:31 2008 +0100 - - Linux: fix logical URB allocation - - We were allocating the wrong number of URBs for transfers of size - multiples of 16k. - -commit 470b1bc42bf53373ce678fc76bab9160a54d6881 -Author: Daniel Drake -Date: Sun May 4 16:51:23 2008 +0100 - - add functionality for querying and detaching kernel driver - -commit 17ecfb0ecc833596c43755c80d461cddb9b3b0d7 -Author: Daniel Drake -Date: Sun May 4 16:20:46 2008 +0100 - - Descriptor reading functionality - -commit bdce367d1bd8691465844b2411c85215498f517d -Author: Daniel Drake -Date: Sun May 4 14:22:16 2008 +0100 - - sanitized error returns from synchronous I/O functions - -commit bfe74e9cd9c17a40fff042ea0647326f51cfecae -Author: Daniel Drake -Date: Sun May 4 14:10:19 2008 +0100 - - implement libusb_reset_device() - -commit c01f744ce07bbeccbe353e956479f0cc5a811a6f -Author: Daniel Drake -Date: Sun May 4 13:46:41 2008 +0100 - - Add functionality to clear endpoint halt conditions - -commit 5878daa85e3364bb3885190425d4f9deaa2d8c36 -Author: Daniel Drake -Date: Sun May 4 00:51:59 2008 +0100 - - Fix libusb_get_device_list return value - - It was documented to return the list length, but was returning 0. - -commit a74106a9b48b88bae0e099be34a18d653a8f1238 -Author: Daniel Drake -Date: Sat May 3 16:50:58 2008 +0100 - - Well-defined error codes for some operations - - Also renamed set_interface_altsetting to set_interface_alt_setting for - better consistency - -commit 0f463fe671455670efcf4a93e526b2a9082b0afe -Author: Daniel Drake -Date: Sat May 3 16:24:11 2008 +0100 - - Add libusb_set_configuration() - -commit e65608994f795f97e4d6adac20329ca08709db2d -Author: Daniel Drake -Date: Sat May 3 15:40:23 2008 +0100 - - rename LIBUSB_ERROR_NOMEM to LIBUSB_ERROR_NO_MEM - improves consistency - -commit 5384bbf300779e7936eac9ebd33ee38f5b533f8e -Author: Daniel Drake -Date: Sat May 3 14:34:54 2008 +0100 - - Linux: better EACCES handling - -commit 1936eeeba3f933a078df1005cc7c1533a8ec2bac -Author: Daniel Drake -Date: Sat May 3 14:26:56 2008 +0100 - - Rename reference counting API - - This improves consistency with the naming style of other functions - -commit e2f822b4f17342f614ab2455179a80975fca6cb0 -Author: Daniel Drake -Date: Sat May 3 14:24:40 2008 +0100 - - Linux: use read-only access to enumerate devices and descriptors - - Write access is not needed until later. - Also fix handling of open() error code. - -commit 81204eed3d0a7744b89b68bd90d567b68d191a91 -Author: Daniel Drake -Date: Fri May 2 17:45:23 2008 +0100 - - document pollfd notifiers - -commit e20f8281fb7da32587f81b5eea5818af1eab0fe0 -Author: Daniel Drake -Date: Fri May 2 17:33:52 2008 +0100 - - Allow multiple interfaces to be claimed - -commit 66685ff25d81a1f1a2a3dbda882d407638d00672 -Author: Daniel Drake -Date: Fri May 2 16:55:36 2008 +0100 - - Documentation improvements - -commit 55bce39cbe0c9746a428b66751d1afe551d86381 -Author: Daniel Drake -Date: Fri May 2 12:55:34 2008 +0100 - - detect short descriptor reads - -commit f3f17846dcced6b2dc40f899ed6a2aba151c264b -Author: Daniel Drake -Date: Fri May 2 12:32:46 2008 +0100 - - remove "references" and "referenced by" listings in documentation - -commit fbb017dd9a26ce449578482b95157b3c850fa446 -Author: Daniel Drake -Date: Fri May 2 12:32:08 2008 +0100 - - Use typedef ptr types in parameters and return types - - This is passed through to the docs - -commit 3675e978fb7a1042f8601931255658bcd14a2298 -Author: Daniel Drake -Date: Fri May 2 12:28:31 2008 +0100 - - Expose bus number and device address - -commit 2012898ffc492317cb428d97077bf5ee0e98e1da -Author: Daniel Drake -Date: Tue Apr 29 15:26:46 2008 +0100 - - standardised error codes - -commit 0269c75ae3de7acb2dc555e45928750e35fdb320 -Author: Daniel Drake -Date: Tue Apr 29 13:34:26 2008 +0100 - - Fix descriptor handling memory leaks - -commit d3ab4e3bd4068cba41c1e12c4b175018dc3cb343 -Author: Daniel Drake -Date: Sun Apr 27 23:50:01 2008 +0100 - - Rename endpoint_type to transfer_type - - Matches the USB specs more closely - -commit 379e90e0fdcef6f4db1849fa0a7fd524407cf564 -Author: Daniel Drake -Date: Sun Apr 27 23:41:24 2008 +0100 - - Remove a FIXME comment - - it can't. - -commit 2ddf81420557d016bbcbf28dda0d8d1c64d16264 -Author: Daniel Drake -Date: Sun Apr 27 23:30:34 2008 +0100 - - Fix unlocked flying_transfers list access - -commit 7ac0a405b4c57db42e88cbcba5f135697f03b646 -Author: Daniel Drake -Date: Sun Apr 27 23:27:04 2008 +0100 - - Remove libusb_cancel_transfer_sync - - This wasn't a particularly nice API. Cancellation should be handled by - the completion handler. - -commit a5006fd7b9dae6f1db7969c8744086ba3a7c027b -Author: Daniel Drake -Date: Sun Apr 27 19:56:02 2008 +0100 - - remove extra timeout check - - If select() didn't timeout then don't check for more timeouts - -commit 3bdafaa359d9c65e1af360b5338e1f25528a8066 -Author: Daniel Drake -Date: Sun Apr 27 19:53:51 2008 +0100 - - Documentation touchups - - Detail that interrupt polling interval is fixed to endpoint bInterval, - and that data may be transferred even on a timeout condition. - -commit e12618c79d520955b1abf80a277e881d91907162 -Author: Daniel Drake -Date: Sat Apr 19 16:17:53 2008 +0100 - - add threaded example program - -commit 1fcdb0678b759569db7cd530457dbc0a5f86fb1d -Author: Daniel Drake -Date: Fri Apr 18 23:58:54 2008 +0100 - - libusb_device mutex protection - -commit 0efd2efa65d5513e5754d717d522b2c5c45332e2 -Author: Daniel Drake -Date: Fri Apr 18 23:42:40 2008 +0100 - - mutex protection for device and handle lists - -commit d2ff2b14a15e5099ff0214502944de30f141a39c -Author: Daniel Drake -Date: Fri Apr 18 20:00:31 2008 +0100 - - lock flying_transfers during transfer removal - -commit 2569980762cb66804da31e54bef243702da8dfe9 -Author: Daniel Drake -Date: Fri Apr 18 19:59:56 2008 +0100 - - pollfds mutex protection - -commit f5a33e08ec0da51ccb5e95a5adec50c5211a9bf5 -Author: Daniel Drake -Date: Thu Apr 17 18:24:54 2008 +0100 - - flying_transfers mutex protection - - This marks the beginnings of thread safety - -commit 85e1994123545125ce0653415d122f9790f8d041 -Author: Daniel Drake -Date: Thu Apr 17 17:44:28 2008 +0100 - - Linux: fix control transfer cancellation - -commit cf9b831f7bfd97ba88721c1d934aeda522f3692c -Author: Daniel Drake -Date: Mon Apr 14 20:03:27 2008 +0100 - - set correct endpoint type for isochronous transfers - - Pointed out by Felix Domke - -commit ad6e2b712c5b54af44424e58a2776686314e26b7 -Author: Daniel Drake -Date: Fri Apr 11 21:40:07 2008 +0100 - - Linux: fire multiple URBs at once for split transfers - - This results in a significant performance increase for bulk transfers - larger than 16kb, and fixes a bug where data would be spliced and mixed - between two simultaneously submitted transfers to the same endpoint. - - It also allows isochronous transfers larger than 16kb to be submitted. - - This commit also improves cancellation - the library now understands - what is going on. - -commit d9b2ce2894ed43d34de6850f2dac50ccabf1db55 -Author: Daniel Drake -Date: Tue Apr 1 23:28:32 2008 +0100 - - Constify some return data - - Make it clear that apps should not mess with these structures - -commit 8d809854e2b19c2b7c27ab05e5d76b34e2a5cead -Author: Daniel Drake -Date: Sun Mar 30 22:19:00 2008 +0100 - - Rename libusb_poll() to libusb_handle_events() - -commit 211f80c9f2a4a58cd2bbf5b7751f45089c8961e7 -Author: Daniel Drake -Date: Tue Mar 25 16:24:30 2008 +0000 - - Isochronous endpoint I/O - - Due to variable-sized structures, this involved changing allocation - mechanism. All transfers must now be allocated and freed through - libusb. - - A synchronous function is missing, and I could do with writing a few - more helper functions to simplify things. - -commit b1ade6fca668d8aa156d5b5bf3a933f116144dc2 -Author: Daniel Drake -Date: Sun Mar 23 21:17:32 2008 +0000 - - distcheck fix for docs - -commit 62077b7fa5b222e1bb9dea3467585aed69d596e2 -Author: Daniel Drake -Date: Sun Mar 23 21:13:14 2008 +0000 - - Support for changing altsetting - - Will probably be suject to later consideration w.r.t. claiming of endpoints - -commit 0499e9f418607b5786ac0c3e97bc46737a609ca3 -Author: Daniel Drake -Date: Thu Mar 20 21:10:01 2008 +0000 - - it's called bmRequestType - -commit 88884ae4bbe721dac117d5190303cb67852fa5d3 -Author: Daniel Drake -Date: Thu Mar 20 21:07:00 2008 +0000 - - Save transfer flags before invoking callback - - The callback may free the transfer, in which case we can't read the flags - after it has returned. - -commit ead09cde6895df0034a685516987ce253575e9a7 -Author: Daniel Drake -Date: Sat Mar 15 16:35:12 2008 +0000 - - API documentation - - Hopefully mostly complete. Some constants were renamed and move into - enums. - -commit 285724cc14ea5f993e2c4c92fe0aaf6c335bc139 -Author: Vasily Khoruzhick -Date: Sat Mar 15 13:50:53 2008 +0200 - - Fix get_device_list for realloc case - - get_device_list can modify pointer passed to it with realloc, but this - case wasn't handled and caused crash on my machine. Fixed - - Signed-off-by: Vasily Khoruzhick - -commit c0c9432d38b22784070dce3a7874c62c31786a27 -Author: Daniel Drake -Date: Thu Mar 13 12:36:56 2008 +0000 - - Beginnings of cross-platform abstraction - - This also includes a libusb_get_pollfds API change - -commit de4c5341d168697baa4c0901c406deb47e78aae7 -Author: Daniel Drake -Date: Mon Mar 10 18:38:15 2008 +0000 - - Add transfer flags - -commit aae05f688dc26a013166ab9436fd25018b49d76a -Author: Daniel Drake -Date: Mon Mar 10 11:32:15 2008 +0000 - - Simplify libusb_fill_control_transfer() - - Transfer length can be inferred from the setup packet. - -commit 7c5ea95297c2f3f6afc42f60c1bf1bef777bb1fb -Author: Daniel Drake -Date: Mon Mar 10 11:29:24 2008 +0000 - - get_device fixup - - Rename API away from "devh" and fix implementation to match header - -commit 9e89d1aa82cbe7e21672ee3e2e545238fffc5318 -Author: Daniel Drake -Date: Sun Mar 9 16:27:06 2008 +0000 - - Rename descriptor-getting functions - - Based on feedback from Tim Roberts - -commit 283ae96c3ccbcee1c3950fce18ae47093ae8200e -Author: Daniel Drake -Date: Sun Mar 9 16:15:02 2008 +0000 - - Simplify cancellation API - - No need to provide the device here. - -commit ebad1c79688ba603ad017ed0fe2f3c0dc8edd1ad -Author: Daniel Drake -Date: Sun Mar 9 16:12:08 2008 +0000 - - Rename libusb_dev_handle to libusb_device_handle - -commit 1ac0a7d88f282b6f293c456fac8edb143cbaca3d -Author: Daniel Drake -Date: Sun Mar 9 01:01:57 2008 +0000 - - Move synchronous I/O implementation to its own file - -commit 66348c90ea4570bf999ac301089e006d0cce1926 -Author: Daniel Drake -Date: Sun Mar 9 00:58:09 2008 +0000 - - Separate transfer allocation and submission - - Leads to some hefty API changes. Now we're much more similar to the - Linux kernel model. - - Problems with dealing with asynchronous control transfers are passed - on to the user, basically you must allocate a buffer, start with the - setup, and put the data after. This won't make much sense until - documented (soon...) - -commit d21ebe47ce578c93cd8969be1c933d503e32e5d4 -Author: Daniel Drake -Date: Sat Mar 8 12:48:35 2008 +0000 - - Rework URB API naming - - Now refer to everything as "transfers" as consistent with the USB spec - libusb_transfer is now a kind of transfer handle. To reduce confusion - with libusb_bulk_transfer and libusb_control_transfer, those have been - renamed to libusb_{control,bulk}_transfer_request. - -commit fd6fb3cc093ad47271353a0e468d16547f991382 -Author: Daniel Drake -Date: Sat Mar 8 11:53:33 2008 +0000 - - Add fallback on /proc/bus/usb - - /dev/bus/usb is a relatively new thing probably not present on every - system - -commit f3fdf447916289cd92b7190377681894e8ab611a -Author: Daniel Drake -Date: Sat Mar 8 00:10:16 2008 +0000 - - Persistent libusb_device storage - - Devices are now assigned a session ID (currently busnum:devaddr) which - is used to distinguish unique devices. - - Now multiple callers of libusb_get_device_list will get the same - libusb_device structure instances. - -commit 23f8fb8bafeeda93ce234cb40eb7219d2e36c19c -Author: Daniel Drake -Date: Thu Mar 6 23:43:57 2008 +0000 - - Add convenience function to find and open a device by USB VID+PID - - Lots of libusb apps I write are simple test apps not intended to be real - apps. Having a function available to quickly locate my device will be - handy in such situations. - -commit 9cfdb494fccac53a4277da7c8b6d15f1a72a4959 -Author: Daniel Drake -Date: Thu Mar 6 23:25:20 2008 +0000 - - Rework device discovery API - - libusb_find_devices and libusb_get_devices are no more - - libusb_get_device_list obtains a list of libusb_device structures for all - known devices in the system. - - Each libusb_device now has a reference count, defaulting to 1 on - instantiation. The reference count of 1 refers to the fact that it is - present in the list in this scenario. - - Opening a device adds a pointer to the libusb_device structure in the - handle, so that also adds a reference. Closing the device removes that - reference. - - The function to free the device list can optionally unref all the devices - inside. - - In future we will make the libusb_device instances all "global" so that if - the app calls get_device_list twice it actually gets the same libusb_device - structure references back. This way we can start to track disconnects, and - we can investigate adding a unique "session ID" to each libusb_device, an - identifier guaranteed to be unique to that device until reboot. - -commit 77cea822788e024c848c7f554915f771a2dc1e0f -Author: Daniel Drake -Date: Thu Mar 6 17:05:04 2008 +0000 - - Remove ctrl debug code - - This was unintentionally committed - -commit b873521a6f575628d535f89278bb67888004d0ca -Author: Daniel Drake -Date: Tue Feb 26 22:11:34 2008 +0000 - - Notifications for changes to the fd set - - Applications can now be notified when they should start and stop polling - new file descriptors. - -commit ca66e16a370c828d08a5bc3f9f203db145c81a4c -Author: Daniel Drake -Date: Fri Feb 1 12:20:20 2008 +0000 - - Fix header installation path - -commit e583100a4086c411093eef5c450880b965df6b1b -Author: Daniel Drake -Date: Wed Jan 30 13:24:54 2008 +0000 - - TODO update - -commit 637a8d7ff8a11a23588925d9d3003a609bda8075 -Author: Daniel Drake -Date: Wed Jan 30 13:19:10 2008 +0000 - - Remove timers and signalfd - - Instead of timers, add a mechanism for informing the parent app when the - next timeout is due to happen, so that it can call us at that time. - - As we no longer use signals, signalfd has also been removed. - -commit 8c56abe2e13ed4dd8c15737c21be7b6b1e5cf2ac -Author: Daniel Drake -Date: Sat Jan 26 18:16:56 2008 +0000 - - Poll usbfs descriptors directly - - We don't need to use signalfd for this functionality because we can poll - the file descriptors for write events. - -commit e3ce855acec33d37dd833bca5dad5e8c3773003a -Author: Daniel Drake -Date: Sat Jan 26 17:26:40 2008 +0000 - - Fix dpfp example compilation - -commit 1d41a5cda2fefe826877ee4445199af30aa188b7 -Author: Daniel Drake -Date: Sat Jan 26 17:22:53 2008 +0000 - - C++ header safety - - Pointed out by JF - -commit 37b7f9a112eb1441d352467f661205b8872d0553 -Author: Daniel Drake -Date: Sat Jan 26 14:03:43 2008 +0000 - - Only use -fgnu89-inline when supported - - J F pointed out that this option only works on gcc 4.3 and newer. - -commit e3a09ca0b9cb6f46d54a0130f678c6097240a2bd -Author: Daniel Drake -Date: Sat Jan 5 21:59:40 2008 +0000 - - Remove more fpusb remnants - -commit dcd5e0075fa84601d997d29bb60bc8370b97a375 -Author: Daniel Drake -Date: Fri Jan 4 01:19:07 2008 +0000 - - TODO update - - Start listing the things I want to discuss/reconsider before 1.0 API - is final. - -commit de53d972ed9c1f21f86ffd585560520e986f212c -Author: Daniel Drake -Date: Fri Jan 4 01:17:06 2008 +0000 - - Rename some _devh_ functions - - Decided against naming functions in this style based on advice from - Tim Roberts. Still not really sure about devh naming in general. - -commit 132d84bf8ae34bd0892b3d8207a53d87cc0a9cba -Author: Daniel Drake -Date: Fri Jan 4 01:13:25 2008 +0000 - - Use "transfer" instead of "msg" - - Based on a discussion with Tim Roberts. - -commit ea6af58a8643137eb01eeb7d2f65404e390feb1b -Author: Daniel Drake -Date: Fri Jan 4 00:57:00 2008 +0000 - - Plural of bus is busses - - SF #1633043 - -commit dbb3fd871e3972b4e670f3161e7cd2f58f357600 -Author: Daniel Drake -Date: Fri Jan 4 00:54:57 2008 +0000 - - API renaming: remove fpi and usb_ stuff - - fpi changed to usbi. - - We should not expose structures with prefix "usb_" in the public - namespace as it is quite likely there will be some conflict somewhere. - Instead, using "libusb_" should be safer. - -commit e9364d72151ae1de9cce4175f330fe1529f02511 -Author: Daniel Drake -Date: Fri Jan 4 00:40:49 2008 +0000 - - Rename to libusb-1.0 - - I've taken over the libusb project, and what was previously known as fpusb - will eventually be released as libusb-1.0. - -commit f4ed0b6a3e0a20555fdfc9e9b8be7e8a2c8ae192 -Author: Daniel Drake -Date: Sun Dec 30 22:09:50 2007 +0000 - - Compiler flags update - - Also fix some warnings - -commit d3d671efe27491baf1d2ceadbfeeb4e7428d6f9a -Author: Daniel Drake -Date: Sun Dec 30 22:05:17 2007 +0000 - - Fix signalfd structure size on x86 - - ptr is a 64-bit value - -commit dfac6756faad76071a92945e3e3a16b8a841a7ea -Author: Daniel Drake -Date: Wed Dec 12 23:32:54 2007 +0000 - - Don't pass ctrl_msg/bulk_msg structures through async paths - - These are easiest to construct on the stack, but in the async case it is - likely that the submitting function returns (hence stack is destroyed) - before URB completion. - -commit a8d2881eb7c273892acf2ff6e1f3f552631d1d11 -Author: Daniel Drake -Date: Mon Dec 3 23:29:22 2007 +0000 - - Add functionality to access device descriptors - -commit b5a7a411087b37a6bf56b4688a9e3290daaed153 -Author: Daniel Drake -Date: Mon Dec 3 22:27:21 2007 +0000 - - Rename fpusb_device_handle functions to devh - - Prevents confusion with functions that work on fpusb_dev structures. - -commit eacf4505a473df0f521d1b69d5b45448f0709e2d -Author: Daniel Drake -Date: Sun Dec 2 23:16:57 2007 +0000 - - Add API to access poll fd - - Almost forgot... :) - -commit 852bba4754ec57679c823f33e8feba6e4a564cbe -Author: Daniel Drake -Date: Wed Nov 28 13:48:45 2007 +0000 - - Initial commit - - Basic library structure which supports enumerating detected USB devices diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/INSTALL b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/INSTALL deleted file mode 100644 index 5458714..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/INSTALL +++ /dev/null @@ -1,234 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006 Free Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. - - 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 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. - - Running `configure' might take a while. 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=c99 CFLAGS=-g 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 can use 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 `..'. - - With a non-GNU `make', it is safer 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). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: - - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/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/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile deleted file mode 100644 index 920c5ea..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile +++ /dev/null @@ -1,807 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. - - - - -pkgdatadir = $(datadir)/libusb -pkgincludedir = $(includedir)/libusb -pkglibdir = $(libdir)/libusb -pkglibexecdir = $(libexecdir)/libusb -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-unknown-linux-gnu -host_triplet = x86_64-unknown-linux-gnu -#am__append_1 = examples -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(srcdir)/libusb-1.0.pc.in $(top_srcdir)/configure AUTHORS \ - COPYING ChangeLog INSTALL NEWS THANKS TODO compile \ - config.guess config.sub depcomp install-sh ltmain.sh missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \ - $(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 config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = libusb-1.0.pc -CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-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 = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = libusb doc examples -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)"; }; } -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -GZIP_ENV = --best -DIST_ARCHIVES = $(distdir).tar.bz2 -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run aclocal-1.11 -AMTAR = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run tar -AM_CFLAGS = -std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow -AM_DEFAULT_VERBOSITY = 0 -AR = ar -AUTOCONF = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoconf -AUTOHEADER = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoheader -AUTOMAKE = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run automake-1.11 -AWK = mawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /bin/grep -E -EXEEXT = -FGREP = /bin/grep -F -GREP = /bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LD = /usr/bin/ld -m elf_x86_64 -LDFLAGS = -LIBOBJS = -LIBS = -lrt -pthread -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = ln -s -LTLDFLAGS = -version-info 1:0:1 -no-undefined -LTLIBOBJS = -MAINT = # -MAKEINFO = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run makeinfo -MKDIR_P = /bin/mkdir -p -NM = /usr/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OS_DARWIN = -OS_LINUX = -OS_OPENBSD = -OS_WINDOWS = -OTOOL = -OTOOL64 = -PACKAGE = libusb -PACKAGE_BUGREPORT = libusb-devel@lists.sourceforge.net -PACKAGE_NAME = libusb -PACKAGE_STRING = libusb 1.0.9 -PACKAGE_TARNAME = libusb -PACKAGE_URL = http://www.libusb.org/ -PACKAGE_VERSION = 1.0.9 -PATH_SEPARATOR = : -PC_LIBS_PRIVATE = -lrt -pthread -RANLIB = ranlib -RC = -SED = /bin/sed -SET_MAKE = -SHELL = /bin/bash -STRIP = strip -THREAD_CFLAGS = -pthread -VERSION = 1.0.9 -VISIBILITY_CFLAGS = -fvisibility=hidden -abs_builddir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -abs_srcdir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -abs_top_builddir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -abs_top_srcdir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -ac_ct_CC = gcc -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -bindir = ${exec_prefix}/bin -build = x86_64-unknown-linux-gnu -build_alias = -build_cpu = x86_64 -build_os = linux-gnu -build_vendor = unknown -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-unknown-linux-gnu -host_alias = -host_cpu = x86_64 -host_os = linux-gnu -host_vendor = unknown -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /usr/local -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = -top_builddir = . -top_srcdir = . -AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip -ACLOCAL_AMFLAGS = -I m4 -DISTCLEANFILES = libusb-1.0.pc -MAINTAINERCLEANFILES = ChangeLog -EXTRA_DIST = TODO PORTING msvc -SUBDIRS = libusb doc $(am__append_1) -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libusb-1.0.pc -reldir = .release/$(distdir) -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: - @: -$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__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: # $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): # $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: # $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -libusb-1.0.pc: $(top_builddir)/config.status $(srcdir)/libusb-1.0.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files - -# 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): - @fail= 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; \ - ($(am__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" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= 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; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - 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 || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -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 $(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-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz - $(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) | bzip2 -9 -c >$(distdir).tar.bz2 - $(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) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(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) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__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 \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @$(am__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) config.h -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) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -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-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -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-pkgconfigDATA - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \ - dist-zip distcheck distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-pkgconfigDATA - - -.PHONY: ChangeLog dist-up -ChangeLog: - git --git-dir $(top_srcdir)/.git log > ChangeLog || touch ChangeLog - -dist-hook: ChangeLog -dist-up: dist - rm -rf $(reldir) - mkdir -p $(reldir) - cp $(distdir).tar.bz2 $(reldir) - rsync -rv $(reldir) frs.sourceforge.net:/home/frs/project/l/li/libusb/libusb-1.0/ - rm -rf $(reldir) - -# 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/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile.am b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile.am deleted file mode 100644 index ce7b7e2..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile.am +++ /dev/null @@ -1,28 +0,0 @@ -AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip -ACLOCAL_AMFLAGS = -I m4 -DISTCLEANFILES = libusb-1.0.pc -MAINTAINERCLEANFILES = ChangeLog -EXTRA_DIST = TODO PORTING msvc -SUBDIRS = libusb doc - -if BUILD_EXAMPLES -SUBDIRS += examples -endif - -pkgconfigdir=$(libdir)/pkgconfig -pkgconfig_DATA=libusb-1.0.pc - -.PHONY: ChangeLog dist-up -ChangeLog: - git --git-dir $(top_srcdir)/.git log > ChangeLog || touch ChangeLog - -dist-hook: ChangeLog - -reldir = .release/$(distdir) -dist-up: dist - rm -rf $(reldir) - mkdir -p $(reldir) - cp $(distdir).tar.bz2 $(reldir) - rsync -rv $(reldir) frs.sourceforge.net:/home/frs/project/l/li/libusb/libusb-1.0/ - rm -rf $(reldir) - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile.in b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile.in deleted file mode 100644 index 733b784..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/Makefile.in +++ /dev/null @@ -1,807 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@BUILD_EXAMPLES_TRUE@am__append_1 = examples -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(srcdir)/libusb-1.0.pc.in $(top_srcdir)/configure AUTHORS \ - COPYING ChangeLog INSTALL NEWS THANKS TODO compile \ - config.guess config.sub depcomp install-sh ltmain.sh missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \ - $(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 config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = libusb-1.0.pc -CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-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 = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = libusb doc examples -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)"; }; } -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -GZIP_ENV = --best -DIST_ARCHIVES = $(distdir).tar.bz2 -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLDFLAGS = @LTLDFLAGS@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS_DARWIN = @OS_DARWIN@ -OS_LINUX = @OS_LINUX@ -OS_OPENBSD = @OS_OPENBSD@ -OS_WINDOWS = @OS_WINDOWS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PC_LIBS_PRIVATE = @PC_LIBS_PRIVATE@ -RANLIB = @RANLIB@ -RC = @RC@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -THREAD_CFLAGS = @THREAD_CFLAGS@ -VERSION = @VERSION@ -VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip -ACLOCAL_AMFLAGS = -I m4 -DISTCLEANFILES = libusb-1.0.pc -MAINTAINERCLEANFILES = ChangeLog -EXTRA_DIST = TODO PORTING msvc -SUBDIRS = libusb doc $(am__append_1) -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libusb-1.0.pc -reldir = .release/$(distdir) -all: config.h - $(MAKE) $(AM_MAKEFLAGS) 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'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__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) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -libusb-1.0.pc: $(top_builddir)/config.status $(srcdir)/libusb-1.0.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files - -# 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): - @fail= 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; \ - ($(am__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" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= 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; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - 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 || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -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 $(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-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz - $(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) | bzip2 -9 -c >$(distdir).tar.bz2 - $(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) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(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) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__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 \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @$(am__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) config.h -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) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -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-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -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-pkgconfigDATA - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \ - dist-zip distcheck distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-pkgconfigDATA - - -.PHONY: ChangeLog dist-up -ChangeLog: - git --git-dir $(top_srcdir)/.git log > ChangeLog || touch ChangeLog - -dist-hook: ChangeLog -dist-up: dist - rm -rf $(reldir) - mkdir -p $(reldir) - cp $(distdir).tar.bz2 $(reldir) - rsync -rv $(reldir) frs.sourceforge.net:/home/frs/project/l/li/libusb/libusb-1.0/ - rm -rf $(reldir) - -# 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/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/NEWS b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/NEWS deleted file mode 100644 index f948700..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/NEWS +++ /dev/null @@ -1,65 +0,0 @@ -This file lists notable changes in each release. For the full history of all -changes, see ChangeLog. - -2012-04-20: 1.0.9 -* Numerous bug fixes and improvements -* Backend for Windows, for devices using the WinUSB.sys driver -* Backend for OpenBSD and NetBSD, for devices using the ugen driver -* Add libusb_get_device_speed() -* Add libusb_has_capability() -* Add libusb_error_name() -* Add libusb_get_version() - -2010-05-07: v1.0.8 -* Bug fixes - -2010-04-19: v1.0.7 -* Bug fixes and documentation tweaks -* Add more interface class definitions - -2009-11-22: v1.0.6 -* Bug fixes -* Increase libusb_handle_events() timeout to 60s for powersaving - -2009-11-15: v1.0.5 - * Use timerfd when available for timer management - * Small fixes/updates - -2009-11-06: v1.0.4 release - * Bug fixes including transfer locking to fix some potential threading races - * More flexibility with clock types on Linux - * Use new bulk continuation tracking in Linux 2.6.32 for improved handling - of short/failed transfers - -2009-08-27: v1.0.3 release - * Bug fixes - * Add libusb_get_max_iso_packet_size() - -2009-06-13: v1.0.2 release - * Bug fixes - -2009-05-12: v1.0.1 release - * Bug fixes - * Darwin backend - -2008-12-13: v1.0.0 release - * Bug fixes - -2008-11-21: v0.9.4 release - * Bug fixes - * Add libusb_attach_kernel_driver() - -2008-08-23: v0.9.3 release - * Bug fixes - -2008-07-19: v0.9.2 release - * Bug fixes - -2008-06-28: v0.9.1 release - * Bug fixes - * Introduce contexts to the API - * Compatibility with new Linux kernel features - -2008-05-25: v0.9.0 release - * First libusb-1.0 beta release - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/PORTING b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/PORTING deleted file mode 100644 index 7070784..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/PORTING +++ /dev/null @@ -1,95 +0,0 @@ -PORTING LIBUSB TO OTHER PLATFORMS - -Introduction -============ - -This document is aimed at developers wishing to port libusb to unsupported -platforms. I believe the libusb API is OS-independent, so by supporting -multiple operating systems we pave the way for cross-platform USB device -drivers. - -Implementation-wise, the basic idea is that you provide an interface to -libusb's internal "backend" API, which performs the appropriate operations on -your target platform. - -In terms of USB I/O, your backend provides functionality to submit -asynchronous transfers (synchronous transfers are implemented in the higher -layers, based on the async interface). Your backend must also provide -functionality to cancel those transfers. - -Your backend must also provide an event handling function to "reap" ongoing -transfers and process their results. - -The backend must also provide standard functions for other USB operations, -e.g. setting configuration, obtaining descriptors, etc. - - -File descriptors for I/O polling -================================ - -For libusb to work, your event handling function obviously needs to be called -at various points in time. Your backend must provide a set of file descriptors -which libusb and its users can pass to poll() or select() to determine when -it is time to call the event handling function. - -On Linux, this is easy: the usbfs kernel interface exposes a file descriptor -which can be passed to poll(). If something similar is not true for your -platform, you can emulate this using an internal library thread to reap I/O as -necessary, and a pipe() with the main library to raise events. The file -descriptor of the pipe can then be provided to libusb as an event source. - - -Interface semantics and documentation -===================================== - -Documentation of the backend interface can be found in libusbi.h inside the -usbi_os_backend structure definition. - -Your implementations of these functions will need to call various internal -libusb functions, prefixed with "usbi_". Documentation for these functions -can be found in the .c files where they are implemented. - -You probably want to skim over *all* the documentation before starting your -implementation. For example, you probably need to allocate and store private -OS-specific data for device handles, but the documentation for the mechanism -for doing so is probably not the first thing you will see. - -The Linux backend acts as a good example - view it as a reference -implementation which you should try to match the behaviour of. - - -Getting started -=============== - -1. Modify configure.ac to detect your platform appropriately (see the OS_LINUX -stuff for an example). - -2. Implement your backend in the libusb/os/ directory, modifying -libusb/os/Makefile.am appropriately. - -3. Add preprocessor logic to the top of libusb/core.c to statically assign the -right usbi_backend for your platform. - -4. Produce and test your implementation. - -5. Send your implementation to libusb-devel mailing list. - - -Implementation difficulties? Questions? -======================================= - -If you encounter difficulties porting libusb to your platform, please raise -these issues on the libusb-devel mailing list. Where possible and sensible, I -am interested in solving problems preventing libusb from operating on other -platforms. - -The libusb-devel mailing list is also a good place to ask questions and -make suggestions about the internal API. Hopefully we can produce some -better documentation based on your questions and other input. - -You are encouraged to get involved in the process; if the library needs -some infrastructure additions/modifications to better support your platform, -you are encouraged to make such changes (in cleanly distinct patch -submissions). Even if you do not make such changes yourself, please do raise -the issues on the mailing list at the very minimum. - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/README b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/README deleted file mode 100644 index 08ae169..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/README +++ /dev/null @@ -1,22 +0,0 @@ -libusb -====== - -libusb is a library for USB device access from Linux, Mac OS X, -OpenBSD, NetBSD, and Windows userspace. -It is written in C and licensed under the LGPL-2.1 (see COPYING). - -libusb is abstracted internally in such a way that it can hopefully -be ported to other operating systems. See the PORTING file for some -information, if you fancy a challenge. :) - -libusb homepage: -http://libusb.org/ - -Developers will wish to consult the API documentation: -http://libusb.sourceforge.net/api-1.0/ - -Use the mailing list for questions, comments, etc: -http://libusb.org/wiki/MailingList - -- Peter Stuge -(use the mailing list rather than mailing developers directly) diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/THANKS b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/THANKS deleted file mode 100644 index d926126..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/THANKS +++ /dev/null @@ -1,8 +0,0 @@ -Development contributors are listed in the AUTHORS file. Other community -members who have made significant contributions in other areas are listed -in this file: - -Alan Stern -Ludovic Rousseau -Tim Roberts -Xiaofan Chen diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/TODO b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/TODO deleted file mode 100644 index 6c162a3..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/TODO +++ /dev/null @@ -1,9 +0,0 @@ -for 1.1 or future -================== -optional timerfd support (runtime detection) -notifications of hotplugged/unplugged devices -offer API to create/destroy handle_events thread -isochronous sync I/O? -exposing of parent-child device relationships -"usb primer" introduction docs -more examples diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/aclocal.m4 b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/aclocal.m4 deleted file mode 100644 index 2f30c41..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/aclocal.m4 +++ /dev/null @@ -1,9111 +0,0 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 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. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# 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. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_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 "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -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 - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -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 delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# 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 - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_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 -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_XSI_SHELLFNS - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])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_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_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${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_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. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`print -r -- -n 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_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 '$LINENO' "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-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - 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_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[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" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[AC_CHECK_TOOL(AR, ar, false) -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1]) - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/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 -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# 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* | cegcc*) - # 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; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # 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. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_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 <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#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 - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_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_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_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* | cegcc*) - 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="-ldld"], - [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="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - 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_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_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 -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $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:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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_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 .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_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 -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_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 -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_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_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; 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 -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - 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*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - 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=`func_echo_all "$lib" | $SED '\''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' - ;; - esac - ;; - -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* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - 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~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - 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}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - # 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 - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - 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=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - 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' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;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' - ;; - -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=qnx - 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='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - 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 - shlibpath_overrides_runpath=yes - 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' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - 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' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/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}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -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 - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[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]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_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="m4_if([$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 <<_LT_EOF 1>&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 - -_LT_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 -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_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 - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_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])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 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - 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])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - 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=pass_all - ;; - -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 - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - 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 - ;; - -tpf*) - 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 - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method == "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (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 - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-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_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# 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]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - 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 - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# 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 - -# Try without a prefix underscore, 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. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $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 <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_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_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 -rf 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 - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_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 - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_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_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_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_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_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_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # 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). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_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_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac -AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix[[4-9]]*) - # 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 - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_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_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - _LT_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_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_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_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # 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. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # 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_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = 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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[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 - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_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_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_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_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_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_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' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag= - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - 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' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_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~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&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. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_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_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 - ;; - *) - # 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. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_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_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_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_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_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - 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 - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_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]].*|aix[[5-9]]*) - 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_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_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_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_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 - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_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_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_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 func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_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_SYS_MODULE_PATH_AIX - _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_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*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # 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_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_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_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_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_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_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_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_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_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_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_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_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_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE(int foo(void) {}, - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - ) - LDFLAGS="$save_LDFLAGS" - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_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_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_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}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_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' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_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} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_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_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_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_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_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_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [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]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [fix_srcfile_path], [1], - [Fix the shell variable $srcfile for the compiler]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -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_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # 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 - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -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 -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_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_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_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_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_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_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 -v "^Configured with:" | $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_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - 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]].*|aix[[5-9]]*) - 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_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_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_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_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 - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_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_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_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 func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_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_SYS_MODULE_PATH_AIX - _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_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_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_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_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_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_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_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) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_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_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_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; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_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_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_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_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_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_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_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # 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_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_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_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_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; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_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_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # 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_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_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' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_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=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_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 -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_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::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_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_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_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | 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_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_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=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_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 -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_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_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_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 -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_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 -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_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. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$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_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - 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 -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_SYS_HIDDEN_LIBDEPS([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. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -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... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_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_GCC=$GCC - CC=${F77-"f77"} - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - 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 - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_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_GCC=$GCC - CC=${FC-"f95"} - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - 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 - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_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_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC="$lt_save_CC" -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_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_GCC=$GCC -GCC= -CC=${RC-"windres"} -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC="$lt_save_CC" -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# 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. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_XSI_SHELLFNS -# --------------------- -# Bourne and XSI compatible variants of some useful shell functions. -m4_defun([_LT_PROG_XSI_SHELLFNS], -[case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $[*] )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} - -dnl func_dirname_and_basename -dnl A portable version of this function is already defined in general.m4sh -dnl so there is no need for it here. - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[[^=]]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$[@]"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]+=\$[2]" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$[1]=\$$[1]\$[2]" -} - -_LT_EOF - ;; - esac -]) - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# 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 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_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=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_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=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_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=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_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=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# 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 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# 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. - -# Generated from ltversion.in. - -# serial 3175 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.2.10]) -m4_define([LT_PACKAGE_REVISION], [1.3175]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.10' -macro_revision='1.3175' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# 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 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 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. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# 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, 2006, 2008 -# 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 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# 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 10 - -# 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], UPC, [depcc="$UPC" am_compiler_list=], - [$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 - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - 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 - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj 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])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# 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 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/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"]) -]) - -# 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 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 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 16 - -# 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.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# 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 -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# 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_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008 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 -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -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, 2008 -# 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 5 - -# AM_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless `enable' is passed literally. -# For symmetry, `disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -AC_DEFUN([AM_MAINTAINER_MODE], -[m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], -[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - 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, 2009 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_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.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 -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# 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 6 - -# AM_PROG_CC_C_O -# -------------- -# Like AC_PROG_CC_C_O, but changed for automake. -AC_DEFUN([AM_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC_C_O])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -dnl Make sure AC_PROG_CC is never called again, or it will override our -dnl setting of CC. -m4_define([AC_PROG_CC], - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# 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 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# 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, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008 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_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], -[m4_foreach_w([_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, 2008 -# 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 5 - -# 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 -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# 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) 2009 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 1 - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# (`yes' being less verbose, `no' or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], -[ --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0')]) -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# 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="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008 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_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# 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/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/compile b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/compile deleted file mode 100755 index c0096a7..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/compile +++ /dev/null @@ -1,143 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand `-c -o'. - -scriptversion=2009-10-06.20; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software -# Foundation, Inc. -# Written by Tom Tromey . -# -# 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, 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, see . - -# 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. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand `-c -o'. -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file `INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; -esac - -ofile= -cfile= -eat= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we strip `-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no `-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # `.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use `[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.guess b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.guess deleted file mode 100755 index e1f34b5..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.guess +++ /dev/null @@ -1,1523 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. - -timestamp='2010-09-24' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# 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. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free -Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' HUP INT TERM - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU/*) - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #ifdef __UCLIBC__ - # ifdef __UCLIBC_CONFIG_VERSION__ - LIBC=uclibc __UCLIBC_CONFIG_VERSION__ - # else - LIBC=uclibc - # endif - #else - # ifdef __dietlibc__ - LIBC=dietlibc - # else - LIBC=gnu - # endif - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-tilera-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.h.in b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.h.in deleted file mode 100644 index 412bd6c..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.h.in +++ /dev/null @@ -1,116 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Default visibility */ -#undef DEFAULT_VISIBILITY - -/* Debug message logging */ -#undef ENABLE_DEBUG_LOGGING - -/* Message logging */ -#undef ENABLE_LOGGING - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `gettimeofday' function. */ -#undef HAVE_GETTIMEOFDAY - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_POLL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if the system has the type `struct timespec'. */ -#undef HAVE_STRUCT_TIMESPEC - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#undef LT_OBJDIR - -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - -/* Darwin backend */ -#undef OS_DARWIN - -/* Linux backend */ -#undef OS_LINUX - -/* OpenBSD backend */ -#undef OS_OPENBSD - -/* Windows backend */ -#undef OS_WINDOWS - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* type of second poll() argument */ -#undef POLL_NFDS_TYPE - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Use POSIX Threads */ -#undef THREADS_POSIX - -/* timerfd headers available */ -#undef USBI_TIMERFD_AVAILABLE - -/* Version number of package */ -#undef VERSION - -/* Use GNU extensions */ -#undef _GNU_SOURCE - -/* Define to `__inline__' or `__inline' if that's what the C compiler - calls it, or to nothing if 'inline' is not supported under any name. */ -#ifndef __cplusplus -#undef inline -#endif diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.log b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.log deleted file mode 100644 index 085c787..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.log +++ /dev/null @@ -1,760 +0,0 @@ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by libusb configure 1.0.9, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ ./configure - -## --------- ## -## Platform. ## -## --------- ## - -hostname = kaligula -uname -m = x86_64 -uname -r = 4.6.0-kali1-amd64 -uname -s = Linux -uname -v = #1 SMP Debian 4.6.4-1kali1 (2016-07-21) - -/usr/bin/uname -p = unknown -/bin/uname -X = unknown - -/bin/arch = unknown -/usr/bin/arch -k = unknown -/usr/convex/getsysinfo = unknown -/usr/bin/hostinfo = unknown -/bin/machine = unknown -/usr/bin/oslevel = unknown -/bin/universe = unknown - -PATH: /usr/local/sbin -PATH: /usr/local/bin -PATH: /usr/sbin -PATH: /usr/bin -PATH: /sbin -PATH: /bin - - -## ----------- ## -## Core tests. ## -## ----------- ## - -configure:2370: checking for a BSD-compatible install -configure:2438: result: /usr/bin/install -c -configure:2449: checking whether build environment is sane -configure:2499: result: yes -configure:2640: checking for a thread-safe mkdir -p -configure:2679: result: /bin/mkdir -p -configure:2692: checking for gawk -configure:2722: result: no -configure:2692: checking for mawk -configure:2708: found /usr/bin/mawk -configure:2719: result: mawk -configure:2730: checking whether make sets $(MAKE) -configure:2752: result: yes -configure:2833: checking whether to enable maintainer-specific portions of Makefiles -configure:2842: result: no -configure:2922: checking for gcc -configure:2938: found /usr/bin/gcc -configure:2949: result: gcc -configure:3178: checking for C compiler version -configure:3187: gcc --version >&5 -gcc (Debian 6.1.1-11) 6.1.1 20160802 -Copyright (C) 2016 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -configure:3198: $? = 0 -configure:3187: gcc -v >&5 -Using built-in specs. -COLLECT_GCC=gcc -COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper -Target: x86_64-linux-gnu -Configured with: ../src/configure -v --with-pkgversion='Debian 6.1.1-11' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu -Thread model: posix -gcc version 6.1.1 20160802 (Debian 6.1.1-11) -configure:3198: $? = 0 -configure:3187: gcc -V >&5 -gcc: error: unrecognized command line option '-V' -gcc: fatal error: no input files -compilation terminated. -configure:3198: $? = 1 -configure:3187: gcc -qversion >&5 -gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? -gcc: fatal error: no input files -compilation terminated. -configure:3198: $? = 1 -configure:3218: checking whether the C compiler works -configure:3240: gcc conftest.c >&5 -configure:3244: $? = 0 -configure:3292: result: yes -configure:3295: checking for C compiler default output file name -configure:3297: result: a.out -configure:3303: checking for suffix of executables -configure:3310: gcc -o conftest conftest.c >&5 -configure:3314: $? = 0 -configure:3336: result: -configure:3358: checking whether we are cross compiling -configure:3366: gcc -o conftest conftest.c >&5 -configure:3370: $? = 0 -configure:3377: ./conftest -configure:3381: $? = 0 -configure:3396: result: no -configure:3401: checking for suffix of object files -configure:3423: gcc -c conftest.c >&5 -configure:3427: $? = 0 -configure:3448: result: o -configure:3452: checking whether we are using the GNU C compiler -configure:3471: gcc -c conftest.c >&5 -configure:3471: $? = 0 -configure:3480: result: yes -configure:3489: checking whether gcc accepts -g -configure:3509: gcc -c -g conftest.c >&5 -configure:3509: $? = 0 -configure:3550: result: yes -configure:3567: checking for gcc option to accept ISO C89 -configure:3631: gcc -c -g -O2 conftest.c >&5 -configure:3631: $? = 0 -configure:3644: result: none needed -configure:3675: checking for style of include used by make -configure:3703: result: GNU -configure:3728: checking dependency style of gcc -configure:3838: result: gcc3 -configure:3882: checking build system type -configure:3896: result: x86_64-unknown-linux-gnu -configure:3916: checking host system type -configure:3929: result: x86_64-unknown-linux-gnu -configure:3970: checking how to print strings -configure:3997: result: printf -configure:4018: checking for a sed that does not truncate output -configure:4082: result: /bin/sed -configure:4100: checking for grep that handles long lines and -e -configure:4158: result: /bin/grep -configure:4163: checking for egrep -configure:4225: result: /bin/grep -E -configure:4230: checking for fgrep -configure:4292: result: /bin/grep -F -configure:4327: checking for ld used by gcc -configure:4394: result: /usr/bin/ld -configure:4401: checking if the linker (/usr/bin/ld) is GNU ld -configure:4416: result: yes -configure:4428: checking for BSD- or MS-compatible name lister (nm) -configure:4477: result: /usr/bin/nm -B -configure:4607: checking the name lister (/usr/bin/nm -B) interface -configure:4614: gcc -c -g -O2 conftest.c >&5 -configure:4617: /usr/bin/nm -B "conftest.o" -configure:4620: output -0000000000000000 B some_variable -configure:4627: result: BSD nm -configure:4630: checking whether ln -s works -configure:4634: result: yes -configure:4642: checking the maximum length of command line arguments -configure:4767: result: 1572864 -configure:4784: checking whether the shell understands some XSI constructs -configure:4794: result: yes -configure:4798: checking whether the shell understands "+=" -configure:4804: result: yes -configure:4839: checking for /usr/bin/ld option to reload object files -configure:4846: result: -r -configure:4915: checking for objdump -configure:4931: found /usr/bin/objdump -configure:4942: result: objdump -configure:4974: checking how to recognize dependent libraries -configure:5176: result: pass_all -configure:5236: checking for ar -configure:5252: found /usr/bin/ar -configure:5263: result: ar -configure:5341: checking for strip -configure:5357: found /usr/bin/strip -configure:5368: result: strip -configure:5440: checking for ranlib -configure:5456: found /usr/bin/ranlib -configure:5467: result: ranlib -configure:5569: checking command to parse /usr/bin/nm -B output from gcc object -configure:5687: gcc -c -g -O2 conftest.c >&5 -configure:5690: $? = 0 -configure:5694: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm -configure:5697: $? = 0 -configure:5751: gcc -o conftest -g -O2 conftest.c conftstm.o >&5 -configure:5754: $? = 0 -configure:5792: result: ok -configure:5888: gcc -c -g -O2 conftest.c >&5 -configure:5891: $? = 0 -configure:6633: checking how to run the C preprocessor -configure:6664: gcc -E conftest.c -configure:6664: $? = 0 -configure:6678: gcc -E conftest.c -conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory - #include - ^ -compilation terminated. -configure:6678: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libusb" -| #define PACKAGE_TARNAME "libusb" -| #define PACKAGE_VERSION "1.0.9" -| #define PACKAGE_STRING "libusb 1.0.9" -| #define PACKAGE_BUGREPORT "libusb-devel@lists.sourceforge.net" -| #define PACKAGE_URL "http://www.libusb.org/" -| #define PACKAGE "libusb" -| #define VERSION "1.0.9" -| /* end confdefs.h. */ -| #include -configure:6703: result: gcc -E -configure:6723: gcc -E conftest.c -configure:6723: $? = 0 -configure:6737: gcc -E conftest.c -conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory - #include - ^ -compilation terminated. -configure:6737: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libusb" -| #define PACKAGE_TARNAME "libusb" -| #define PACKAGE_VERSION "1.0.9" -| #define PACKAGE_STRING "libusb 1.0.9" -| #define PACKAGE_BUGREPORT "libusb-devel@lists.sourceforge.net" -| #define PACKAGE_URL "http://www.libusb.org/" -| #define PACKAGE "libusb" -| #define VERSION "1.0.9" -| /* end confdefs.h. */ -| #include -configure:6766: checking for ANSI C header files -configure:6786: gcc -c -g -O2 conftest.c >&5 -configure:6786: $? = 0 -configure:6859: gcc -o conftest -g -O2 conftest.c >&5 -configure:6859: $? = 0 -configure:6859: ./conftest -configure:6859: $? = 0 -configure:6870: result: yes -configure:6883: checking for sys/types.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6883: checking for sys/stat.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6883: checking for stdlib.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6883: checking for string.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6883: checking for memory.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6883: checking for strings.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6883: checking for inttypes.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6883: checking for stdint.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6883: checking for unistd.h -configure:6883: gcc -c -g -O2 conftest.c >&5 -configure:6883: $? = 0 -configure:6883: result: yes -configure:6897: checking for dlfcn.h -configure:6897: gcc -c -g -O2 conftest.c >&5 -configure:6897: $? = 0 -configure:6897: result: yes -configure:7084: checking for objdir -configure:7099: result: .libs -configure:7366: checking if gcc supports -fno-rtti -fno-exceptions -configure:7384: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 -cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C -configure:7388: $? = 0 -configure:7401: result: no -configure:7421: checking for gcc option to produce PIC -configure:7706: result: -fPIC -DPIC -configure:7718: checking if gcc PIC flag -fPIC -DPIC works -configure:7736: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 -configure:7740: $? = 0 -configure:7753: result: yes -configure:7777: checking if gcc static flag -static works -configure:7805: result: yes -configure:7820: checking if gcc supports -c -o file.o -configure:7841: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 -configure:7845: $? = 0 -configure:7867: result: yes -configure:7875: checking if gcc supports -c -o file.o -configure:7922: result: yes -configure:7955: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries -configure:9030: result: yes -configure:9067: checking whether -lc should be explicitly linked in -configure:9075: gcc -c -g -O2 conftest.c >&5 -configure:9078: $? = 0 -configure:9093: gcc -shared conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1 -configure:9096: $? = 0 -configure:9110: result: no -configure:9275: checking dynamic linker characteristics -configure:9743: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5 -configure:9743: $? = 0 -configure:9965: result: GNU/Linux ld.so -configure:10072: checking how to hardcode library paths into programs -configure:10097: result: immediate -configure:10637: checking whether stripping libraries is possible -configure:10642: result: yes -configure:10677: checking if libtool supports shared libraries -configure:10679: result: yes -configure:10682: checking whether to build shared libraries -configure:10703: result: yes -configure:10706: checking whether to build static libraries -configure:10710: result: yes -configure:10788: checking for windres -configure:10818: result: no -configure:10919: checking for inline -configure:10935: gcc -c -g -O2 conftest.c >&5 -configure:10935: $? = 0 -configure:10943: result: inline -configure:10962: checking whether gcc and cc understand -c and -o together -configure:10993: gcc -c conftest.c -o conftest2.o >&5 -configure:10997: $? = 0 -configure:11003: gcc -c conftest.c -o conftest2.o >&5 -configure:11007: $? = 0 -configure:11018: cc -c conftest.c >&5 -configure:11022: $? = 0 -configure:11030: cc -c conftest.c -o conftest2.o >&5 -configure:11034: $? = 0 -configure:11040: cc -c conftest.c -o conftest2.o >&5 -configure:11044: $? = 0 -configure:11062: result: yes -configure:11093: checking operating system -configure:11097: result: Linux -configure:11136: checking for clock_gettime in -lrt -configure:11161: gcc -o conftest -g -O2 conftest.c -lrt >&5 -configure:11161: $? = 0 -configure:11170: result: yes -configure:11181: checking poll.h usability -configure:11181: gcc -c -g -O2 conftest.c >&5 -configure:11181: $? = 0 -configure:11181: result: yes -configure:11181: checking poll.h presence -configure:11181: gcc -E conftest.c -configure:11181: $? = 0 -configure:11181: result: yes -configure:11181: checking for poll.h -configure:11181: result: yes -configure:11315: checking sys/timerfd.h usability -configure:11315: gcc -c -g -O2 conftest.c >&5 -configure:11315: $? = 0 -configure:11315: result: yes -configure:11315: checking sys/timerfd.h presence -configure:11315: gcc -E conftest.c -configure:11315: $? = 0 -configure:11315: result: yes -configure:11315: checking for sys/timerfd.h -configure:11315: result: yes -configure:11335: checking whether TFD_NONBLOCK is declared -configure:11335: gcc -c -g -O2 conftest.c >&5 -configure:11335: $? = 0 -configure:11335: result: yes -configure:11347: checking whether to use timerfd for timing -configure:11354: result: yes -configure:11365: checking for struct timespec -configure:11365: gcc -c -g -O2 conftest.c >&5 -configure:11365: $? = 0 -configure:11365: gcc -c -g -O2 conftest.c >&5 -conftest.c: In function 'main': -conftest.c:65:30: error: expected expression before ')' token - if (sizeof ((struct timespec))) - ^ -configure:11365: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libusb" -| #define PACKAGE_TARNAME "libusb" -| #define PACKAGE_VERSION "1.0.9" -| #define PACKAGE_STRING "libusb 1.0.9" -| #define PACKAGE_BUGREPORT "libusb-devel@lists.sourceforge.net" -| #define PACKAGE_URL "http://www.libusb.org/" -| #define PACKAGE "libusb" -| #define VERSION "1.0.9" -| #define STDC_HEADERS 1 -| #define HAVE_SYS_TYPES_H 1 -| #define HAVE_SYS_STAT_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_MEMORY_H 1 -| #define HAVE_STRINGS_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_UNISTD_H 1 -| #define HAVE_DLFCN_H 1 -| #define LT_OBJDIR ".libs/" -| #define _GNU_SOURCE 1 -| #define OS_LINUX 1 -| #define HAVE_POLL_H 1 -| #define POLL_NFDS_TYPE nfds_t -| #define THREADS_POSIX 1 -| #define USBI_TIMERFD_AVAILABLE 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| int -| main () -| { -| if (sizeof ((struct timespec))) -| return 0; -| ; -| return 0; -| } -configure:11365: result: yes -configure:11435: gcc -c -g -O2 -Werror -fvisibility=hidden conftest.c >&5 -configure:11435: $? = 0 -configure:11463: gcc -c -g -O2 -Wno-pointer-sign conftest.c >&5 -configure:11463: $? = 0 -configure:11472: checking for sigaction -configure:11472: gcc -o conftest -g -O2 conftest.c -lrt -pthread >&5 -configure:11472: $? = 0 -configure:11472: result: yes -configure:11491: checking sys/time.h usability -configure:11491: gcc -c -g -O2 conftest.c >&5 -configure:11491: $? = 0 -configure:11491: result: yes -configure:11491: checking sys/time.h presence -configure:11491: gcc -E conftest.c -configure:11491: $? = 0 -configure:11491: result: yes -configure:11491: checking for sys/time.h -configure:11491: result: yes -configure:11503: checking for gettimeofday -configure:11503: gcc -o conftest -g -O2 conftest.c -lrt -pthread >&5 -configure:11503: $? = 0 -configure:11503: result: yes -configure:11693: creating ./config.status - -## ---------------------- ## -## Running config.status. ## -## ---------------------- ## - -This file was extended by libusb config.status 1.0.9, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = - CONFIG_HEADERS = - CONFIG_LINKS = - CONFIG_COMMANDS = - $ ./config.status - -on kaligula - -config.status:1165: creating libusb-1.0.pc -config.status:1165: creating Makefile -config.status:1165: creating libusb/Makefile -config.status:1165: creating examples/Makefile -config.status:1165: creating doc/Makefile -config.status:1165: creating doc/doxygen.cfg -config.status:1165: creating config.h -config.status:1394: executing depfiles commands -config.status:1394: executing libtool commands - -## ---------------- ## -## Cache variables. ## -## ---------------- ## - -ac_cv_build=x86_64-unknown-linux-gnu -ac_cv_c_compiler_gnu=yes -ac_cv_c_inline=inline -ac_cv_env_CC_set= -ac_cv_env_CC_value= -ac_cv_env_CFLAGS_set= -ac_cv_env_CFLAGS_value= -ac_cv_env_CPPFLAGS_set= -ac_cv_env_CPPFLAGS_value= -ac_cv_env_CPP_set= -ac_cv_env_CPP_value= -ac_cv_env_LDFLAGS_set= -ac_cv_env_LDFLAGS_value= -ac_cv_env_LIBS_set= -ac_cv_env_LIBS_value= -ac_cv_env_build_alias_set= -ac_cv_env_build_alias_value= -ac_cv_env_host_alias_set= -ac_cv_env_host_alias_value= -ac_cv_env_target_alias_set= -ac_cv_env_target_alias_value= -ac_cv_func_gettimeofday=yes -ac_cv_func_sigaction=yes -ac_cv_have_decl_TFD_NONBLOCK=yes -ac_cv_header_dlfcn_h=yes -ac_cv_header_inttypes_h=yes -ac_cv_header_memory_h=yes -ac_cv_header_poll_h=yes -ac_cv_header_stdc=yes -ac_cv_header_stdint_h=yes -ac_cv_header_stdlib_h=yes -ac_cv_header_string_h=yes -ac_cv_header_strings_h=yes -ac_cv_header_sys_stat_h=yes -ac_cv_header_sys_time_h=yes -ac_cv_header_sys_timerfd_h=yes -ac_cv_header_sys_types_h=yes -ac_cv_header_unistd_h=yes -ac_cv_host=x86_64-unknown-linux-gnu -ac_cv_lib_rt_clock_gettime=yes -ac_cv_objext=o -ac_cv_path_EGREP='/bin/grep -E' -ac_cv_path_FGREP='/bin/grep -F' -ac_cv_path_GREP=/bin/grep -ac_cv_path_SED=/bin/sed -ac_cv_path_install='/usr/bin/install -c' -ac_cv_path_mkdir=/bin/mkdir -ac_cv_prog_AWK=mawk -ac_cv_prog_CPP='gcc -E' -ac_cv_prog_ac_ct_AR=ar -ac_cv_prog_ac_ct_CC=gcc -ac_cv_prog_ac_ct_OBJDUMP=objdump -ac_cv_prog_ac_ct_RANLIB=ranlib -ac_cv_prog_ac_ct_STRIP=strip -ac_cv_prog_cc_c89= -ac_cv_prog_cc_g=yes -ac_cv_prog_cc_gcc_c_o=yes -ac_cv_prog_make_make_set=yes -ac_cv_type_struct_timespec=yes -am_cv_CC_dependencies_compiler_type=gcc3 -lt_cv_archive_cmds_need_lc=no -lt_cv_deplibs_check_method=pass_all -lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_ld_reload_flag=-r -lt_cv_nm_interface='BSD nm' -lt_cv_objdir=.libs -lt_cv_path_LD=/usr/bin/ld -lt_cv_path_NM='/usr/bin/nm -B' -lt_cv_prog_compiler_c_o=yes -lt_cv_prog_compiler_c_o_RC=yes -lt_cv_prog_compiler_pic_works=yes -lt_cv_prog_compiler_rtti_exceptions=no -lt_cv_prog_compiler_static_works=yes -lt_cv_prog_gnu_ld=yes -lt_cv_shlibpath_overrides_runpath=no -lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' -lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' -lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' -lt_cv_sys_max_cmd_len=1572864 - -## ----------------- ## -## Output variables. ## -## ----------------- ## - -ACLOCAL='${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run aclocal-1.11' -AMDEPBACKSLASH='\' -AMDEP_FALSE='#' -AMDEP_TRUE='' -AMTAR='${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run tar' -AM_BACKSLASH='\' -AM_CFLAGS='-std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow' -AM_DEFAULT_VERBOSITY='0' -AR='ar' -AUTOCONF='${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoconf' -AUTOHEADER='${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoheader' -AUTOMAKE='${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run automake-1.11' -AWK='mawk' -BUILD_EXAMPLES_FALSE='' -BUILD_EXAMPLES_TRUE='#' -CC='gcc' -CCDEPMODE='depmode=gcc3' -CFLAGS='-g -O2' -CPP='gcc -E' -CPPFLAGS='' -CYGPATH_W='echo' -DEFS='-DHAVE_CONFIG_H' -DEPDIR='.deps' -DSYMUTIL='' -DUMPBIN='' -ECHO_C='' -ECHO_N='-n' -ECHO_T='' -EGREP='/bin/grep -E' -EXEEXT='' -FGREP='/bin/grep -F' -GREP='/bin/grep' -HAVE_SIGACTION_FALSE='#' -HAVE_SIGACTION_TRUE='' -INSTALL_DATA='${INSTALL} -m 644' -INSTALL_PROGRAM='${INSTALL}' -INSTALL_SCRIPT='${INSTALL}' -INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' -LD='/usr/bin/ld -m elf_x86_64' -LDFLAGS='' -LIBOBJS='' -LIBS=' -lrt -pthread' -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -LIPO='' -LN_S='ln -s' -LTLDFLAGS='-version-info 1:0:1 -no-undefined' -LTLIBOBJS='' -MAINT='#' -MAINTAINER_MODE_FALSE='' -MAINTAINER_MODE_TRUE='#' -MAKEINFO='${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run makeinfo' -MKDIR_P='/bin/mkdir -p' -NM='/usr/bin/nm -B' -NMEDIT='' -OBJDUMP='objdump' -OBJEXT='o' -OS_DARWIN='' -OS_DARWIN_FALSE='' -OS_DARWIN_TRUE='#' -OS_LINUX='' -OS_LINUX_FALSE='#' -OS_LINUX_TRUE='' -OS_OPENBSD='' -OS_OPENBSD_FALSE='' -OS_OPENBSD_TRUE='#' -OS_WINDOWS='' -OS_WINDOWS_FALSE='' -OS_WINDOWS_TRUE='#' -OTOOL64='' -OTOOL='' -PACKAGE='libusb' -PACKAGE_BUGREPORT='libusb-devel@lists.sourceforge.net' -PACKAGE_NAME='libusb' -PACKAGE_STRING='libusb 1.0.9' -PACKAGE_TARNAME='libusb' -PACKAGE_URL='http://www.libusb.org/' -PACKAGE_VERSION='1.0.9' -PATH_SEPARATOR=':' -PC_LIBS_PRIVATE='-lrt -pthread' -RANLIB='ranlib' -RC='' -SED='/bin/sed' -SET_MAKE='' -SHELL='/bin/bash' -STRIP='strip' -THREADS_POSIX_FALSE='#' -THREADS_POSIX_TRUE='' -THREAD_CFLAGS='-pthread' -VERSION='1.0.9' -VISIBILITY_CFLAGS='-fvisibility=hidden' -ac_ct_CC='gcc' -ac_ct_DUMPBIN='' -am__EXEEXT_FALSE='' -am__EXEEXT_TRUE='#' -am__fastdepCC_FALSE='#' -am__fastdepCC_TRUE='' -am__include='include' -am__isrc='' -am__leading_dot='.' -am__quote='' -am__tar='${AMTAR} chof - "$$tardir"' -am__untar='${AMTAR} xf -' -bindir='${exec_prefix}/bin' -build='x86_64-unknown-linux-gnu' -build_alias='' -build_cpu='x86_64' -build_os='linux-gnu' -build_vendor='unknown' -datadir='${datarootdir}' -datarootdir='${prefix}/share' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -dvidir='${docdir}' -exec_prefix='${prefix}' -host='x86_64-unknown-linux-gnu' -host_alias='' -host_cpu='x86_64' -host_os='linux-gnu' -host_vendor='unknown' -htmldir='${docdir}' -includedir='${prefix}/include' -infodir='${datarootdir}/info' -install_sh='${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh' -libdir='${exec_prefix}/lib' -libexecdir='${exec_prefix}/libexec' -localedir='${datarootdir}/locale' -localstatedir='${prefix}/var' -mandir='${datarootdir}/man' -mkdir_p='/bin/mkdir -p' -oldincludedir='/usr/include' -pdfdir='${docdir}' -prefix='/usr/local' -program_transform_name='s,x,x,' -psdir='${docdir}' -sbindir='${exec_prefix}/sbin' -sharedstatedir='${prefix}/com' -sysconfdir='${prefix}/etc' -target_alias='' - -## ----------- ## -## confdefs.h. ## -## ----------- ## - -/* confdefs.h */ -#define PACKAGE_NAME "libusb" -#define PACKAGE_TARNAME "libusb" -#define PACKAGE_VERSION "1.0.9" -#define PACKAGE_STRING "libusb 1.0.9" -#define PACKAGE_BUGREPORT "libusb-devel@lists.sourceforge.net" -#define PACKAGE_URL "http://www.libusb.org/" -#define PACKAGE "libusb" -#define VERSION "1.0.9" -#define STDC_HEADERS 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STRING_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_STRINGS_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_UNISTD_H 1 -#define HAVE_DLFCN_H 1 -#define LT_OBJDIR ".libs/" -#define _GNU_SOURCE 1 -#define OS_LINUX 1 -#define HAVE_POLL_H 1 -#define POLL_NFDS_TYPE nfds_t -#define THREADS_POSIX 1 -#define USBI_TIMERFD_AVAILABLE 1 -#define HAVE_STRUCT_TIMESPEC 1 -#define ENABLE_LOGGING 1 -#define DEFAULT_VISIBILITY __attribute__((visibility("default"))) -#define HAVE_SYS_TIME_H 1 -#define HAVE_GETTIMEOFDAY 1 - -configure: exit 0 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.status b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.status deleted file mode 100755 index a8440c4..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.status +++ /dev/null @@ -1,2284 +0,0 @@ -#! /bin/bash -# Generated by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=${CONFIG_SHELL-/bin/bash} -export SHELL -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by libusb $as_me 1.0.9, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -# Files that config.status was made for. -config_files=" libusb-1.0.pc Makefile libusb/Makefile examples/Makefile doc/Makefile doc/doxygen.cfg" -config_headers=" config.h" -config_commands=" depfiles libtool" - -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to . -libusb home page: ." - -ac_cs_config="" -ac_cs_version="\ -libusb config.status 1.0.9 -configured by ./configure, generated by GNU Autoconf 2.68, - with options \"$ac_cs_config\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='/root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9' -srcdir='.' -INSTALL='/usr/bin/install -c' -MKDIR_P='/bin/mkdir -p' -AWK='mawk' -test -n "$AWK" || AWK=awk -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -if $ac_cs_recheck; then - set X '/bin/bash' './configure' $ac_configure_extra_args --no-create --no-recursion - shift - $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 - CONFIG_SHELL='/bin/bash' - export CONFIG_SHELL - exec "$@" -fi - -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -# -# INIT-COMMANDS -# -AMDEP_TRUE="" ac_aux_dir="." - - -# 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 - -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -double_quote_subst='s/\(["`\\]\)/\\\1/g' -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -macro_version='2.2.10' -macro_revision='1.3175' -enable_shared='yes' -enable_static='yes' -pic_mode='default' -enable_fast_install='yes' -SHELL='/bin/bash' -ECHO='printf %s\n' -host_alias='' -host='x86_64-unknown-linux-gnu' -host_os='linux-gnu' -build_alias='' -build='x86_64-unknown-linux-gnu' -build_os='linux-gnu' -SED='/bin/sed' -Xsed='/bin/sed -e 1s/^X//' -GREP='/bin/grep' -EGREP='/bin/grep -E' -FGREP='/bin/grep -F' -LD='/usr/bin/ld -m elf_x86_64' -NM='/usr/bin/nm -B' -LN_S='ln -s' -max_cmd_len='1572864' -ac_objext='o' -exeext='' -lt_unset='unset' -lt_SP2NL='tr \040 \012' -lt_NL2SP='tr \015\012 \040\040' -reload_flag=' -r' -reload_cmds='$LD$reload_flag -o $output$reload_objs' -OBJDUMP='objdump' -deplibs_check_method='pass_all' -file_magic_cmd='$MAGIC_CMD' -AR='ar' -AR_FLAGS='cru' -STRIP='strip' -RANLIB='ranlib' -old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $oldlib' -old_postuninstall_cmds='' -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $oldlib' -lock_old_archive_extraction='no' -CC='gcc' -CFLAGS='-g -O2' -compiler='' -GCC='yes' -lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' -lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' -lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' -objdir='.libs' -MAGIC_CMD='file' -lt_prog_compiler_no_builtin_flag=' -fno-builtin' -lt_prog_compiler_wl='-Wl,' -lt_prog_compiler_pic=' -fPIC -DPIC' -lt_prog_compiler_static='-static' -lt_cv_prog_compiler_c_o='yes' -need_locks='no' -DSYMUTIL='' -NMEDIT='' -LIPO='' -OTOOL='' -OTOOL64='' -libext='a' -shrext_cmds='.so' -extract_expsyms_cmds='' -archive_cmds_need_lc='no' -enable_shared_with_static_runtimes='no' -export_dynamic_flag_spec='${wl}--export-dynamic' -whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -compiler_needs_object='no' -old_archive_from_new_cmds='' -old_archive_from_expsyms_cmds='' -archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -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' -module_cmds='' -module_expsym_cmds='' -with_gnu_ld='yes' -allow_undefined_flag='' -no_undefined_flag='' -hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -hardcode_libdir_flag_spec_ld='' -hardcode_libdir_separator='' -hardcode_direct='no' -hardcode_direct_absolute='no' -hardcode_minus_L='no' -hardcode_shlibpath_var='unsupported' -hardcode_automatic='no' -inherit_rpath='no' -link_all_deplibs='unknown' -fix_srcfile_path='' -always_export_symbols='no' -export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -include_expsyms='' -prelink_cmds='' -file_list_spec='' -variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' -need_lib_prefix='no' -need_version='no' -version_type='linux' -runpath_var='LD_RUN_PATH' -shlibpath_var='LD_LIBRARY_PATH' -shlibpath_overrides_runpath='no' -libname_spec='lib$name' -library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -soname_spec='${libname}${release}${shared_ext}$major' -install_override_mode='' -postinstall_cmds='' -postuninstall_cmds='' -finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -finish_eval='' -hardcode_into_libs='yes' -sys_lib_search_path_spec='/usr/lib/gcc/x86_64-linux-gnu/6 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib ' -sys_lib_dlsearch_path_spec='/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu ' -hardcode_action='immediate' -enable_dlopen='unknown' -enable_dlopen_self='unknown' -enable_dlopen_self_static='unknown' -old_striplib='strip --strip-debug' -striplib='strip --strip-unneeded' -LD_RC='' -reload_flag_RC='' -reload_cmds_RC='' -old_archive_cmds_RC='' -compiler_RC='' -GCC_RC='' -lt_prog_compiler_no_builtin_flag_RC='' -lt_prog_compiler_wl_RC='' -lt_prog_compiler_pic_RC='' -lt_prog_compiler_static_RC='' -lt_cv_prog_compiler_c_o_RC='yes' -archive_cmds_need_lc_RC='' -enable_shared_with_static_runtimes_RC='' -export_dynamic_flag_spec_RC='' -whole_archive_flag_spec_RC='' -compiler_needs_object_RC='' -old_archive_from_new_cmds_RC='' -old_archive_from_expsyms_cmds_RC='' -archive_cmds_RC='' -archive_expsym_cmds_RC='' -module_cmds_RC='' -module_expsym_cmds_RC='' -with_gnu_ld_RC='' -allow_undefined_flag_RC='' -no_undefined_flag_RC='' -hardcode_libdir_flag_spec_RC='' -hardcode_libdir_flag_spec_ld_RC='' -hardcode_libdir_separator_RC='' -hardcode_direct_RC='' -hardcode_direct_absolute_RC='' -hardcode_minus_L_RC='' -hardcode_shlibpath_var_RC='' -hardcode_automatic_RC='' -inherit_rpath_RC='' -link_all_deplibs_RC='' -fix_srcfile_path_RC='' -always_export_symbols_RC='' -export_symbols_cmds_RC='' -exclude_expsyms_RC='' -include_expsyms_RC='' -prelink_cmds_RC='' -file_list_spec_RC='' -hardcode_action_RC='' - -LTCC='gcc' -LTCFLAGS='-g -O2' -compiler='gcc' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL ECHO SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd AR AR_FLAGS STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix lt_prog_compiler_no_builtin_flag lt_prog_compiler_wl lt_prog_compiler_pic lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_flag_spec_ld hardcode_libdir_separator fix_srcfile_path exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec install_override_mode finish_eval old_striplib striplib LD_RC reload_flag_RC compiler_RC lt_prog_compiler_no_builtin_flag_RC lt_prog_compiler_wl_RC lt_prog_compiler_pic_RC lt_prog_compiler_static_RC lt_cv_prog_compiler_c_o_RC export_dynamic_flag_spec_RC whole_archive_flag_spec_RC compiler_needs_object_RC with_gnu_ld_RC allow_undefined_flag_RC no_undefined_flag_RC hardcode_libdir_flag_spec_RC hardcode_libdir_flag_spec_ld_RC hardcode_libdir_separator_RC fix_srcfile_path_RC exclude_expsyms_RC include_expsyms_RC file_list_spec_RC; do - case `eval \\$ECHO \\""\\$$var"\\"` in - *[\\\`\"\$]*) - eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED \"\$sed_quote_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\$$var\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec sys_lib_dlsearch_path_spec reload_cmds_RC old_archive_cmds_RC old_archive_from_new_cmds_RC old_archive_from_expsyms_cmds_RC archive_cmds_RC archive_expsym_cmds_RC module_cmds_RC module_expsym_cmds_RC export_symbols_cmds_RC prelink_cmds_RC; do - case `eval \\$ECHO \\""\\$$var"\\"` in - *[\\\`\"\$]*) - eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\$$var\\\"" - ;; - esac -done - -ac_aux_dir='.' -xsi_shell='yes' -lt_shell_append='yes' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='libusb' - VERSION='1.0.9' - TIMESTAMP='' - RM='rm -f' - ofile='libtool' - - - - - - - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "libusb-1.0.pc") CONFIG_FILES="$CONFIG_FILES libusb-1.0.pc" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "libusb/Makefile") CONFIG_FILES="$CONFIG_FILES libusb/Makefile" ;; - "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "doc/doxygen.cfg") CONFIG_FILES="$CONFIG_FILES doc/doxygen.cfg" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && -S["am__EXEEXT_FALSE"]="" -S["am__EXEEXT_TRUE"]="#" -S["LTLIBOBJS"]="" -S["LIBOBJS"]="" -S["LTLDFLAGS"]="-version-info 1:0:1 -no-undefined" -S["AM_CFLAGS"]="-std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow" -S["VISIBILITY_CFLAGS"]="-fvisibility=hidden" -S["HAVE_SIGACTION_FALSE"]="#" -S["HAVE_SIGACTION_TRUE"]="" -S["BUILD_EXAMPLES_FALSE"]="" -S["BUILD_EXAMPLES_TRUE"]="#" -S["THREADS_POSIX_FALSE"]="#" -S["THREADS_POSIX_TRUE"]="" -S["OS_WINDOWS_FALSE"]="" -S["OS_WINDOWS_TRUE"]="#" -S["OS_OPENBSD_FALSE"]="" -S["OS_OPENBSD_TRUE"]="#" -S["OS_DARWIN_FALSE"]="" -S["OS_DARWIN_TRUE"]="#" -S["OS_LINUX_FALSE"]="#" -S["OS_LINUX_TRUE"]="" -S["PC_LIBS_PRIVATE"]="-lrt -pthread" -S["THREAD_CFLAGS"]="-pthread" -S["OS_WINDOWS"]="" -S["OS_OPENBSD"]="" -S["OS_DARWIN"]="" -S["OS_LINUX"]="" -S["RC"]="" -S["CPP"]="gcc -E" -S["OTOOL64"]="" -S["OTOOL"]="" -S["LIPO"]="" -S["NMEDIT"]="" -S["DSYMUTIL"]="" -S["RANLIB"]="ranlib" -S["AR"]="ar" -S["OBJDUMP"]="objdump" -S["LN_S"]="ln -s" -S["NM"]="/usr/bin/nm -B" -S["ac_ct_DUMPBIN"]="" -S["DUMPBIN"]="" -S["LD"]="/usr/bin/ld -m elf_x86_64" -S["FGREP"]="/bin/grep -F" -S["EGREP"]="/bin/grep -E" -S["GREP"]="/bin/grep" -S["SED"]="/bin/sed" -S["host_os"]="linux-gnu" -S["host_vendor"]="unknown" -S["host_cpu"]="x86_64" -S["host"]="x86_64-unknown-linux-gnu" -S["build_os"]="linux-gnu" -S["build_vendor"]="unknown" -S["build_cpu"]="x86_64" -S["build"]="x86_64-unknown-linux-gnu" -S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" -S["am__fastdepCC_FALSE"]="#" -S["am__fastdepCC_TRUE"]="" -S["CCDEPMODE"]="depmode=gcc3" -S["AMDEPBACKSLASH"]="\\" -S["AMDEP_FALSE"]="#" -S["AMDEP_TRUE"]="" -S["am__quote"]="" -S["am__include"]="include" -S["DEPDIR"]=".deps" -S["OBJEXT"]="o" -S["EXEEXT"]="" -S["ac_ct_CC"]="gcc" -S["CPPFLAGS"]="" -S["LDFLAGS"]="" -S["CFLAGS"]="-g -O2" -S["CC"]="gcc" -S["AM_BACKSLASH"]="\\" -S["AM_DEFAULT_VERBOSITY"]="0" -S["MAINT"]="#" -S["MAINTAINER_MODE_FALSE"]="" -S["MAINTAINER_MODE_TRUE"]="#" -S["am__untar"]="${AMTAR} xf -" -S["am__tar"]="${AMTAR} chof - \"$$tardir\"" -S["AMTAR"]="${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run tar" -S["am__leading_dot"]="." -S["SET_MAKE"]="" -S["AWK"]="mawk" -S["mkdir_p"]="/bin/mkdir -p" -S["MKDIR_P"]="/bin/mkdir -p" -S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" -S["STRIP"]="strip" -S["install_sh"]="${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh" -S["MAKEINFO"]="${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run makeinfo" -S["AUTOHEADER"]="${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoheader" -S["AUTOMAKE"]="${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run automake-1.11" -S["AUTOCONF"]="${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoconf" -S["ACLOCAL"]="${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run aclocal-1.11" -S["VERSION"]="1.0.9" -S["PACKAGE"]="libusb" -S["CYGPATH_W"]="echo" -S["am__isrc"]="" -S["INSTALL_DATA"]="${INSTALL} -m 644" -S["INSTALL_SCRIPT"]="${INSTALL}" -S["INSTALL_PROGRAM"]="${INSTALL}" -S["target_alias"]="" -S["host_alias"]="" -S["build_alias"]="" -S["LIBS"]=" -lrt -pthread" -S["ECHO_T"]="" -S["ECHO_N"]="-n" -S["ECHO_C"]="" -S["DEFS"]="-DHAVE_CONFIG_H" -S["mandir"]="${datarootdir}/man" -S["localedir"]="${datarootdir}/locale" -S["libdir"]="${exec_prefix}/lib" -S["psdir"]="${docdir}" -S["pdfdir"]="${docdir}" -S["dvidir"]="${docdir}" -S["htmldir"]="${docdir}" -S["infodir"]="${datarootdir}/info" -S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" -S["oldincludedir"]="/usr/include" -S["includedir"]="${prefix}/include" -S["localstatedir"]="${prefix}/var" -S["sharedstatedir"]="${prefix}/com" -S["sysconfdir"]="${prefix}/etc" -S["datadir"]="${datarootdir}" -S["datarootdir"]="${prefix}/share" -S["libexecdir"]="${exec_prefix}/libexec" -S["sbindir"]="${exec_prefix}/sbin" -S["bindir"]="${exec_prefix}/bin" -S["program_transform_name"]="s,x,x," -S["prefix"]="/usr/local" -S["exec_prefix"]="${prefix}" -S["PACKAGE_URL"]="http://www.libusb.org/" -S["PACKAGE_BUGREPORT"]="libusb-devel@lists.sourceforge.net" -S["PACKAGE_STRING"]="libusb 1.0.9" -S["PACKAGE_VERSION"]="1.0.9" -S["PACKAGE_TARNAME"]="libusb" -S["PACKAGE_NAME"]="libusb" -S["PATH_SEPARATOR"]=":" -S["SHELL"]="/bin/bash" -_ACAWK -cat >>"$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -D["PACKAGE_NAME"]=" \"libusb\"" -D["PACKAGE_TARNAME"]=" \"libusb\"" -D["PACKAGE_VERSION"]=" \"1.0.9\"" -D["PACKAGE_STRING"]=" \"libusb 1.0.9\"" -D["PACKAGE_BUGREPORT"]=" \"libusb-devel@lists.sourceforge.net\"" -D["PACKAGE_URL"]=" \"http://www.libusb.org/\"" -D["PACKAGE"]=" \"libusb\"" -D["VERSION"]=" \"1.0.9\"" -D["STDC_HEADERS"]=" 1" -D["HAVE_SYS_TYPES_H"]=" 1" -D["HAVE_SYS_STAT_H"]=" 1" -D["HAVE_STDLIB_H"]=" 1" -D["HAVE_STRING_H"]=" 1" -D["HAVE_MEMORY_H"]=" 1" -D["HAVE_STRINGS_H"]=" 1" -D["HAVE_INTTYPES_H"]=" 1" -D["HAVE_STDINT_H"]=" 1" -D["HAVE_UNISTD_H"]=" 1" -D["HAVE_DLFCN_H"]=" 1" -D["LT_OBJDIR"]=" \".libs/\"" -D["_GNU_SOURCE"]=" 1" -D["OS_LINUX"]=" 1" -D["HAVE_POLL_H"]=" 1" -D["POLL_NFDS_TYPE"]=" nfds_t" -D["THREADS_POSIX"]=" 1" -D["USBI_TIMERFD_AVAILABLE"]=" 1" -D["HAVE_STRUCT_TIMESPEC"]=" 1" -D["ENABLE_LOGGING"]=" 1" -D["DEFAULT_VISIBILITY"]=" __attribute__((visibility(\"default\")))" -D["HAVE_SYS_TIME_H"]=" 1" -D["HAVE_GETTIMEOFDAY"]=" 1" - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { - line = $ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} - ac_datarootdir_hack=' - s&@datadir@&${datarootdir}&g - s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g - s&@infodir@&${datarootdir}/info&g - s&@localedir@&${datarootdir}/locale&g - s&@mandir@&${datarootdir}/man&g - s&\${datarootdir}&${prefix}/share&g' ;; -esac -ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -} - -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n '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_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="RC " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# 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 - -# 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//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# 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 - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# 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 - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# 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 - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# 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 - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# 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 - -# 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 - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_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 -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: RC - -# The linker used to build libraries. -LD=$lt_LD_RC - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_RC -reload_cmds=$lt_reload_cmds_RC - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_RC - -# A language specific compiler. -CC=$lt_compiler_RC - -# Is the compiler the GNU compiler? -with_gcc=$GCC_RC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_RC - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_RC - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_RC - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_RC - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_RC - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_RC -archive_expsym_cmds=$lt_archive_expsym_cmds_RC - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_RC -module_expsym_cmds=$lt_module_expsym_cmds_RC - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_RC - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_RC - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_RC - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_RC - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_RC - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_RC - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_RC - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_RC - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_RC - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_RC - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path_RC - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_RC - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_RC - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_RC - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_RC - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_RC - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_RC - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_RC - -# ### END LIBTOOL TAG CONFIG: RC -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.sub b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.sub deleted file mode 100755 index 216604d..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/config.sub +++ /dev/null @@ -1,1757 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. - -timestamp='2010-09-11' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# 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. - - -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free -Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx | dvp \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e \ - | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile-* | tilegx-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mipsEE* | ee | ps2) - basic_machine=mips64r5900el-scei - case $os in - -linux*) - ;; - *) - os=-elf - ;; - esac - ;; - iop) - basic_machine=mipsel-scei - os=-irx - ;; - dvp) - basic_machine=dvp-scei - os=-elf - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - # This must be matched before tile*. - tilegx*) - basic_machine=tilegx-unknown - os=-linux-gnu - ;; - tile*) - basic_machine=tile-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -irx* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/configure b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/configure deleted file mode 100755 index e35bb32..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/configure +++ /dev/null @@ -1,14148 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for libusb 1.0.9. -# -# Report bugs to . -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: libusb-devel@lists.sourceforge.net about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='libusb' -PACKAGE_TARNAME='libusb' -PACKAGE_VERSION='1.0.9' -PACKAGE_STRING='libusb 1.0.9' -PACKAGE_BUGREPORT='libusb-devel@lists.sourceforge.net' -PACKAGE_URL='http://www.libusb.org/' - -ac_unique_file="libusb/core.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -LTLDFLAGS -AM_CFLAGS -VISIBILITY_CFLAGS -HAVE_SIGACTION_FALSE -HAVE_SIGACTION_TRUE -BUILD_EXAMPLES_FALSE -BUILD_EXAMPLES_TRUE -THREADS_POSIX_FALSE -THREADS_POSIX_TRUE -OS_WINDOWS_FALSE -OS_WINDOWS_TRUE -OS_OPENBSD_FALSE -OS_OPENBSD_TRUE -OS_DARWIN_FALSE -OS_DARWIN_TRUE -OS_LINUX_FALSE -OS_LINUX_TRUE -PC_LIBS_PRIVATE -THREAD_CFLAGS -OS_WINDOWS -OS_OPENBSD -OS_DARWIN -OS_LINUX -RC -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -RANLIB -AR -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LIBTOOL -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_maintainer_mode -enable_silent_rules -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -enable_libtool_lock -enable_timerfd -enable_log -enable_debug_log -enable_examples_build -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures libusb 1.0.9 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/libusb] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of libusb 1.0.9:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0') - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-timerfd use timerfd for timing (default auto) - --disable-log disable all logging - --enable-debug-log enable debug logging (default n) - --enable-examples-build build example applications (default n) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -libusb home page: . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -libusb configure 1.0.9 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------------------------- ## -## Report this to libusb-devel@lists.sourceforge.net ## -## ------------------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- -# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - as_decl_name=`echo $2|sed 's/ *(.*//'` - as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -#ifndef $as_decl_name -#ifdef __cplusplus - (void) $as_decl_use; -#else - (void) $as_decl_name; -#endif -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_decl -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by libusb $as_me 1.0.9, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -# Library versioning -# These numbers should be tweaked on every release. Read carefully: -# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -# http://sourceware.org/autobook/autobook/autobook_91.html -lt_current="1" -lt_revision="0" -lt_age="1" -LTLDFLAGS="-version-info ${lt_current}:${lt_revision}:${lt_age}" - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# 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". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -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 - - -# Define the identity of the package. - PACKAGE='libusb' - VERSION='1.0.9' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - - - - -ac_config_headers="$ac_config_headers config.h" - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=0;; -esac -AM_BACKSLASH='\' - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - 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 - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj 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_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.2.10' -macro_revision='1.3175' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# Backslashify metacharacters that are still active within -# double-quoted strings. -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 delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`print -r -- -n 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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* | cegcc*) - # 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; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # 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. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - 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])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - 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=pass_all - ;; - -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 - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - 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 - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -else - AR="$ac_cv_prog_AR" -fi - -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# 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 - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - 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 - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# 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 - -# Try without a prefix underscore, 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. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && 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 <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf 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 - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - - - - - - - - - - - - - - - - - - - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - 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" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -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 - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&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 - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&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 - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 -$as_echo "$lt_prog_compiler_pic" >&6; } - - - - - - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # 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. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [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 - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag= - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$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' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; 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~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&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. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # 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. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - 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 - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo(void) {} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - 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*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - 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=`func_echo_all "$lib" | $SED '\''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' - ;; - esac - ;; - -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* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - 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~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - 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="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - # 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 - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - 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=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - 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' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;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' - ;; - -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=qnx - 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='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - 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 - shlibpath_overrides_runpath=yes - 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' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - 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' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/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}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; 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 - - - - - - - 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* | cegcc*) - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#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 - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#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 - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. -set dummy ${ac_tool_prefix}windres; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RC"; then - ac_cv_prog_RC="$RC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RC="${ac_tool_prefix}windres" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RC=$ac_cv_prog_RC -if test -n "$RC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RC" >&5 -$as_echo "$RC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RC"; then - ac_ct_RC=$RC - # Extract the first word of "windres", so it can be a program name with args. -set dummy windres; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RC"; then - ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RC="windres" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RC=$ac_cv_prog_ac_ct_RC -if test -n "$ac_ct_RC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5 -$as_echo "$ac_ct_RC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RC" = x; then - RC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RC=$ac_ct_RC - fi -else - RC="$ac_cv_prog_RC" -fi - - - - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -objext_RC=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -compiler=$CC -compiler_RC=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - -lt_cv_prog_compiler_c_o_RC=yes - -if test -n "$compiler"; then - : - - - -fi - -GCC=$lt_save_GCC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - -if test "x$CC" != xcc; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 -$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 -$as_echo_n "checking whether cc understands -c and -o together... " >&6; } -fi -set dummy $CC; ac_cc=`$as_echo "$2" | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -# Make sure it works both with $CC and with simple cc. -# We do the test twice because some compilers refuse to overwrite an -# existing .o file with -o, though they will create one. -ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -rm -f conftest2.* -if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; -then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.$ac_ext >&5' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' - rm -f conftest2.* - if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; - then - # cc works too. - : - else - # cc exists but doesn't like -o. - eval ac_cv_prog_cc_${ac_cc}_c_o=no - fi - fi - fi -else - eval ac_cv_prog_cc_${ac_cc}_c_o=no -fi -rm -f core conftest* - -fi -if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h - -fi - -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi - - - -$as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - -LTLDFLAGS="${LTLDFLAGS} -no-undefined" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking operating system" >&5 -$as_echo_n "checking operating system... " >&6; } -case $host in -*-linux*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux" >&5 -$as_echo "Linux" >&6; } - backend="linux" - ;; -*-darwin*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin/Mac OS X" >&5 -$as_echo "Darwin/Mac OS X" >&6; } - backend="darwin" - ;; -*-openbsd*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: OpenBSD" >&5 -$as_echo "OpenBSD" >&6; } - backend="openbsd" - ;; -*-netbsd*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: NetBSD (using OpenBSD backend)" >&5 -$as_echo "NetBSD (using OpenBSD backend)" >&6; } - backend="openbsd" - ;; -*-mingw*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Windows" >&5 -$as_echo "Windows" >&6; } - backend="windows" - ;; -*-cygwin*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cygwin (using Windows backend)" >&5 -$as_echo "Cygwin (using Windows backend)" >&6; } - backend="windows" - threads="posix" - ;; -*) - as_fn_error $? "unsupported operating system" "$LINENO" 5 -esac -case $backend in -linux) - -$as_echo "#define OS_LINUX 1" >>confdefs.h - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 -$as_echo_n "checking for clock_gettime in -lrt... " >&6; } -if ${ac_cv_lib_rt_clock_gettime+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char clock_gettime (); -int -main () -{ -return clock_gettime (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_rt_clock_gettime=yes -else - ac_cv_lib_rt_clock_gettime=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 -$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } -if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : - PC_LIBS_PRIVATE="-lrt" -fi - - threads="posix" - THREAD_CFLAGS="-pthread" - PC_LIBS_PRIVATE="${PC_LIBS_PRIVATE} -pthread" - for ac_header in poll.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default" -if test "x$ac_cv_header_poll_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_POLL_H 1 -_ACEOF - -fi - -done - - -$as_echo "#define POLL_NFDS_TYPE nfds_t" >>confdefs.h - - ;; -darwin) - -$as_echo "#define OS_DARWIN 1" >>confdefs.h - - - threads="posix" - PC_LIBS_PRIVATE="-lobjc -Wl,-framework,IOKit -Wl,-framework,CoreFoundation" - LTLDFLAGS="${LTLDFLAGS} -Wl,-prebind" - for ac_header in poll.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default" -if test "x$ac_cv_header_poll_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_POLL_H 1 -_ACEOF - -fi - -done - - ac_fn_c_check_type "$LINENO" "nfds_t" "ac_cv_type_nfds_t" "#include -" -if test "x$ac_cv_type_nfds_t" = xyes; then : - -$as_echo "#define POLL_NFDS_TYPE nfds_t" >>confdefs.h - -else - -$as_echo "#define POLL_NFDS_TYPE unsigned int" >>confdefs.h - -fi - - ;; -openbsd) - -$as_echo "#define OS_OPENBSD 1" >>confdefs.h - - - threads="posix" - THREAD_CFLAGS="-pthread" - PC_LIBS_PRIVATE="-pthread" - for ac_header in poll.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default" -if test "x$ac_cv_header_poll_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_POLL_H 1 -_ACEOF - -fi - -done - - -$as_echo "#define POLL_NFDS_TYPE nfds_t" >>confdefs.h - - ;; -windows) - -$as_echo "#define OS_WINDOWS 1" >>confdefs.h - - - PC_LIBS_PRIVATE="" - LTLDFLAGS="${LTLDFLAGS} -avoid-version -Wl,--add-stdcall-alias" - -$as_echo "#define POLL_NFDS_TYPE unsigned int" >>confdefs.h - - ;; -esac - - -LIBS="${LIBS} ${PC_LIBS_PRIVATE}" - - if test "x$backend" = xlinux; then - OS_LINUX_TRUE= - OS_LINUX_FALSE='#' -else - OS_LINUX_TRUE='#' - OS_LINUX_FALSE= -fi - - if test "x$backend" = xdarwin; then - OS_DARWIN_TRUE= - OS_DARWIN_FALSE='#' -else - OS_DARWIN_TRUE='#' - OS_DARWIN_FALSE= -fi - - if test "x$backend" = xopenbsd; then - OS_OPENBSD_TRUE= - OS_OPENBSD_FALSE='#' -else - OS_OPENBSD_TRUE='#' - OS_OPENBSD_FALSE= -fi - - if test "x$backend" = xwindows; then - OS_WINDOWS_TRUE= - OS_WINDOWS_FALSE='#' -else - OS_WINDOWS_TRUE='#' - OS_WINDOWS_FALSE= -fi - - if test "x$threads" = xposix; then - THREADS_POSIX_TRUE= - THREADS_POSIX_FALSE='#' -else - THREADS_POSIX_TRUE='#' - THREADS_POSIX_FALSE= -fi - -if test "$threads" = posix; then - -$as_echo "#define THREADS_POSIX 1" >>confdefs.h - -fi - -# timerfd -ac_fn_c_check_header_mongrel "$LINENO" "sys/timerfd.h" "ac_cv_header_sys_timerfd_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_timerfd_h" = xyes; then : - timerfd_h=1 -else - timerfd_h=0 -fi - - -# Check whether --enable-timerfd was given. -if test "${enable_timerfd+set}" = set; then : - enableval=$enable_timerfd; use_timerfd=$enableval -else - use_timerfd='auto' -fi - - -if test "x$use_timerfd" = "xyes" -a "x$timerfd_h" = "x0"; then - as_fn_error $? "timerfd header not available; glibc 2.9+ required" "$LINENO" 5 -fi - -ac_fn_c_check_decl "$LINENO" "TFD_NONBLOCK" "ac_cv_have_decl_TFD_NONBLOCK" "#include -" -if test "x$ac_cv_have_decl_TFD_NONBLOCK" = xyes; then : - tfd_hdr_ok=yes -else - tfd_hdr_ok=no -fi - -if test "x$use_timerfd" = "xyes" -a "x$tfd_hdr_ok" = "xno"; then - as_fn_error $? "timerfd header not usable; glibc 2.9+ required" "$LINENO" 5 -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use timerfd for timing" >&5 -$as_echo_n "checking whether to use timerfd for timing... " >&6; } -if test "x$use_timerfd" = "xno"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (disabled by user)" >&5 -$as_echo "no (disabled by user)" >&6; } -else - if test "x$timerfd_h" = "x1" -a "x$tfd_hdr_ok" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define USBI_TIMERFD_AVAILABLE 1" >>confdefs.h - - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (header not available)" >&5 -$as_echo "no (header not available)" >&6; } - fi -fi - -ac_fn_c_check_type "$LINENO" "struct timespec" "ac_cv_type_struct_timespec" "$ac_includes_default" -if test "x$ac_cv_type_struct_timespec" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TIMESPEC 1 -_ACEOF - - -fi - - -# Message logging -# Check whether --enable-log was given. -if test "${enable_log+set}" = set; then : - enableval=$enable_log; log_enabled=$enableval -else - log_enabled='yes' -fi - -if test "x$log_enabled" != "xno"; then - -$as_echo "#define ENABLE_LOGGING 1" >>confdefs.h - -fi - -# Check whether --enable-debug-log was given. -if test "${enable_debug_log+set}" = set; then : - enableval=$enable_debug_log; debug_log_enabled=$enableval -else - debug_log_enabled='no' -fi - -if test "x$debug_log_enabled" != "xno"; then - -$as_echo "#define ENABLE_DEBUG_LOGGING 1" >>confdefs.h - -fi - -# Examples build -# Check whether --enable-examples-build was given. -if test "${enable_examples_build+set}" = set; then : - enableval=$enable_examples_build; build_examples=$enableval -else - build_examples='no' -fi - - if test "x$build_examples" != "xno"; then - BUILD_EXAMPLES_TRUE= - BUILD_EXAMPLES_FALSE='#' -else - BUILD_EXAMPLES_TRUE='#' - BUILD_EXAMPLES_FALSE= -fi - - -# check for -fvisibility=hidden compiler support (GCC >= 3.4) -saved_cflags="$CFLAGS" -# -Werror required for cygwin -CFLAGS="$CFLAGS -Werror -fvisibility=hidden" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - VISIBILITY_CFLAGS="-fvisibility=hidden" - -$as_echo "#define DEFAULT_VISIBILITY __attribute__((visibility(\"default\")))" >>confdefs.h - -else - VISIBILITY_CFLAGS="" - -$as_echo "#define DEFAULT_VISIBILITY /**/" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS="$saved_cflags" - -# check for -Wno-pointer-sign compiler support (GCC >= 4) -saved_cflags="$CFLAGS" -CFLAGS="$CFLAGS -Wno-pointer-sign" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - nopointersign_cflags="-Wno-pointer-sign" -else - nopointersign_cflags="" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS="$saved_cflags" - -# sigaction not available on MinGW -ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" -if test "x$ac_cv_func_sigaction" = xyes; then : - have_sigaction=yes -else - have_sigaction=no -fi - - if test "x$have_sigaction" = "xyes"; then - HAVE_SIGACTION_TRUE= - HAVE_SIGACTION_FALSE='#' -else - HAVE_SIGACTION_TRUE='#' - HAVE_SIGACTION_FALSE= -fi - - -# headers not available on all platforms but required on others -for ac_header in sys/time.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_time_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_TIME_H 1 -_ACEOF - -fi - -done - -for ac_func in gettimeofday -do : - ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" -if test "x$ac_cv_func_gettimeofday" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETTIMEOFDAY 1 -_ACEOF - -fi -done - - -AM_CFLAGS="-std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration $nopointersign_cflags -Wshadow" - - - - - -ac_config_files="$ac_config_files libusb-1.0.pc" - -ac_config_files="$ac_config_files Makefile" - -ac_config_files="$ac_config_files libusb/Makefile" - -ac_config_files="$ac_config_files examples/Makefile" - -ac_config_files="$ac_config_files doc/Makefile" - -ac_config_files="$ac_config_files doc/doxygen.cfg" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${OS_LINUX_TRUE}" && test -z "${OS_LINUX_FALSE}"; then - as_fn_error $? "conditional \"OS_LINUX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${OS_DARWIN_TRUE}" && test -z "${OS_DARWIN_FALSE}"; then - as_fn_error $? "conditional \"OS_DARWIN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${OS_OPENBSD_TRUE}" && test -z "${OS_OPENBSD_FALSE}"; then - as_fn_error $? "conditional \"OS_OPENBSD\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${OS_WINDOWS_TRUE}" && test -z "${OS_WINDOWS_FALSE}"; then - as_fn_error $? "conditional \"OS_WINDOWS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${THREADS_POSIX_TRUE}" && test -z "${THREADS_POSIX_FALSE}"; then - as_fn_error $? "conditional \"THREADS_POSIX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${BUILD_EXAMPLES_TRUE}" && test -z "${BUILD_EXAMPLES_FALSE}"; then - as_fn_error $? "conditional \"BUILD_EXAMPLES\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_SIGACTION_TRUE}" && test -z "${HAVE_SIGACTION_FALSE}"; then - as_fn_error $? "conditional \"HAVE_SIGACTION\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by libusb $as_me 1.0.9, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to . -libusb home page: ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -libusb config.status 1.0.9 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# 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 - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -LD_RC='`$ECHO "$LD_RC" | $SED "$delay_single_quote_subst"`' -reload_flag_RC='`$ECHO "$reload_flag_RC" | $SED "$delay_single_quote_subst"`' -reload_cmds_RC='`$ECHO "$reload_cmds_RC" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_RC='`$ECHO "$old_archive_cmds_RC" | $SED "$delay_single_quote_subst"`' -compiler_RC='`$ECHO "$compiler_RC" | $SED "$delay_single_quote_subst"`' -GCC_RC='`$ECHO "$GCC_RC" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_RC='`$ECHO "$lt_prog_compiler_no_builtin_flag_RC" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_RC='`$ECHO "$lt_prog_compiler_wl_RC" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_RC='`$ECHO "$lt_prog_compiler_pic_RC" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_RC='`$ECHO "$lt_prog_compiler_static_RC" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_RC='`$ECHO "$lt_cv_prog_compiler_c_o_RC" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_RC='`$ECHO "$archive_cmds_need_lc_RC" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_RC='`$ECHO "$enable_shared_with_static_runtimes_RC" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_RC='`$ECHO "$export_dynamic_flag_spec_RC" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_RC='`$ECHO "$whole_archive_flag_spec_RC" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_RC='`$ECHO "$compiler_needs_object_RC" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_RC='`$ECHO "$old_archive_from_new_cmds_RC" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_RC='`$ECHO "$old_archive_from_expsyms_cmds_RC" | $SED "$delay_single_quote_subst"`' -archive_cmds_RC='`$ECHO "$archive_cmds_RC" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_RC='`$ECHO "$archive_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`' -module_cmds_RC='`$ECHO "$module_cmds_RC" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_RC='`$ECHO "$module_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_RC='`$ECHO "$with_gnu_ld_RC" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_RC='`$ECHO "$allow_undefined_flag_RC" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_RC='`$ECHO "$no_undefined_flag_RC" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_RC='`$ECHO "$hardcode_libdir_flag_spec_RC" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_RC='`$ECHO "$hardcode_libdir_flag_spec_ld_RC" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_RC='`$ECHO "$hardcode_libdir_separator_RC" | $SED "$delay_single_quote_subst"`' -hardcode_direct_RC='`$ECHO "$hardcode_direct_RC" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_RC='`$ECHO "$hardcode_direct_absolute_RC" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_RC='`$ECHO "$hardcode_minus_L_RC" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_RC='`$ECHO "$hardcode_shlibpath_var_RC" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_RC='`$ECHO "$hardcode_automatic_RC" | $SED "$delay_single_quote_subst"`' -inherit_rpath_RC='`$ECHO "$inherit_rpath_RC" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_RC='`$ECHO "$link_all_deplibs_RC" | $SED "$delay_single_quote_subst"`' -fix_srcfile_path_RC='`$ECHO "$fix_srcfile_path_RC" | $SED "$delay_single_quote_subst"`' -always_export_symbols_RC='`$ECHO "$always_export_symbols_RC" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_RC='`$ECHO "$export_symbols_cmds_RC" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_RC='`$ECHO "$exclude_expsyms_RC" | $SED "$delay_single_quote_subst"`' -include_expsyms_RC='`$ECHO "$include_expsyms_RC" | $SED "$delay_single_quote_subst"`' -prelink_cmds_RC='`$ECHO "$prelink_cmds_RC" | $SED "$delay_single_quote_subst"`' -file_list_spec_RC='`$ECHO "$file_list_spec_RC" | $SED "$delay_single_quote_subst"`' -hardcode_action_RC='`$ECHO "$hardcode_action_RC" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -AR \ -AR_FLAGS \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ -lt_prog_compiler_pic \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -fix_srcfile_path \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -LD_RC \ -reload_flag_RC \ -compiler_RC \ -lt_prog_compiler_no_builtin_flag_RC \ -lt_prog_compiler_wl_RC \ -lt_prog_compiler_pic_RC \ -lt_prog_compiler_static_RC \ -lt_cv_prog_compiler_c_o_RC \ -export_dynamic_flag_spec_RC \ -whole_archive_flag_spec_RC \ -compiler_needs_object_RC \ -with_gnu_ld_RC \ -allow_undefined_flag_RC \ -no_undefined_flag_RC \ -hardcode_libdir_flag_spec_RC \ -hardcode_libdir_flag_spec_ld_RC \ -hardcode_libdir_separator_RC \ -fix_srcfile_path_RC \ -exclude_expsyms_RC \ -include_expsyms_RC \ -file_list_spec_RC; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_RC \ -old_archive_cmds_RC \ -old_archive_from_new_cmds_RC \ -old_archive_from_expsyms_cmds_RC \ -archive_cmds_RC \ -archive_expsym_cmds_RC \ -module_cmds_RC \ -module_expsym_cmds_RC \ -export_symbols_cmds_RC \ -prelink_cmds_RC; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "libusb-1.0.pc") CONFIG_FILES="$CONFIG_FILES libusb-1.0.pc" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "libusb/Makefile") CONFIG_FILES="$CONFIG_FILES libusb/Makefile" ;; - "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "doc/doxygen.cfg") CONFIG_FILES="$CONFIG_FILES doc/doxygen.cfg" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n '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_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="RC " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# 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 - -# 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//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# 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 - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# 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 - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# 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 - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# 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 - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# 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 - -# 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 - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_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 -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: RC - -# The linker used to build libraries. -LD=$lt_LD_RC - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_RC -reload_cmds=$lt_reload_cmds_RC - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_RC - -# A language specific compiler. -CC=$lt_compiler_RC - -# Is the compiler the GNU compiler? -with_gcc=$GCC_RC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_RC - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_RC - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_RC - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_RC - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_RC - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_RC -archive_expsym_cmds=$lt_archive_expsym_cmds_RC - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_RC -module_expsym_cmds=$lt_module_expsym_cmds_RC - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_RC - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_RC - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_RC - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_RC - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_RC - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_RC - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_RC - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_RC - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_RC - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_RC - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path_RC - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_RC - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_RC - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_RC - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_RC - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_RC - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_RC - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_RC - -# ### END LIBTOOL TAG CONFIG: RC -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/configure.ac b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/configure.ac deleted file mode 100644 index f9e648e..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/configure.ac +++ /dev/null @@ -1,222 +0,0 @@ -dnl These m4 macros are whitespace sensitive and break if moved around much. -m4_define([LU_VERSION_H], m4_include([libusb/version.h])) -m4_define([LU_DEFINE_VERSION_ATOM], - [m4_define([$1], m4_bregexp(LU_VERSION_H, - [^#define\s*$1\s*\([0-9]*\).*], [\1]))]) -m4_define([LU_DEFINE_VERSION_RC_ATOM], - [m4_define([$1], m4_bregexp(LU_VERSION_H, - [^#define\s*$1\s*"\(-rc[0-9]*\)".*], [\1]))]) -dnl The m4_bregexp() returns (only) the numbers following the #define named -dnl in the first macro parameter. m4_define() then defines the name for use -dnl in AC_INIT(). - -LU_DEFINE_VERSION_ATOM([LIBUSB_MAJOR]) -LU_DEFINE_VERSION_ATOM([LIBUSB_MINOR]) -LU_DEFINE_VERSION_ATOM([LIBUSB_MICRO]) -LU_DEFINE_VERSION_RC_ATOM([LIBUSB_RC]) - -AC_INIT([libusb], LIBUSB_MAJOR[.]LIBUSB_MINOR[.]LIBUSB_MICRO[]LIBUSB_RC, [libusb-devel@lists.sourceforge.net], [libusb], [http://www.libusb.org/]) - -# Library versioning -# These numbers should be tweaked on every release. Read carefully: -# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -# http://sourceware.org/autobook/autobook/autobook_91.html -lt_current="1" -lt_revision="0" -lt_age="1" -LTLDFLAGS="-version-info ${lt_current}:${lt_revision}:${lt_age}" - -AM_INIT_AUTOMAKE -AM_MAINTAINER_MODE - -AC_CONFIG_SRCDIR([libusb/core.c]) -AC_CONFIG_MACRO_DIR([m4]) -AM_CONFIG_HEADER([config.h]) -m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) - -AC_PREREQ([2.50]) -AC_PROG_CC -AC_PROG_LIBTOOL -LT_LANG([Windows Resource]) -AC_C_INLINE -AM_PROG_CC_C_O -AC_DEFINE([_GNU_SOURCE], 1, [Use GNU extensions]) - -LTLDFLAGS="${LTLDFLAGS} -no-undefined" - -AC_MSG_CHECKING([operating system]) -case $host in -*-linux*) - AC_MSG_RESULT([Linux]) - backend="linux" - ;; -*-darwin*) - AC_MSG_RESULT([Darwin/Mac OS X]) - backend="darwin" - ;; -*-openbsd*) - AC_MSG_RESULT([OpenBSD]) - backend="openbsd" - ;; -*-netbsd*) - AC_MSG_RESULT([NetBSD (using OpenBSD backend)]) - backend="openbsd" - ;; -*-mingw*) - AC_MSG_RESULT([Windows]) - backend="windows" - ;; -*-cygwin*) - AC_MSG_RESULT([Cygwin (using Windows backend)]) - backend="windows" - threads="posix" - ;; -*) - AC_MSG_ERROR([unsupported operating system]) -esac -case $backend in -linux) - AC_DEFINE(OS_LINUX, 1, [Linux backend]) - AC_SUBST(OS_LINUX) - AC_CHECK_LIB(rt, clock_gettime, PC_LIBS_PRIVATE="-lrt") - threads="posix" - THREAD_CFLAGS="-pthread" - PC_LIBS_PRIVATE="${PC_LIBS_PRIVATE} -pthread" - AC_CHECK_HEADERS([poll.h]) - AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument]) - ;; -darwin) - AC_DEFINE(OS_DARWIN, 1, [Darwin backend]) - AC_SUBST(OS_DARWIN) - threads="posix" - PC_LIBS_PRIVATE="-lobjc -Wl,-framework,IOKit -Wl,-framework,CoreFoundation" - LTLDFLAGS="${LTLDFLAGS} -Wl,-prebind" - AC_CHECK_HEADERS([poll.h]) - AC_CHECK_TYPE([nfds_t], - [AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument])], - [AC_DEFINE([POLL_NFDS_TYPE],[unsigned int],[type of second poll() argument])], - [#include ]) - ;; -openbsd) - AC_DEFINE(OS_OPENBSD, 1, [OpenBSD backend]) - AC_SUBST(OS_OPENBSD) - threads="posix" - THREAD_CFLAGS="-pthread" - PC_LIBS_PRIVATE="-pthread" - AC_CHECK_HEADERS([poll.h]) - AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument]) - ;; -windows) - AC_DEFINE(OS_WINDOWS, 1, [Windows backend]) - AC_SUBST(OS_WINDOWS) - PC_LIBS_PRIVATE="" - LTLDFLAGS="${LTLDFLAGS} -avoid-version -Wl,--add-stdcall-alias" - AC_DEFINE([POLL_NFDS_TYPE],[unsigned int],[type of second poll() argument]) - ;; -esac -AC_SUBST(THREAD_CFLAGS) -AC_SUBST(PC_LIBS_PRIVATE) -LIBS="${LIBS} ${PC_LIBS_PRIVATE}" - -AM_CONDITIONAL(OS_LINUX, test "x$backend" = xlinux) -AM_CONDITIONAL(OS_DARWIN, test "x$backend" = xdarwin) -AM_CONDITIONAL(OS_OPENBSD, test "x$backend" = xopenbsd) -AM_CONDITIONAL(OS_WINDOWS, test "x$backend" = xwindows) -AM_CONDITIONAL(THREADS_POSIX, test "x$threads" = xposix) -if test "$threads" = posix; then - AC_DEFINE(THREADS_POSIX, 1, [Use POSIX Threads]) -fi - -# timerfd -AC_CHECK_HEADER([sys/timerfd.h], [timerfd_h=1], [timerfd_h=0]) -AC_ARG_ENABLE([timerfd], - [AS_HELP_STRING([--enable-timerfd], - [use timerfd for timing (default auto)])], - [use_timerfd=$enableval], [use_timerfd='auto']) - -if test "x$use_timerfd" = "xyes" -a "x$timerfd_h" = "x0"; then - AC_MSG_ERROR([timerfd header not available; glibc 2.9+ required]) -fi - -AC_CHECK_DECL([TFD_NONBLOCK], [tfd_hdr_ok=yes], [tfd_hdr_ok=no], [#include ]) -if test "x$use_timerfd" = "xyes" -a "x$tfd_hdr_ok" = "xno"; then - AC_MSG_ERROR([timerfd header not usable; glibc 2.9+ required]) -fi - -AC_MSG_CHECKING([whether to use timerfd for timing]) -if test "x$use_timerfd" = "xno"; then - AC_MSG_RESULT([no (disabled by user)]) -else - if test "x$timerfd_h" = "x1" -a "x$tfd_hdr_ok" = "xyes"; then - AC_MSG_RESULT([yes]) - AC_DEFINE(USBI_TIMERFD_AVAILABLE, 1, [timerfd headers available]) - else - AC_MSG_RESULT([no (header not available)]) - fi -fi - -AC_CHECK_TYPES(struct timespec) - -# Message logging -AC_ARG_ENABLE([log], [AS_HELP_STRING([--disable-log], [disable all logging])], - [log_enabled=$enableval], - [log_enabled='yes']) -if test "x$log_enabled" != "xno"; then - AC_DEFINE([ENABLE_LOGGING], 1, [Message logging]) -fi - -AC_ARG_ENABLE([debug-log], [AS_HELP_STRING([--enable-debug-log], - [enable debug logging (default n)])], - [debug_log_enabled=$enableval], - [debug_log_enabled='no']) -if test "x$debug_log_enabled" != "xno"; then - AC_DEFINE([ENABLE_DEBUG_LOGGING], 1, [Debug message logging]) -fi - -# Examples build -AC_ARG_ENABLE([examples-build], [AS_HELP_STRING([--enable-examples-build], - [build example applications (default n)])], - [build_examples=$enableval], - [build_examples='no']) -AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$build_examples" != "xno"]) - -# check for -fvisibility=hidden compiler support (GCC >= 3.4) -saved_cflags="$CFLAGS" -# -Werror required for cygwin -CFLAGS="$CFLAGS -Werror -fvisibility=hidden" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], - [VISIBILITY_CFLAGS="-fvisibility=hidden" - AC_DEFINE([DEFAULT_VISIBILITY], [__attribute__((visibility("default")))], [Default visibility]) ], - [ VISIBILITY_CFLAGS="" - AC_DEFINE([DEFAULT_VISIBILITY], [], [Default visibility]) ], - ]) -CFLAGS="$saved_cflags" - -# check for -Wno-pointer-sign compiler support (GCC >= 4) -saved_cflags="$CFLAGS" -CFLAGS="$CFLAGS -Wno-pointer-sign" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], - nopointersign_cflags="-Wno-pointer-sign", nopointersign_cflags="") -CFLAGS="$saved_cflags" - -# sigaction not available on MinGW -AC_CHECK_FUNC([sigaction], [have_sigaction=yes], [have_sigaction=no]) -AM_CONDITIONAL([HAVE_SIGACTION], [test "x$have_sigaction" = "xyes"]) - -# headers not available on all platforms but required on others -AC_CHECK_HEADERS([sys/time.h]) -AC_CHECK_FUNCS(gettimeofday) - -AM_CFLAGS="-std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration $nopointersign_cflags -Wshadow" - -AC_SUBST(VISIBILITY_CFLAGS) -AC_SUBST(AM_CFLAGS) -AC_SUBST(LTLDFLAGS) - -AC_CONFIG_FILES([libusb-1.0.pc]) -AC_CONFIG_FILES([Makefile]) -AC_CONFIG_FILES([libusb/Makefile]) -AC_CONFIG_FILES([examples/Makefile]) -AC_CONFIG_FILES([doc/Makefile]) -AC_CONFIG_FILES([doc/doxygen.cfg]) -AC_OUTPUT diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/depcomp b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/depcomp deleted file mode 100755 index df8eea7..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/depcomp +++ /dev/null @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, 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, see . - -# 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. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile deleted file mode 100644 index 8650821..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile +++ /dev/null @@ -1,377 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# doc/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. - - - -pkgdatadir = $(datadir)/libusb -pkgincludedir = $(includedir)/libusb -pkglibdir = $(libdir)/libusb -pkglibexecdir = $(libexecdir)/libusb -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-unknown-linux-gnu -host_triplet = x86_64-unknown-linux-gnu -subdir = doc -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/doxygen.cfg.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = doxygen.cfg -CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run aclocal-1.11 -AMTAR = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run tar -AM_CFLAGS = -std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow -AM_DEFAULT_VERBOSITY = 0 -AR = ar -AUTOCONF = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoconf -AUTOHEADER = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoheader -AUTOMAKE = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run automake-1.11 -AWK = mawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /bin/grep -E -EXEEXT = -FGREP = /bin/grep -F -GREP = /bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LD = /usr/bin/ld -m elf_x86_64 -LDFLAGS = -LIBOBJS = -LIBS = -lrt -pthread -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = ln -s -LTLDFLAGS = -version-info 1:0:1 -no-undefined -LTLIBOBJS = -MAINT = # -MAKEINFO = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run makeinfo -MKDIR_P = /bin/mkdir -p -NM = /usr/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OS_DARWIN = -OS_LINUX = -OS_OPENBSD = -OS_WINDOWS = -OTOOL = -OTOOL64 = -PACKAGE = libusb -PACKAGE_BUGREPORT = libusb-devel@lists.sourceforge.net -PACKAGE_NAME = libusb -PACKAGE_STRING = libusb 1.0.9 -PACKAGE_TARNAME = libusb -PACKAGE_URL = http://www.libusb.org/ -PACKAGE_VERSION = 1.0.9 -PATH_SEPARATOR = : -PC_LIBS_PRIVATE = -lrt -pthread -RANLIB = ranlib -RC = -SED = /bin/sed -SET_MAKE = -SHELL = /bin/bash -STRIP = strip -THREAD_CFLAGS = -pthread -VERSION = 1.0.9 -VISIBILITY_CFLAGS = -fvisibility=hidden -abs_builddir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc -abs_srcdir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc -abs_top_builddir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -abs_top_srcdir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -ac_ct_CC = gcc -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -bindir = ${exec_prefix}/bin -build = x86_64-unknown-linux-gnu -build_alias = -build_cpu = x86_64 -build_os = linux-gnu -build_vendor = unknown -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-unknown-linux-gnu -host_alias = -host_cpu = x86_64 -host_os = linux-gnu -host_vendor = unknown -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /usr/local -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -EXTRA_DIST = doxygen.cfg.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ - $(am__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: # $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): # $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -doxygen.cfg: $(top_builddir)/config.status $(srcdir)/doxygen.cfg.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.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-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -docs: doxygen.cfg - doxygen $^ - -docs-upload: docs - ln -s html api-1.0 - rsync -av api-1.0/ web.sourceforge.net:htdocs/api-1.0/ - rm -f api-1.0 - -# 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/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile.am b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile.am deleted file mode 100644 index 931a7c0..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -EXTRA_DIST = doxygen.cfg.in - -docs: doxygen.cfg - doxygen $^ - -docs-upload: docs - ln -s html api-1.0 - rsync -av api-1.0/ web.sourceforge.net:htdocs/api-1.0/ - rm -f api-1.0 - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile.in b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile.in deleted file mode 100644 index 4c4a39c..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/Makefile.in +++ /dev/null @@ -1,377 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = doc -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/doxygen.cfg.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = doxygen.cfg -CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLDFLAGS = @LTLDFLAGS@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS_DARWIN = @OS_DARWIN@ -OS_LINUX = @OS_LINUX@ -OS_OPENBSD = @OS_OPENBSD@ -OS_WINDOWS = @OS_WINDOWS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PC_LIBS_PRIVATE = @PC_LIBS_PRIVATE@ -RANLIB = @RANLIB@ -RC = @RC@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -THREAD_CFLAGS = @THREAD_CFLAGS@ -VERSION = @VERSION@ -VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = doxygen.cfg.in -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 ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ - $(am__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 -$(am__aclocal_m4_deps): -doxygen.cfg: $(top_builddir)/config.status $(srcdir)/doxygen.cfg.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.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-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -docs: doxygen.cfg - doxygen $^ - -docs-upload: docs - ln -s html api-1.0 - rsync -av api-1.0/ web.sourceforge.net:htdocs/api-1.0/ - rm -f api-1.0 - -# 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/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg deleted file mode 100644 index 88f8b16..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg +++ /dev/null @@ -1,1294 +0,0 @@ -# Doxyfile 1.5.3 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file that -# follow. The default is UTF-8 which is also the encoding used for all text before -# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into -# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -# possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = libusb - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be extracted -# and appear in the documentation as a namespace called 'anonymous_namespace{file}', -# where file will be replaced with the base name of the file that contains the anonymous -# namespace. By default anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = ../libusb - -# This tag can be used to specify the character encoding of the source files that -# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default -# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. -# See http://www.gnu.org/software/libiconv for the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = ../libusb/libusbi.h - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the output. -# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, -# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH -# then you must also enable this option. If you don't then doxygen will produce -# a warning and turn it on anyway - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = API_EXPORTED= LIBUSB_CALL= DEFAULT_VISIBILITY= - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to -# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to -# specify the directory where the mscgen tool resides. If left empty the tool is assumed to -# be found in the default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the number -# of direct children of the root node in a graph is already larger than -# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg.in b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg.in deleted file mode 100644 index 128e1de..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/doc/doxygen.cfg.in +++ /dev/null @@ -1,1294 +0,0 @@ -# Doxyfile 1.5.3 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file that -# follow. The default is UTF-8 which is also the encoding used for all text before -# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into -# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -# possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = libusb - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be extracted -# and appear in the documentation as a namespace called 'anonymous_namespace{file}', -# where file will be replaced with the base name of the file that contains the anonymous -# namespace. By default anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = @top_srcdir@/libusb - -# This tag can be used to specify the character encoding of the source files that -# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default -# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. -# See http://www.gnu.org/software/libiconv for the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = @top_srcdir@/libusb/libusbi.h - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the output. -# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, -# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH -# then you must also enable this option. If you don't then doxygen will produce -# a warning and turn it on anyway - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = API_EXPORTED= LIBUSB_CALL= DEFAULT_VISIBILITY= - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to -# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to -# specify the directory where the mscgen tool resides. If left empty the tool is assumed to -# be found in the default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the number -# of direct children of the root node in a graph is already larger than -# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/dpfp.Po b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/dpfp.Po deleted file mode 100644 index 9ce06a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/dpfp.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/dpfp_threaded-dpfp_threaded.Po b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/dpfp_threaded-dpfp_threaded.Po deleted file mode 100644 index 9ce06a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/dpfp_threaded-dpfp_threaded.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/listdevs.Po b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/listdevs.Po deleted file mode 100644 index 9ce06a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/.deps/listdevs.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile deleted file mode 100644 index 4b935df..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile +++ /dev/null @@ -1,542 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# examples/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. - - - - -pkgdatadir = $(datadir)/libusb -pkgincludedir = $(includedir)/libusb -pkglibdir = $(libdir)/libusb -pkglibexecdir = $(libexecdir)/libusb -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-unknown-linux-gnu -host_triplet = x86_64-unknown-linux-gnu -noinst_PROGRAMS = listdevs$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) -am__append_1 = dpfp -am__append_2 = dpfp_threaded -subdir = examples -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__EXEEXT_1 = dpfp$(EXEEXT) -am__EXEEXT_2 = dpfp_threaded$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am__dpfp_SOURCES_DIST = dpfp.c -am_dpfp_OBJECTS = dpfp.$(OBJEXT) -dpfp_OBJECTS = $(am_dpfp_OBJECTS) -dpfp_DEPENDENCIES = ../libusb/libusb-1.0.la -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -am__dpfp_threaded_SOURCES_DIST = dpfp_threaded.c -am_dpfp_threaded_OBJECTS = dpfp_threaded-dpfp_threaded.$(OBJEXT) -dpfp_threaded_OBJECTS = $(am_dpfp_threaded_OBJECTS) -dpfp_threaded_DEPENDENCIES = ../libusb/libusb-1.0.la -dpfp_threaded_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(dpfp_threaded_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am_listdevs_OBJECTS = listdevs.$(OBJEXT) -listdevs_OBJECTS = $(am_listdevs_OBJECTS) -listdevs_DEPENDENCIES = ../libusb/libusb-1.0.la -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(dpfp_SOURCES) $(dpfp_threaded_SOURCES) $(listdevs_SOURCES) -DIST_SOURCES = $(am__dpfp_SOURCES_DIST) \ - $(am__dpfp_threaded_SOURCES_DIST) $(listdevs_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run aclocal-1.11 -AMTAR = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run tar -AM_CFLAGS = -std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow -AM_DEFAULT_VERBOSITY = 0 -AR = ar -AUTOCONF = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoconf -AUTOHEADER = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoheader -AUTOMAKE = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run automake-1.11 -AWK = mawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /bin/grep -E -EXEEXT = -FGREP = /bin/grep -F -GREP = /bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LD = /usr/bin/ld -m elf_x86_64 -LDFLAGS = -LIBOBJS = -LIBS = -lrt -pthread -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = ln -s -LTLDFLAGS = -version-info 1:0:1 -no-undefined -LTLIBOBJS = -MAINT = # -MAKEINFO = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run makeinfo -MKDIR_P = /bin/mkdir -p -NM = /usr/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OS_DARWIN = -OS_LINUX = -OS_OPENBSD = -OS_WINDOWS = -OTOOL = -OTOOL64 = -PACKAGE = libusb -PACKAGE_BUGREPORT = libusb-devel@lists.sourceforge.net -PACKAGE_NAME = libusb -PACKAGE_STRING = libusb 1.0.9 -PACKAGE_TARNAME = libusb -PACKAGE_URL = http://www.libusb.org/ -PACKAGE_VERSION = 1.0.9 -PATH_SEPARATOR = : -PC_LIBS_PRIVATE = -lrt -pthread -RANLIB = ranlib -RC = -SED = /bin/sed -SET_MAKE = -SHELL = /bin/bash -STRIP = strip -THREAD_CFLAGS = -pthread -VERSION = 1.0.9 -VISIBILITY_CFLAGS = -fvisibility=hidden -abs_builddir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples -abs_srcdir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples -abs_top_builddir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -abs_top_srcdir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -ac_ct_CC = gcc -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -bindir = ${exec_prefix}/bin -build = x86_64-unknown-linux-gnu -build_alias = -build_cpu = x86_64 -build_os = linux-gnu -build_vendor = unknown -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-unknown-linux-gnu -host_alias = -host_cpu = x86_64 -host_os = linux-gnu -host_vendor = unknown -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /usr/local -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -INCLUDES = -I$(top_srcdir)/libusb -listdevs_SOURCES = listdevs.c -listdevs_LDADD = ../libusb/libusb-1.0.la -dpfp_SOURCES = dpfp.c -dpfp_LDADD = ../libusb/libusb-1.0.la -dpfp_threaded_SOURCES = dpfp_threaded.c -dpfp_threaded_CFLAGS = $(THREAD_CFLAGS) $(AM_CFLAGS) -dpfp_threaded_LDADD = ../libusb/libusb-1.0.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu examples/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: # $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): # $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -dpfp$(EXEEXT): $(dpfp_OBJECTS) $(dpfp_DEPENDENCIES) - @rm -f dpfp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(dpfp_OBJECTS) $(dpfp_LDADD) $(LIBS) -dpfp_threaded$(EXEEXT): $(dpfp_threaded_OBJECTS) $(dpfp_threaded_DEPENDENCIES) - @rm -f dpfp_threaded$(EXEEXT) - $(AM_V_CCLD)$(dpfp_threaded_LINK) $(dpfp_threaded_OBJECTS) $(dpfp_threaded_LDADD) $(LIBS) -listdevs$(EXEEXT): $(listdevs_OBJECTS) $(listdevs_DEPENDENCIES) - @rm -f listdevs$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(listdevs_OBJECTS) $(listdevs_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/dpfp.Po -include ./$(DEPDIR)/dpfp_threaded-dpfp_threaded.Po -include ./$(DEPDIR)/listdevs.Po - -.c.o: - $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# $(AM_V_CC) \ -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# $(AM_V_CC) \ -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: - $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# $(AM_V_CC) \ -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LTCOMPILE) -c -o $@ $< - -dpfp_threaded-dpfp_threaded.o: dpfp_threaded.c - $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dpfp_threaded_CFLAGS) $(CFLAGS) -MT dpfp_threaded-dpfp_threaded.o -MD -MP -MF $(DEPDIR)/dpfp_threaded-dpfp_threaded.Tpo -c -o dpfp_threaded-dpfp_threaded.o `test -f 'dpfp_threaded.c' || echo '$(srcdir)/'`dpfp_threaded.c - $(AM_V_at)$(am__mv) $(DEPDIR)/dpfp_threaded-dpfp_threaded.Tpo $(DEPDIR)/dpfp_threaded-dpfp_threaded.Po -# $(AM_V_CC) \ -# source='dpfp_threaded.c' object='dpfp_threaded-dpfp_threaded.o' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dpfp_threaded_CFLAGS) $(CFLAGS) -c -o dpfp_threaded-dpfp_threaded.o `test -f 'dpfp_threaded.c' || echo '$(srcdir)/'`dpfp_threaded.c - -dpfp_threaded-dpfp_threaded.obj: dpfp_threaded.c - $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dpfp_threaded_CFLAGS) $(CFLAGS) -MT dpfp_threaded-dpfp_threaded.obj -MD -MP -MF $(DEPDIR)/dpfp_threaded-dpfp_threaded.Tpo -c -o dpfp_threaded-dpfp_threaded.obj `if test -f 'dpfp_threaded.c'; then $(CYGPATH_W) 'dpfp_threaded.c'; else $(CYGPATH_W) '$(srcdir)/dpfp_threaded.c'; fi` - $(AM_V_at)$(am__mv) $(DEPDIR)/dpfp_threaded-dpfp_threaded.Tpo $(DEPDIR)/dpfp_threaded-dpfp_threaded.Po -# $(AM_V_CC) \ -# source='dpfp_threaded.c' object='dpfp_threaded-dpfp_threaded.obj' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dpfp_threaded_CFLAGS) $(CFLAGS) -c -o dpfp_threaded-dpfp_threaded.obj `if test -f 'dpfp_threaded.c'; then $(CYGPATH_W) 'dpfp_threaded.c'; else $(CYGPATH_W) '$(srcdir)/dpfp_threaded.c'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__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)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile.am b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile.am deleted file mode 100644 index c7630d2..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile.am +++ /dev/null @@ -1,21 +0,0 @@ -INCLUDES = -I$(top_srcdir)/libusb -noinst_PROGRAMS = listdevs - -listdevs_SOURCES = listdevs.c -listdevs_LDADD = ../libusb/libusb-1.0.la - -if HAVE_SIGACTION -dpfp_SOURCES = dpfp.c -dpfp_LDADD = ../libusb/libusb-1.0.la -noinst_PROGRAMS += dpfp -endif - -if THREADS_POSIX -if HAVE_SIGACTION -dpfp_threaded_SOURCES = dpfp_threaded.c -dpfp_threaded_CFLAGS = $(THREAD_CFLAGS) $(AM_CFLAGS) -dpfp_threaded_LDADD = ../libusb/libusb-1.0.la -noinst_PROGRAMS += dpfp_threaded -endif -endif - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile.in b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile.in deleted file mode 100644 index b9bf469..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/Makefile.in +++ /dev/null @@ -1,542 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = listdevs$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) -@HAVE_SIGACTION_TRUE@am__append_1 = dpfp -@HAVE_SIGACTION_TRUE@@THREADS_POSIX_TRUE@am__append_2 = dpfp_threaded -subdir = examples -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -@HAVE_SIGACTION_TRUE@am__EXEEXT_1 = dpfp$(EXEEXT) -@HAVE_SIGACTION_TRUE@@THREADS_POSIX_TRUE@am__EXEEXT_2 = dpfp_threaded$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am__dpfp_SOURCES_DIST = dpfp.c -@HAVE_SIGACTION_TRUE@am_dpfp_OBJECTS = dpfp.$(OBJEXT) -dpfp_OBJECTS = $(am_dpfp_OBJECTS) -@HAVE_SIGACTION_TRUE@dpfp_DEPENDENCIES = ../libusb/libusb-1.0.la -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -am__dpfp_threaded_SOURCES_DIST = dpfp_threaded.c -@HAVE_SIGACTION_TRUE@@THREADS_POSIX_TRUE@am_dpfp_threaded_OBJECTS = dpfp_threaded-dpfp_threaded.$(OBJEXT) -dpfp_threaded_OBJECTS = $(am_dpfp_threaded_OBJECTS) -@HAVE_SIGACTION_TRUE@@THREADS_POSIX_TRUE@dpfp_threaded_DEPENDENCIES = ../libusb/libusb-1.0.la -dpfp_threaded_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(dpfp_threaded_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am_listdevs_OBJECTS = listdevs.$(OBJEXT) -listdevs_OBJECTS = $(am_listdevs_OBJECTS) -listdevs_DEPENDENCIES = ../libusb/libusb-1.0.la -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(dpfp_SOURCES) $(dpfp_threaded_SOURCES) $(listdevs_SOURCES) -DIST_SOURCES = $(am__dpfp_SOURCES_DIST) \ - $(am__dpfp_threaded_SOURCES_DIST) $(listdevs_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLDFLAGS = @LTLDFLAGS@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS_DARWIN = @OS_DARWIN@ -OS_LINUX = @OS_LINUX@ -OS_OPENBSD = @OS_OPENBSD@ -OS_WINDOWS = @OS_WINDOWS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PC_LIBS_PRIVATE = @PC_LIBS_PRIVATE@ -RANLIB = @RANLIB@ -RC = @RC@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -THREAD_CFLAGS = @THREAD_CFLAGS@ -VERSION = @VERSION@ -VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir)/libusb -listdevs_SOURCES = listdevs.c -listdevs_LDADD = ../libusb/libusb-1.0.la -@HAVE_SIGACTION_TRUE@dpfp_SOURCES = dpfp.c -@HAVE_SIGACTION_TRUE@dpfp_LDADD = ../libusb/libusb-1.0.la -@HAVE_SIGACTION_TRUE@@THREADS_POSIX_TRUE@dpfp_threaded_SOURCES = dpfp_threaded.c -@HAVE_SIGACTION_TRUE@@THREADS_POSIX_TRUE@dpfp_threaded_CFLAGS = $(THREAD_CFLAGS) $(AM_CFLAGS) -@HAVE_SIGACTION_TRUE@@THREADS_POSIX_TRUE@dpfp_threaded_LDADD = ../libusb/libusb-1.0.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .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 ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu examples/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @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 -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -dpfp$(EXEEXT): $(dpfp_OBJECTS) $(dpfp_DEPENDENCIES) - @rm -f dpfp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(dpfp_OBJECTS) $(dpfp_LDADD) $(LIBS) -dpfp_threaded$(EXEEXT): $(dpfp_threaded_OBJECTS) $(dpfp_threaded_DEPENDENCIES) - @rm -f dpfp_threaded$(EXEEXT) - $(AM_V_CCLD)$(dpfp_threaded_LINK) $(dpfp_threaded_OBJECTS) $(dpfp_threaded_LDADD) $(LIBS) -listdevs$(EXEEXT): $(listdevs_OBJECTS) $(listdevs_DEPENDENCIES) - @rm -f listdevs$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(listdevs_OBJECTS) $(listdevs_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dpfp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dpfp_threaded-dpfp_threaded.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listdevs.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -dpfp_threaded-dpfp_threaded.o: dpfp_threaded.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dpfp_threaded_CFLAGS) $(CFLAGS) -MT dpfp_threaded-dpfp_threaded.o -MD -MP -MF $(DEPDIR)/dpfp_threaded-dpfp_threaded.Tpo -c -o dpfp_threaded-dpfp_threaded.o `test -f 'dpfp_threaded.c' || echo '$(srcdir)/'`dpfp_threaded.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dpfp_threaded-dpfp_threaded.Tpo $(DEPDIR)/dpfp_threaded-dpfp_threaded.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dpfp_threaded.c' object='dpfp_threaded-dpfp_threaded.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dpfp_threaded_CFLAGS) $(CFLAGS) -c -o dpfp_threaded-dpfp_threaded.o `test -f 'dpfp_threaded.c' || echo '$(srcdir)/'`dpfp_threaded.c - -dpfp_threaded-dpfp_threaded.obj: dpfp_threaded.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dpfp_threaded_CFLAGS) $(CFLAGS) -MT dpfp_threaded-dpfp_threaded.obj -MD -MP -MF $(DEPDIR)/dpfp_threaded-dpfp_threaded.Tpo -c -o dpfp_threaded-dpfp_threaded.obj `if test -f 'dpfp_threaded.c'; then $(CYGPATH_W) 'dpfp_threaded.c'; else $(CYGPATH_W) '$(srcdir)/dpfp_threaded.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dpfp_threaded-dpfp_threaded.Tpo $(DEPDIR)/dpfp_threaded-dpfp_threaded.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dpfp_threaded.c' object='dpfp_threaded-dpfp_threaded.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dpfp_threaded_CFLAGS) $(CFLAGS) -c -o dpfp_threaded-dpfp_threaded.obj `if test -f 'dpfp_threaded.c'; then $(CYGPATH_W) 'dpfp_threaded.c'; else $(CYGPATH_W) '$(srcdir)/dpfp_threaded.c'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__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)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/dpfp.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/dpfp.c deleted file mode 100644 index ecd5a92..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/dpfp.c +++ /dev/null @@ -1,507 +0,0 @@ -/* - * libusb example program to manipulate U.are.U 4000B fingerprint scanner. - * Copyright (C) 2007 Daniel Drake - * - * Basic image capture program only, does not consider the powerup quirks or - * the fact that image encryption may be enabled. Not expected to work - * flawlessly all of the time. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include - -#include - -#define EP_INTR (1 | LIBUSB_ENDPOINT_IN) -#define EP_DATA (2 | LIBUSB_ENDPOINT_IN) -#define CTRL_IN (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN) -#define CTRL_OUT (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT) -#define USB_RQ 0x04 -#define INTR_LENGTH 64 - -enum { - MODE_INIT = 0x00, - MODE_AWAIT_FINGER_ON = 0x10, - MODE_AWAIT_FINGER_OFF = 0x12, - MODE_CAPTURE = 0x20, - MODE_SHUT_UP = 0x30, - MODE_READY = 0x80, -}; - -static int next_state(void); - -enum { - STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_ON = 1, - STATE_AWAIT_IRQ_FINGER_DETECTED, - STATE_AWAIT_MODE_CHANGE_CAPTURE, - STATE_AWAIT_IMAGE, - STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_OFF, - STATE_AWAIT_IRQ_FINGER_REMOVED, -}; - -static int state = 0; -static struct libusb_device_handle *devh = NULL; -static unsigned char imgbuf[0x1b340]; -static unsigned char irqbuf[INTR_LENGTH]; -static struct libusb_transfer *img_transfer = NULL; -static struct libusb_transfer *irq_transfer = NULL; -static int img_idx = 0; -static int do_exit = 0; - -static int find_dpfp_device(void) -{ - devh = libusb_open_device_with_vid_pid(NULL, 0x05ba, 0x000a); - return devh ? 0 : -EIO; -} - -static int print_f0_data(void) -{ - unsigned char data[0x10]; - int r; - unsigned int i; - - r = libusb_control_transfer(devh, CTRL_IN, USB_RQ, 0xf0, 0, data, - sizeof(data), 0); - if (r < 0) { - fprintf(stderr, "F0 error %d\n", r); - return r; - } - if ((unsigned int) r < sizeof(data)) { - fprintf(stderr, "short read (%d)\n", r); - return -1; - } - - printf("F0 data:"); - for (i = 0; i < sizeof(data); i++) - printf("%02x ", data[i]); - printf("\n"); - return 0; -} - -static int get_hwstat(unsigned char *status) -{ - int r; - - r = libusb_control_transfer(devh, CTRL_IN, USB_RQ, 0x07, 0, status, 1, 0); - if (r < 0) { - fprintf(stderr, "read hwstat error %d\n", r); - return r; - } - if ((unsigned int) r < 1) { - fprintf(stderr, "short read (%d)\n", r); - return -1; - } - - printf("hwstat reads %02x\n", *status); - return 0; -} - -static int set_hwstat(unsigned char data) -{ - int r; - - printf("set hwstat to %02x\n", data); - r = libusb_control_transfer(devh, CTRL_OUT, USB_RQ, 0x07, 0, &data, 1, 0); - if (r < 0) { - fprintf(stderr, "set hwstat error %d\n", r); - return r; - } - if ((unsigned int) r < 1) { - fprintf(stderr, "short write (%d)", r); - return -1; - } - - return 0; -} - -static int set_mode(unsigned char data) -{ - int r; - printf("set mode %02x\n", data); - - r = libusb_control_transfer(devh, CTRL_OUT, USB_RQ, 0x4e, 0, &data, 1, 0); - if (r < 0) { - fprintf(stderr, "set mode error %d\n", r); - return r; - } - if ((unsigned int) r < 1) { - fprintf(stderr, "short write (%d)", r); - return -1; - } - - return 0; -} - -static void LIBUSB_CALL cb_mode_changed(struct libusb_transfer *transfer) -{ - if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fprintf(stderr, "mode change transfer not completed!\n"); - do_exit = 2; - } - - printf("async cb_mode_changed length=%d actual_length=%d\n", - transfer->length, transfer->actual_length); - if (next_state() < 0) - do_exit = 2; -} - -static int set_mode_async(unsigned char data) -{ - unsigned char *buf = malloc(LIBUSB_CONTROL_SETUP_SIZE + 1); - struct libusb_transfer *transfer; - - if (!buf) - return -ENOMEM; - - transfer = libusb_alloc_transfer(0); - if (!transfer) { - free(buf); - return -ENOMEM; - } - - printf("async set mode %02x\n", data); - libusb_fill_control_setup(buf, CTRL_OUT, USB_RQ, 0x4e, 0, 1); - buf[LIBUSB_CONTROL_SETUP_SIZE] = data; - libusb_fill_control_transfer(transfer, devh, buf, cb_mode_changed, NULL, - 1000); - - transfer->flags = LIBUSB_TRANSFER_SHORT_NOT_OK - | LIBUSB_TRANSFER_FREE_BUFFER | LIBUSB_TRANSFER_FREE_TRANSFER; - return libusb_submit_transfer(transfer); -} - -static int do_sync_intr(unsigned char *data) -{ - int r; - int transferred; - - r = libusb_interrupt_transfer(devh, EP_INTR, data, INTR_LENGTH, - &transferred, 1000); - if (r < 0) { - fprintf(stderr, "intr error %d\n", r); - return r; - } - if (transferred < INTR_LENGTH) { - fprintf(stderr, "short read (%d)\n", r); - return -1; - } - - printf("recv interrupt %04x\n", *((uint16_t *) data)); - return 0; -} - -static int sync_intr(unsigned char type) -{ - int r; - unsigned char data[INTR_LENGTH]; - - while (1) { - r = do_sync_intr(data); - if (r < 0) - return r; - if (data[0] == type) - return 0; - } -} - -static int save_to_file(unsigned char *data) -{ - FILE *fd; - char filename[64]; - - snprintf(filename, sizeof(filename), "finger%d.pgm", img_idx++); - fd = fopen(filename, "w"); - if (!fd) - return -1; - - fputs("P5 384 289 255 ", fd); - (void) fwrite(data + 64, 1, 384*289, fd); - fclose(fd); - printf("saved image to %s\n", filename); - return 0; -} - -static int next_state(void) -{ - int r = 0; - printf("old state: %d\n", state); - switch (state) { - case STATE_AWAIT_IRQ_FINGER_REMOVED: - state = STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_ON; - r = set_mode_async(MODE_AWAIT_FINGER_ON); - break; - case STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_ON: - state = STATE_AWAIT_IRQ_FINGER_DETECTED; - break; - case STATE_AWAIT_IRQ_FINGER_DETECTED: - state = STATE_AWAIT_MODE_CHANGE_CAPTURE; - r = set_mode_async(MODE_CAPTURE); - break; - case STATE_AWAIT_MODE_CHANGE_CAPTURE: - state = STATE_AWAIT_IMAGE; - break; - case STATE_AWAIT_IMAGE: - state = STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_OFF; - r = set_mode_async(MODE_AWAIT_FINGER_OFF); - break; - case STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_OFF: - state = STATE_AWAIT_IRQ_FINGER_REMOVED; - break; - default: - printf("unrecognised state %d\n", state); - } - if (r < 0) { - fprintf(stderr, "error detected changing state\n"); - return r; - } - - printf("new state: %d\n", state); - return 0; -} - -static void LIBUSB_CALL cb_irq(struct libusb_transfer *transfer) -{ - unsigned char irqtype = transfer->buffer[0]; - - if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fprintf(stderr, "irq transfer status %d?\n", transfer->status); - do_exit = 2; - libusb_free_transfer(transfer); - irq_transfer = NULL; - return; - } - - printf("IRQ callback %02x\n", irqtype); - switch (state) { - case STATE_AWAIT_IRQ_FINGER_DETECTED: - if (irqtype == 0x01) { - if (next_state() < 0) { - do_exit = 2; - return; - } - } else { - printf("finger-on-sensor detected in wrong state!\n"); - } - break; - case STATE_AWAIT_IRQ_FINGER_REMOVED: - if (irqtype == 0x02) { - if (next_state() < 0) { - do_exit = 2; - return; - } - } else { - printf("finger-on-sensor detected in wrong state!\n"); - } - break; - } - if (libusb_submit_transfer(irq_transfer) < 0) - do_exit = 2; -} - -static void LIBUSB_CALL cb_img(struct libusb_transfer *transfer) -{ - if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fprintf(stderr, "img transfer status %d?\n", transfer->status); - do_exit = 2; - libusb_free_transfer(transfer); - img_transfer = NULL; - return; - } - - printf("Image callback\n"); - save_to_file(imgbuf); - if (next_state() < 0) { - do_exit = 2; - return; - } - if (libusb_submit_transfer(img_transfer) < 0) - do_exit = 2; -} - -static int init_capture(void) -{ - int r; - - r = libusb_submit_transfer(irq_transfer); - if (r < 0) - return r; - - r = libusb_submit_transfer(img_transfer); - if (r < 0) { - libusb_cancel_transfer(irq_transfer); - while (irq_transfer) - if (libusb_handle_events(NULL) < 0) - break; - return r; - } - - /* start state machine */ - state = STATE_AWAIT_IRQ_FINGER_REMOVED; - return next_state(); -} - -static int do_init(void) -{ - unsigned char status; - int r; - - r = get_hwstat(&status); - if (r < 0) - return r; - - if (!(status & 0x80)) { - r = set_hwstat(status | 0x80); - if (r < 0) - return r; - r = get_hwstat(&status); - if (r < 0) - return r; - } - - status &= ~0x80; - r = set_hwstat(status); - if (r < 0) - return r; - - r = get_hwstat(&status); - if (r < 0) - return r; - - r = sync_intr(0x56); - if (r < 0) - return r; - - return 0; -} - -static int alloc_transfers(void) -{ - img_transfer = libusb_alloc_transfer(0); - if (!img_transfer) - return -ENOMEM; - - irq_transfer = libusb_alloc_transfer(0); - if (!irq_transfer) - return -ENOMEM; - - libusb_fill_bulk_transfer(img_transfer, devh, EP_DATA, imgbuf, - sizeof(imgbuf), cb_img, NULL, 0); - libusb_fill_interrupt_transfer(irq_transfer, devh, EP_INTR, irqbuf, - sizeof(irqbuf), cb_irq, NULL, 0); - - return 0; -} - -static void sighandler(int signum) -{ - do_exit = 1; -} - -int main(void) -{ - struct sigaction sigact; - int r = 1; - - r = libusb_init(NULL); - if (r < 0) { - fprintf(stderr, "failed to initialise libusb\n"); - exit(1); - } - - r = find_dpfp_device(); - if (r < 0) { - fprintf(stderr, "Could not find/open device\n"); - goto out; - } - - r = libusb_claim_interface(devh, 0); - if (r < 0) { - fprintf(stderr, "usb_claim_interface error %d\n", r); - goto out; - } - printf("claimed interface\n"); - - r = print_f0_data(); - if (r < 0) - goto out_release; - - r = do_init(); - if (r < 0) - goto out_deinit; - - /* async from here onwards */ - - r = alloc_transfers(); - if (r < 0) - goto out_deinit; - - r = init_capture(); - if (r < 0) - goto out_deinit; - - sigact.sa_handler = sighandler; - sigemptyset(&sigact.sa_mask); - sigact.sa_flags = 0; - sigaction(SIGINT, &sigact, NULL); - sigaction(SIGTERM, &sigact, NULL); - sigaction(SIGQUIT, &sigact, NULL); - - while (!do_exit) { - r = libusb_handle_events(NULL); - if (r < 0) - goto out_deinit; - } - - printf("shutting down...\n"); - - if (irq_transfer) { - r = libusb_cancel_transfer(irq_transfer); - if (r < 0) - goto out_deinit; - } - - if (img_transfer) { - r = libusb_cancel_transfer(img_transfer); - if (r < 0) - goto out_deinit; - } - - while (irq_transfer || img_transfer) - if (libusb_handle_events(NULL) < 0) - break; - - if (do_exit == 1) - r = 0; - else - r = 1; - -out_deinit: - libusb_free_transfer(img_transfer); - libusb_free_transfer(irq_transfer); - set_mode(0); - set_hwstat(0x80); -out_release: - libusb_release_interface(devh, 0); -out: - libusb_close(devh); - libusb_exit(NULL); - return r >= 0 ? r : -r; -} - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/dpfp_threaded.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/dpfp_threaded.c deleted file mode 100644 index 93de9d7..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/dpfp_threaded.c +++ /dev/null @@ -1,545 +0,0 @@ -/* - * libusb example program to manipulate U.are.U 4000B fingerprint scanner. - * Copyright (C) 2007 Daniel Drake - * - * Basic image capture program only, does not consider the powerup quirks or - * the fact that image encryption may be enabled. Not expected to work - * flawlessly all of the time. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include - -#include - -#define EP_INTR (1 | LIBUSB_ENDPOINT_IN) -#define EP_DATA (2 | LIBUSB_ENDPOINT_IN) -#define CTRL_IN (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN) -#define CTRL_OUT (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT) -#define USB_RQ 0x04 -#define INTR_LENGTH 64 - -enum { - MODE_INIT = 0x00, - MODE_AWAIT_FINGER_ON = 0x10, - MODE_AWAIT_FINGER_OFF = 0x12, - MODE_CAPTURE = 0x20, - MODE_SHUT_UP = 0x30, - MODE_READY = 0x80, -}; - -static int next_state(void); - -enum { - STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_ON = 1, - STATE_AWAIT_IRQ_FINGER_DETECTED, - STATE_AWAIT_MODE_CHANGE_CAPTURE, - STATE_AWAIT_IMAGE, - STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_OFF, - STATE_AWAIT_IRQ_FINGER_REMOVED, -}; - -static int state = 0; -static struct libusb_device_handle *devh = NULL; -static unsigned char imgbuf[0x1b340]; -static unsigned char irqbuf[INTR_LENGTH]; -static struct libusb_transfer *img_transfer = NULL; -static struct libusb_transfer *irq_transfer = NULL; -static int img_idx = 0; -static int do_exit = 0; - -static pthread_t poll_thread; -static pthread_cond_t exit_cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t exit_cond_lock = PTHREAD_MUTEX_INITIALIZER; - -static void request_exit(int code) -{ - do_exit = code; - pthread_cond_signal(&exit_cond); -} - -static void *poll_thread_main(void *arg) -{ - int r = 0; - printf("poll thread running\n"); - - while (!do_exit) { - struct timeval tv = { 1, 0 }; - r = libusb_handle_events_timeout(NULL, &tv); - if (r < 0) { - request_exit(2); - break; - } - } - - printf("poll thread shutting down\n"); - return NULL; -} - -static int find_dpfp_device(void) -{ - devh = libusb_open_device_with_vid_pid(NULL, 0x05ba, 0x000a); - return devh ? 0 : -EIO; -} - -static int print_f0_data(void) -{ - unsigned char data[0x10]; - int r; - unsigned int i; - - r = libusb_control_transfer(devh, CTRL_IN, USB_RQ, 0xf0, 0, data, - sizeof(data), 0); - if (r < 0) { - fprintf(stderr, "F0 error %d\n", r); - return r; - } - if ((unsigned int) r < sizeof(data)) { - fprintf(stderr, "short read (%d)\n", r); - return -1; - } - - printf("F0 data:"); - for (i = 0; i < sizeof(data); i++) - printf("%02x ", data[i]); - printf("\n"); - return 0; -} - -static int get_hwstat(unsigned char *status) -{ - int r; - - r = libusb_control_transfer(devh, CTRL_IN, USB_RQ, 0x07, 0, status, 1, 0); - if (r < 0) { - fprintf(stderr, "read hwstat error %d\n", r); - return r; - } - if ((unsigned int) r < 1) { - fprintf(stderr, "short read (%d)\n", r); - return -1; - } - - printf("hwstat reads %02x\n", *status); - return 0; -} - -static int set_hwstat(unsigned char data) -{ - int r; - - printf("set hwstat to %02x\n", data); - r = libusb_control_transfer(devh, CTRL_OUT, USB_RQ, 0x07, 0, &data, 1, 0); - if (r < 0) { - fprintf(stderr, "set hwstat error %d\n", r); - return r; - } - if ((unsigned int) r < 1) { - fprintf(stderr, "short write (%d)", r); - return -1; - } - - return 0; -} - -static int set_mode(unsigned char data) -{ - int r; - printf("set mode %02x\n", data); - - r = libusb_control_transfer(devh, CTRL_OUT, USB_RQ, 0x4e, 0, &data, 1, 0); - if (r < 0) { - fprintf(stderr, "set mode error %d\n", r); - return r; - } - if ((unsigned int) r < 1) { - fprintf(stderr, "short write (%d)", r); - return -1; - } - - return 0; -} - -static void LIBUSB_CALL cb_mode_changed(struct libusb_transfer *transfer) -{ - if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fprintf(stderr, "mode change transfer not completed!\n"); - request_exit(2); - } - - printf("async cb_mode_changed length=%d actual_length=%d\n", - transfer->length, transfer->actual_length); - if (next_state() < 0) - request_exit(2); -} - -static int set_mode_async(unsigned char data) -{ - unsigned char *buf = malloc(LIBUSB_CONTROL_SETUP_SIZE + 1); - struct libusb_transfer *transfer; - - if (!buf) - return -ENOMEM; - - transfer = libusb_alloc_transfer(0); - if (!transfer) { - free(buf); - return -ENOMEM; - } - - printf("async set mode %02x\n", data); - libusb_fill_control_setup(buf, CTRL_OUT, USB_RQ, 0x4e, 0, 1); - buf[LIBUSB_CONTROL_SETUP_SIZE] = data; - libusb_fill_control_transfer(transfer, devh, buf, cb_mode_changed, NULL, - 1000); - - transfer->flags = LIBUSB_TRANSFER_SHORT_NOT_OK - | LIBUSB_TRANSFER_FREE_BUFFER | LIBUSB_TRANSFER_FREE_TRANSFER; - return libusb_submit_transfer(transfer); -} - -static int do_sync_intr(unsigned char *data) -{ - int r; - int transferred; - - r = libusb_interrupt_transfer(devh, EP_INTR, data, INTR_LENGTH, - &transferred, 1000); - if (r < 0) { - fprintf(stderr, "intr error %d\n", r); - return r; - } - if (transferred < INTR_LENGTH) { - fprintf(stderr, "short read (%d)\n", r); - return -1; - } - - printf("recv interrupt %04x\n", *((uint16_t *) data)); - return 0; -} - -static int sync_intr(unsigned char type) -{ - int r; - unsigned char data[INTR_LENGTH]; - - while (1) { - r = do_sync_intr(data); - if (r < 0) - return r; - if (data[0] == type) - return 0; - } -} - -static int save_to_file(unsigned char *data) -{ - FILE *fd; - char filename[64]; - - snprintf(filename, sizeof(filename), "finger%d.pgm", img_idx++); - fd = fopen(filename, "w"); - if (!fd) - return -1; - - fputs("P5 384 289 255 ", fd); - (void) fwrite(data + 64, 1, 384*289, fd); - fclose(fd); - printf("saved image to %s\n", filename); - return 0; -} - -static int next_state(void) -{ - int r = 0; - printf("old state: %d\n", state); - switch (state) { - case STATE_AWAIT_IRQ_FINGER_REMOVED: - state = STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_ON; - r = set_mode_async(MODE_AWAIT_FINGER_ON); - break; - case STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_ON: - state = STATE_AWAIT_IRQ_FINGER_DETECTED; - break; - case STATE_AWAIT_IRQ_FINGER_DETECTED: - state = STATE_AWAIT_MODE_CHANGE_CAPTURE; - r = set_mode_async(MODE_CAPTURE); - break; - case STATE_AWAIT_MODE_CHANGE_CAPTURE: - state = STATE_AWAIT_IMAGE; - break; - case STATE_AWAIT_IMAGE: - state = STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_OFF; - r = set_mode_async(MODE_AWAIT_FINGER_OFF); - break; - case STATE_AWAIT_MODE_CHANGE_AWAIT_FINGER_OFF: - state = STATE_AWAIT_IRQ_FINGER_REMOVED; - break; - default: - printf("unrecognised state %d\n", state); - } - if (r < 0) { - fprintf(stderr, "error detected changing state\n"); - return r; - } - - printf("new state: %d\n", state); - return 0; -} - -static void LIBUSB_CALL cb_irq(struct libusb_transfer *transfer) -{ - unsigned char irqtype = transfer->buffer[0]; - - if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fprintf(stderr, "irq transfer status %d?\n", transfer->status); - irq_transfer = NULL; - request_exit(2); - return; - } - - printf("IRQ callback %02x\n", irqtype); - switch (state) { - case STATE_AWAIT_IRQ_FINGER_DETECTED: - if (irqtype == 0x01) { - if (next_state() < 0) { - request_exit(2); - return; - } - } else { - printf("finger-on-sensor detected in wrong state!\n"); - } - break; - case STATE_AWAIT_IRQ_FINGER_REMOVED: - if (irqtype == 0x02) { - if (next_state() < 0) { - request_exit(2); - return; - } - } else { - printf("finger-on-sensor detected in wrong state!\n"); - } - break; - } - if (libusb_submit_transfer(irq_transfer) < 0) - request_exit(2); -} - -static void LIBUSB_CALL cb_img(struct libusb_transfer *transfer) -{ - if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fprintf(stderr, "img transfer status %d?\n", transfer->status); - img_transfer = NULL; - request_exit(2); - return; - } - - printf("Image callback\n"); - save_to_file(imgbuf); - if (next_state() < 0) { - request_exit(2); - return; - } - if (libusb_submit_transfer(img_transfer) < 0) - request_exit(2); -} - -static int init_capture(void) -{ - int r; - - r = libusb_submit_transfer(irq_transfer); - if (r < 0) - return r; - - r = libusb_submit_transfer(img_transfer); - if (r < 0) { - libusb_cancel_transfer(irq_transfer); - while (irq_transfer) - if (libusb_handle_events(NULL) < 0) - break; - return r; - } - - /* start state machine */ - state = STATE_AWAIT_IRQ_FINGER_REMOVED; - return next_state(); -} - -static int do_init(void) -{ - unsigned char status; - int r; - - r = get_hwstat(&status); - if (r < 0) - return r; - - if (!(status & 0x80)) { - r = set_hwstat(status | 0x80); - if (r < 0) - return r; - r = get_hwstat(&status); - if (r < 0) - return r; - } - - status &= ~0x80; - r = set_hwstat(status); - if (r < 0) - return r; - - r = get_hwstat(&status); - if (r < 0) - return r; - - r = sync_intr(0x56); - if (r < 0) - return r; - - return 0; -} - -static int alloc_transfers(void) -{ - img_transfer = libusb_alloc_transfer(0); - if (!img_transfer) - return -ENOMEM; - - irq_transfer = libusb_alloc_transfer(0); - if (!irq_transfer) - return -ENOMEM; - - libusb_fill_bulk_transfer(img_transfer, devh, EP_DATA, imgbuf, - sizeof(imgbuf), cb_img, NULL, 0); - libusb_fill_interrupt_transfer(irq_transfer, devh, EP_INTR, irqbuf, - sizeof(irqbuf), cb_irq, NULL, 0); - - return 0; -} - -static void sighandler(int signum) -{ - request_exit(1); -} - -int main(void) -{ - struct sigaction sigact; - int r = 1; - - r = libusb_init(NULL); - if (r < 0) { - fprintf(stderr, "failed to initialise libusb\n"); - exit(1); - } - - r = find_dpfp_device(); - if (r < 0) { - fprintf(stderr, "Could not find/open device\n"); - goto out; - } - - r = libusb_claim_interface(devh, 0); - if (r < 0) { - fprintf(stderr, "usb_claim_interface error %d %s\n", r, strerror(-r)); - goto out; - } - printf("claimed interface\n"); - - r = print_f0_data(); - if (r < 0) - goto out_release; - - r = do_init(); - if (r < 0) - goto out_deinit; - - /* async from here onwards */ - - sigact.sa_handler = sighandler; - sigemptyset(&sigact.sa_mask); - sigact.sa_flags = 0; - sigaction(SIGINT, &sigact, NULL); - sigaction(SIGTERM, &sigact, NULL); - sigaction(SIGQUIT, &sigact, NULL); - - r = pthread_create(&poll_thread, NULL, poll_thread_main, NULL); - if (r) - goto out_deinit; - - r = alloc_transfers(); - if (r < 0) { - request_exit(1); - pthread_join(poll_thread, NULL); - goto out_deinit; - } - - r = init_capture(); - if (r < 0) { - request_exit(1); - pthread_join(poll_thread, NULL); - goto out_deinit; - } - - while (!do_exit) { - pthread_mutex_lock(&exit_cond_lock); - pthread_cond_wait(&exit_cond, &exit_cond_lock); - pthread_mutex_unlock(&exit_cond_lock); - } - - printf("shutting down...\n"); - pthread_join(poll_thread, NULL); - - r = libusb_cancel_transfer(irq_transfer); - if (r < 0) { - request_exit(1); - goto out_deinit; - } - - r = libusb_cancel_transfer(img_transfer); - if (r < 0) { - request_exit(1); - goto out_deinit; - } - - while (img_transfer || irq_transfer) - if (libusb_handle_events(NULL) < 0) - break; - - if (do_exit == 1) - r = 0; - else - r = 1; - -out_deinit: - libusb_free_transfer(img_transfer); - libusb_free_transfer(irq_transfer); - set_mode(0); - set_hwstat(0x80); -out_release: - libusb_release_interface(devh, 0); -out: - libusb_close(devh); - libusb_exit(NULL); - return r >= 0 ? r : -r; -} - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/listdevs.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/listdevs.c deleted file mode 100644 index 6ab8917..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/examples/listdevs.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * libusb example program to list devices on the bus - * Copyright (C) 2007 Daniel Drake - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include - -static void print_devs(libusb_device **devs) -{ - libusb_device *dev; - int i = 0; - - while ((dev = devs[i++]) != NULL) { - struct libusb_device_descriptor desc; - int r = libusb_get_device_descriptor(dev, &desc); - if (r < 0) { - fprintf(stderr, "failed to get device descriptor"); - return; - } - - printf("%04x:%04x (bus %d, device %d)\n", - desc.idVendor, desc.idProduct, - libusb_get_bus_number(dev), libusb_get_device_address(dev)); - } -} - -int main(void) -{ - libusb_device **devs; - int r; - ssize_t cnt; - - r = libusb_init(NULL); - if (r < 0) - return r; - - cnt = libusb_get_device_list(NULL, &devs); - if (cnt < 0) - return (int) cnt; - - print_devs(devs); - libusb_free_device_list(devs, 1); - - libusb_exit(NULL); - return 0; -} - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh deleted file mode 100755 index 6781b98..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh +++ /dev/null @@ -1,520 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2009-04-28.21; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# 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 -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libtool b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libtool deleted file mode 100755 index 3199913..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libtool +++ /dev/null @@ -1,9378 +0,0 @@ -#! /bin/bash - -# libtool - Provide generalized library-building support services. -# Generated automatically by config.status (libusb) 1.0.9 -# Libtool was configured on host kaligula: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="RC " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=2.2.10 -macro_revision=1.3175 - -# Whether or not to build shared libraries. -build_libtool_libs=yes - -# Whether or not to build static libraries. -build_old_libs=yes - -# What type of objects to build. -pic_mode=default - -# Whether or not to optimize for fast installation. -fast_install=yes - -# Shell to use when invoking shell scripts. -SHELL="/bin/bash" - -# An echo program that protects backslashes. -ECHO="printf %s\\n" - -# The host system. -host_alias= -host=x86_64-unknown-linux-gnu -host_os=linux-gnu - -# The build system. -build_alias= -build=x86_64-unknown-linux-gnu -build_os=linux-gnu - -# A sed program that does not truncate output. -SED="/bin/sed" - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP="/bin/grep" - -# An ERE matcher. -EGREP="/bin/grep -E" - -# A literal string matcher. -FGREP="/bin/grep -F" - -# A BSD- or MS-compatible name lister. -NM="/usr/bin/nm -B" - -# Whether we need soft or hard links. -LN_S="ln -s" - -# What is the maximum length of a command? -max_cmd_len=1572864 - -# Object file suffix (normally "o"). -objext=o - -# Executable file suffix (normally ""). -exeext= - -# whether the shell understands "unset". -lt_unset=unset - -# turn spaces into newlines. -SP2NL="tr \\040 \\012" - -# turn newlines into spaces. -NL2SP="tr \\015\\012 \\040\\040" - -# An object symbol dumper. -OBJDUMP="objdump" - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method="pass_all" - -# Command to use when deplibs_check_method == "file_magic". -file_magic_cmd="\$MAGIC_CMD" - -# The archiver. -AR="ar" -AR_FLAGS="cru" - -# A symbol stripping program. -STRIP="strip" - -# Commands used to install an old-style archive. -RANLIB="ranlib" -old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" -old_postuninstall_cmds="" - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=no - -# A C compiler. -LTCC="gcc" - -# LTCC compiler flags. -LTCFLAGS="-g -O2" - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'" - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'" - -# The name of the directory that contains temporary libtool files. -objdir=.libs - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=file - -# Must we lock files when doing compilation? -need_locks="no" - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL="" - -# Tool to change global to local symbols on Mac OS X. -NMEDIT="" - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO="" - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL="" - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64="" - -# Old archive suffix (normally "a"). -libext=a - -# Shared library suffix (normally ".so"). -shrext_cmds=".so" - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds="" - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" - -# Do we need the "lib" prefix for modules? -need_lib_prefix=no - -# Do we need a version for libraries? -need_version=no - -# Library versioning type. -version_type=linux - -# Shared library runtime path variable. -runpath_var=LD_RUN_PATH - -# Shared library path variable. -shlibpath_var=LD_LIBRARY_PATH - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=no - -# Format of library name prefix. -libname_spec="lib\$name" - -# 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="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" - -# The coded name of the library, if different from the real name. -soname_spec="\${libname}\${release}\${shared_ext}\$major" - -# Permission mode override for installation of shared libraries. -install_override_mode="" - -# Command to use after installation of a shared archive. -postinstall_cmds="" - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds="" - -# Commands used to finish a libtool library installation in a directory. -finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval="" - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=yes - -# Compile-time system search path for libraries. -sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/6 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib " - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu " - -# Whether dlopen is supported. -dlopen_support=unknown - -# Whether dlopen of programs is supported. -dlopen_self=unknown - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=unknown - -# Commands to strip libraries. -old_striplib="strip --strip-debug" -striplib="strip --strip-unneeded" - - -# The linker used to build libraries. -LD="/usr/bin/ld -m elf_x86_64" - -# How to create reloadable object files. -reload_flag=" -r" -reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" - -# Commands used to build an old-style archive. -old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" - -# A language specific compiler. -CC="gcc" - -# Is the compiler the GNU compiler? -with_gcc=yes - -# Compiler flag to turn off builtin functions. -no_builtin_flag=" -fno-builtin" - -# How to pass a linker flag through the compiler. -wl="-Wl," - -# Additional compiler flags for building library objects. -pic_flag=" -fPIC -DPIC" - -# Compiler flag to prevent dynamic linking. -link_static_flag="-static" - -# Does compiler simultaneously support -c and -o options? -compiler_c_o="yes" - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=no - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=no - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="\${wl}--export-dynamic" - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object="no" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="" - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds="" - -# Commands used to build a shared archive. -archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" -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" - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds="" -module_expsym_cmds="" - -# Whether we are building with GNU ld or not. -with_gnu_ld="yes" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="" - -# Flag that enforces no undefined symbols. -no_undefined_flag="" - -# Flag to hardcode $libdir into a binary during linking. -# This must work even if $libdir does not exist -hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" - -# 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="" - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator="" - -# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=no - -# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting ${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=no - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=no - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=unsupported - -# 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=no - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=no - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=unknown - -# Fix the shell variable $srcfile for the compiler. -fix_srcfile_path="" - -# Set to "yes" if exported symbols are required. -always_export_symbols=no - -# The commands to list exported symbols. -export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" - -# Symbols that must always be exported. -include_expsyms="" - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds="" - -# Specify filename containing input files. -file_list_spec="" - -# How to hardcode a shared library path into an executable. -hardcode_action=immediate - -# ### END LIBTOOL CONFIG - -# Generated from ltmain.m4sh. - -# libtool (GNU libtool) 2.2.10 -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.10 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.2.10 -TIMESTAMP="" -package_revision=1.3175 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="grep -E"} -: ${FGREP="grep -F"} -: ${GREP="grep"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SED="sed"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} - -# Generated shell functions inserted here. - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -# Generated shell functions inserted here. - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=: - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -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' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname${mode+: }$mode: $*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $SED -n '/^# Usage:/,/# Report bugs to/ { - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ - p - }' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - func_error "missing argument for $1." - exit_cmd=exit -} - -exit_cmd=: - - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -# $mode is unset -nonopt= -execute_dlfiles= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -opt_dry_run=false -opt_duplicate_deps=false -opt_silent=false -opt_debug=: - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# Parse options once, thoroughly. This comes as soon as possible in -# the script to make things like `libtool --version' happen quickly. -{ - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Parse non-mode specific arguments: - while test "$#" -gt 0; do - opt="$1" - shift - - case $opt in - --config) func_config ;; - - --debug) preserve_args="$preserve_args $opt" - func_echo "enabling shell trace mode" - opt_debug='set -x' - $opt_debug - ;; - - -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break - execute_dlfiles="$execute_dlfiles $1" - shift - ;; - - --dry-run | -n) opt_dry_run=: ;; - --features) func_features ;; - --finish) mode="finish" ;; - - --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break - case $1 in - # Valid mode arguments: - clean) ;; - compile) ;; - execute) ;; - finish) ;; - install) ;; - link) ;; - relink) ;; - uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; - esac - - mode="$1" - shift - ;; - - --preserve-dup-deps) - opt_duplicate_deps=: ;; - - --quiet|--silent) preserve_args="$preserve_args $opt" - opt_silent=: - opt_verbose=false - ;; - - --no-quiet|--no-silent) - preserve_args="$preserve_args $opt" - opt_silent=false - ;; - - --verbose| -v) preserve_args="$preserve_args $opt" - opt_silent=false - opt_verbose=: - ;; - - --no-verbose) preserve_args="$preserve_args $opt" - opt_verbose=false - ;; - - --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break - preserve_args="$preserve_args $opt $1" - func_enable_tag "$1" # tagname is set here - shift - ;; - - # Separate optargs to long options: - -dlopen=*|--mode=*|--tag=*) - func_opt_split "$opt" - set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} - shift - ;; - - -\?|-h) func_usage ;; - --help) opt_help=: ;; - --help-all) opt_help=': help-all' ;; - --version) func_version ;; - - -*) func_fatal_help "unrecognized option \`$opt'" ;; - - *) nonopt="$opt" - break - ;; - esac - done - - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_duplicate_deps - ;; - esac - - # Having warned about all mis-specified options, bail out if - # anything was wrong. - $exit_cmd $EXIT_FAILURE -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -## ----------- ## -## Main. ## -## ----------- ## - -$opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - test -z "$mode" && func_fatal_error "error: you must specify a MODE." - - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$mode' for more information." -} - - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_ltwrapper_scriptname_result="" - if func_ltwrapper_executable_p "$1"; then - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" - fi -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T <?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - removelist="$removelist $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - removelist="$removelist $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - command="$command -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - command="$command -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_quote_for_eval "$file" - args="$args $func_quote_for_eval_result" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - exit $EXIT_SUCCESS -} - -test "$mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - install_prog="$install_prog$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - files="$files $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - install_prog="$install_prog $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - install_shared_prog="$install_shared_prog $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_verbose "extracting global C symbols from \`$progfile'" - $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -" - case $host in - *cygwin* | *mingw* | *cegcc* ) - echo >> "$output_objdir/$my_dlsyms" "\ -/* DATA imports from DLLs on WIN32 con't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs. */" - lt_dlsym_const= ;; - *osf5*) - echo >> "$output_objdir/$my_dlsyms" "\ -/* This system does not cope well with relocations in const data */" - lt_dlsym_const= ;; - *) - lt_dlsym_const=const ;; - esac - - echo >> "$output_objdir/$my_dlsyms" "\ -extern $lt_dlsym_const lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -$lt_dlsym_const lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) symtab_cflags="$symtab_cflags $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - win32_nmres=`eval $NM -f posix -A $1 | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_to_host_path arg -# -# Convert paths to host format when used with build tools. -# Intended for use with "native" mingw (where libtool itself -# is running under the msys shell), or in the following cross- -# build environments: -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# where wine is equipped with the `winepath' executable. -# In the native mingw case, the (msys) shell automatically -# converts paths for any non-msys applications it launches, -# but that facility isn't available from inside the cwrapper. -# Similar accommodations are necessary for $host mingw and -# $build cygwin. Calling this function does no harm for other -# $host/$build combinations not listed above. -# -# ARG is the path (on $build) that should be converted to -# the proper representation for $host. The result is stored -# in $func_to_host_path_result. -func_to_host_path () -{ - func_to_host_path_result="$1" - if test -n "$1"; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - case $build in - *mingw* ) # actually, msys - # awkward: cmd appends spaces to result - func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_path_result=`cygpath -w "$1" | - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # Unfortunately, winepath does not exit with a non-zero - # error code, so we are forced to check the contents of - # stdout. On the other hand, if the command is not - # found, the shell will set an exit code of 127 and print - # *an error message* to stdout. So we must check for both - # error code of zero AND non-empty stdout, which explains - # the odd construction: - func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` - if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then - func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" | - $SED -e "$lt_sed_naive_backslashify"` - else - # Allow warning below. - func_to_host_path_result= - fi - ;; - esac - if test -z "$func_to_host_path_result" ; then - func_error "Could not determine host path corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_path_result="$1" - fi - ;; - esac - fi -} -# end: func_to_host_path - -# func_to_host_pathlist arg -# -# Convert pathlists to host format when used with build tools. -# See func_to_host_path(), above. This function supports the -# following $build/$host combinations (but does no harm for -# combinations not listed here): -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# -# Path separators are also converted from $build format to -# $host format. If ARG begins or ends with a path separator -# character, it is preserved (but converted to $host format) -# on output. -# -# ARG is a pathlist (on $build) that should be converted to -# the proper representation on $host. The result is stored -# in $func_to_host_pathlist_result. -func_to_host_pathlist () -{ - func_to_host_pathlist_result="$1" - if test -n "$1"; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_pathlist_tmp1=$func_stripname_result - case $build in - *mingw* ) # Actually, msys. - # Awkward: cmd appends spaces to result. - func_to_host_pathlist_result=` - ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # unfortunately, winepath doesn't convert pathlists - func_to_host_pathlist_result="" - func_to_host_pathlist_oldIFS=$IFS - IFS=: - for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do - IFS=$func_to_host_pathlist_oldIFS - if test -n "$func_to_host_pathlist_f" ; then - func_to_host_path "$func_to_host_pathlist_f" - if test -n "$func_to_host_path_result" ; then - if test -z "$func_to_host_pathlist_result" ; then - func_to_host_pathlist_result="$func_to_host_path_result" - else - func_append func_to_host_pathlist_result ";$func_to_host_path_result" - fi - fi - fi - done - IFS=$func_to_host_pathlist_oldIFS - ;; - esac - if test -z "$func_to_host_pathlist_result"; then - func_error "Could not determine the host path(s) corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This may break if $1 contains DOS-style drive - # specifications. The fix is not to complicate the expression - # below, but for the user to provide a working wine installation - # with winepath so that path translation in the cross-to-mingw - # case works properly. - lt_replace_pathsep_nix_to_dos="s|:|;|g" - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ - $SED -e "$lt_replace_pathsep_nix_to_dos"` - fi - # Now, add the leading and trailing path separators back - case "$1" in - :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" - ;; - esac - case "$1" in - *: ) func_append func_to_host_pathlist_result ";" - ;; - esac - ;; - esac - fi -} -# end: func_to_host_pathlist - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' - - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) deplibs="$deplibs $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - weak_libs="$weak_libs $arg" - prev= - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname '-L' '' "$arg" - dir=$func_stripname_result - if test -z "$dir"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot) - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - arg="$arg $func_quote_for_eval_result" - compiler_flags="$compiler_flags $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" - linker_flags="$linker_flags $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - compiler_flags="$compiler_flags $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_duplicate_deps ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - case $lib in - *.la) func_source "$lib" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) deplibs="$deplibs $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - compiler_flags="$compiler_flags $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - dir=$func_stripname_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) temp_rpath="$temp_rpath$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - notinst_deplibs="$notinst_deplibs $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_dirname "$deplib" "" "." - dir="$func_dirname_result" - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - libobjs="$libobjs $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - removelist="$removelist $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - delfiles="$delfiles $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - func_len " $cmd" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - $ECHO "$obj" >> $output - done - echo ')' >> $output - delfiles="$delfiles $output" - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - $ECHO "$obj" >> $output - done - delfiles="$delfiles $output" - output=$firstobj\"$file_list_spec$output\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - delfiles="$delfiles $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $dlprefiles - libobjs="$libobjs $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - oldobjs="$oldobjs $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $dlprefiles - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" - ;; - *) oldobjs="$oldobjs $obj" ;; - esac - done - fi - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - newdlfiles="$newdlfiles $libdir/$name" - ;; - *) newdlfiles="$newdlfiles $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - newdlprefiles="$newdlprefiles $libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$mode" = link || test "$mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) RM="$RM $arg"; rmforce=yes ;; - -*) RM="$RM $arg" ;; - *) files="$files $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - - case "$mode" in - clean) - case " $library_names " in - # " " in the beginning catches empty $dlname - *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; - esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - rmfiles="$rmfiles $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$mode" = uninstall || test "$mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - - -# ### BEGIN LIBTOOL TAG CONFIG: RC - -# The linker used to build libraries. -LD="" - -# How to create reloadable object files. -reload_flag="" -reload_cmds="" - -# Commands used to build an old-style archive. -old_archive_cmds="" - -# A language specific compiler. -CC="" - -# Is the compiler the GNU compiler? -with_gcc= - -# Compiler flag to turn off builtin functions. -no_builtin_flag="" - -# How to pass a linker flag through the compiler. -wl="" - -# Additional compiler flags for building library objects. -pic_flag="" - -# Compiler flag to prevent dynamic linking. -link_static_flag="" - -# Does compiler simultaneously support -c and -o options? -compiler_c_o="yes" - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc= - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes= - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="" - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="" - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object="" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="" - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds="" - -# Commands used to build a shared archive. -archive_cmds="" -archive_expsym_cmds="" - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds="" -module_expsym_cmds="" - -# Whether we are building with GNU ld or not. -with_gnu_ld="" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="" - -# Flag that enforces no undefined symbols. -no_undefined_flag="" - -# Flag to hardcode $libdir into a binary during linking. -# This must work even if $libdir does not exist -hardcode_libdir_flag_spec="" - -# If ld is used when linking, flag to hardcode $libdir into a binary -# during linking. This must work even if $libdir does not exist. -hardcode_libdir_flag_spec_ld="" - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator="" - -# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct= - -# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting ${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute= - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L= - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var= - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic= - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath= - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs= - -# Fix the shell variable $srcfile for the compiler. -fix_srcfile_path="" - -# Set to "yes" if exported symbols are required. -always_export_symbols= - -# The commands to list exported symbols. -export_symbols_cmds="" - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms="" - -# Symbols that must always be exported. -include_expsyms="" - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds="" - -# Specify filename containing input files. -file_list_spec="" - -# How to hardcode a shared library path into an executable. -hardcode_action= - -# ### END LIBTOOL TAG CONFIG: RC diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc deleted file mode 100644 index 5f59b76..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr/local -exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${prefix}/include - -Name: libusb-1.0 -Description: C API for USB device access from Linux, Mac OS X, OpenBSD, NetBSD and Windows userspace -Version: 1.0.9 -Libs: -L${libdir} -lusb-1.0 -Libs.private: -lrt -pthread -Cflags: -I${includedir}/libusb-1.0 - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc.in b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc.in deleted file mode 100644 index f26babc..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb-1.0.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: libusb-1.0 -Description: C API for USB device access from Linux, Mac OS X, OpenBSD, NetBSD and Windows userspace -Version: @VERSION@ -Libs: -L${libdir} -lusb-1.0 -Libs.private: @PC_LIBS_PRIVATE@ -Cflags: -I${includedir}/libusb-1.0 - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-core.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-core.Plo deleted file mode 100644 index 7df526e..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-core.Plo +++ /dev/null @@ -1,205 +0,0 @@ -libusb_1_0_la-core.lo: core.c /usr/include/stdc-predef.h ../config.h \ - /usr/include/errno.h /usr/include/features.h \ - /usr/include/x86_64-linux-gnu/sys/cdefs.h \ - /usr/include/x86_64-linux-gnu/bits/wordsize.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ - /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/x86_64-linux-gnu/asm/errno.h \ - /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h /usr/include/stdio.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ - /usr/include/x86_64-linux-gnu/bits/types.h \ - /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ - /usr/include/_G_config.h /usr/include/wchar.h \ - /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ - /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ - /usr/include/x86_64-linux-gnu/bits/stdio.h /usr/include/stdlib.h \ - /usr/include/x86_64-linux-gnu/bits/waitflags.h \ - /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \ - /usr/include/x86_64-linux-gnu/bits/endian.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \ - /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ - /usr/include/x86_64-linux-gnu/sys/select.h \ - /usr/include/x86_64-linux-gnu/bits/select.h \ - /usr/include/x86_64-linux-gnu/bits/sigset.h \ - /usr/include/x86_64-linux-gnu/bits/time.h \ - /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ - /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/string.h \ - /usr/include/x86_64-linux-gnu/bits/string.h \ - /usr/include/x86_64-linux-gnu/bits/string2.h \ - /usr/include/x86_64-linux-gnu/sys/time.h libusbi.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ - /usr/include/x86_64-linux-gnu/bits/wchar.h \ - /usr/include/x86_64-linux-gnu/bits/timex.h /usr/include/poll.h \ - /usr/include/x86_64-linux-gnu/sys/poll.h \ - /usr/include/x86_64-linux-gnu/bits/poll.h libusb.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ - /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ - /usr/include/x86_64-linux-gnu/bits/local_lim.h \ - /usr/include/linux/limits.h \ - /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ - /usr/include/x86_64-linux-gnu/bits/xopen_lim.h version.h \ - os/threads_posix.h /usr/include/pthread.h /usr/include/sched.h \ - /usr/include/x86_64-linux-gnu/bits/sched.h \ - /usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \ - /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ - /usr/include/x86_64-linux-gnu/bits/environments.h \ - /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ - os/poll_posix.h - -/usr/include/stdc-predef.h: - -../config.h: - -/usr/include/errno.h: - -/usr/include/features.h: - -/usr/include/x86_64-linux-gnu/sys/cdefs.h: - -/usr/include/x86_64-linux-gnu/bits/wordsize.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: - -/usr/include/x86_64-linux-gnu/bits/errno.h: - -/usr/include/linux/errno.h: - -/usr/include/x86_64-linux-gnu/asm/errno.h: - -/usr/include/asm-generic/errno.h: - -/usr/include/asm-generic/errno-base.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: - -/usr/include/stdio.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: - -/usr/include/x86_64-linux-gnu/bits/types.h: - -/usr/include/x86_64-linux-gnu/bits/typesizes.h: - -/usr/include/libio.h: - -/usr/include/_G_config.h: - -/usr/include/wchar.h: - -/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: - -/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: - -/usr/include/x86_64-linux-gnu/bits/stdio.h: - -/usr/include/stdlib.h: - -/usr/include/x86_64-linux-gnu/bits/waitflags.h: - -/usr/include/x86_64-linux-gnu/bits/waitstatus.h: - -/usr/include/endian.h: - -/usr/include/x86_64-linux-gnu/bits/endian.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: - -/usr/include/xlocale.h: - -/usr/include/x86_64-linux-gnu/sys/types.h: - -/usr/include/time.h: - -/usr/include/x86_64-linux-gnu/sys/select.h: - -/usr/include/x86_64-linux-gnu/bits/select.h: - -/usr/include/x86_64-linux-gnu/bits/sigset.h: - -/usr/include/x86_64-linux-gnu/bits/time.h: - -/usr/include/x86_64-linux-gnu/sys/sysmacros.h: - -/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: - -/usr/include/alloca.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: - -/usr/include/string.h: - -/usr/include/x86_64-linux-gnu/bits/string.h: - -/usr/include/x86_64-linux-gnu/bits/string2.h: - -/usr/include/x86_64-linux-gnu/sys/time.h: - -libusbi.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: - -/usr/include/stdint.h: - -/usr/include/x86_64-linux-gnu/bits/wchar.h: - -/usr/include/x86_64-linux-gnu/bits/timex.h: - -/usr/include/poll.h: - -/usr/include/x86_64-linux-gnu/sys/poll.h: - -/usr/include/x86_64-linux-gnu/bits/poll.h: - -libusb.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: - -/usr/include/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: - -/usr/include/x86_64-linux-gnu/bits/local_lim.h: - -/usr/include/linux/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: - -/usr/include/x86_64-linux-gnu/bits/xopen_lim.h: - -version.h: - -os/threads_posix.h: - -/usr/include/pthread.h: - -/usr/include/sched.h: - -/usr/include/x86_64-linux-gnu/bits/sched.h: - -/usr/include/x86_64-linux-gnu/bits/setjmp.h: - -/usr/include/unistd.h: - -/usr/include/x86_64-linux-gnu/bits/posix_opt.h: - -/usr/include/x86_64-linux-gnu/bits/environments.h: - -/usr/include/x86_64-linux-gnu/bits/confname.h: - -/usr/include/getopt.h: - -os/poll_posix.h: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-darwin_usb.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-darwin_usb.Plo deleted file mode 100644 index 9ce06a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-darwin_usb.Plo +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-descriptor.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-descriptor.Plo deleted file mode 100644 index 6e7d74c..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-descriptor.Plo +++ /dev/null @@ -1,181 +0,0 @@ -libusb_1_0_la-descriptor.lo: descriptor.c /usr/include/stdc-predef.h \ - /usr/include/errno.h /usr/include/features.h \ - /usr/include/x86_64-linux-gnu/sys/cdefs.h \ - /usr/include/x86_64-linux-gnu/bits/wordsize.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ - /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/x86_64-linux-gnu/asm/errno.h \ - /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ - /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/stdlib.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ - /usr/include/x86_64-linux-gnu/bits/waitflags.h \ - /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \ - /usr/include/x86_64-linux-gnu/bits/endian.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap.h \ - /usr/include/x86_64-linux-gnu/bits/types.h \ - /usr/include/x86_64-linux-gnu/bits/typesizes.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ - /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ - /usr/include/x86_64-linux-gnu/sys/select.h \ - /usr/include/x86_64-linux-gnu/bits/select.h \ - /usr/include/x86_64-linux-gnu/bits/sigset.h \ - /usr/include/x86_64-linux-gnu/bits/time.h \ - /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ - /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/string.h \ - /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ - /usr/include/x86_64-linux-gnu/bits/string2.h libusbi.h ../config.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h /usr/include/poll.h \ - /usr/include/x86_64-linux-gnu/sys/poll.h \ - /usr/include/x86_64-linux-gnu/bits/poll.h libusb.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ - /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ - /usr/include/x86_64-linux-gnu/bits/local_lim.h \ - /usr/include/linux/limits.h \ - /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ - /usr/include/x86_64-linux-gnu/sys/time.h version.h os/threads_posix.h \ - /usr/include/pthread.h /usr/include/sched.h \ - /usr/include/x86_64-linux-gnu/bits/sched.h \ - /usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \ - /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ - /usr/include/x86_64-linux-gnu/bits/environments.h \ - /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ - os/poll_posix.h - -/usr/include/stdc-predef.h: - -/usr/include/errno.h: - -/usr/include/features.h: - -/usr/include/x86_64-linux-gnu/sys/cdefs.h: - -/usr/include/x86_64-linux-gnu/bits/wordsize.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: - -/usr/include/x86_64-linux-gnu/bits/errno.h: - -/usr/include/linux/errno.h: - -/usr/include/x86_64-linux-gnu/asm/errno.h: - -/usr/include/asm-generic/errno.h: - -/usr/include/asm-generic/errno-base.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: - -/usr/include/stdint.h: - -/usr/include/x86_64-linux-gnu/bits/wchar.h: - -/usr/include/stdlib.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: - -/usr/include/x86_64-linux-gnu/bits/waitflags.h: - -/usr/include/x86_64-linux-gnu/bits/waitstatus.h: - -/usr/include/endian.h: - -/usr/include/x86_64-linux-gnu/bits/endian.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap.h: - -/usr/include/x86_64-linux-gnu/bits/types.h: - -/usr/include/x86_64-linux-gnu/bits/typesizes.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: - -/usr/include/x86_64-linux-gnu/sys/types.h: - -/usr/include/time.h: - -/usr/include/x86_64-linux-gnu/sys/select.h: - -/usr/include/x86_64-linux-gnu/bits/select.h: - -/usr/include/x86_64-linux-gnu/bits/sigset.h: - -/usr/include/x86_64-linux-gnu/bits/time.h: - -/usr/include/x86_64-linux-gnu/sys/sysmacros.h: - -/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: - -/usr/include/alloca.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: - -/usr/include/string.h: - -/usr/include/xlocale.h: - -/usr/include/x86_64-linux-gnu/bits/string.h: - -/usr/include/x86_64-linux-gnu/bits/string2.h: - -libusbi.h: - -../config.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: - -/usr/include/poll.h: - -/usr/include/x86_64-linux-gnu/sys/poll.h: - -/usr/include/x86_64-linux-gnu/bits/poll.h: - -libusb.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: - -/usr/include/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: - -/usr/include/x86_64-linux-gnu/bits/local_lim.h: - -/usr/include/linux/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: - -/usr/include/x86_64-linux-gnu/sys/time.h: - -version.h: - -os/threads_posix.h: - -/usr/include/pthread.h: - -/usr/include/sched.h: - -/usr/include/x86_64-linux-gnu/bits/sched.h: - -/usr/include/x86_64-linux-gnu/bits/setjmp.h: - -/usr/include/unistd.h: - -/usr/include/x86_64-linux-gnu/bits/posix_opt.h: - -/usr/include/x86_64-linux-gnu/bits/environments.h: - -/usr/include/x86_64-linux-gnu/bits/confname.h: - -/usr/include/getopt.h: - -os/poll_posix.h: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-io.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-io.Plo deleted file mode 100644 index b6ce688..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-io.Plo +++ /dev/null @@ -1,219 +0,0 @@ -libusb_1_0_la-io.lo: io.c /usr/include/stdc-predef.h ../config.h \ - /usr/include/errno.h /usr/include/features.h \ - /usr/include/x86_64-linux-gnu/sys/cdefs.h \ - /usr/include/x86_64-linux-gnu/bits/wordsize.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ - /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/x86_64-linux-gnu/asm/errno.h \ - /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ - /usr/include/signal.h /usr/include/x86_64-linux-gnu/bits/sigset.h \ - /usr/include/x86_64-linux-gnu/bits/types.h \ - /usr/include/x86_64-linux-gnu/bits/typesizes.h \ - /usr/include/x86_64-linux-gnu/bits/signum.h /usr/include/time.h \ - /usr/include/x86_64-linux-gnu/bits/siginfo.h \ - /usr/include/x86_64-linux-gnu/bits/sigaction.h \ - /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ - /usr/include/x86_64-linux-gnu/bits/sigstack.h \ - /usr/include/x86_64-linux-gnu/sys/ucontext.h \ - /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ - /usr/include/x86_64-linux-gnu/bits/sigthread.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ - /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/stdlib.h \ - /usr/include/x86_64-linux-gnu/bits/waitflags.h \ - /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \ - /usr/include/x86_64-linux-gnu/bits/endian.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \ - /usr/include/x86_64-linux-gnu/sys/types.h \ - /usr/include/x86_64-linux-gnu/sys/select.h \ - /usr/include/x86_64-linux-gnu/bits/select.h \ - /usr/include/x86_64-linux-gnu/bits/time.h \ - /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/string.h \ - /usr/include/x86_64-linux-gnu/bits/string.h \ - /usr/include/x86_64-linux-gnu/bits/string2.h \ - /usr/include/x86_64-linux-gnu/bits/timex.h \ - /usr/include/x86_64-linux-gnu/sys/time.h \ - /usr/include/x86_64-linux-gnu/sys/timerfd.h \ - /usr/include/x86_64-linux-gnu/bits/timerfd.h libusbi.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h /usr/include/poll.h \ - /usr/include/x86_64-linux-gnu/sys/poll.h \ - /usr/include/x86_64-linux-gnu/bits/poll.h libusb.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ - /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ - /usr/include/x86_64-linux-gnu/bits/local_lim.h \ - /usr/include/linux/limits.h \ - /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ - /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ - /usr/include/x86_64-linux-gnu/bits/stdio_lim.h version.h \ - os/threads_posix.h /usr/include/pthread.h /usr/include/sched.h \ - /usr/include/x86_64-linux-gnu/bits/sched.h \ - /usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \ - /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ - /usr/include/x86_64-linux-gnu/bits/environments.h \ - /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ - os/poll_posix.h - -/usr/include/stdc-predef.h: - -../config.h: - -/usr/include/errno.h: - -/usr/include/features.h: - -/usr/include/x86_64-linux-gnu/sys/cdefs.h: - -/usr/include/x86_64-linux-gnu/bits/wordsize.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: - -/usr/include/x86_64-linux-gnu/bits/errno.h: - -/usr/include/linux/errno.h: - -/usr/include/x86_64-linux-gnu/asm/errno.h: - -/usr/include/asm-generic/errno.h: - -/usr/include/asm-generic/errno-base.h: - -/usr/include/signal.h: - -/usr/include/x86_64-linux-gnu/bits/sigset.h: - -/usr/include/x86_64-linux-gnu/bits/types.h: - -/usr/include/x86_64-linux-gnu/bits/typesizes.h: - -/usr/include/x86_64-linux-gnu/bits/signum.h: - -/usr/include/time.h: - -/usr/include/x86_64-linux-gnu/bits/siginfo.h: - -/usr/include/x86_64-linux-gnu/bits/sigaction.h: - -/usr/include/x86_64-linux-gnu/bits/sigcontext.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: - -/usr/include/x86_64-linux-gnu/bits/sigstack.h: - -/usr/include/x86_64-linux-gnu/sys/ucontext.h: - -/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: - -/usr/include/x86_64-linux-gnu/bits/sigthread.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: - -/usr/include/stdint.h: - -/usr/include/x86_64-linux-gnu/bits/wchar.h: - -/usr/include/stdlib.h: - -/usr/include/x86_64-linux-gnu/bits/waitflags.h: - -/usr/include/x86_64-linux-gnu/bits/waitstatus.h: - -/usr/include/endian.h: - -/usr/include/x86_64-linux-gnu/bits/endian.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: - -/usr/include/xlocale.h: - -/usr/include/x86_64-linux-gnu/sys/types.h: - -/usr/include/x86_64-linux-gnu/sys/select.h: - -/usr/include/x86_64-linux-gnu/bits/select.h: - -/usr/include/x86_64-linux-gnu/bits/time.h: - -/usr/include/x86_64-linux-gnu/sys/sysmacros.h: - -/usr/include/alloca.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: - -/usr/include/string.h: - -/usr/include/x86_64-linux-gnu/bits/string.h: - -/usr/include/x86_64-linux-gnu/bits/string2.h: - -/usr/include/x86_64-linux-gnu/bits/timex.h: - -/usr/include/x86_64-linux-gnu/sys/time.h: - -/usr/include/x86_64-linux-gnu/sys/timerfd.h: - -/usr/include/x86_64-linux-gnu/bits/timerfd.h: - -libusbi.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: - -/usr/include/poll.h: - -/usr/include/x86_64-linux-gnu/sys/poll.h: - -/usr/include/x86_64-linux-gnu/bits/poll.h: - -libusb.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: - -/usr/include/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: - -/usr/include/x86_64-linux-gnu/bits/local_lim.h: - -/usr/include/linux/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: - -/usr/include/x86_64-linux-gnu/bits/xopen_lim.h: - -/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: - -version.h: - -os/threads_posix.h: - -/usr/include/pthread.h: - -/usr/include/sched.h: - -/usr/include/x86_64-linux-gnu/bits/sched.h: - -/usr/include/x86_64-linux-gnu/bits/setjmp.h: - -/usr/include/unistd.h: - -/usr/include/x86_64-linux-gnu/bits/posix_opt.h: - -/usr/include/x86_64-linux-gnu/bits/environments.h: - -/usr/include/x86_64-linux-gnu/bits/confname.h: - -/usr/include/getopt.h: - -os/poll_posix.h: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-linux_usbfs.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-linux_usbfs.Plo deleted file mode 100644 index 34bf221..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-linux_usbfs.Plo +++ /dev/null @@ -1,263 +0,0 @@ -libusb_1_0_la-linux_usbfs.lo: os/linux_usbfs.c /usr/include/stdc-predef.h \ - ../config.h /usr/include/ctype.h /usr/include/features.h \ - /usr/include/x86_64-linux-gnu/sys/cdefs.h \ - /usr/include/x86_64-linux-gnu/bits/wordsize.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ - /usr/include/x86_64-linux-gnu/bits/types.h \ - /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \ - /usr/include/x86_64-linux-gnu/bits/endian.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \ - /usr/include/dirent.h /usr/include/x86_64-linux-gnu/bits/dirent.h \ - /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ - /usr/include/x86_64-linux-gnu/bits/local_lim.h \ - /usr/include/linux/limits.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h /usr/include/errno.h \ - /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/x86_64-linux-gnu/asm/errno.h \ - /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ - /usr/include/fcntl.h /usr/include/x86_64-linux-gnu/bits/fcntl.h \ - /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ - /usr/include/x86_64-linux-gnu/bits/uio.h \ - /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ - /usr/include/x86_64-linux-gnu/sys/select.h \ - /usr/include/x86_64-linux-gnu/bits/select.h \ - /usr/include/x86_64-linux-gnu/bits/sigset.h \ - /usr/include/x86_64-linux-gnu/bits/time.h \ - /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ - /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ - /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/poll.h \ - /usr/include/x86_64-linux-gnu/sys/poll.h \ - /usr/include/x86_64-linux-gnu/bits/poll.h /usr/include/stdio.h \ - /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ - /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ - /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ - /usr/include/x86_64-linux-gnu/bits/stdio.h /usr/include/stdlib.h \ - /usr/include/x86_64-linux-gnu/bits/waitflags.h \ - /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/alloca.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/string.h \ - /usr/include/x86_64-linux-gnu/bits/string.h \ - /usr/include/x86_64-linux-gnu/bits/string2.h \ - /usr/include/x86_64-linux-gnu/sys/ioctl.h \ - /usr/include/x86_64-linux-gnu/bits/ioctls.h \ - /usr/include/x86_64-linux-gnu/asm/ioctls.h \ - /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h \ - /usr/include/x86_64-linux-gnu/asm/ioctl.h \ - /usr/include/asm-generic/ioctl.h \ - /usr/include/x86_64-linux-gnu/bits/ioctl-types.h \ - /usr/include/x86_64-linux-gnu/sys/ttydefaults.h \ - /usr/include/x86_64-linux-gnu/sys/stat.h \ - /usr/include/x86_64-linux-gnu/sys/utsname.h \ - /usr/include/x86_64-linux-gnu/bits/utsname.h /usr/include/unistd.h \ - /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ - /usr/include/x86_64-linux-gnu/bits/environments.h \ - /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ - libusb.h /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h \ - /usr/include/stdint.h /usr/include/x86_64-linux-gnu/bits/wchar.h \ - /usr/include/x86_64-linux-gnu/bits/timex.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ - /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ - /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ - /usr/include/x86_64-linux-gnu/sys/time.h libusbi.h version.h \ - os/threads_posix.h /usr/include/pthread.h /usr/include/sched.h \ - /usr/include/x86_64-linux-gnu/bits/sched.h \ - /usr/include/x86_64-linux-gnu/bits/setjmp.h os/poll_posix.h \ - os/linux_usbfs.h - -/usr/include/stdc-predef.h: - -../config.h: - -/usr/include/ctype.h: - -/usr/include/features.h: - -/usr/include/x86_64-linux-gnu/sys/cdefs.h: - -/usr/include/x86_64-linux-gnu/bits/wordsize.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: - -/usr/include/x86_64-linux-gnu/bits/types.h: - -/usr/include/x86_64-linux-gnu/bits/typesizes.h: - -/usr/include/endian.h: - -/usr/include/x86_64-linux-gnu/bits/endian.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: - -/usr/include/xlocale.h: - -/usr/include/dirent.h: - -/usr/include/x86_64-linux-gnu/bits/dirent.h: - -/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: - -/usr/include/x86_64-linux-gnu/bits/local_lim.h: - -/usr/include/linux/limits.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: - -/usr/include/errno.h: - -/usr/include/x86_64-linux-gnu/bits/errno.h: - -/usr/include/linux/errno.h: - -/usr/include/x86_64-linux-gnu/asm/errno.h: - -/usr/include/asm-generic/errno.h: - -/usr/include/asm-generic/errno-base.h: - -/usr/include/fcntl.h: - -/usr/include/x86_64-linux-gnu/bits/fcntl.h: - -/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: - -/usr/include/x86_64-linux-gnu/bits/uio.h: - -/usr/include/x86_64-linux-gnu/sys/types.h: - -/usr/include/time.h: - -/usr/include/x86_64-linux-gnu/sys/select.h: - -/usr/include/x86_64-linux-gnu/bits/select.h: - -/usr/include/x86_64-linux-gnu/bits/sigset.h: - -/usr/include/x86_64-linux-gnu/bits/time.h: - -/usr/include/x86_64-linux-gnu/sys/sysmacros.h: - -/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: - -/usr/include/x86_64-linux-gnu/bits/stat.h: - -/usr/include/poll.h: - -/usr/include/x86_64-linux-gnu/sys/poll.h: - -/usr/include/x86_64-linux-gnu/bits/poll.h: - -/usr/include/stdio.h: - -/usr/include/libio.h: - -/usr/include/_G_config.h: - -/usr/include/wchar.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: - -/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: - -/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: - -/usr/include/x86_64-linux-gnu/bits/stdio.h: - -/usr/include/stdlib.h: - -/usr/include/x86_64-linux-gnu/bits/waitflags.h: - -/usr/include/x86_64-linux-gnu/bits/waitstatus.h: - -/usr/include/alloca.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: - -/usr/include/string.h: - -/usr/include/x86_64-linux-gnu/bits/string.h: - -/usr/include/x86_64-linux-gnu/bits/string2.h: - -/usr/include/x86_64-linux-gnu/sys/ioctl.h: - -/usr/include/x86_64-linux-gnu/bits/ioctls.h: - -/usr/include/x86_64-linux-gnu/asm/ioctls.h: - -/usr/include/asm-generic/ioctls.h: - -/usr/include/linux/ioctl.h: - -/usr/include/x86_64-linux-gnu/asm/ioctl.h: - -/usr/include/asm-generic/ioctl.h: - -/usr/include/x86_64-linux-gnu/bits/ioctl-types.h: - -/usr/include/x86_64-linux-gnu/sys/ttydefaults.h: - -/usr/include/x86_64-linux-gnu/sys/stat.h: - -/usr/include/x86_64-linux-gnu/sys/utsname.h: - -/usr/include/x86_64-linux-gnu/bits/utsname.h: - -/usr/include/unistd.h: - -/usr/include/x86_64-linux-gnu/bits/posix_opt.h: - -/usr/include/x86_64-linux-gnu/bits/environments.h: - -/usr/include/x86_64-linux-gnu/bits/confname.h: - -/usr/include/getopt.h: - -libusb.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: - -/usr/include/stdint.h: - -/usr/include/x86_64-linux-gnu/bits/wchar.h: - -/usr/include/x86_64-linux-gnu/bits/timex.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: - -/usr/include/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: - -/usr/include/x86_64-linux-gnu/bits/xopen_lim.h: - -/usr/include/x86_64-linux-gnu/sys/time.h: - -libusbi.h: - -version.h: - -os/threads_posix.h: - -/usr/include/pthread.h: - -/usr/include/sched.h: - -/usr/include/x86_64-linux-gnu/bits/sched.h: - -/usr/include/x86_64-linux-gnu/bits/setjmp.h: - -os/poll_posix.h: - -os/linux_usbfs.h: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-openbsd_usb.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-openbsd_usb.Plo deleted file mode 100644 index 9ce06a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-openbsd_usb.Plo +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-poll_windows.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-poll_windows.Plo deleted file mode 100644 index 9ce06a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-poll_windows.Plo +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-sync.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-sync.Plo deleted file mode 100644 index 7895e8c..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-sync.Plo +++ /dev/null @@ -1,190 +0,0 @@ -libusb_1_0_la-sync.lo: sync.c /usr/include/stdc-predef.h ../config.h \ - /usr/include/errno.h /usr/include/features.h \ - /usr/include/x86_64-linux-gnu/sys/cdefs.h \ - /usr/include/x86_64-linux-gnu/bits/wordsize.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ - /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/x86_64-linux-gnu/asm/errno.h \ - /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ - /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/stdlib.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ - /usr/include/x86_64-linux-gnu/bits/waitflags.h \ - /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \ - /usr/include/x86_64-linux-gnu/bits/endian.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap.h \ - /usr/include/x86_64-linux-gnu/bits/types.h \ - /usr/include/x86_64-linux-gnu/bits/typesizes.h \ - /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \ - /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ - /usr/include/x86_64-linux-gnu/sys/select.h \ - /usr/include/x86_64-linux-gnu/bits/select.h \ - /usr/include/x86_64-linux-gnu/bits/sigset.h \ - /usr/include/x86_64-linux-gnu/bits/time.h \ - /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ - /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ - /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/string.h \ - /usr/include/x86_64-linux-gnu/bits/string.h \ - /usr/include/x86_64-linux-gnu/bits/string2.h libusbi.h \ - /usr/include/x86_64-linux-gnu/bits/timex.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h /usr/include/poll.h \ - /usr/include/x86_64-linux-gnu/sys/poll.h \ - /usr/include/x86_64-linux-gnu/bits/poll.h libusb.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ - /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ - /usr/include/x86_64-linux-gnu/bits/local_lim.h \ - /usr/include/linux/limits.h \ - /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ - /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ - /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ - /usr/include/x86_64-linux-gnu/sys/time.h version.h os/threads_posix.h \ - /usr/include/pthread.h /usr/include/sched.h \ - /usr/include/x86_64-linux-gnu/bits/sched.h \ - /usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/unistd.h \ - /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ - /usr/include/x86_64-linux-gnu/bits/environments.h \ - /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ - os/poll_posix.h - -/usr/include/stdc-predef.h: - -../config.h: - -/usr/include/errno.h: - -/usr/include/features.h: - -/usr/include/x86_64-linux-gnu/sys/cdefs.h: - -/usr/include/x86_64-linux-gnu/bits/wordsize.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: - -/usr/include/x86_64-linux-gnu/bits/errno.h: - -/usr/include/linux/errno.h: - -/usr/include/x86_64-linux-gnu/asm/errno.h: - -/usr/include/asm-generic/errno.h: - -/usr/include/asm-generic/errno-base.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: - -/usr/include/stdint.h: - -/usr/include/x86_64-linux-gnu/bits/wchar.h: - -/usr/include/stdlib.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: - -/usr/include/x86_64-linux-gnu/bits/waitflags.h: - -/usr/include/x86_64-linux-gnu/bits/waitstatus.h: - -/usr/include/endian.h: - -/usr/include/x86_64-linux-gnu/bits/endian.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap.h: - -/usr/include/x86_64-linux-gnu/bits/types.h: - -/usr/include/x86_64-linux-gnu/bits/typesizes.h: - -/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: - -/usr/include/xlocale.h: - -/usr/include/x86_64-linux-gnu/sys/types.h: - -/usr/include/time.h: - -/usr/include/x86_64-linux-gnu/sys/select.h: - -/usr/include/x86_64-linux-gnu/bits/select.h: - -/usr/include/x86_64-linux-gnu/bits/sigset.h: - -/usr/include/x86_64-linux-gnu/bits/time.h: - -/usr/include/x86_64-linux-gnu/sys/sysmacros.h: - -/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: - -/usr/include/alloca.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: - -/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: - -/usr/include/string.h: - -/usr/include/x86_64-linux-gnu/bits/string.h: - -/usr/include/x86_64-linux-gnu/bits/string2.h: - -libusbi.h: - -/usr/include/x86_64-linux-gnu/bits/timex.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: - -/usr/include/poll.h: - -/usr/include/x86_64-linux-gnu/sys/poll.h: - -/usr/include/x86_64-linux-gnu/bits/poll.h: - -libusb.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: - -/usr/include/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: - -/usr/include/x86_64-linux-gnu/bits/local_lim.h: - -/usr/include/linux/limits.h: - -/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: - -/usr/include/x86_64-linux-gnu/bits/xopen_lim.h: - -/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: - -/usr/include/x86_64-linux-gnu/sys/time.h: - -version.h: - -os/threads_posix.h: - -/usr/include/pthread.h: - -/usr/include/sched.h: - -/usr/include/x86_64-linux-gnu/bits/sched.h: - -/usr/include/x86_64-linux-gnu/bits/setjmp.h: - -/usr/include/unistd.h: - -/usr/include/x86_64-linux-gnu/bits/posix_opt.h: - -/usr/include/x86_64-linux-gnu/bits/environments.h: - -/usr/include/x86_64-linux-gnu/bits/confname.h: - -/usr/include/getopt.h: - -os/poll_posix.h: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-threads_posix.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-threads_posix.Plo deleted file mode 100644 index bf45838..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-threads_posix.Plo +++ /dev/null @@ -1,52 +0,0 @@ -libusb_1_0_la-threads_posix.lo: os/threads_posix.c \ - /usr/include/stdc-predef.h os/threads_posix.h /usr/include/pthread.h \ - /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ - /usr/include/x86_64-linux-gnu/bits/wordsize.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs.h \ - /usr/include/x86_64-linux-gnu/gnu/stubs-64.h /usr/include/endian.h \ - /usr/include/x86_64-linux-gnu/bits/endian.h /usr/include/sched.h \ - /usr/include/x86_64-linux-gnu/bits/types.h \ - /usr/include/x86_64-linux-gnu/bits/typesizes.h \ - /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h /usr/include/time.h \ - /usr/include/x86_64-linux-gnu/bits/time.h \ - /usr/include/x86_64-linux-gnu/bits/sched.h \ - /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ - /usr/include/x86_64-linux-gnu/bits/setjmp.h - -/usr/include/stdc-predef.h: - -os/threads_posix.h: - -/usr/include/pthread.h: - -/usr/include/features.h: - -/usr/include/x86_64-linux-gnu/sys/cdefs.h: - -/usr/include/x86_64-linux-gnu/bits/wordsize.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs.h: - -/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: - -/usr/include/endian.h: - -/usr/include/x86_64-linux-gnu/bits/endian.h: - -/usr/include/sched.h: - -/usr/include/x86_64-linux-gnu/bits/types.h: - -/usr/include/x86_64-linux-gnu/bits/typesizes.h: - -/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: - -/usr/include/time.h: - -/usr/include/x86_64-linux-gnu/bits/time.h: - -/usr/include/x86_64-linux-gnu/bits/sched.h: - -/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: - -/usr/include/x86_64-linux-gnu/bits/setjmp.h: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-threads_windows.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-threads_windows.Plo deleted file mode 100644 index 9ce06a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-threads_windows.Plo +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-windows_usb.Plo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-windows_usb.Plo deleted file mode 100644 index 9ce06a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.deps/libusb_1_0_la-windows_usb.Plo +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.a b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.a deleted file mode 100644 index 1dca425a7f84f404cfdc449259867d4ddf11eeb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409430 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

+-j2xX%By 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 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.la b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.la deleted file mode 120000 index cef8a8b..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.la +++ /dev/null @@ -1 +0,0 @@ -../libusb-1.0.la \ No newline at end of file diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.lai b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.lai deleted file mode 100644 index da83db8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.lai +++ /dev/null @@ -1,41 +0,0 @@ -# libusb-1.0.la - a libtool library file -# Generated by libtool (GNU libtool) 2.2.10 -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='libusb-1.0.so.0' - -# Names of this library. -library_names='libusb-1.0.so.0.1.0 libusb-1.0.so.0 libusb-1.0.so' - -# The name of the static archive. -old_library='libusb-1.0.a' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags=' -pthread' - -# Libraries that this one depends upon. -dependency_libs=' -lrt' - -# Names of additional weak libraries provided by this library -weak_library_names='' - -# Version information for libusb-1.0. -current=1 -age=1 -revision=0 - -# Is this an already installed library? -installed=yes - -# Should we warn about portability when linking against -modules? -shouldnotlink=no - -# Files to dlopen/dlpreopen -dlopen='' -dlpreopen='' - -# Directory that this library needs to be installed in: -libdir='/usr/local/lib' diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so deleted file mode 120000 index 89984fe..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so +++ /dev/null @@ -1 +0,0 @@ -libusb-1.0.so.0.1.0 \ No newline at end of file diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so.0 b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so.0 deleted file mode 120000 index 89984fe..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so.0 +++ /dev/null @@ -1 +0,0 @@ -libusb-1.0.so.0.1.0 \ No newline at end of file diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so.0.1.0 b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb-1.0.so.0.1.0 deleted file mode 100755 index d99b522a8e47e42aaba677866ff209d5c073b8bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242856 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 BPHF%E diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-core.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-core.o deleted file mode 100644 index dda05cec89d2bc11ca84111259f54c5825d3c26e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81152 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 ax3xNlKdm3fw5sYaeluQwqMTT@{{I0t-v3|# diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-descriptor.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-descriptor.o deleted file mode 100644 index dc2fd7ae72daf89899f9d16eff10da56bf308b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52120 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 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-io.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-io.o deleted file mode 100644 index a269e03b23b195f64d78c2415bb8406c2a0420c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71344 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

- 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 M;QSpSHn9Hw0g>mA*Z=?k diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-linux_usbfs.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-linux_usbfs.o deleted file mode 100644 index f3a8b886299a294acd13855fca65d5e979522fe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166600 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 A(7YK10mf3fFnVSru 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 Ra<=++KNPpGA^WfO{|9SZI)4BF diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-sync.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/.libs/libusb_1_0_la-sync.o deleted file mode 100644 index 1ba6c3c8fbbcb03e60dbb8fcb7fe68183358f23e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31888 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 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile deleted file mode 100644 index ba292db..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile +++ /dev/null @@ -1,718 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# libusb/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. - - - - - -pkgdatadir = $(datadir)/libusb -pkgincludedir = $(includedir)/libusb -pkglibdir = $(libdir)/libusb -pkglibexecdir = $(libexecdir)/libusb -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-unknown-linux-gnu -host_triplet = x86_64-unknown-linux-gnu -subdir = libusb -DIST_COMMON = $(hdr_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(hdrdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -libusb_1_0_la_LIBADD = -am__libusb_1_0_la_SOURCES_DIST = libusbi.h core.c descriptor.c io.c \ - sync.c os/darwin_usb.c os/linux_usbfs.c os/openbsd_usb.c \ - os/poll_windows.c os/windows_usb.c libusb-1.0.rc \ - libusb-1.0.def os/linux_usbfs.h os/darwin_usb.h \ - os/windows_usb.h os/threads_windows.h os/threads_windows.c \ - os/threads_posix.h os/threads_posix.c os/poll_posix.h \ - os/poll_windows.h -am__objects_1 = libusb_1_0_la-darwin_usb.lo -am__objects_2 = libusb_1_0_la-linux_usbfs.lo -am__objects_3 = libusb_1_0_la-openbsd_usb.lo -am__objects_4 = libusb_1_0_la-poll_windows.lo \ - libusb_1_0_la-windows_usb.lo libusb-1.0.lo -##am__objects_5 = $(am__objects_4) -##am__objects_5 = $(am__objects_3) -am__objects_5 = $(am__objects_2) -#am__objects_5 = $(am__objects_1) -#am__objects_6 = libusb_1_0_la-threads_windows.lo -am__objects_6 = libusb_1_0_la-threads_posix.lo -am_libusb_1_0_la_OBJECTS = libusb_1_0_la-core.lo \ - libusb_1_0_la-descriptor.lo libusb_1_0_la-io.lo \ - libusb_1_0_la-sync.lo $(am__objects_5) $(am__objects_6) -libusb_1_0_la_OBJECTS = $(am_libusb_1_0_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -libusb_1_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libusb_1_0_la_CFLAGS) \ - $(CFLAGS) $(libusb_1_0_la_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libusb_1_0_la_SOURCES) -DIST_SOURCES = $(am__libusb_1_0_la_SOURCES_DIST) -HEADERS = $(hdr_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run aclocal-1.11 -AMTAR = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run tar -AM_CFLAGS = -std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow -AM_DEFAULT_VERBOSITY = 0 -AR = ar -AUTOCONF = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoconf -AUTOHEADER = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run autoheader -AUTOMAKE = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run automake-1.11 -AWK = mawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -DSYMUTIL = -DUMPBIN = -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /bin/grep -E -EXEEXT = -FGREP = /bin/grep -F -GREP = /bin/grep -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LD = /usr/bin/ld -m elf_x86_64 -LDFLAGS = -LIBOBJS = -LIBS = -lrt -pthread -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LIPO = -LN_S = ln -s -LTLDFLAGS = -version-info 1:0:1 -no-undefined -LTLIBOBJS = -MAINT = # -MAKEINFO = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing --run makeinfo -MKDIR_P = /bin/mkdir -p -NM = /usr/bin/nm -B -NMEDIT = -OBJDUMP = objdump -OBJEXT = o -OS_DARWIN = -OS_LINUX = -OS_OPENBSD = -OS_WINDOWS = -OTOOL = -OTOOL64 = -PACKAGE = libusb -PACKAGE_BUGREPORT = libusb-devel@lists.sourceforge.net -PACKAGE_NAME = libusb -PACKAGE_STRING = libusb 1.0.9 -PACKAGE_TARNAME = libusb -PACKAGE_URL = http://www.libusb.org/ -PACKAGE_VERSION = 1.0.9 -PATH_SEPARATOR = : -PC_LIBS_PRIVATE = -lrt -pthread -RANLIB = ranlib -RC = -SED = /bin/sed -SET_MAKE = -SHELL = /bin/bash -STRIP = strip -THREAD_CFLAGS = -pthread -VERSION = 1.0.9 -VISIBILITY_CFLAGS = -fvisibility=hidden -abs_builddir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb -abs_srcdir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb -abs_top_builddir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -abs_top_srcdir = /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9 -ac_ct_CC = gcc -ac_ct_DUMPBIN = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -bindir = ${exec_prefix}/bin -build = x86_64-unknown-linux-gnu -build_alias = -build_cpu = x86_64 -build_os = linux-gnu -build_vendor = unknown -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -exec_prefix = ${prefix} -host = x86_64-unknown-linux-gnu -host_alias = -host_cpu = x86_64 -host_os = linux-gnu -host_vendor = unknown -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /root/projekti/CyUSB/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = /bin/mkdir -p -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /usr/local -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -lib_LTLIBRARIES = libusb-1.0.la -LINUX_USBFS_SRC = os/linux_usbfs.c -DARWIN_USB_SRC = os/darwin_usb.c -OPENBSD_USB_SRC = os/openbsd_usb.c -WINDOWS_USB_SRC = os/poll_windows.c os/windows_usb.c libusb-1.0.rc \ - libusb-1.0.def - -EXTRA_DIST = $(LINUX_USBFS_SRC) $(DARWIN_USB_SRC) $(OPENBSD_USB_SRC) \ - $(WINDOWS_USB_SRC) os/threads_posix.c os/threads_windows.c - -#OS_SRC = $(DARWIN_USB_SRC) -OS_SRC = $(LINUX_USBFS_SRC) -#OS_SRC = $(OPENBSD_USB_SRC) -#OS_SRC = $(WINDOWS_USB_SRC) -#AM_CFLAGS_EXT = -no-cpp-precomp -#THREADS_SRC = os/threads_windows.h os/threads_windows.c -THREADS_SRC = os/threads_posix.h os/threads_posix.c -libusb_1_0_la_CFLAGS = $(VISIBILITY_CFLAGS) $(AM_CFLAGS) $(THREAD_CFLAGS) \ - -DLIBUSB_DESCRIBE=\"`git --git-dir "$(top_srcdir)/.git" describe --tags 2>/dev/null`\" - -libusb_1_0_la_LDFLAGS = $(LTLDFLAGS) -libusb_1_0_la_SOURCES = libusbi.h core.c descriptor.c io.c sync.c $(OS_SRC) \ - os/linux_usbfs.h os/darwin_usb.h os/windows_usb.h \ - $(THREADS_SRC) \ - os/poll_posix.h os/poll_windows.h - -hdrdir = $(includedir)/libusb-1.0 -hdr_HEADERS = libusb.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj .rc -$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libusb/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libusb/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: # $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): # $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - 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 -libusb-1.0.la: $(libusb_1_0_la_OBJECTS) $(libusb_1_0_la_DEPENDENCIES) - $(AM_V_CCLD)$(libusb_1_0_la_LINK) -rpath $(libdir) $(libusb_1_0_la_OBJECTS) $(libusb_1_0_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/libusb_1_0_la-core.Plo -include ./$(DEPDIR)/libusb_1_0_la-darwin_usb.Plo -include ./$(DEPDIR)/libusb_1_0_la-descriptor.Plo -include ./$(DEPDIR)/libusb_1_0_la-io.Plo -include ./$(DEPDIR)/libusb_1_0_la-linux_usbfs.Plo -include ./$(DEPDIR)/libusb_1_0_la-openbsd_usb.Plo -include ./$(DEPDIR)/libusb_1_0_la-poll_windows.Plo -include ./$(DEPDIR)/libusb_1_0_la-sync.Plo -include ./$(DEPDIR)/libusb_1_0_la-threads_posix.Plo -include ./$(DEPDIR)/libusb_1_0_la-threads_windows.Plo -include ./$(DEPDIR)/libusb_1_0_la-windows_usb.Plo - -.c.o: - $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# $(AM_V_CC) \ -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# $(AM_V_CC) \ -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: - $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -# $(AM_V_CC) \ -# source='$<' object='$@' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LTCOMPILE) -c -o $@ $< - -libusb_1_0_la-core.lo: core.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-core.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-core.Tpo -c -o libusb_1_0_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-core.Tpo $(DEPDIR)/libusb_1_0_la-core.Plo -# $(AM_V_CC) \ -# source='core.c' object='libusb_1_0_la-core.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c - -libusb_1_0_la-descriptor.lo: descriptor.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-descriptor.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-descriptor.Tpo -c -o libusb_1_0_la-descriptor.lo `test -f 'descriptor.c' || echo '$(srcdir)/'`descriptor.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-descriptor.Tpo $(DEPDIR)/libusb_1_0_la-descriptor.Plo -# $(AM_V_CC) \ -# source='descriptor.c' object='libusb_1_0_la-descriptor.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-descriptor.lo `test -f 'descriptor.c' || echo '$(srcdir)/'`descriptor.c - -libusb_1_0_la-io.lo: io.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-io.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-io.Tpo -c -o libusb_1_0_la-io.lo `test -f 'io.c' || echo '$(srcdir)/'`io.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-io.Tpo $(DEPDIR)/libusb_1_0_la-io.Plo -# $(AM_V_CC) \ -# source='io.c' object='libusb_1_0_la-io.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-io.lo `test -f 'io.c' || echo '$(srcdir)/'`io.c - -libusb_1_0_la-sync.lo: sync.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-sync.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-sync.Tpo -c -o libusb_1_0_la-sync.lo `test -f 'sync.c' || echo '$(srcdir)/'`sync.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-sync.Tpo $(DEPDIR)/libusb_1_0_la-sync.Plo -# $(AM_V_CC) \ -# source='sync.c' object='libusb_1_0_la-sync.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-sync.lo `test -f 'sync.c' || echo '$(srcdir)/'`sync.c - -libusb_1_0_la-darwin_usb.lo: os/darwin_usb.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-darwin_usb.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-darwin_usb.Tpo -c -o libusb_1_0_la-darwin_usb.lo `test -f 'os/darwin_usb.c' || echo '$(srcdir)/'`os/darwin_usb.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-darwin_usb.Tpo $(DEPDIR)/libusb_1_0_la-darwin_usb.Plo -# $(AM_V_CC) \ -# source='os/darwin_usb.c' object='libusb_1_0_la-darwin_usb.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-darwin_usb.lo `test -f 'os/darwin_usb.c' || echo '$(srcdir)/'`os/darwin_usb.c - -libusb_1_0_la-linux_usbfs.lo: os/linux_usbfs.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-linux_usbfs.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-linux_usbfs.Tpo -c -o libusb_1_0_la-linux_usbfs.lo `test -f 'os/linux_usbfs.c' || echo '$(srcdir)/'`os/linux_usbfs.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-linux_usbfs.Tpo $(DEPDIR)/libusb_1_0_la-linux_usbfs.Plo -# $(AM_V_CC) \ -# source='os/linux_usbfs.c' object='libusb_1_0_la-linux_usbfs.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-linux_usbfs.lo `test -f 'os/linux_usbfs.c' || echo '$(srcdir)/'`os/linux_usbfs.c - -libusb_1_0_la-openbsd_usb.lo: os/openbsd_usb.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-openbsd_usb.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-openbsd_usb.Tpo -c -o libusb_1_0_la-openbsd_usb.lo `test -f 'os/openbsd_usb.c' || echo '$(srcdir)/'`os/openbsd_usb.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-openbsd_usb.Tpo $(DEPDIR)/libusb_1_0_la-openbsd_usb.Plo -# $(AM_V_CC) \ -# source='os/openbsd_usb.c' object='libusb_1_0_la-openbsd_usb.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-openbsd_usb.lo `test -f 'os/openbsd_usb.c' || echo '$(srcdir)/'`os/openbsd_usb.c - -libusb_1_0_la-poll_windows.lo: os/poll_windows.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-poll_windows.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-poll_windows.Tpo -c -o libusb_1_0_la-poll_windows.lo `test -f 'os/poll_windows.c' || echo '$(srcdir)/'`os/poll_windows.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-poll_windows.Tpo $(DEPDIR)/libusb_1_0_la-poll_windows.Plo -# $(AM_V_CC) \ -# source='os/poll_windows.c' object='libusb_1_0_la-poll_windows.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-poll_windows.lo `test -f 'os/poll_windows.c' || echo '$(srcdir)/'`os/poll_windows.c - -libusb_1_0_la-windows_usb.lo: os/windows_usb.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-windows_usb.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-windows_usb.Tpo -c -o libusb_1_0_la-windows_usb.lo `test -f 'os/windows_usb.c' || echo '$(srcdir)/'`os/windows_usb.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-windows_usb.Tpo $(DEPDIR)/libusb_1_0_la-windows_usb.Plo -# $(AM_V_CC) \ -# source='os/windows_usb.c' object='libusb_1_0_la-windows_usb.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-windows_usb.lo `test -f 'os/windows_usb.c' || echo '$(srcdir)/'`os/windows_usb.c - -libusb_1_0_la-threads_windows.lo: os/threads_windows.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-threads_windows.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-threads_windows.Tpo -c -o libusb_1_0_la-threads_windows.lo `test -f 'os/threads_windows.c' || echo '$(srcdir)/'`os/threads_windows.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-threads_windows.Tpo $(DEPDIR)/libusb_1_0_la-threads_windows.Plo -# $(AM_V_CC) \ -# source='os/threads_windows.c' object='libusb_1_0_la-threads_windows.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-threads_windows.lo `test -f 'os/threads_windows.c' || echo '$(srcdir)/'`os/threads_windows.c - -libusb_1_0_la-threads_posix.lo: os/threads_posix.c - $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-threads_posix.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-threads_posix.Tpo -c -o libusb_1_0_la-threads_posix.lo `test -f 'os/threads_posix.c' || echo '$(srcdir)/'`os/threads_posix.c - $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-threads_posix.Tpo $(DEPDIR)/libusb_1_0_la-threads_posix.Plo -# $(AM_V_CC) \ -# source='os/threads_posix.c' object='libusb_1_0_la-threads_posix.lo' libtool=yes \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-threads_posix.lo `test -f 'os/threads_posix.c' || echo '$(srcdir)/'`os/threads_posix.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-hdrHEADERS: $(hdr_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(hdrdir)" || $(MKDIR_P) "$(DESTDIR)$(hdrdir)" - @list='$(hdr_HEADERS)'; test -n "$(hdrdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(hdrdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(hdrdir)" || exit $$?; \ - done - -uninstall-hdrHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(hdr_HEADERS)'; test -n "$(hdrdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(hdrdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(hdrdir)" && rm -f $$files - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__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)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(hdrdir)"; 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) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-hdrHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-hdrHEADERS uninstall-libLTLIBRARIES - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-hdrHEADERS \ - install-html install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-hdrHEADERS \ - uninstall-libLTLIBRARIES - - -#.rc.lo: -# $(AM_V_GEN)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --tag=RC --mode=compile $(RC) $(RCFLAGS) -i $< -o $@ - -#libusb-1.0.rc: version.h - -# 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/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile.am b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile.am deleted file mode 100644 index 3316ebc..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile.am +++ /dev/null @@ -1,49 +0,0 @@ -lib_LTLIBRARIES = libusb-1.0.la - -LINUX_USBFS_SRC = os/linux_usbfs.c -DARWIN_USB_SRC = os/darwin_usb.c -OPENBSD_USB_SRC = os/openbsd_usb.c -WINDOWS_USB_SRC = os/poll_windows.c os/windows_usb.c libusb-1.0.rc \ - libusb-1.0.def - -EXTRA_DIST = $(LINUX_USBFS_SRC) $(DARWIN_USB_SRC) $(OPENBSD_USB_SRC) \ - $(WINDOWS_USB_SRC) os/threads_posix.c os/threads_windows.c - -if OS_LINUX -OS_SRC = $(LINUX_USBFS_SRC) -endif - -if OS_DARWIN -OS_SRC = $(DARWIN_USB_SRC) -AM_CFLAGS_EXT = -no-cpp-precomp -endif - -if OS_OPENBSD -OS_SRC = $(OPENBSD_USB_SRC) -endif - -if OS_WINDOWS -OS_SRC = $(WINDOWS_USB_SRC) - -.rc.lo: - $(AM_V_GEN)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --tag=RC --mode=compile $(RC) $(RCFLAGS) -i $< -o $@ - -libusb-1.0.rc: version.h -endif - -if THREADS_POSIX -THREADS_SRC = os/threads_posix.h os/threads_posix.c -else -THREADS_SRC = os/threads_windows.h os/threads_windows.c -endif - -libusb_1_0_la_CFLAGS = $(VISIBILITY_CFLAGS) $(AM_CFLAGS) $(THREAD_CFLAGS) \ - -DLIBUSB_DESCRIBE=\"`git --git-dir "$(top_srcdir)/.git" describe --tags 2>/dev/null`\" -libusb_1_0_la_LDFLAGS = $(LTLDFLAGS) -libusb_1_0_la_SOURCES = libusbi.h core.c descriptor.c io.c sync.c $(OS_SRC) \ - os/linux_usbfs.h os/darwin_usb.h os/windows_usb.h \ - $(THREADS_SRC) \ - os/poll_posix.h os/poll_windows.h - -hdrdir = $(includedir)/libusb-1.0 -hdr_HEADERS = libusb.h diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile.in b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile.in deleted file mode 100644 index 193adae..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/Makefile.in +++ /dev/null @@ -1,718 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = libusb -DIST_COMMON = $(hdr_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(hdrdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -libusb_1_0_la_LIBADD = -am__libusb_1_0_la_SOURCES_DIST = libusbi.h core.c descriptor.c io.c \ - sync.c os/darwin_usb.c os/linux_usbfs.c os/openbsd_usb.c \ - os/poll_windows.c os/windows_usb.c libusb-1.0.rc \ - libusb-1.0.def os/linux_usbfs.h os/darwin_usb.h \ - os/windows_usb.h os/threads_windows.h os/threads_windows.c \ - os/threads_posix.h os/threads_posix.c os/poll_posix.h \ - os/poll_windows.h -am__objects_1 = libusb_1_0_la-darwin_usb.lo -am__objects_2 = libusb_1_0_la-linux_usbfs.lo -am__objects_3 = libusb_1_0_la-openbsd_usb.lo -am__objects_4 = libusb_1_0_la-poll_windows.lo \ - libusb_1_0_la-windows_usb.lo libusb-1.0.lo -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_OPENBSD_FALSE@@OS_WINDOWS_TRUE@am__objects_5 = $(am__objects_4) -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_OPENBSD_TRUE@am__objects_5 = $(am__objects_3) -@OS_DARWIN_FALSE@@OS_LINUX_TRUE@am__objects_5 = $(am__objects_2) -@OS_DARWIN_TRUE@am__objects_5 = $(am__objects_1) -@THREADS_POSIX_FALSE@am__objects_6 = libusb_1_0_la-threads_windows.lo -@THREADS_POSIX_TRUE@am__objects_6 = libusb_1_0_la-threads_posix.lo -am_libusb_1_0_la_OBJECTS = libusb_1_0_la-core.lo \ - libusb_1_0_la-descriptor.lo libusb_1_0_la-io.lo \ - libusb_1_0_la-sync.lo $(am__objects_5) $(am__objects_6) -libusb_1_0_la_OBJECTS = $(am_libusb_1_0_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -libusb_1_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libusb_1_0_la_CFLAGS) \ - $(CFLAGS) $(libusb_1_0_la_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libusb_1_0_la_SOURCES) -DIST_SOURCES = $(am__libusb_1_0_la_SOURCES_DIST) -HEADERS = $(hdr_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLDFLAGS = @LTLDFLAGS@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS_DARWIN = @OS_DARWIN@ -OS_LINUX = @OS_LINUX@ -OS_OPENBSD = @OS_OPENBSD@ -OS_WINDOWS = @OS_WINDOWS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PC_LIBS_PRIVATE = @PC_LIBS_PRIVATE@ -RANLIB = @RANLIB@ -RC = @RC@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -THREAD_CFLAGS = @THREAD_CFLAGS@ -VERSION = @VERSION@ -VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -lib_LTLIBRARIES = libusb-1.0.la -LINUX_USBFS_SRC = os/linux_usbfs.c -DARWIN_USB_SRC = os/darwin_usb.c -OPENBSD_USB_SRC = os/openbsd_usb.c -WINDOWS_USB_SRC = os/poll_windows.c os/windows_usb.c libusb-1.0.rc \ - libusb-1.0.def - -EXTRA_DIST = $(LINUX_USBFS_SRC) $(DARWIN_USB_SRC) $(OPENBSD_USB_SRC) \ - $(WINDOWS_USB_SRC) os/threads_posix.c os/threads_windows.c - -@OS_DARWIN_TRUE@OS_SRC = $(DARWIN_USB_SRC) -@OS_LINUX_TRUE@OS_SRC = $(LINUX_USBFS_SRC) -@OS_OPENBSD_TRUE@OS_SRC = $(OPENBSD_USB_SRC) -@OS_WINDOWS_TRUE@OS_SRC = $(WINDOWS_USB_SRC) -@OS_DARWIN_TRUE@AM_CFLAGS_EXT = -no-cpp-precomp -@THREADS_POSIX_FALSE@THREADS_SRC = os/threads_windows.h os/threads_windows.c -@THREADS_POSIX_TRUE@THREADS_SRC = os/threads_posix.h os/threads_posix.c -libusb_1_0_la_CFLAGS = $(VISIBILITY_CFLAGS) $(AM_CFLAGS) $(THREAD_CFLAGS) \ - -DLIBUSB_DESCRIBE=\"`git --git-dir "$(top_srcdir)/.git" describe --tags 2>/dev/null`\" - -libusb_1_0_la_LDFLAGS = $(LTLDFLAGS) -libusb_1_0_la_SOURCES = libusbi.h core.c descriptor.c io.c sync.c $(OS_SRC) \ - os/linux_usbfs.h os/darwin_usb.h os/windows_usb.h \ - $(THREADS_SRC) \ - os/poll_posix.h os/poll_windows.h - -hdrdir = $(includedir)/libusb-1.0 -hdr_HEADERS = libusb.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj .rc -$(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 ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libusb/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libusb/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 -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - 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 -libusb-1.0.la: $(libusb_1_0_la_OBJECTS) $(libusb_1_0_la_DEPENDENCIES) - $(AM_V_CCLD)$(libusb_1_0_la_LINK) -rpath $(libdir) $(libusb_1_0_la_OBJECTS) $(libusb_1_0_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-darwin_usb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-descriptor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-io.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-linux_usbfs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-openbsd_usb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-poll_windows.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-sync.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-threads_posix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-threads_windows.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-windows_usb.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -libusb_1_0_la-core.lo: core.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-core.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-core.Tpo -c -o libusb_1_0_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-core.Tpo $(DEPDIR)/libusb_1_0_la-core.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='core.c' object='libusb_1_0_la-core.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c - -libusb_1_0_la-descriptor.lo: descriptor.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-descriptor.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-descriptor.Tpo -c -o libusb_1_0_la-descriptor.lo `test -f 'descriptor.c' || echo '$(srcdir)/'`descriptor.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-descriptor.Tpo $(DEPDIR)/libusb_1_0_la-descriptor.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='descriptor.c' object='libusb_1_0_la-descriptor.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-descriptor.lo `test -f 'descriptor.c' || echo '$(srcdir)/'`descriptor.c - -libusb_1_0_la-io.lo: io.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-io.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-io.Tpo -c -o libusb_1_0_la-io.lo `test -f 'io.c' || echo '$(srcdir)/'`io.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-io.Tpo $(DEPDIR)/libusb_1_0_la-io.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='io.c' object='libusb_1_0_la-io.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-io.lo `test -f 'io.c' || echo '$(srcdir)/'`io.c - -libusb_1_0_la-sync.lo: sync.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-sync.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-sync.Tpo -c -o libusb_1_0_la-sync.lo `test -f 'sync.c' || echo '$(srcdir)/'`sync.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-sync.Tpo $(DEPDIR)/libusb_1_0_la-sync.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sync.c' object='libusb_1_0_la-sync.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-sync.lo `test -f 'sync.c' || echo '$(srcdir)/'`sync.c - -libusb_1_0_la-darwin_usb.lo: os/darwin_usb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-darwin_usb.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-darwin_usb.Tpo -c -o libusb_1_0_la-darwin_usb.lo `test -f 'os/darwin_usb.c' || echo '$(srcdir)/'`os/darwin_usb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-darwin_usb.Tpo $(DEPDIR)/libusb_1_0_la-darwin_usb.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/darwin_usb.c' object='libusb_1_0_la-darwin_usb.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-darwin_usb.lo `test -f 'os/darwin_usb.c' || echo '$(srcdir)/'`os/darwin_usb.c - -libusb_1_0_la-linux_usbfs.lo: os/linux_usbfs.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-linux_usbfs.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-linux_usbfs.Tpo -c -o libusb_1_0_la-linux_usbfs.lo `test -f 'os/linux_usbfs.c' || echo '$(srcdir)/'`os/linux_usbfs.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-linux_usbfs.Tpo $(DEPDIR)/libusb_1_0_la-linux_usbfs.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/linux_usbfs.c' object='libusb_1_0_la-linux_usbfs.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-linux_usbfs.lo `test -f 'os/linux_usbfs.c' || echo '$(srcdir)/'`os/linux_usbfs.c - -libusb_1_0_la-openbsd_usb.lo: os/openbsd_usb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-openbsd_usb.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-openbsd_usb.Tpo -c -o libusb_1_0_la-openbsd_usb.lo `test -f 'os/openbsd_usb.c' || echo '$(srcdir)/'`os/openbsd_usb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-openbsd_usb.Tpo $(DEPDIR)/libusb_1_0_la-openbsd_usb.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/openbsd_usb.c' object='libusb_1_0_la-openbsd_usb.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-openbsd_usb.lo `test -f 'os/openbsd_usb.c' || echo '$(srcdir)/'`os/openbsd_usb.c - -libusb_1_0_la-poll_windows.lo: os/poll_windows.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-poll_windows.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-poll_windows.Tpo -c -o libusb_1_0_la-poll_windows.lo `test -f 'os/poll_windows.c' || echo '$(srcdir)/'`os/poll_windows.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-poll_windows.Tpo $(DEPDIR)/libusb_1_0_la-poll_windows.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/poll_windows.c' object='libusb_1_0_la-poll_windows.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-poll_windows.lo `test -f 'os/poll_windows.c' || echo '$(srcdir)/'`os/poll_windows.c - -libusb_1_0_la-windows_usb.lo: os/windows_usb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-windows_usb.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-windows_usb.Tpo -c -o libusb_1_0_la-windows_usb.lo `test -f 'os/windows_usb.c' || echo '$(srcdir)/'`os/windows_usb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-windows_usb.Tpo $(DEPDIR)/libusb_1_0_la-windows_usb.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/windows_usb.c' object='libusb_1_0_la-windows_usb.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-windows_usb.lo `test -f 'os/windows_usb.c' || echo '$(srcdir)/'`os/windows_usb.c - -libusb_1_0_la-threads_windows.lo: os/threads_windows.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-threads_windows.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-threads_windows.Tpo -c -o libusb_1_0_la-threads_windows.lo `test -f 'os/threads_windows.c' || echo '$(srcdir)/'`os/threads_windows.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-threads_windows.Tpo $(DEPDIR)/libusb_1_0_la-threads_windows.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/threads_windows.c' object='libusb_1_0_la-threads_windows.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-threads_windows.lo `test -f 'os/threads_windows.c' || echo '$(srcdir)/'`os/threads_windows.c - -libusb_1_0_la-threads_posix.lo: os/threads_posix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-threads_posix.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-threads_posix.Tpo -c -o libusb_1_0_la-threads_posix.lo `test -f 'os/threads_posix.c' || echo '$(srcdir)/'`os/threads_posix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-threads_posix.Tpo $(DEPDIR)/libusb_1_0_la-threads_posix.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/threads_posix.c' object='libusb_1_0_la-threads_posix.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-threads_posix.lo `test -f 'os/threads_posix.c' || echo '$(srcdir)/'`os/threads_posix.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-hdrHEADERS: $(hdr_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(hdrdir)" || $(MKDIR_P) "$(DESTDIR)$(hdrdir)" - @list='$(hdr_HEADERS)'; test -n "$(hdrdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(hdrdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(hdrdir)" || exit $$?; \ - done - -uninstall-hdrHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(hdr_HEADERS)'; test -n "$(hdrdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(hdrdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(hdrdir)" && rm -f $$files - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__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)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(hdrdir)"; 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) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-hdrHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-hdrHEADERS uninstall-libLTLIBRARIES - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-hdrHEADERS \ - install-html install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-hdrHEADERS \ - uninstall-libLTLIBRARIES - - -@OS_WINDOWS_TRUE@.rc.lo: -@OS_WINDOWS_TRUE@ $(AM_V_GEN)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --tag=RC --mode=compile $(RC) $(RCFLAGS) -i $< -o $@ - -@OS_WINDOWS_TRUE@libusb-1.0.rc: version.h - -# 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/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/core.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/core.c deleted file mode 100644 index 767dcbf..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/core.c +++ /dev/null @@ -1,1875 +0,0 @@ -/* - * Core functions for libusb - * Copyright (C) 2007-2008 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include -#include -#include - -#ifdef HAVE_SYS_TIME_H -#include -#endif - -#include "libusbi.h" - -#if defined(OS_LINUX) -const struct usbi_os_backend * const usbi_backend = &linux_usbfs_backend; -#elif defined(OS_DARWIN) -const struct usbi_os_backend * const usbi_backend = &darwin_backend; -#elif defined(OS_OPENBSD) -const struct usbi_os_backend * const usbi_backend = &openbsd_backend; -#elif defined(OS_WINDOWS) -const struct usbi_os_backend * const usbi_backend = &windows_backend; -#else -#error "Unsupported OS" -#endif - -const struct libusb_version libusb_version_internal = { - LIBUSB_MAJOR, LIBUSB_MINOR, LIBUSB_MICRO, LIBUSB_NANO, LIBUSB_RC, - LIBUSB_DESCRIBE -}; - -struct libusb_context *usbi_default_context = NULL; -static int default_context_refcnt = 0; -static usbi_mutex_static_t default_context_lock = USBI_MUTEX_INITIALIZER; - -/** - * \mainpage libusb-1.0 API Reference - * - * \section intro Introduction - * - * libusb is an open source library that allows you to communicate with USB - * devices from userspace. For more info, see the - * libusb homepage. - * - * This documentation is aimed at application developers wishing to - * communicate with USB peripherals from their own software. After reviewing - * this documentation, feedback and questions can be sent to the - * libusb-devel mailing - * list. - * - * This documentation assumes knowledge of how to operate USB devices from - * a software standpoint (descriptors, configurations, interfaces, endpoints, - * control/bulk/interrupt/isochronous transfers, etc). Full information - * can be found in the USB 2.0 - * Specification which is available for free download. You can probably - * find less verbose introductions by searching the web. - * - * \section features Library features - * - * - All transfer types supported (control/bulk/interrupt/isochronous) - * - 2 transfer interfaces: - * -# Synchronous (simple) - * -# Asynchronous (more complicated, but more powerful) - * - Thread safe (although the asynchronous interface means that you - * usually won't need to thread) - * - Lightweight with lean API - * - Compatible with libusb-0.1 through the libusb-compat-0.1 translation layer - * - * \section gettingstarted Getting Started - * - * To begin reading the API documentation, start with the Modules page which - * links to the different categories of libusb's functionality. - * - * One decision you will have to make is whether to use the synchronous - * or the asynchronous data transfer interface. The \ref io documentation - * provides some insight into this topic. - * - * Some example programs can be found in the libusb source distribution under - * the "examples" subdirectory. The libusb homepage includes a list of - * real-life project examples which use libusb. - * - * \section errorhandling Error handling - * - * libusb functions typically return 0 on success or a negative error code - * on failure. These negative error codes relate to LIBUSB_ERROR constants - * which are listed on the \ref misc "miscellaneous" documentation page. - * - * \section msglog Debug message logging - * - * libusb does not log any messages by default. Your application is therefore - * free to close stdout/stderr and those descriptors may be reused without - * worry. - * - * The libusb_set_debug() function can be used to enable stdout/stderr logging - * of certain messages. Under standard configuration, libusb doesn't really - * log much at all, so you are advised to use this function to enable all - * error/warning/informational messages. It will help you debug problems with - * your software. - * - * The logged messages are unstructured. There is no one-to-one correspondence - * between messages being logged and success or failure return codes from - * libusb functions. There is no format to the messages, so you should not - * try to capture or parse them. They are not and will not be localized. - * These messages are not suitable for being passed to your application user; - * instead, you should interpret the error codes returned from libusb functions - * and provide appropriate notification to the user. The messages are simply - * there to aid you as a programmer, and if you're confused because you're - * getting a strange error code from a libusb function, enabling message - * logging may give you a suitable explanation. - * - * The LIBUSB_DEBUG environment variable can be used to enable message logging - * at run-time. This environment variable should be set to a number, which is - * interpreted the same as the libusb_set_debug() parameter. When this - * environment variable is set, the message logging verbosity level is fixed - * and libusb_set_debug() effectively does nothing. - * - * libusb can be compiled without any logging functions, useful for embedded - * systems. In this case, libusb_set_debug() and the LIBUSB_DEBUG environment - * variable have no effects. - * - * libusb can also be compiled with verbose debugging messages. When the - * library is compiled in this way, all messages of all verbosities are always - * logged. libusb_set_debug() and the LIBUSB_DEBUG environment variable have - * no effects. - * - * \section remarks Other remarks - * - * libusb does have imperfections. The \ref caveats "caveats" page attempts - * to document these. - */ - -/** - * \page caveats Caveats - * - * \section devresets Device resets - * - * The libusb_reset_device() function allows you to reset a device. If your - * program has to call such a function, it should obviously be aware that - * the reset will cause device state to change (e.g. register values may be - * reset). - * - * The problem is that any other program could reset the device your program - * is working with, at any time. libusb does not offer a mechanism to inform - * you when this has happened, so if someone else resets your device it will - * not be clear to your own program why the device state has changed. - * - * Ultimately, this is a limitation of writing drivers in userspace. - * Separation from the USB stack in the underlying kernel makes it difficult - * for the operating system to deliver such notifications to your program. - * The Linux kernel USB stack allows such reset notifications to be delivered - * to in-kernel USB drivers, but it is not clear how such notifications could - * be delivered to second-class drivers that live in userspace. - * - * \section blockonly Blocking-only functionality - * - * The functionality listed below is only available through synchronous, - * blocking functions. There are no asynchronous/non-blocking alternatives, - * and no clear ways of implementing these. - * - * - Configuration activation (libusb_set_configuration()) - * - Interface/alternate setting activation (libusb_set_interface_alt_setting()) - * - Releasing of interfaces (libusb_release_interface()) - * - Clearing of halt/stall condition (libusb_clear_halt()) - * - Device resets (libusb_reset_device()) - * - * \section nohotplug No hotplugging - * - * libusb-1.0 lacks functionality for providing notifications of when devices - * are added or removed. This functionality is planned to be implemented - * for libusb-1.1. - * - * That said, there is basic disconnection handling for open device handles: - * - If there are ongoing transfers, libusb's handle_events loop will detect - * disconnections and complete ongoing transfers with the - * LIBUSB_TRANSFER_NO_DEVICE status code. - * - Many functions such as libusb_set_configuration() return the special - * LIBUSB_ERROR_NO_DEVICE error code when the device has been disconnected. - * - * \section configsel Configuration selection and handling - * - * When libusb presents a device handle to an application, there is a chance - * that the corresponding device may be in unconfigured state. For devices - * with multiple configurations, there is also a chance that the configuration - * currently selected is not the one that the application wants to use. - * - * The obvious solution is to add a call to libusb_set_configuration() early - * on during your device initialization routines, but there are caveats to - * be aware of: - * -# If the device is already in the desired configuration, calling - * libusb_set_configuration() using the same configuration value will cause - * a lightweight device reset. This may not be desirable behaviour. - * -# libusb will be unable to change configuration if the device is in - * another configuration and other programs or drivers have claimed - * interfaces under that configuration. - * -# In the case where the desired configuration is already active, libusb - * may not even be able to perform a lightweight device reset. For example, - * take my USB keyboard with fingerprint reader: I'm interested in driving - * the fingerprint reader interface through libusb, but the kernel's - * USB-HID driver will almost always have claimed the keyboard interface. - * Because the kernel has claimed an interface, it is not even possible to - * perform the lightweight device reset, so libusb_set_configuration() will - * fail. (Luckily the device in question only has a single configuration.) - * - * One solution to some of the above problems is to consider the currently - * active configuration. If the configuration we want is already active, then - * we don't have to select any configuration: -\code -cfg = libusb_get_configuration(dev); -if (cfg != desired) - libusb_set_configuration(dev, desired); -\endcode - * - * This is probably suitable for most scenarios, but is inherently racy: - * another application or driver may change the selected configuration - * after the libusb_get_configuration() call. - * - * Even in cases where libusb_set_configuration() succeeds, consider that other - * applications or drivers may change configuration after your application - * calls libusb_set_configuration(). - * - * One possible way to lock your device into a specific configuration is as - * follows: - * -# Set the desired configuration (or use the logic above to realise that - * it is already in the desired configuration) - * -# Claim the interface that you wish to use - * -# Check that the currently active configuration is the one that you want - * to use. - * - * The above method works because once an interface is claimed, no application - * or driver is able to select another configuration. - * - * \section earlycomp Early transfer completion - * - * NOTE: This section is currently Linux-centric. I am not sure if any of these - * considerations apply to Darwin or other platforms. - * - * When a transfer completes early (i.e. when less data is received/sent in - * any one packet than the transfer buffer allows for) then libusb is designed - * to terminate the transfer immediately, not transferring or receiving any - * more data unless other transfers have been queued by the user. - * - * On legacy platforms, libusb is unable to do this in all situations. After - * the incomplete packet occurs, "surplus" data may be transferred. Prior to - * libusb v1.0.2, this information was lost (and for device-to-host transfers, - * the corresponding data was discarded). As of libusb v1.0.3, this information - * is kept (the data length of the transfer is updated) and, for device-to-host - * transfers, any surplus data was added to the buffer. Still, this is not - * a nice solution because it loses the information about the end of the short - * packet, and the user probably wanted that surplus data to arrive in the next - * logical transfer. - * - * A previous workaround was to only ever submit transfers of size 16kb or - * less. - * - * As of libusb v1.0.4 and Linux v2.6.32, this is fixed. A technical - * explanation of this issue follows. - * - * When you ask libusb to submit a bulk transfer larger than 16kb in size, - * libusb breaks it up into a number of smaller subtransfers. This is because - * the usbfs kernel interface only accepts transfers of up to 16kb in size. - * The subtransfers are submitted all at once so that the kernel can queue - * them at the hardware level, therefore maximizing bus throughput. - * - * On legacy platforms, this caused problems when transfers completed early. - * Upon this event, the kernel would terminate all further packets in that - * subtransfer (but not any following ones). libusb would note this event and - * immediately cancel any following subtransfers that had been queued, - * but often libusb was not fast enough, and the following subtransfers had - * started before libusb got around to cancelling them. - * - * Thanks to an API extension to usbfs, this is fixed with recent kernel and - * libusb releases. The solution was to allow libusb to communicate to the - * kernel where boundaries occur between logical libusb-level transfers. When - * a short transfer (or other error) occurs, the kernel will cancel all the - * subtransfers until the boundary without allowing those transfers to start. - * - * \section zlp Zero length packets - * - * - libusb is able to send a packet of zero length to an endpoint simply by - * submitting a transfer of zero length. On Linux, this did not work with - * libusb versions prior to 1.0.3 and kernel versions prior to 2.6.31. - * - The \ref libusb_transfer_flags::LIBUSB_TRANSFER_ADD_ZERO_PACKET - * "LIBUSB_TRANSFER_ADD_ZERO_PACKET" flag is currently only supported on Linux. - */ - -/** - * \page contexts Contexts - * - * It is possible that libusb may be used simultaneously from two independent - * libraries linked into the same executable. For example, if your application - * has a plugin-like system which allows the user to dynamically load a range - * of modules into your program, it is feasible that two independently - * developed modules may both use libusb. - * - * libusb is written to allow for these multiple user scenarios. The two - * "instances" of libusb will not interfere: libusb_set_debug() calls - * from one user will not affect the same settings for other users, other - * users can continue using libusb after one of them calls libusb_exit(), etc. - * - * This is made possible through libusb's context concept. When you - * call libusb_init(), you are (optionally) given a context. You can then pass - * this context pointer back into future libusb functions. - * - * In order to keep things simple for more simplistic applications, it is - * legal to pass NULL to all functions requiring a context pointer (as long as - * you're sure no other code will attempt to use libusb from the same process). - * When you pass NULL, the default context will be used. The default context - * is created the first time a process calls libusb_init() when no other - * context is alive. Contexts are destroyed during libusb_exit(). - * - * The default context is reference-counted and can be shared. That means that - * if libusb_init(NULL) is called twice within the same process, the two - * users end up sharing the same context. The deinitialization and freeing of - * the default context will only happen when the last user calls libusb_exit(). - * In other words, the default context is created and initialized when its - * reference count goes from 0 to 1, and is deinitialized and destroyed when - * its reference count goes from 1 to 0. - * - * You may be wondering why only a subset of libusb functions require a - * context pointer in their function definition. Internally, libusb stores - * context pointers in other objects (e.g. libusb_device instances) and hence - * can infer the context from those objects. - */ - -/** - * @defgroup lib Library initialization/deinitialization - * This page details how to initialize and deinitialize libusb. Initialization - * must be performed before using any libusb functionality, and similarly you - * must not call any libusb functions after deinitialization. - */ - -/** - * @defgroup dev Device handling and enumeration - * The functionality documented below is designed to help with the following - * operations: - * - Enumerating the USB devices currently attached to the system - * - Choosing a device to operate from your software - * - Opening and closing the chosen device - * - * \section nutshell In a nutshell... - * - * The description below really makes things sound more complicated than they - * actually are. The following sequence of function calls will be suitable - * for almost all scenarios and does not require you to have such a deep - * understanding of the resource management issues: - * \code -// discover devices -libusb_device **list; -libusb_device *found = NULL; -ssize_t cnt = libusb_get_device_list(NULL, &list); -ssize_t i = 0; -int err = 0; -if (cnt < 0) - error(); - -for (i = 0; i < cnt; i++) { - libusb_device *device = list[i]; - if (is_interesting(device)) { - found = device; - break; - } -} - -if (found) { - libusb_device_handle *handle; - - err = libusb_open(found, &handle); - if (err) - error(); - // etc -} - -libusb_free_device_list(list, 1); -\endcode - * - * The two important points: - * - You asked libusb_free_device_list() to unreference the devices (2nd - * parameter) - * - You opened the device before freeing the list and unreferencing the - * devices - * - * If you ended up with a handle, you can now proceed to perform I/O on the - * device. - * - * \section devshandles Devices and device handles - * libusb has a concept of a USB device, represented by the - * \ref libusb_device opaque type. A device represents a USB device that - * is currently or was previously connected to the system. Using a reference - * to a device, you can determine certain information about the device (e.g. - * you can read the descriptor data). - * - * The libusb_get_device_list() function can be used to obtain a list of - * devices currently connected to the system. This is known as device - * discovery. - * - * Just because you have a reference to a device does not mean it is - * necessarily usable. The device may have been unplugged, you may not have - * permission to operate such device, or another program or driver may be - * using the device. - * - * When you've found a device that you'd like to operate, you must ask - * libusb to open the device using the libusb_open() function. Assuming - * success, libusb then returns you a device handle - * (a \ref libusb_device_handle pointer). All "real" I/O operations then - * operate on the handle rather than the original device pointer. - * - * \section devref Device discovery and reference counting - * - * Device discovery (i.e. calling libusb_get_device_list()) returns a - * freshly-allocated list of devices. The list itself must be freed when - * you are done with it. libusb also needs to know when it is OK to free - * the contents of the list - the devices themselves. - * - * To handle these issues, libusb provides you with two separate items: - * - A function to free the list itself - * - A reference counting system for the devices inside - * - * New devices presented by the libusb_get_device_list() function all have a - * reference count of 1. You can increase and decrease reference count using - * libusb_ref_device() and libusb_unref_device(). A device is destroyed when - * its reference count reaches 0. - * - * With the above information in mind, the process of opening a device can - * be viewed as follows: - * -# Discover devices using libusb_get_device_list(). - * -# Choose the device that you want to operate, and call libusb_open(). - * -# Unref all devices in the discovered device list. - * -# Free the discovered device list. - * - * The order is important - you must not unreference the device before - * attempting to open it, because unreferencing it may destroy the device. - * - * For convenience, the libusb_free_device_list() function includes a - * parameter to optionally unreference all the devices in the list before - * freeing the list itself. This combines steps 3 and 4 above. - * - * As an implementation detail, libusb_open() actually adds a reference to - * the device in question. This is because the device remains available - * through the handle via libusb_get_device(). The reference is deleted during - * libusb_close(). - */ - -/** @defgroup misc Miscellaneous */ - -/* we traverse usbfs without knowing how many devices we are going to find. - * so we create this discovered_devs model which is similar to a linked-list - * which grows when required. it can be freed once discovery has completed, - * eliminating the need for a list node in the libusb_device structure - * itself. */ -#define DISCOVERED_DEVICES_SIZE_STEP 8 - -static struct discovered_devs *discovered_devs_alloc(void) -{ - struct discovered_devs *ret = - malloc(sizeof(*ret) + (sizeof(void *) * DISCOVERED_DEVICES_SIZE_STEP)); - - if (ret) { - ret->len = 0; - ret->capacity = DISCOVERED_DEVICES_SIZE_STEP; - } - return ret; -} - -/* append a device to the discovered devices collection. may realloc itself, - * returning new discdevs. returns NULL on realloc failure. */ -struct discovered_devs *discovered_devs_append( - struct discovered_devs *discdevs, struct libusb_device *dev) -{ - size_t len = discdevs->len; - size_t capacity; - - /* if there is space, just append the device */ - if (len < discdevs->capacity) { - discdevs->devices[len] = libusb_ref_device(dev); - discdevs->len++; - return discdevs; - } - - /* exceeded capacity, need to grow */ - usbi_dbg("need to increase capacity"); - capacity = discdevs->capacity + DISCOVERED_DEVICES_SIZE_STEP; - discdevs = realloc(discdevs, - sizeof(*discdevs) + (sizeof(void *) * capacity)); - if (discdevs) { - discdevs->capacity = capacity; - discdevs->devices[len] = libusb_ref_device(dev); - discdevs->len++; - } - - return discdevs; -} - -static void discovered_devs_free(struct discovered_devs *discdevs) -{ - size_t i; - - for (i = 0; i < discdevs->len; i++) - libusb_unref_device(discdevs->devices[i]); - - free(discdevs); -} - -/* Allocate a new device with a specific session ID. The returned device has - * a reference count of 1. */ -struct libusb_device *usbi_alloc_device(struct libusb_context *ctx, - unsigned long session_id) -{ - size_t priv_size = usbi_backend->device_priv_size; - struct libusb_device *dev = calloc(1, sizeof(*dev) + priv_size); - int r; - - if (!dev) - return NULL; - - r = usbi_mutex_init(&dev->lock, NULL); - if (r) { - free(dev); - return NULL; - } - - dev->ctx = ctx; - dev->refcnt = 1; - dev->session_data = session_id; - dev->speed = LIBUSB_SPEED_UNKNOWN; - memset(&dev->os_priv, 0, priv_size); - - usbi_mutex_lock(&ctx->usb_devs_lock); - list_add(&dev->list, &ctx->usb_devs); - usbi_mutex_unlock(&ctx->usb_devs_lock); - return dev; -} - -/* Perform some final sanity checks on a newly discovered device. If this - * function fails (negative return code), the device should not be added - * to the discovered device list. */ -int usbi_sanitize_device(struct libusb_device *dev) -{ - int r; - unsigned char raw_desc[DEVICE_DESC_LENGTH]; - uint8_t num_configurations; - int host_endian; - - r = usbi_backend->get_device_descriptor(dev, raw_desc, &host_endian); - if (r < 0) - return r; - - num_configurations = raw_desc[DEVICE_DESC_LENGTH - 1]; - if (num_configurations > USB_MAXCONFIG) { - usbi_err(DEVICE_CTX(dev), "too many configurations"); - return LIBUSB_ERROR_IO; - } else if (0 == num_configurations) - usbi_dbg("zero configurations, maybe an unauthorized device"); - - dev->num_configurations = num_configurations; - return 0; -} - -/* Examine libusb's internal list of known devices, looking for one with - * a specific session ID. Returns the matching device if it was found, and - * NULL otherwise. */ -struct libusb_device *usbi_get_device_by_session_id(struct libusb_context *ctx, - unsigned long session_id) -{ - struct libusb_device *dev; - struct libusb_device *ret = NULL; - - usbi_mutex_lock(&ctx->usb_devs_lock); - list_for_each_entry(dev, &ctx->usb_devs, list, struct libusb_device) - if (dev->session_data == session_id) { - ret = dev; - break; - } - usbi_mutex_unlock(&ctx->usb_devs_lock); - - return ret; -} - -/** @ingroup dev - * Returns a list of USB devices currently attached to the system. This is - * your entry point into finding a USB device to operate. - * - * You are expected to unreference all the devices when you are done with - * them, and then free the list with libusb_free_device_list(). Note that - * libusb_free_device_list() can unref all the devices for you. Be careful - * not to unreference a device you are about to open until after you have - * opened it. - * - * This return value of this function indicates the number of devices in - * the resultant list. The list is actually one element larger, as it is - * NULL-terminated. - * - * \param ctx the context to operate on, or NULL for the default context - * \param list output location for a list of devices. Must be later freed with - * libusb_free_device_list(). - * \returns The number of devices in the outputted list, or any - * \ref libusb_error according to errors encountered by the backend. - */ -ssize_t API_EXPORTED libusb_get_device_list(libusb_context *ctx, - libusb_device ***list) -{ - struct discovered_devs *discdevs = discovered_devs_alloc(); - struct libusb_device **ret; - int r = 0; - ssize_t i, len; - USBI_GET_CONTEXT(ctx); - usbi_dbg(""); - - if (!discdevs) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_backend->get_device_list(ctx, &discdevs); - if (r < 0) { - len = r; - goto out; - } - - /* convert discovered_devs into a list */ - len = discdevs->len; - ret = malloc(sizeof(void *) * (len + 1)); - if (!ret) { - len = LIBUSB_ERROR_NO_MEM; - goto out; - } - - ret[len] = NULL; - for (i = 0; i < len; i++) { - struct libusb_device *dev = discdevs->devices[i]; - ret[i] = libusb_ref_device(dev); - } - *list = ret; - -out: - discovered_devs_free(discdevs); - return len; -} - -/** \ingroup dev - * Frees a list of devices previously discovered using - * libusb_get_device_list(). If the unref_devices parameter is set, the - * reference count of each device in the list is decremented by 1. - * \param list the list to free - * \param unref_devices whether to unref the devices in the list - */ -void API_EXPORTED libusb_free_device_list(libusb_device **list, - int unref_devices) -{ - if (!list) - return; - - if (unref_devices) { - int i = 0; - struct libusb_device *dev; - - while ((dev = list[i++]) != NULL) - libusb_unref_device(dev); - } - free(list); -} - -/** \ingroup dev - * Get the number of the bus that a device is connected to. - * \param dev a device - * \returns the bus number - */ -uint8_t API_EXPORTED libusb_get_bus_number(libusb_device *dev) -{ - return dev->bus_number; -} - -/** \ingroup dev - * Get the address of the device on the bus it is connected to. - * \param dev a device - * \returns the device address - */ -uint8_t API_EXPORTED libusb_get_device_address(libusb_device *dev) -{ - return dev->device_address; -} - -/** \ingroup dev - * Get the negotiated connection speed for a device. - * \param dev a device - * \returns a \ref libusb_speed code, where LIBUSB_SPEED_UNKNOWN means that - * the OS doesn't know or doesn't support returning the negotiated speed. - */ -int API_EXPORTED libusb_get_device_speed(libusb_device *dev) -{ - return dev->speed; -} - -static const struct libusb_endpoint_descriptor *find_endpoint( - struct libusb_config_descriptor *config, unsigned char endpoint) -{ - int iface_idx; - for (iface_idx = 0; iface_idx < config->bNumInterfaces; iface_idx++) { - const struct libusb_interface *iface = &config->interface[iface_idx]; - int altsetting_idx; - - for (altsetting_idx = 0; altsetting_idx < iface->num_altsetting; - altsetting_idx++) { - const struct libusb_interface_descriptor *altsetting - = &iface->altsetting[altsetting_idx]; - int ep_idx; - - for (ep_idx = 0; ep_idx < altsetting->bNumEndpoints; ep_idx++) { - const struct libusb_endpoint_descriptor *ep = - &altsetting->endpoint[ep_idx]; - if (ep->bEndpointAddress == endpoint) - return ep; - } - } - } - return NULL; -} - -/** \ingroup dev - * Convenience function to retrieve the wMaxPacketSize value for a particular - * endpoint in the active device configuration. - * - * This function was originally intended to be of assistance when setting up - * isochronous transfers, but a design mistake resulted in this function - * instead. It simply returns the wMaxPacketSize value without considering - * its contents. If you're dealing with isochronous transfers, you probably - * want libusb_get_max_iso_packet_size() instead. - * - * \param dev a device - * \param endpoint address of the endpoint in question - * \returns the wMaxPacketSize value - * \returns LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist - * \returns LIBUSB_ERROR_OTHER on other failure - */ -int API_EXPORTED libusb_get_max_packet_size(libusb_device *dev, - unsigned char endpoint) -{ - struct libusb_config_descriptor *config; - const struct libusb_endpoint_descriptor *ep; - int r; - - r = libusb_get_active_config_descriptor(dev, &config); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), - "could not retrieve active config descriptor"); - return LIBUSB_ERROR_OTHER; - } - - ep = find_endpoint(config, endpoint); - if (!ep) - return LIBUSB_ERROR_NOT_FOUND; - - r = ep->wMaxPacketSize; - libusb_free_config_descriptor(config); - return r; -} - -/** \ingroup dev - * Calculate the maximum packet size which a specific endpoint is capable is - * sending or receiving in the duration of 1 microframe - * - * Only the active configution is examined. The calculation is based on the - * wMaxPacketSize field in the endpoint descriptor as described in section - * 9.6.6 in the USB 2.0 specifications. - * - * If acting on an isochronous or interrupt endpoint, this function will - * multiply the value found in bits 0:10 by the number of transactions per - * microframe (determined by bits 11:12). Otherwise, this function just - * returns the numeric value found in bits 0:10. - * - * This function is useful for setting up isochronous transfers, for example - * you might pass the return value from this function to - * libusb_set_iso_packet_lengths() in order to set the length field of every - * isochronous packet in a transfer. - * - * Since v1.0.3. - * - * \param dev a device - * \param endpoint address of the endpoint in question - * \returns the maximum packet size which can be sent/received on this endpoint - * \returns LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist - * \returns LIBUSB_ERROR_OTHER on other failure - */ -int API_EXPORTED libusb_get_max_iso_packet_size(libusb_device *dev, - unsigned char endpoint) -{ - struct libusb_config_descriptor *config; - const struct libusb_endpoint_descriptor *ep; - enum libusb_transfer_type ep_type; - uint16_t val; - int r; - - r = libusb_get_active_config_descriptor(dev, &config); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), - "could not retrieve active config descriptor"); - return LIBUSB_ERROR_OTHER; - } - - ep = find_endpoint(config, endpoint); - if (!ep) - return LIBUSB_ERROR_NOT_FOUND; - - val = ep->wMaxPacketSize; - ep_type = ep->bmAttributes & 0x3; - libusb_free_config_descriptor(config); - - r = val & 0x07ff; - if (ep_type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS - || ep_type == LIBUSB_TRANSFER_TYPE_INTERRUPT) - r *= (1 + ((val >> 11) & 3)); - return r; -} - -/** \ingroup dev - * Increment the reference count of a device. - * \param dev the device to reference - * \returns the same device - */ -DEFAULT_VISIBILITY -libusb_device * LIBUSB_CALL libusb_ref_device(libusb_device *dev) -{ - usbi_mutex_lock(&dev->lock); - dev->refcnt++; - usbi_mutex_unlock(&dev->lock); - return dev; -} - -/** \ingroup dev - * Decrement the reference count of a device. If the decrement operation - * causes the reference count to reach zero, the device shall be destroyed. - * \param dev the device to unreference - */ -void API_EXPORTED libusb_unref_device(libusb_device *dev) -{ - int refcnt; - - if (!dev) - return; - - usbi_mutex_lock(&dev->lock); - refcnt = --dev->refcnt; - usbi_mutex_unlock(&dev->lock); - - if (refcnt == 0) { - usbi_dbg("destroy device %d.%d", dev->bus_number, dev->device_address); - - if (usbi_backend->destroy_device) - usbi_backend->destroy_device(dev); - - usbi_mutex_lock(&dev->ctx->usb_devs_lock); - list_del(&dev->list); - usbi_mutex_unlock(&dev->ctx->usb_devs_lock); - - usbi_mutex_destroy(&dev->lock); - free(dev); - } -} - -/* - * Interrupt the iteration of the event handling thread, so that it picks - * up the new fd. - */ -void usbi_fd_notification(struct libusb_context *ctx) -{ - unsigned char dummy = 1; - ssize_t r; - - if (ctx == NULL) - return; - - /* record that we are messing with poll fds */ - usbi_mutex_lock(&ctx->pollfd_modify_lock); - ctx->pollfd_modify++; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - - /* write some data on control pipe to interrupt event handlers */ - r = usbi_write(ctx->ctrl_pipe[1], &dummy, sizeof(dummy)); - if (r <= 0) { - usbi_warn(ctx, "internal signalling write failed"); - usbi_mutex_lock(&ctx->pollfd_modify_lock); - ctx->pollfd_modify--; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - return; - } - - /* take event handling lock */ - libusb_lock_events(ctx); - - /* read the dummy data */ - r = usbi_read(ctx->ctrl_pipe[0], &dummy, sizeof(dummy)); - if (r <= 0) - usbi_warn(ctx, "internal signalling read failed"); - - /* we're done with modifying poll fds */ - usbi_mutex_lock(&ctx->pollfd_modify_lock); - ctx->pollfd_modify--; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - - /* Release event handling lock and wake up event waiters */ - libusb_unlock_events(ctx); -} - -/** \ingroup dev - * Open a device and obtain a device handle. A handle allows you to perform - * I/O on the device in question. - * - * Internally, this function adds a reference to the device and makes it - * available to you through libusb_get_device(). This reference is removed - * during libusb_close(). - * - * This is a non-blocking function; no requests are sent over the bus. - * - * \param dev the device to open - * \param handle output location for the returned device handle pointer. Only - * populated when the return code is 0. - * \returns 0 on success - * \returns LIBUSB_ERROR_NO_MEM on memory allocation failure - * \returns LIBUSB_ERROR_ACCESS if the user has insufficient permissions - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_open(libusb_device *dev, - libusb_device_handle **handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev); - struct libusb_device_handle *_handle; - size_t priv_size = usbi_backend->device_handle_priv_size; - int r; - usbi_dbg("open %d.%d", dev->bus_number, dev->device_address); - - _handle = malloc(sizeof(*_handle) + priv_size); - if (!_handle) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_mutex_init(&_handle->lock, NULL); - if (r) { - free(_handle); - return LIBUSB_ERROR_OTHER; - } - - _handle->dev = libusb_ref_device(dev); - _handle->claimed_interfaces = 0; - memset(&_handle->os_priv, 0, priv_size); - - r = usbi_backend->open(_handle); - if (r < 0) { - usbi_dbg("open %d.%d returns %d", dev->bus_number, dev->device_address, r); - libusb_unref_device(dev); - usbi_mutex_destroy(&_handle->lock); - free(_handle); - return r; - } - - usbi_mutex_lock(&ctx->open_devs_lock); - list_add(&_handle->list, &ctx->open_devs); - usbi_mutex_unlock(&ctx->open_devs_lock); - *handle = _handle; - - /* At this point, we want to interrupt any existing event handlers so - * that they realise the addition of the new device's poll fd. One - * example when this is desirable is if the user is running a separate - * dedicated libusb events handling thread, which is running with a long - * or infinite timeout. We want to interrupt that iteration of the loop, - * so that it picks up the new fd, and then continues. */ - usbi_fd_notification(ctx); - - return 0; -} - -/** \ingroup dev - * Convenience function for finding a device with a particular - * idVendor/idProduct combination. This function is intended - * for those scenarios where you are using libusb to knock up a quick test - * application - it allows you to avoid calling libusb_get_device_list() and - * worrying about traversing/freeing the list. - * - * This function has limitations and is hence not intended for use in real - * applications: if multiple devices have the same IDs it will only - * give you the first one, etc. - * - * \param ctx the context to operate on, or NULL for the default context - * \param vendor_id the idVendor value to search for - * \param product_id the idProduct value to search for - * \returns a handle for the first found device, or NULL on error or if the - * device could not be found. */ -DEFAULT_VISIBILITY -libusb_device_handle * LIBUSB_CALL libusb_open_device_with_vid_pid( - libusb_context *ctx, uint16_t vendor_id, uint16_t product_id) -{ - struct libusb_device **devs; - struct libusb_device *found = NULL; - struct libusb_device *dev; - struct libusb_device_handle *handle = NULL; - size_t i = 0; - int r; - - if (libusb_get_device_list(ctx, &devs) < 0) - return NULL; - - while ((dev = devs[i++]) != NULL) { - struct libusb_device_descriptor desc; - r = libusb_get_device_descriptor(dev, &desc); - if (r < 0) - goto out; - if (desc.idVendor == vendor_id && desc.idProduct == product_id) { - found = dev; - break; - } - } - - if (found) { - r = libusb_open(found, &handle); - if (r < 0) - handle = NULL; - } - -out: - libusb_free_device_list(devs, 1); - return handle; -} - -static void do_close(struct libusb_context *ctx, - struct libusb_device_handle *dev_handle) -{ - struct usbi_transfer *itransfer; - struct usbi_transfer *tmp; - - libusb_lock_events(ctx); - - /* remove any transfers in flight that are for this device */ - usbi_mutex_lock(&ctx->flying_transfers_lock); - - /* safe iteration because transfers may be being deleted */ - list_for_each_entry_safe(itransfer, tmp, &ctx->flying_transfers, list, struct usbi_transfer) { - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - if (transfer->dev_handle != dev_handle) - continue; - - if (!(itransfer->flags & USBI_TRANSFER_DEVICE_DISAPPEARED)) { - usbi_err(ctx, "Device handle closed while transfer was still being processed, but the device is still connected as far as we know"); - - if (itransfer->flags & USBI_TRANSFER_CANCELLING) - usbi_warn(ctx, "A cancellation for an in-flight transfer hasn't completed but closing the device handle"); - else - usbi_err(ctx, "A cancellation hasn't even been scheduled on the transfer for which the device is closing"); - } - - /* remove from the list of in-flight transfers and make sure - * we don't accidentally use the device handle in the future - * (or that such accesses will be easily caught and identified as a crash) - */ - usbi_mutex_lock(&itransfer->lock); - list_del(&itransfer->list); - transfer->dev_handle = NULL; - usbi_mutex_unlock(&itransfer->lock); - - /* it is up to the user to free up the actual transfer struct. this is - * just making sure that we don't attempt to process the transfer after - * the device handle is invalid - */ - usbi_dbg("Removed transfer %p from the in-flight list because device handle %p closed", - transfer, dev_handle); - } - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - libusb_unlock_events(ctx); - - usbi_mutex_lock(&ctx->open_devs_lock); - list_del(&dev_handle->list); - usbi_mutex_unlock(&ctx->open_devs_lock); - - usbi_backend->close(dev_handle); - libusb_unref_device(dev_handle->dev); - usbi_mutex_destroy(&dev_handle->lock); - free(dev_handle); -} - -/** \ingroup dev - * Close a device handle. Should be called on all open handles before your - * application exits. - * - * Internally, this function destroys the reference that was added by - * libusb_open() on the given device. - * - * This is a non-blocking function; no requests are sent over the bus. - * - * \param dev_handle the handle to close - */ -void API_EXPORTED libusb_close(libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx; - unsigned char dummy = 1; - ssize_t r; - - if (!dev_handle) - return; - usbi_dbg(""); - - ctx = HANDLE_CTX(dev_handle); - - /* Similarly to libusb_open(), we want to interrupt all event handlers - * at this point. More importantly, we want to perform the actual close of - * the device while holding the event handling lock (preventing any other - * thread from doing event handling) because we will be removing a file - * descriptor from the polling loop. */ - - /* record that we are messing with poll fds */ - usbi_mutex_lock(&ctx->pollfd_modify_lock); - ctx->pollfd_modify++; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - - /* write some data on control pipe to interrupt event handlers */ - r = usbi_write(ctx->ctrl_pipe[1], &dummy, sizeof(dummy)); - if (r <= 0) { - usbi_warn(ctx, "internal signalling write failed, closing anyway"); - do_close(ctx, dev_handle); - usbi_mutex_lock(&ctx->pollfd_modify_lock); - ctx->pollfd_modify--; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - return; - } - - /* take event handling lock */ - libusb_lock_events(ctx); - - /* read the dummy data */ - r = usbi_read(ctx->ctrl_pipe[0], &dummy, sizeof(dummy)); - if (r <= 0) - usbi_warn(ctx, "internal signalling read failed, closing anyway"); - - /* Close the device */ - do_close(ctx, dev_handle); - - /* we're done with modifying poll fds */ - usbi_mutex_lock(&ctx->pollfd_modify_lock); - ctx->pollfd_modify--; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - - /* Release event handling lock and wake up event waiters */ - libusb_unlock_events(ctx); -} - -/** \ingroup dev - * Get the underlying device for a handle. This function does not modify - * the reference count of the returned device, so do not feel compelled to - * unreference it when you are done. - * \param dev_handle a device handle - * \returns the underlying device - */ -DEFAULT_VISIBILITY -libusb_device * LIBUSB_CALL libusb_get_device(libusb_device_handle *dev_handle) -{ - return dev_handle->dev; -} - -/** \ingroup dev - * Determine the bConfigurationValue of the currently active configuration. - * - * You could formulate your own control request to obtain this information, - * but this function has the advantage that it may be able to retrieve the - * information from operating system caches (no I/O involved). - * - * If the OS does not cache this information, then this function will block - * while a control transfer is submitted to retrieve the information. - * - * This function will return a value of 0 in the config output - * parameter if the device is in unconfigured state. - * - * \param dev a device handle - * \param config output location for the bConfigurationValue of the active - * configuration (only valid for return code 0) - * \returns 0 on success - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_get_configuration(libusb_device_handle *dev, - int *config) -{ - int r = LIBUSB_ERROR_NOT_SUPPORTED; - - usbi_dbg(""); - if (usbi_backend->get_configuration) - r = usbi_backend->get_configuration(dev, config); - - if (r == LIBUSB_ERROR_NOT_SUPPORTED) { - uint8_t tmp = 0; - usbi_dbg("falling back to control message"); - r = libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN, - LIBUSB_REQUEST_GET_CONFIGURATION, 0, 0, &tmp, 1, 1000); - if (r == 0) { - usbi_err(HANDLE_CTX(dev), "zero bytes returned in ctrl transfer?"); - r = LIBUSB_ERROR_IO; - } else if (r == 1) { - r = 0; - *config = tmp; - } else { - usbi_dbg("control failed, error %d", r); - } - } - - if (r == 0) - usbi_dbg("active config %d", *config); - - return r; -} - -/** \ingroup dev - * Set the active configuration for a device. - * - * The operating system may or may not have already set an active - * configuration on the device. It is up to your application to ensure the - * correct configuration is selected before you attempt to claim interfaces - * and perform other operations. - * - * If you call this function on a device already configured with the selected - * configuration, then this function will act as a lightweight device reset: - * it will issue a SET_CONFIGURATION request using the current configuration, - * causing most USB-related device state to be reset (altsetting reset to zero, - * endpoint halts cleared, toggles reset). - * - * You cannot change/reset configuration if your application has claimed - * interfaces - you should free them with libusb_release_interface() first. - * You cannot change/reset configuration if other applications or drivers have - * claimed interfaces. - * - * A configuration value of -1 will put the device in unconfigured state. - * The USB specifications state that a configuration value of 0 does this, - * however buggy devices exist which actually have a configuration 0. - * - * You should always use this function rather than formulating your own - * SET_CONFIGURATION control request. This is because the underlying operating - * system needs to know when such changes happen. - * - * This is a blocking function. - * - * \param dev a device handle - * \param configuration the bConfigurationValue of the configuration you - * wish to activate, or -1 if you wish to put the device in unconfigured state - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the requested configuration does not exist - * \returns LIBUSB_ERROR_BUSY if interfaces are currently claimed - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_set_configuration(libusb_device_handle *dev, - int configuration) -{ - usbi_dbg("configuration %d", configuration); - return usbi_backend->set_configuration(dev, configuration); -} - -/** \ingroup dev - * Claim an interface on a given device handle. You must claim the interface - * you wish to use before you can perform I/O on any of its endpoints. - * - * It is legal to attempt to claim an already-claimed interface, in which - * case libusb just returns 0 without doing anything. - * - * Claiming of interfaces is a purely logical operation; it does not cause - * any requests to be sent over the bus. Interface claiming is used to - * instruct the underlying operating system that your application wishes - * to take ownership of the interface. - * - * This is a non-blocking function. - * - * \param dev a device handle - * \param interface_number the bInterfaceNumber of the interface you - * wish to claim - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the requested interface does not exist - * \returns LIBUSB_ERROR_BUSY if another program or driver has claimed the - * interface - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns a LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_claim_interface(libusb_device_handle *dev, - int interface_number) -{ - int r = 0; - - usbi_dbg("interface %d", interface_number); - if (interface_number >= USB_MAXINTERFACES) - return LIBUSB_ERROR_INVALID_PARAM; - - usbi_mutex_lock(&dev->lock); - if (dev->claimed_interfaces & (1 << interface_number)) - goto out; - - r = usbi_backend->claim_interface(dev, interface_number); - if (r == 0) - dev->claimed_interfaces |= 1 << interface_number; - -out: - usbi_mutex_unlock(&dev->lock); - return r; -} - -/** \ingroup dev - * Release an interface previously claimed with libusb_claim_interface(). You - * should release all claimed interfaces before closing a device handle. - * - * This is a blocking function. A SET_INTERFACE control request will be sent - * to the device, resetting interface state to the first alternate setting. - * - * \param dev a device handle - * \param interface_number the bInterfaceNumber of the - * previously-claimed interface - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the interface was not claimed - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_release_interface(libusb_device_handle *dev, - int interface_number) -{ - int r; - - usbi_dbg("interface %d", interface_number); - if (interface_number >= USB_MAXINTERFACES) - return LIBUSB_ERROR_INVALID_PARAM; - - usbi_mutex_lock(&dev->lock); - if (!(dev->claimed_interfaces & (1 << interface_number))) { - r = LIBUSB_ERROR_NOT_FOUND; - goto out; - } - - r = usbi_backend->release_interface(dev, interface_number); - if (r == 0) - dev->claimed_interfaces &= ~(1 << interface_number); - -out: - usbi_mutex_unlock(&dev->lock); - return r; -} - -/** \ingroup dev - * Activate an alternate setting for an interface. The interface must have - * been previously claimed with libusb_claim_interface(). - * - * You should always use this function rather than formulating your own - * SET_INTERFACE control request. This is because the underlying operating - * system needs to know when such changes happen. - * - * This is a blocking function. - * - * \param dev a device handle - * \param interface_number the bInterfaceNumber of the - * previously-claimed interface - * \param alternate_setting the bAlternateSetting of the alternate - * setting to activate - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the interface was not claimed, or the - * requested alternate setting does not exist - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_set_interface_alt_setting(libusb_device_handle *dev, - int interface_number, int alternate_setting) -{ - usbi_dbg("interface %d altsetting %d", - interface_number, alternate_setting); - if (interface_number >= USB_MAXINTERFACES) - return LIBUSB_ERROR_INVALID_PARAM; - - usbi_mutex_lock(&dev->lock); - if (!(dev->claimed_interfaces & (1 << interface_number))) { - usbi_mutex_unlock(&dev->lock); - return LIBUSB_ERROR_NOT_FOUND; - } - usbi_mutex_unlock(&dev->lock); - - return usbi_backend->set_interface_altsetting(dev, interface_number, - alternate_setting); -} - -/** \ingroup dev - * Clear the halt/stall condition for an endpoint. Endpoints with halt status - * are unable to receive or transmit data until the halt condition is stalled. - * - * You should cancel all pending transfers before attempting to clear the halt - * condition. - * - * This is a blocking function. - * - * \param dev a device handle - * \param endpoint the endpoint to clear halt status - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_clear_halt(libusb_device_handle *dev, - unsigned char endpoint) -{ - usbi_dbg("endpoint %x", endpoint); - return usbi_backend->clear_halt(dev, endpoint); -} - -/** \ingroup dev - * Perform a USB port reset to reinitialize a device. The system will attempt - * to restore the previous configuration and alternate settings after the - * reset has completed. - * - * If the reset fails, the descriptors change, or the previous state cannot be - * restored, the device will appear to be disconnected and reconnected. This - * means that the device handle is no longer valid (you should close it) and - * rediscover the device. A return code of LIBUSB_ERROR_NOT_FOUND indicates - * when this is the case. - * - * This is a blocking function which usually incurs a noticeable delay. - * - * \param dev a handle of the device to reset - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if re-enumeration is required, or if the - * device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_reset_device(libusb_device_handle *dev) -{ - usbi_dbg(""); - return usbi_backend->reset_device(dev); -} - -/** \ingroup dev - * Determine if a kernel driver is active on an interface. If a kernel driver - * is active, you cannot claim the interface, and libusb will be unable to - * perform I/O. - * - * This functionality is not available on Windows. - * - * \param dev a device handle - * \param interface_number the interface to check - * \returns 0 if no kernel driver is active - * \returns 1 if a kernel driver is active - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_NOT_SUPPORTED on platforms where the functionality - * is not available - * \returns another LIBUSB_ERROR code on other failure - * \see libusb_detach_kernel_driver() - */ -int API_EXPORTED libusb_kernel_driver_active(libusb_device_handle *dev, - int interface_number) -{ - usbi_dbg("interface %d", interface_number); - if (usbi_backend->kernel_driver_active) - return usbi_backend->kernel_driver_active(dev, interface_number); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup dev - * Detach a kernel driver from an interface. If successful, you will then be - * able to claim the interface and perform I/O. - * - * This functionality is not available on Darwin or Windows. - * - * \param dev a device handle - * \param interface_number the interface to detach the driver from - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if no kernel driver was active - * \returns LIBUSB_ERROR_INVALID_PARAM if the interface does not exist - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_NOT_SUPPORTED on platforms where the functionality - * is not available - * \returns another LIBUSB_ERROR code on other failure - * \see libusb_kernel_driver_active() - */ -int API_EXPORTED libusb_detach_kernel_driver(libusb_device_handle *dev, - int interface_number) -{ - usbi_dbg("interface %d", interface_number); - if (usbi_backend->detach_kernel_driver) - return usbi_backend->detach_kernel_driver(dev, interface_number); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup dev - * Re-attach an interface's kernel driver, which was previously detached - * using libusb_detach_kernel_driver(). This call is only effective on - * Linux and returns LIBUSB_ERROR_NOT_SUPPORTED on all other platforms. - * - * This functionality is not available on Darwin or Windows. - * - * \param dev a device handle - * \param interface_number the interface to attach the driver from - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if no kernel driver was active - * \returns LIBUSB_ERROR_INVALID_PARAM if the interface does not exist - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_NOT_SUPPORTED on platforms where the functionality - * is not available - * \returns LIBUSB_ERROR_BUSY if the driver cannot be attached because the - * interface is claimed by a program or driver - * \returns another LIBUSB_ERROR code on other failure - * \see libusb_kernel_driver_active() - */ -int API_EXPORTED libusb_attach_kernel_driver(libusb_device_handle *dev, - int interface_number) -{ - usbi_dbg("interface %d", interface_number); - if (usbi_backend->attach_kernel_driver) - return usbi_backend->attach_kernel_driver(dev, interface_number); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup lib - * Set message verbosity. - * - Level 0: no messages ever printed by the library (default) - * - Level 1: error messages are printed to stderr - * - Level 2: warning and error messages are printed to stderr - * - Level 3: informational messages are printed to stdout, warning and error - * messages are printed to stderr - * - * The default level is 0, which means no messages are ever printed. If you - * choose to increase the message verbosity level, ensure that your - * application does not close the stdout/stderr file descriptors. - * - * You are advised to set level 3. libusb is conservative with its message - * logging and most of the time, will only log messages that explain error - * conditions and other oddities. This will help you debug your software. - * - * If the LIBUSB_DEBUG environment variable was set when libusb was - * initialized, this function does nothing: the message verbosity is fixed - * to the value in the environment variable. - * - * If libusb was compiled without any message logging, this function does - * nothing: you'll never get any messages. - * - * If libusb was compiled with verbose debug message logging, this function - * does nothing: you'll always get messages from all levels. - * - * \param ctx the context to operate on, or NULL for the default context - * \param level debug level to set - */ -void API_EXPORTED libusb_set_debug(libusb_context *ctx, int level) -{ - USBI_GET_CONTEXT(ctx); - if (!ctx->debug_fixed) - ctx->debug = level; -} - -/** \ingroup lib - * Initialize libusb. This function must be called before calling any other - * libusb function. - * - * If you do not provide an output location for a context pointer, a default - * context will be created. If there was already a default context, it will - * be reused (and nothing will be initialized/reinitialized). - * - * \param context Optional output location for context pointer. - * Only valid on return code 0. - * \returns 0 on success, or a LIBUSB_ERROR code on failure - * \see contexts - */ -int API_EXPORTED libusb_init(libusb_context **context) -{ - char *dbg = getenv("LIBUSB_DEBUG"); - struct libusb_context *ctx; - int r = 0; - - usbi_mutex_static_lock(&default_context_lock); - if (!context && usbi_default_context) { - usbi_dbg("reusing default context"); - default_context_refcnt++; - usbi_mutex_static_unlock(&default_context_lock); - return 0; - } - - ctx = malloc(sizeof(*ctx)); - if (!ctx) { - r = LIBUSB_ERROR_NO_MEM; - goto err_unlock; - } - memset(ctx, 0, sizeof(*ctx)); - - if (dbg) { - ctx->debug = atoi(dbg); - if (ctx->debug) - ctx->debug_fixed = 1; - } - - usbi_dbg("libusb-%d.%d.%d%s%s%s", - libusb_version_internal.major, - libusb_version_internal.minor, - libusb_version_internal.micro, - libusb_version_internal.rc, - libusb_version_internal.describe[0] ? " git:" : "", - libusb_version_internal.describe); - - if (usbi_backend->init) { - r = usbi_backend->init(ctx); - if (r) - goto err_free_ctx; - } - - usbi_mutex_init(&ctx->usb_devs_lock, NULL); - usbi_mutex_init(&ctx->open_devs_lock, NULL); - list_init(&ctx->usb_devs); - list_init(&ctx->open_devs); - - r = usbi_io_init(ctx); - if (r < 0) { - if (usbi_backend->exit) - usbi_backend->exit(); - goto err_destroy_mutex; - } - - if (context) { - *context = ctx; - } else if (!usbi_default_context) { - usbi_dbg("created default context"); - usbi_default_context = ctx; - default_context_refcnt++; - } - usbi_mutex_static_unlock(&default_context_lock); - - return 0; - -err_destroy_mutex: - usbi_mutex_destroy(&ctx->open_devs_lock); - usbi_mutex_destroy(&ctx->usb_devs_lock); -err_free_ctx: - free(ctx); -err_unlock: - usbi_mutex_static_unlock(&default_context_lock); - return r; -} - -/** \ingroup lib - * Deinitialize libusb. Should be called after closing all open devices and - * before your application terminates. - * \param ctx the context to deinitialize, or NULL for the default context - */ -void API_EXPORTED libusb_exit(struct libusb_context *ctx) -{ - usbi_dbg(""); - USBI_GET_CONTEXT(ctx); - - /* if working with default context, only actually do the deinitialization - * if we're the last user */ - if (ctx == usbi_default_context) { - usbi_mutex_static_lock(&default_context_lock); - if (--default_context_refcnt > 0) { - usbi_dbg("not destroying default context"); - usbi_mutex_static_unlock(&default_context_lock); - return; - } - usbi_dbg("destroying default context"); - usbi_default_context = NULL; - usbi_mutex_static_unlock(&default_context_lock); - } - - /* a little sanity check. doesn't bother with open_devs locking because - * unless there is an application bug, nobody will be accessing this. */ - if (!list_empty(&ctx->open_devs)) - usbi_warn(ctx, "application left some devices open"); - - usbi_io_exit(ctx); - if (usbi_backend->exit) - usbi_backend->exit(); - - usbi_mutex_destroy(&ctx->open_devs_lock); - usbi_mutex_destroy(&ctx->usb_devs_lock); - free(ctx); -} - -/** \ingroup misc - * Check at runtime if the loaded library has a given capability. - * - * \param capability the \ref libusb_capability to check for - * \returns 1 if the running library has the capability, 0 otherwise - */ -int API_EXPORTED libusb_has_capability(uint32_t capability) -{ - enum libusb_capability cap = capability; - switch (cap) { - case LIBUSB_CAP_HAS_CAPABILITY: - return 1; - } - return 0; -} - -/* this is defined in libusbi.h if needed */ -#ifdef LIBUSB_GETTIMEOFDAY_WIN32 -/* - * gettimeofday - * Implementation according to: - * The Open Group Base Specifications Issue 6 - * IEEE Std 1003.1, 2004 Edition - */ - -/* - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Contributed by: - * Danny Smith - */ - -/* Offset between 1/1/1601 and 1/1/1970 in 100 nanosec units */ -#define _W32_FT_OFFSET (116444736000000000) - -int usbi_gettimeofday(struct timeval *tp, void *tzp) - { - union { - unsigned __int64 ns100; /*time since 1 Jan 1601 in 100ns units */ - FILETIME ft; - } _now; - - if(tp) - { - GetSystemTimeAsFileTime (&_now.ft); - tp->tv_usec=(long)((_now.ns100 / 10) % 1000000 ); - tp->tv_sec= (long)((_now.ns100 - _W32_FT_OFFSET) / 10000000); - } - /* Always return 0 as per Open Group Base Specifications Issue 6. - Do not set errno on error. */ - return 0; -} -#endif - -void usbi_log_v(struct libusb_context *ctx, enum usbi_log_level level, - const char *function, const char *format, va_list args) -{ - FILE *stream = stdout; - const char *prefix; - struct timeval now; - static struct timeval first = { 0, 0 }; - -#ifndef ENABLE_DEBUG_LOGGING - USBI_GET_CONTEXT(ctx); - if (!ctx->debug) - return; - if (level == LOG_LEVEL_WARNING && ctx->debug < 2) - return; - if (level == LOG_LEVEL_INFO && ctx->debug < 3) - return; -#endif - - usbi_gettimeofday(&now, NULL); - if (!first.tv_sec) { - first.tv_sec = now.tv_sec; - first.tv_usec = now.tv_usec; - } - if (now.tv_usec < first.tv_usec) { - now.tv_sec--; - now.tv_usec += 1000000; - } - now.tv_sec -= first.tv_sec; - now.tv_usec -= first.tv_usec; - - switch (level) { - case LOG_LEVEL_INFO: - prefix = "info"; - break; - case LOG_LEVEL_WARNING: - stream = stderr; - prefix = "warning"; - break; - case LOG_LEVEL_ERROR: - stream = stderr; - prefix = "error"; - break; - case LOG_LEVEL_DEBUG: - stream = stderr; - prefix = "debug"; - break; - default: - stream = stderr; - prefix = "unknown"; - break; - } - - fprintf(stream, "libusb: %d.%06d %s [%s] ", - (int)now.tv_sec, (int)now.tv_usec, prefix, function); - - vfprintf(stream, format, args); - - fprintf(stream, "\n"); -} - -void usbi_log(struct libusb_context *ctx, enum usbi_log_level level, - const char *function, const char *format, ...) -{ - va_list args; - - va_start (args, format); - usbi_log_v(ctx, level, function, format, args); - va_end (args); -} - -/** \ingroup misc - * Returns a constant NULL-terminated string with the ASCII name of a libusb - * error code. The caller must not free() the returned string. - * - * \param error_code The \ref libusb_error code to return the name of. - * \returns The error name, or the string **UNKNOWN** if the value of - * error_code is not a known error code. - */ -DEFAULT_VISIBILITY const char * LIBUSB_CALL libusb_error_name(int error_code) -{ - enum libusb_error error = error_code; - switch (error) { - case LIBUSB_SUCCESS: - return "LIBUSB_SUCCESS"; - case LIBUSB_ERROR_IO: - return "LIBUSB_ERROR_IO"; - case LIBUSB_ERROR_INVALID_PARAM: - return "LIBUSB_ERROR_INVALID_PARAM"; - case LIBUSB_ERROR_ACCESS: - return "LIBUSB_ERROR_ACCESS"; - case LIBUSB_ERROR_NO_DEVICE: - return "LIBUSB_ERROR_NO_DEVICE"; - case LIBUSB_ERROR_NOT_FOUND: - return "LIBUSB_ERROR_NOT_FOUND"; - case LIBUSB_ERROR_BUSY: - return "LIBUSB_ERROR_BUSY"; - case LIBUSB_ERROR_TIMEOUT: - return "LIBUSB_ERROR_TIMEOUT"; - case LIBUSB_ERROR_OVERFLOW: - return "LIBUSB_ERROR_OVERFLOW"; - case LIBUSB_ERROR_PIPE: - return "LIBUSB_ERROR_PIPE"; - case LIBUSB_ERROR_INTERRUPTED: - return "LIBUSB_ERROR_INTERRUPTED"; - case LIBUSB_ERROR_NO_MEM: - return "LIBUSB_ERROR_NO_MEM"; - case LIBUSB_ERROR_NOT_SUPPORTED: - return "LIBUSB_ERROR_NOT_SUPPORTED"; - case LIBUSB_ERROR_OTHER: - return "LIBUSB_ERROR_OTHER"; - } - return "**UNKNOWN**"; -} - -/** \ingroup misc - * Returns a pointer to const struct libusb_version with the version - * (major, minor, micro, rc, and nano) of the running library. - */ -DEFAULT_VISIBILITY -const struct libusb_version * LIBUSB_CALL libusb_get_version(void) -{ - return &libusb_version_internal; -} diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/descriptor.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/descriptor.c deleted file mode 100644 index e358e9e..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/descriptor.c +++ /dev/null @@ -1,730 +0,0 @@ -/* - * USB descriptor handling functions for libusb - * Copyright (C) 2007 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include - -#include "libusbi.h" - -#define DESC_HEADER_LENGTH 2 -#define DEVICE_DESC_LENGTH 18 -#define CONFIG_DESC_LENGTH 9 -#define INTERFACE_DESC_LENGTH 9 -#define ENDPOINT_DESC_LENGTH 7 -#define ENDPOINT_AUDIO_DESC_LENGTH 9 - -/** @defgroup desc USB descriptors - * This page details how to examine the various standard USB descriptors - * for detected devices - */ - -/* set host_endian if the w values are already in host endian format, - * as opposed to bus endian. */ -int usbi_parse_descriptor(unsigned char *source, const char *descriptor, - void *dest, int host_endian) -{ - unsigned char *sp = source, *dp = dest; - uint16_t w; - const char *cp; - - for (cp = descriptor; *cp; cp++) { - switch (*cp) { - case 'b': /* 8-bit byte */ - *dp++ = *sp++; - break; - case 'w': /* 16-bit word, convert from little endian to CPU */ - dp += ((uintptr_t)dp & 1); /* Align to word boundary */ - - if (host_endian) { - memcpy(dp, sp, 2); - } else { - w = (sp[1] << 8) | sp[0]; - *((uint16_t *)dp) = w; - } - sp += 2; - dp += 2; - break; - } - } - - return (int) (sp - source); -} - -static void clear_endpoint(struct libusb_endpoint_descriptor *endpoint) -{ - if (endpoint->extra) - free((unsigned char *) endpoint->extra); -} - -static int parse_endpoint(struct libusb_context *ctx, - struct libusb_endpoint_descriptor *endpoint, unsigned char *buffer, - int size, int host_endian) -{ - struct usb_descriptor_header header; - unsigned char *extra; - unsigned char *begin; - int parsed = 0; - int len; - - usbi_parse_descriptor(buffer, "bb", &header, 0); - - /* Everything should be fine being passed into here, but we sanity */ - /* check JIC */ - if (header.bLength > size) { - usbi_err(ctx, "ran out of descriptors parsing"); - return -1; - } - - if (header.bDescriptorType != LIBUSB_DT_ENDPOINT) { - usbi_err(ctx, "unexpected descriptor %x (expected %x)", - header.bDescriptorType, LIBUSB_DT_ENDPOINT); - return parsed; - } - - if (header.bLength >= ENDPOINT_AUDIO_DESC_LENGTH) - usbi_parse_descriptor(buffer, "bbbbwbbb", endpoint, host_endian); - else if (header.bLength >= ENDPOINT_DESC_LENGTH) - usbi_parse_descriptor(buffer, "bbbbwb", endpoint, host_endian); - - buffer += header.bLength; - size -= header.bLength; - parsed += header.bLength; - - /* Skip over the rest of the Class Specific or Vendor Specific */ - /* descriptors */ - begin = buffer; - while (size >= DESC_HEADER_LENGTH) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - - if (header.bLength < 2) { - usbi_err(ctx, "invalid descriptor length %d", header.bLength); - return -1; - } - - /* If we find another "proper" descriptor then we're done */ - if ((header.bDescriptorType == LIBUSB_DT_ENDPOINT) || - (header.bDescriptorType == LIBUSB_DT_INTERFACE) || - (header.bDescriptorType == LIBUSB_DT_CONFIG) || - (header.bDescriptorType == LIBUSB_DT_DEVICE)) - break; - - usbi_dbg("skipping descriptor %x", header.bDescriptorType); - buffer += header.bLength; - size -= header.bLength; - parsed += header.bLength; - } - - /* Copy any unknown descriptors into a storage area for drivers */ - /* to later parse */ - len = (int)(buffer - begin); - if (!len) { - endpoint->extra = NULL; - endpoint->extra_length = 0; - return parsed; - } - - extra = malloc(len); - endpoint->extra = extra; - if (!extra) { - endpoint->extra_length = 0; - return LIBUSB_ERROR_NO_MEM; - } - - memcpy(extra, begin, len); - endpoint->extra_length = len; - - return parsed; -} - -static void clear_interface(struct libusb_interface *usb_interface) -{ - int i; - int j; - - if (usb_interface->altsetting) { - for (i = 0; i < usb_interface->num_altsetting; i++) { - struct libusb_interface_descriptor *ifp = - (struct libusb_interface_descriptor *) - usb_interface->altsetting + i; - if (ifp->extra) - free((void *) ifp->extra); - if (ifp->endpoint) { - for (j = 0; j < ifp->bNumEndpoints; j++) - clear_endpoint((struct libusb_endpoint_descriptor *) - ifp->endpoint + j); - free((void *) ifp->endpoint); - } - } - free((void *) usb_interface->altsetting); - usb_interface->altsetting = NULL; - } - -} - -static int parse_interface(libusb_context *ctx, - struct libusb_interface *usb_interface, unsigned char *buffer, int size, - int host_endian) -{ - int i; - int len; - int r; - int parsed = 0; - size_t tmp; - struct usb_descriptor_header header; - struct libusb_interface_descriptor *ifp; - unsigned char *begin; - - usb_interface->num_altsetting = 0; - - while (size >= INTERFACE_DESC_LENGTH) { - struct libusb_interface_descriptor *altsetting = - (struct libusb_interface_descriptor *) usb_interface->altsetting; - altsetting = realloc(altsetting, - sizeof(struct libusb_interface_descriptor) * - (usb_interface->num_altsetting + 1)); - if (!altsetting) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - usb_interface->altsetting = altsetting; - - ifp = altsetting + usb_interface->num_altsetting; - usb_interface->num_altsetting++; - usbi_parse_descriptor(buffer, "bbbbbbbbb", ifp, 0); - ifp->extra = NULL; - ifp->extra_length = 0; - ifp->endpoint = NULL; - - /* Skip over the interface */ - buffer += ifp->bLength; - parsed += ifp->bLength; - size -= ifp->bLength; - - begin = buffer; - - /* Skip over any interface, class or vendor descriptors */ - while (size >= DESC_HEADER_LENGTH) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - if (header.bLength < 2) { - usbi_err(ctx, "invalid descriptor of length %d", - header.bLength); - r = LIBUSB_ERROR_IO; - goto err; - } - - /* If we find another "proper" descriptor then we're done */ - if ((header.bDescriptorType == LIBUSB_DT_INTERFACE) || - (header.bDescriptorType == LIBUSB_DT_ENDPOINT) || - (header.bDescriptorType == LIBUSB_DT_CONFIG) || - (header.bDescriptorType == LIBUSB_DT_DEVICE)) - break; - - buffer += header.bLength; - parsed += header.bLength; - size -= header.bLength; - } - - /* Copy any unknown descriptors into a storage area for */ - /* drivers to later parse */ - len = (int)(buffer - begin); - if (len) { - ifp->extra = malloc(len); - if (!ifp->extra) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - memcpy((unsigned char *) ifp->extra, begin, len); - ifp->extra_length = len; - } - - /* Did we hit an unexpected descriptor? */ - if (size >= DESC_HEADER_LENGTH) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - if ((header.bDescriptorType == LIBUSB_DT_CONFIG) || - (header.bDescriptorType == LIBUSB_DT_DEVICE)) { - return parsed; - } - } - - if (ifp->bNumEndpoints > USB_MAXENDPOINTS) { - usbi_err(ctx, "too many endpoints (%d)", ifp->bNumEndpoints); - r = LIBUSB_ERROR_IO; - goto err; - } - - if (ifp->bNumEndpoints > 0) { - struct libusb_endpoint_descriptor *endpoint; - tmp = ifp->bNumEndpoints * sizeof(struct libusb_endpoint_descriptor); - endpoint = malloc(tmp); - ifp->endpoint = endpoint; - if (!endpoint) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - - memset(endpoint, 0, tmp); - for (i = 0; i < ifp->bNumEndpoints; i++) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - - if (header.bLength > size) { - usbi_err(ctx, "ran out of descriptors parsing"); - r = LIBUSB_ERROR_IO; - goto err; - } - - r = parse_endpoint(ctx, endpoint + i, buffer, size, - host_endian); - if (r < 0) - goto err; - - buffer += r; - parsed += r; - size -= r; - } - } - - /* We check to see if it's an alternate to this one */ - ifp = (struct libusb_interface_descriptor *) buffer; - if (size < LIBUSB_DT_INTERFACE_SIZE || - ifp->bDescriptorType != LIBUSB_DT_INTERFACE || - !ifp->bAlternateSetting) - return parsed; - } - - return parsed; -err: - clear_interface(usb_interface); - return r; -} - -static void clear_configuration(struct libusb_config_descriptor *config) -{ - if (config->interface) { - int i; - for (i = 0; i < config->bNumInterfaces; i++) - clear_interface((struct libusb_interface *) - config->interface + i); - free((void *) config->interface); - } - if (config->extra) - free((void *) config->extra); -} - -static int parse_configuration(struct libusb_context *ctx, - struct libusb_config_descriptor *config, unsigned char *buffer, - int host_endian) -{ - int i; - int r; - int size; - size_t tmp; - struct usb_descriptor_header header; - struct libusb_interface *usb_interface; - - usbi_parse_descriptor(buffer, "bbwbbbbb", config, host_endian); - size = config->wTotalLength; - - if (config->bNumInterfaces > USB_MAXINTERFACES) { - usbi_err(ctx, "too many interfaces (%d)", config->bNumInterfaces); - return LIBUSB_ERROR_IO; - } - - tmp = config->bNumInterfaces * sizeof(struct libusb_interface); - usb_interface = malloc(tmp); - config->interface = usb_interface; - if (!config->interface) - return LIBUSB_ERROR_NO_MEM; - - memset(usb_interface, 0, tmp); - buffer += config->bLength; - size -= config->bLength; - - config->extra = NULL; - config->extra_length = 0; - - for (i = 0; i < config->bNumInterfaces; i++) { - int len; - unsigned char *begin; - - /* Skip over the rest of the Class Specific or Vendor */ - /* Specific descriptors */ - begin = buffer; - while (size >= DESC_HEADER_LENGTH) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - - if ((header.bLength > size) || - (header.bLength < DESC_HEADER_LENGTH)) { - usbi_err(ctx, "invalid descriptor length of %d", - header.bLength); - r = LIBUSB_ERROR_IO; - goto err; - } - - /* If we find another "proper" descriptor then we're done */ - if ((header.bDescriptorType == LIBUSB_DT_ENDPOINT) || - (header.bDescriptorType == LIBUSB_DT_INTERFACE) || - (header.bDescriptorType == LIBUSB_DT_CONFIG) || - (header.bDescriptorType == LIBUSB_DT_DEVICE)) - break; - - usbi_dbg("skipping descriptor 0x%x\n", header.bDescriptorType); - buffer += header.bLength; - size -= header.bLength; - } - - /* Copy any unknown descriptors into a storage area for */ - /* drivers to later parse */ - len = (int)(buffer - begin); - if (len) { - /* FIXME: We should realloc and append here */ - if (!config->extra_length) { - config->extra = malloc(len); - if (!config->extra) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - - memcpy((unsigned char *) config->extra, begin, len); - config->extra_length = len; - } - } - - r = parse_interface(ctx, usb_interface + i, buffer, size, host_endian); - if (r < 0) - goto err; - - buffer += r; - size -= r; - } - - return size; - -err: - clear_configuration(config); - return r; -} - -/** \ingroup desc - * Get the USB device descriptor for a given device. - * - * This is a non-blocking function; the device descriptor is cached in memory. - * - * \param dev the device - * \param desc output location for the descriptor data - * \returns 0 on success or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_get_device_descriptor(libusb_device *dev, - struct libusb_device_descriptor *desc) -{ - unsigned char raw_desc[DEVICE_DESC_LENGTH]; - int host_endian = 0; - int r; - - usbi_dbg(""); - r = usbi_backend->get_device_descriptor(dev, raw_desc, &host_endian); - if (r < 0) - return r; - - memcpy((unsigned char *) desc, raw_desc, sizeof(raw_desc)); - if (!host_endian) { - desc->bcdUSB = libusb_le16_to_cpu(desc->bcdUSB); - desc->idVendor = libusb_le16_to_cpu(desc->idVendor); - desc->idProduct = libusb_le16_to_cpu(desc->idProduct); - desc->bcdDevice = libusb_le16_to_cpu(desc->bcdDevice); - } - return 0; -} - -/** \ingroup desc - * Get the USB configuration descriptor for the currently active configuration. - * This is a non-blocking function which does not involve any requests being - * sent to the device. - * - * \param dev a device - * \param config output location for the USB configuration descriptor. Only - * valid if 0 was returned. Must be freed with libusb_free_config_descriptor() - * after use. - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the device is in unconfigured state - * \returns another LIBUSB_ERROR code on error - * \see libusb_get_config_descriptor - */ -int API_EXPORTED libusb_get_active_config_descriptor(libusb_device *dev, - struct libusb_config_descriptor **config) -{ - struct libusb_config_descriptor *_config = malloc(sizeof(*_config)); - unsigned char tmp[8]; - unsigned char *buf = NULL; - int host_endian = 0; - int r; - - usbi_dbg(""); - if (!_config) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_backend->get_active_config_descriptor(dev, tmp, sizeof(tmp), - &host_endian); - if (r < 0) - goto err; - - usbi_parse_descriptor(tmp, "bbw", _config, host_endian); - buf = malloc(_config->wTotalLength); - if (!buf) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - - r = usbi_backend->get_active_config_descriptor(dev, buf, - _config->wTotalLength, &host_endian); - if (r < 0) - goto err; - - r = parse_configuration(dev->ctx, _config, buf, host_endian); - if (r < 0) { - usbi_err(dev->ctx, "parse_configuration failed with error %d", r); - goto err; - } else if (r > 0) { - usbi_warn(dev->ctx, "descriptor data still left"); - } - - free(buf); - *config = _config; - return 0; - -err: - free(_config); - if (buf) - free(buf); - return r; -} - -/** \ingroup desc - * Get a USB configuration descriptor based on its index. - * This is a non-blocking function which does not involve any requests being - * sent to the device. - * - * \param dev a device - * \param config_index the index of the configuration you wish to retrieve - * \param config output location for the USB configuration descriptor. Only - * valid if 0 was returned. Must be freed with libusb_free_config_descriptor() - * after use. - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the configuration does not exist - * \returns another LIBUSB_ERROR code on error - * \see libusb_get_active_config_descriptor() - * \see libusb_get_config_descriptor_by_value() - */ -int API_EXPORTED libusb_get_config_descriptor(libusb_device *dev, - uint8_t config_index, struct libusb_config_descriptor **config) -{ - struct libusb_config_descriptor *_config; - unsigned char tmp[8]; - unsigned char *buf = NULL; - int host_endian = 0; - int r; - - usbi_dbg("index %d", config_index); - if (config_index >= dev->num_configurations) - return LIBUSB_ERROR_NOT_FOUND; - - _config = malloc(sizeof(*_config)); - if (!_config) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_backend->get_config_descriptor(dev, config_index, tmp, - sizeof(tmp), &host_endian); - if (r < 0) - goto err; - - usbi_parse_descriptor(tmp, "bbw", _config, host_endian); - buf = malloc(_config->wTotalLength); - if (!buf) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - - host_endian = 0; - r = usbi_backend->get_config_descriptor(dev, config_index, buf, - _config->wTotalLength, &host_endian); - if (r < 0) - goto err; - - r = parse_configuration(dev->ctx, _config, buf, host_endian); - if (r < 0) { - usbi_err(dev->ctx, "parse_configuration failed with error %d", r); - goto err; - } else if (r > 0) { - usbi_warn(dev->ctx, "descriptor data still left"); - } - - free(buf); - *config = _config; - return 0; - -err: - free(_config); - if (buf) - free(buf); - return r; -} - -/* iterate through all configurations, returning the index of the configuration - * matching a specific bConfigurationValue in the idx output parameter, or -1 - * if the config was not found. - * returns 0 or a LIBUSB_ERROR code - */ -int usbi_get_config_index_by_value(struct libusb_device *dev, - uint8_t bConfigurationValue, int *idx) -{ - uint8_t i; - - usbi_dbg("value %d", bConfigurationValue); - for (i = 0; i < dev->num_configurations; i++) { - unsigned char tmp[6]; - int host_endian; - int r = usbi_backend->get_config_descriptor(dev, i, tmp, sizeof(tmp), - &host_endian); - if (r < 0) - return r; - if (tmp[5] == bConfigurationValue) { - *idx = i; - return 0; - } - } - - *idx = -1; - return 0; -} - -/** \ingroup desc - * Get a USB configuration descriptor with a specific bConfigurationValue. - * This is a non-blocking function which does not involve any requests being - * sent to the device. - * - * \param dev a device - * \param bConfigurationValue the bConfigurationValue of the configuration you - * wish to retrieve - * \param config output location for the USB configuration descriptor. Only - * valid if 0 was returned. Must be freed with libusb_free_config_descriptor() - * after use. - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the configuration does not exist - * \returns another LIBUSB_ERROR code on error - * \see libusb_get_active_config_descriptor() - * \see libusb_get_config_descriptor() - */ -int API_EXPORTED libusb_get_config_descriptor_by_value(libusb_device *dev, - uint8_t bConfigurationValue, struct libusb_config_descriptor **config) -{ - int idx; - int r = usbi_get_config_index_by_value(dev, bConfigurationValue, &idx); - if (r < 0) - return r; - else if (idx == -1) - return LIBUSB_ERROR_NOT_FOUND; - else - return libusb_get_config_descriptor(dev, (uint8_t) idx, config); -} - -/** \ingroup desc - * Free a configuration descriptor obtained from - * libusb_get_active_config_descriptor() or libusb_get_config_descriptor(). - * It is safe to call this function with a NULL config parameter, in which - * case the function simply returns. - * - * \param config the configuration descriptor to free - */ -void API_EXPORTED libusb_free_config_descriptor( - struct libusb_config_descriptor *config) -{ - if (!config) - return; - - clear_configuration(config); - free(config); -} - -/** \ingroup desc - * Retrieve a string descriptor in C style ASCII. - * - * Wrapper around libusb_get_string_descriptor(). Uses the first language - * supported by the device. - * - * \param dev a device handle - * \param desc_index the index of the descriptor to retrieve - * \param data output buffer for ASCII string descriptor - * \param length size of data buffer - * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_get_string_descriptor_ascii(libusb_device_handle *dev, - uint8_t desc_index, unsigned char *data, int length) -{ - unsigned char tbuf[255]; /* Some devices choke on size > 255 */ - int r, si, di; - uint16_t langid; - - /* Asking for the zero'th index is special - it returns a string - * descriptor that contains all the language IDs supported by the - * device. Typically there aren't many - often only one. Language - * IDs are 16 bit numbers, and they start at the third byte in the - * descriptor. There's also no point in trying to read descriptor 0 - * with this function. See USB 2.0 specification section 9.6.7 for - * more information. - */ - - if (desc_index == 0) - return LIBUSB_ERROR_INVALID_PARAM; - - r = libusb_get_string_descriptor(dev, 0, 0, tbuf, sizeof(tbuf)); - if (r < 0) - return r; - - if (r < 4) - return LIBUSB_ERROR_IO; - - langid = tbuf[2] | (tbuf[3] << 8); - - r = libusb_get_string_descriptor(dev, desc_index, langid, tbuf, - sizeof(tbuf)); - if (r < 0) - return r; - - if (tbuf[1] != LIBUSB_DT_STRING) - return LIBUSB_ERROR_IO; - - if (tbuf[0] > r) - return LIBUSB_ERROR_IO; - - for (di = 0, si = 2; si < tbuf[0]; si += 2) { - if (di >= (length - 1)) - break; - - if (tbuf[si + 1]) /* high byte */ - data[di++] = '?'; - else - data[di++] = tbuf[si]; - } - - data[di] = 0; - return di; -} - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/io.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/io.c deleted file mode 100644 index e9bd312..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/io.c +++ /dev/null @@ -1,2454 +0,0 @@ -/* - * I/O functions for libusb - * Copyright (C) 2007-2009 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include -#include - -#ifdef HAVE_SYS_TIME_H -#include -#endif - -#ifdef USBI_TIMERFD_AVAILABLE -#include -#endif - -#include "libusbi.h" - -/** - * \page io Synchronous and asynchronous device I/O - * - * \section intro Introduction - * - * If you're using libusb in your application, you're probably wanting to - * perform I/O with devices - you want to perform USB data transfers. - * - * libusb offers two separate interfaces for device I/O. This page aims to - * introduce the two in order to help you decide which one is more suitable - * for your application. You can also choose to use both interfaces in your - * application by considering each transfer on a case-by-case basis. - * - * Once you have read through the following discussion, you should consult the - * detailed API documentation pages for the details: - * - \ref syncio - * - \ref asyncio - * - * \section theory Transfers at a logical level - * - * At a logical level, USB transfers typically happen in two parts. For - * example, when reading data from a endpoint: - * -# A request for data is sent to the device - * -# Some time later, the incoming data is received by the host - * - * or when writing data to an endpoint: - * - * -# The data is sent to the device - * -# Some time later, the host receives acknowledgement from the device that - * the data has been transferred. - * - * There may be an indefinite delay between the two steps. Consider a - * fictional USB input device with a button that the user can press. In order - * to determine when the button is pressed, you would likely submit a request - * to read data on a bulk or interrupt endpoint and wait for data to arrive. - * Data will arrive when the button is pressed by the user, which is - * potentially hours later. - * - * libusb offers both a synchronous and an asynchronous interface to performing - * USB transfers. The main difference is that the synchronous interface - * combines both steps indicated above into a single function call, whereas - * the asynchronous interface separates them. - * - * \section sync The synchronous interface - * - * The synchronous I/O interface allows you to perform a USB transfer with - * a single function call. When the function call returns, the transfer has - * completed and you can parse the results. - * - * If you have used the libusb-0.1 before, this I/O style will seem familar to - * you. libusb-0.1 only offered a synchronous interface. - * - * In our input device example, to read button presses you might write code - * in the following style: -\code -unsigned char data[4]; -int actual_length; -int r = libusb_bulk_transfer(handle, LIBUSB_ENDPOINT_IN, data, sizeof(data), &actual_length, 0); -if (r == 0 && actual_length == sizeof(data)) { - // results of the transaction can now be found in the data buffer - // parse them here and report button press -} else { - error(); -} -\endcode - * - * The main advantage of this model is simplicity: you did everything with - * a single simple function call. - * - * However, this interface has its limitations. Your application will sleep - * inside libusb_bulk_transfer() until the transaction has completed. If it - * takes the user 3 hours to press the button, your application will be - * sleeping for that long. Execution will be tied up inside the library - - * the entire thread will be useless for that duration. - * - * Another issue is that by tieing up the thread with that single transaction - * there is no possibility of performing I/O with multiple endpoints and/or - * multiple devices simultaneously, unless you resort to creating one thread - * per transaction. - * - * Additionally, there is no opportunity to cancel the transfer after the - * request has been submitted. - * - * For details on how to use the synchronous API, see the - * \ref syncio "synchronous I/O API documentation" pages. - * - * \section async The asynchronous interface - * - * Asynchronous I/O is the most significant new feature in libusb-1.0. - * Although it is a more complex interface, it solves all the issues detailed - * above. - * - * Instead of providing which functions that block until the I/O has complete, - * libusb's asynchronous interface presents non-blocking functions which - * begin a transfer and then return immediately. Your application passes a - * callback function pointer to this non-blocking function, which libusb will - * call with the results of the transaction when it has completed. - * - * Transfers which have been submitted through the non-blocking functions - * can be cancelled with a separate function call. - * - * The non-blocking nature of this interface allows you to be simultaneously - * performing I/O to multiple endpoints on multiple devices, without having - * to use threads. - * - * This added flexibility does come with some complications though: - * - In the interest of being a lightweight library, libusb does not create - * threads and can only operate when your application is calling into it. Your - * application must call into libusb from it's main loop when events are ready - * to be handled, or you must use some other scheme to allow libusb to - * undertake whatever work needs to be done. - * - libusb also needs to be called into at certain fixed points in time in - * order to accurately handle transfer timeouts. - * - Memory handling becomes more complex. You cannot use stack memory unless - * the function with that stack is guaranteed not to return until the transfer - * callback has finished executing. - * - You generally lose some linearity from your code flow because submitting - * the transfer request is done in a separate function from where the transfer - * results are handled. This becomes particularly obvious when you want to - * submit a second transfer based on the results of an earlier transfer. - * - * Internally, libusb's synchronous interface is expressed in terms of function - * calls to the asynchronous interface. - * - * For details on how to use the asynchronous API, see the - * \ref asyncio "asynchronous I/O API" documentation pages. - */ - - -/** - * \page packetoverflow Packets and overflows - * - * \section packets Packet abstraction - * - * The USB specifications describe how data is transmitted in packets, with - * constraints on packet size defined by endpoint descriptors. The host must - * not send data payloads larger than the endpoint's maximum packet size. - * - * libusb and the underlying OS abstract out the packet concept, allowing you - * to request transfers of any size. Internally, the request will be divided - * up into correctly-sized packets. You do not have to be concerned with - * packet sizes, but there is one exception when considering overflows. - * - * \section overflow Bulk/interrupt transfer overflows - * - * When requesting data on a bulk endpoint, libusb requires you to supply a - * buffer and the maximum number of bytes of data that libusb can put in that - * buffer. However, the size of the buffer is not communicated to the device - - * the device is just asked to send any amount of data. - * - * There is no problem if the device sends an amount of data that is less than - * or equal to the buffer size. libusb reports this condition to you through - * the \ref libusb_transfer::actual_length "libusb_transfer.actual_length" - * field. - * - * Problems may occur if the device attempts to send more data than can fit in - * the buffer. libusb reports LIBUSB_TRANSFER_OVERFLOW for this condition but - * other behaviour is largely undefined: actual_length may or may not be - * accurate, the chunk of data that can fit in the buffer (before overflow) - * may or may not have been transferred. - * - * Overflows are nasty, but can be avoided. Even though you were told to - * ignore packets above, think about the lower level details: each transfer is - * split into packets (typically small, with a maximum size of 512 bytes). - * Overflows can only happen if the final packet in an incoming data transfer - * is smaller than the actual packet that the device wants to transfer. - * Therefore, you will never see an overflow if your transfer buffer size is a - * multiple of the endpoint's packet size: the final packet will either - * fill up completely or will be only partially filled. - */ - -/** - * @defgroup asyncio Asynchronous device I/O - * - * This page details libusb's asynchronous (non-blocking) API for USB device - * I/O. This interface is very powerful but is also quite complex - you will - * need to read this page carefully to understand the necessary considerations - * and issues surrounding use of this interface. Simplistic applications - * may wish to consider the \ref syncio "synchronous I/O API" instead. - * - * The asynchronous interface is built around the idea of separating transfer - * submission and handling of transfer completion (the synchronous model - * combines both of these into one). There may be a long delay between - * submission and completion, however the asynchronous submission function - * is non-blocking so will return control to your application during that - * potentially long delay. - * - * \section asyncabstraction Transfer abstraction - * - * For the asynchronous I/O, libusb implements the concept of a generic - * transfer entity for all types of I/O (control, bulk, interrupt, - * isochronous). The generic transfer object must be treated slightly - * differently depending on which type of I/O you are performing with it. - * - * This is represented by the public libusb_transfer structure type. - * - * \section asynctrf Asynchronous transfers - * - * We can view asynchronous I/O as a 5 step process: - * -# Allocation: allocate a libusb_transfer - * -# Filling: populate the libusb_transfer instance with information - * about the transfer you wish to perform - * -# Submission: ask libusb to submit the transfer - * -# Completion handling: examine transfer results in the - * libusb_transfer structure - * -# Deallocation: clean up resources - * - * - * \subsection asyncalloc Allocation - * - * This step involves allocating memory for a USB transfer. This is the - * generic transfer object mentioned above. At this stage, the transfer - * is "blank" with no details about what type of I/O it will be used for. - * - * Allocation is done with the libusb_alloc_transfer() function. You must use - * this function rather than allocating your own transfers. - * - * \subsection asyncfill Filling - * - * This step is where you take a previously allocated transfer and fill it - * with information to determine the message type and direction, data buffer, - * callback function, etc. - * - * You can either fill the required fields yourself or you can use the - * helper functions: libusb_fill_control_transfer(), libusb_fill_bulk_transfer() - * and libusb_fill_interrupt_transfer(). - * - * \subsection asyncsubmit Submission - * - * When you have allocated a transfer and filled it, you can submit it using - * libusb_submit_transfer(). This function returns immediately but can be - * regarded as firing off the I/O request in the background. - * - * \subsection asynccomplete Completion handling - * - * After a transfer has been submitted, one of four things can happen to it: - * - * - The transfer completes (i.e. some data was transferred) - * - The transfer has a timeout and the timeout expires before all data is - * transferred - * - The transfer fails due to an error - * - The transfer is cancelled - * - * Each of these will cause the user-specified transfer callback function to - * be invoked. It is up to the callback function to determine which of the - * above actually happened and to act accordingly. - * - * The user-specified callback is passed a pointer to the libusb_transfer - * structure which was used to setup and submit the transfer. At completion - * time, libusb has populated this structure with results of the transfer: - * success or failure reason, number of bytes of data transferred, etc. See - * the libusb_transfer structure documentation for more information. - * - * \subsection Deallocation - * - * When a transfer has completed (i.e. the callback function has been invoked), - * you are advised to free the transfer (unless you wish to resubmit it, see - * below). Transfers are deallocated with libusb_free_transfer(). - * - * It is undefined behaviour to free a transfer which has not completed. - * - * \section asyncresubmit Resubmission - * - * You may be wondering why allocation, filling, and submission are all - * separated above where they could reasonably be combined into a single - * operation. - * - * The reason for separation is to allow you to resubmit transfers without - * having to allocate new ones every time. This is especially useful for - * common situations dealing with interrupt endpoints - you allocate one - * transfer, fill and submit it, and when it returns with results you just - * resubmit it for the next interrupt. - * - * \section asynccancel Cancellation - * - * Another advantage of using the asynchronous interface is that you have - * the ability to cancel transfers which have not yet completed. This is - * done by calling the libusb_cancel_transfer() function. - * - * libusb_cancel_transfer() is asynchronous/non-blocking in itself. When the - * cancellation actually completes, the transfer's callback function will - * be invoked, and the callback function should check the transfer status to - * determine that it was cancelled. - * - * Freeing the transfer after it has been cancelled but before cancellation - * has completed will result in undefined behaviour. - * - * When a transfer is cancelled, some of the data may have been transferred. - * libusb will communicate this to you in the transfer callback. Do not assume - * that no data was transferred. - * - * \section bulk_overflows Overflows on device-to-host bulk/interrupt endpoints - * - * If your device does not have predictable transfer sizes (or it misbehaves), - * your application may submit a request for data on an IN endpoint which is - * smaller than the data that the device wishes to send. In some circumstances - * this will cause an overflow, which is a nasty condition to deal with. See - * the \ref packetoverflow page for discussion. - * - * \section asyncctrl Considerations for control transfers - * - * The libusb_transfer structure is generic and hence does not - * include specific fields for the control-specific setup packet structure. - * - * In order to perform a control transfer, you must place the 8-byte setup - * packet at the start of the data buffer. To simplify this, you could - * cast the buffer pointer to type struct libusb_control_setup, or you can - * use the helper function libusb_fill_control_setup(). - * - * The wLength field placed in the setup packet must be the length you would - * expect to be sent in the setup packet: the length of the payload that - * follows (or the expected maximum number of bytes to receive). However, - * the length field of the libusb_transfer object must be the length of - * the data buffer - i.e. it should be wLength plus the size of - * the setup packet (LIBUSB_CONTROL_SETUP_SIZE). - * - * If you use the helper functions, this is simplified for you: - * -# Allocate a buffer of size LIBUSB_CONTROL_SETUP_SIZE plus the size of the - * data you are sending/requesting. - * -# Call libusb_fill_control_setup() on the data buffer, using the transfer - * request size as the wLength value (i.e. do not include the extra space you - * allocated for the control setup). - * -# If this is a host-to-device transfer, place the data to be transferred - * in the data buffer, starting at offset LIBUSB_CONTROL_SETUP_SIZE. - * -# Call libusb_fill_control_transfer() to associate the data buffer with - * the transfer (and to set the remaining details such as callback and timeout). - * - Note that there is no parameter to set the length field of the transfer. - * The length is automatically inferred from the wLength field of the setup - * packet. - * -# Submit the transfer. - * - * The multi-byte control setup fields (wValue, wIndex and wLength) must - * be given in little-endian byte order (the endianness of the USB bus). - * Endianness conversion is transparently handled by - * libusb_fill_control_setup() which is documented to accept host-endian - * values. - * - * Further considerations are needed when handling transfer completion in - * your callback function: - * - As you might expect, the setup packet will still be sitting at the start - * of the data buffer. - * - If this was a device-to-host transfer, the received data will be sitting - * at offset LIBUSB_CONTROL_SETUP_SIZE into the buffer. - * - The actual_length field of the transfer structure is relative to the - * wLength of the setup packet, rather than the size of the data buffer. So, - * if your wLength was 4, your transfer's length was 12, then you - * should expect an actual_length of 4 to indicate that the data was - * transferred in entirity. - * - * To simplify parsing of setup packets and obtaining the data from the - * correct offset, you may wish to use the libusb_control_transfer_get_data() - * and libusb_control_transfer_get_setup() functions within your transfer - * callback. - * - * Even though control endpoints do not halt, a completed control transfer - * may have a LIBUSB_TRANSFER_STALL status code. This indicates the control - * request was not supported. - * - * \section asyncintr Considerations for interrupt transfers - * - * All interrupt transfers are performed using the polling interval presented - * by the bInterval value of the endpoint descriptor. - * - * \section asynciso Considerations for isochronous transfers - * - * Isochronous transfers are more complicated than transfers to - * non-isochronous endpoints. - * - * To perform I/O to an isochronous endpoint, allocate the transfer by calling - * libusb_alloc_transfer() with an appropriate number of isochronous packets. - * - * During filling, set \ref libusb_transfer::type "type" to - * \ref libusb_transfer_type::LIBUSB_TRANSFER_TYPE_ISOCHRONOUS - * "LIBUSB_TRANSFER_TYPE_ISOCHRONOUS", and set - * \ref libusb_transfer::num_iso_packets "num_iso_packets" to a value less than - * or equal to the number of packets you requested during allocation. - * libusb_alloc_transfer() does not set either of these fields for you, given - * that you might not even use the transfer on an isochronous endpoint. - * - * Next, populate the length field for the first num_iso_packets entries in - * the \ref libusb_transfer::iso_packet_desc "iso_packet_desc" array. Section - * 5.6.3 of the USB2 specifications describe how the maximum isochronous - * packet length is determined by the wMaxPacketSize field in the endpoint - * descriptor. - * Two functions can help you here: - * - * - libusb_get_max_iso_packet_size() is an easy way to determine the max - * packet size for an isochronous endpoint. Note that the maximum packet - * size is actually the maximum number of bytes that can be transmitted in - * a single microframe, therefore this function multiplies the maximum number - * of bytes per transaction by the number of transaction opportunities per - * microframe. - * - libusb_set_iso_packet_lengths() assigns the same length to all packets - * within a transfer, which is usually what you want. - * - * For outgoing transfers, you'll obviously fill the buffer and populate the - * packet descriptors in hope that all the data gets transferred. For incoming - * transfers, you must ensure the buffer has sufficient capacity for - * the situation where all packets transfer the full amount of requested data. - * - * Completion handling requires some extra consideration. The - * \ref libusb_transfer::actual_length "actual_length" field of the transfer - * is meaningless and should not be examined; instead you must refer to the - * \ref libusb_iso_packet_descriptor::actual_length "actual_length" field of - * each individual packet. - * - * The \ref libusb_transfer::status "status" field of the transfer is also a - * little misleading: - * - If the packets were submitted and the isochronous data microframes - * completed normally, status will have value - * \ref libusb_transfer_status::LIBUSB_TRANSFER_COMPLETED - * "LIBUSB_TRANSFER_COMPLETED". Note that bus errors and software-incurred - * delays are not counted as transfer errors; the transfer.status field may - * indicate COMPLETED even if some or all of the packets failed. Refer to - * the \ref libusb_iso_packet_descriptor::status "status" field of each - * individual packet to determine packet failures. - * - The status field will have value - * \ref libusb_transfer_status::LIBUSB_TRANSFER_ERROR - * "LIBUSB_TRANSFER_ERROR" only when serious errors were encountered. - * - Other transfer status codes occur with normal behaviour. - * - * The data for each packet will be found at an offset into the buffer that - * can be calculated as if each prior packet completed in full. The - * libusb_get_iso_packet_buffer() and libusb_get_iso_packet_buffer_simple() - * functions may help you here. - * - * \section asyncmem Memory caveats - * - * In most circumstances, it is not safe to use stack memory for transfer - * buffers. This is because the function that fired off the asynchronous - * transfer may return before libusb has finished using the buffer, and when - * the function returns it's stack gets destroyed. This is true for both - * host-to-device and device-to-host transfers. - * - * The only case in which it is safe to use stack memory is where you can - * guarantee that the function owning the stack space for the buffer does not - * return until after the transfer's callback function has completed. In every - * other case, you need to use heap memory instead. - * - * \section asyncflags Fine control - * - * Through using this asynchronous interface, you may find yourself repeating - * a few simple operations many times. You can apply a bitwise OR of certain - * flags to a transfer to simplify certain things: - * - \ref libusb_transfer_flags::LIBUSB_TRANSFER_SHORT_NOT_OK - * "LIBUSB_TRANSFER_SHORT_NOT_OK" results in transfers which transferred - * less than the requested amount of data being marked with status - * \ref libusb_transfer_status::LIBUSB_TRANSFER_ERROR "LIBUSB_TRANSFER_ERROR" - * (they would normally be regarded as COMPLETED) - * - \ref libusb_transfer_flags::LIBUSB_TRANSFER_FREE_BUFFER - * "LIBUSB_TRANSFER_FREE_BUFFER" allows you to ask libusb to free the transfer - * buffer when freeing the transfer. - * - \ref libusb_transfer_flags::LIBUSB_TRANSFER_FREE_TRANSFER - * "LIBUSB_TRANSFER_FREE_TRANSFER" causes libusb to automatically free the - * transfer after the transfer callback returns. - * - * \section asyncevent Event handling - * - * In accordance of the aim of being a lightweight library, libusb does not - * create threads internally. This means that libusb code does not execute - * at any time other than when your application is calling a libusb function. - * However, an asynchronous model requires that libusb perform work at various - * points in time - namely processing the results of previously-submitted - * transfers and invoking the user-supplied callback function. - * - * This gives rise to the libusb_handle_events() function which your - * application must call into when libusb has work do to. This gives libusb - * the opportunity to reap pending transfers, invoke callbacks, etc. - * - * The first issue to discuss here is how your application can figure out - * when libusb has work to do. In fact, there are two naive options which - * do not actually require your application to know this: - * -# Periodically call libusb_handle_events() in non-blocking mode at fixed - * short intervals from your main loop - * -# Repeatedly call libusb_handle_events() in blocking mode from a dedicated - * thread. - * - * The first option is plainly not very nice, and will cause unnecessary - * CPU wakeups leading to increased power usage and decreased battery life. - * The second option is not very nice either, but may be the nicest option - * available to you if the "proper" approach can not be applied to your - * application (read on...). - * - * The recommended option is to integrate libusb with your application main - * event loop. libusb exposes a set of file descriptors which allow you to do - * this. Your main loop is probably already calling poll() or select() or a - * variant on a set of file descriptors for other event sources (e.g. keyboard - * button presses, mouse movements, network sockets, etc). You then add - * libusb's file descriptors to your poll()/select() calls, and when activity - * is detected on such descriptors you know it is time to call - * libusb_handle_events(). - * - * There is one final event handling complication. libusb supports - * asynchronous transfers which time out after a specified time period, and - * this requires that libusb is called into at or after the timeout so that - * the timeout can be handled. So, in addition to considering libusb's file - * descriptors in your main event loop, you must also consider that libusb - * sometimes needs to be called into at fixed points in time even when there - * is no file descriptor activity. - * - * For the details on retrieving the set of file descriptors and determining - * the next timeout, see the \ref poll "polling and timing" API documentation. - */ - -/** - * @defgroup poll Polling and timing - * - * This page documents libusb's functions for polling events and timing. - * These functions are only necessary for users of the - * \ref asyncio "asynchronous API". If you are only using the simpler - * \ref syncio "synchronous API" then you do not need to ever call these - * functions. - * - * The justification for the functionality described here has already been - * discussed in the \ref asyncevent "event handling" section of the - * asynchronous API documentation. In summary, libusb does not create internal - * threads for event processing and hence relies on your application calling - * into libusb at certain points in time so that pending events can be handled. - * In order to know precisely when libusb needs to be called into, libusb - * offers you a set of pollable file descriptors and information about when - * the next timeout expires. - * - * If you are using the asynchronous I/O API, you must take one of the two - * following options, otherwise your I/O will not complete. - * - * \section pollsimple The simple option - * - * If your application revolves solely around libusb and does not need to - * handle other event sources, you can have a program structure as follows: -\code -// initialize libusb -// find and open device -// maybe fire off some initial async I/O - -while (user_has_not_requested_exit) - libusb_handle_events(ctx); - -// clean up and exit -\endcode - * - * With such a simple main loop, you do not have to worry about managing - * sets of file descriptors or handling timeouts. libusb_handle_events() will - * handle those details internally. - * - * \section pollmain The more advanced option - * - * \note This functionality is currently only available on Unix-like platforms. - * On Windows, libusb_get_pollfds() simply returns NULL. Exposing event sources - * on Windows will require some further thought and design. - * - * In more advanced applications, you will already have a main loop which - * is monitoring other event sources: network sockets, X11 events, mouse - * movements, etc. Through exposing a set of file descriptors, libusb is - * designed to cleanly integrate into such main loops. - * - * In addition to polling file descriptors for the other event sources, you - * take a set of file descriptors from libusb and monitor those too. When you - * detect activity on libusb's file descriptors, you call - * libusb_handle_events_timeout() in non-blocking mode. - * - * What's more, libusb may also need to handle events at specific moments in - * time. No file descriptor activity is generated at these times, so your - * own application needs to be continually aware of when the next one of these - * moments occurs (through calling libusb_get_next_timeout()), and then it - * needs to call libusb_handle_events_timeout() in non-blocking mode when - * these moments occur. This means that you need to adjust your - * poll()/select() timeout accordingly. - * - * libusb provides you with a set of file descriptors to poll and expects you - * to poll all of them, treating them as a single entity. The meaning of each - * file descriptor in the set is an internal implementation detail, - * platform-dependent and may vary from release to release. Don't try and - * interpret the meaning of the file descriptors, just do as libusb indicates, - * polling all of them at once. - * - * In pseudo-code, you want something that looks like: -\code -// initialise libusb - -libusb_get_pollfds(ctx) -while (user has not requested application exit) { - libusb_get_next_timeout(ctx); - poll(on libusb file descriptors plus any other event sources of interest, - using a timeout no larger than the value libusb just suggested) - if (poll() indicated activity on libusb file descriptors) - libusb_handle_events_timeout(ctx, &zero_tv); - if (time has elapsed to or beyond the libusb timeout) - libusb_handle_events_timeout(ctx, &zero_tv); - // handle events from other sources here -} - -// clean up and exit -\endcode - * - * \subsection polltime Notes on time-based events - * - * The above complication with having to track time and call into libusb at - * specific moments is a bit of a headache. For maximum compatibility, you do - * need to write your main loop as above, but you may decide that you can - * restrict the supported platforms of your application and get away with - * a more simplistic scheme. - * - * These time-based event complications are \b not required on the following - * platforms: - * - Darwin - * - Linux, provided that the following version requirements are satisfied: - * - Linux v2.6.27 or newer, compiled with timerfd support - * - glibc v2.9 or newer - * - libusb v1.0.5 or newer - * - * Under these configurations, libusb_get_next_timeout() will \em always return - * 0, so your main loop can be simplified to: -\code -// initialise libusb - -libusb_get_pollfds(ctx) -while (user has not requested application exit) { - poll(on libusb file descriptors plus any other event sources of interest, - using any timeout that you like) - if (poll() indicated activity on libusb file descriptors) - libusb_handle_events_timeout(ctx, &zero_tv); - // handle events from other sources here -} - -// clean up and exit -\endcode - * - * Do remember that if you simplify your main loop to the above, you will - * lose compatibility with some platforms (including legacy Linux platforms, - * and any future platforms supported by libusb which may have time-based - * event requirements). The resultant problems will likely appear as - * strange bugs in your application. - * - * You can use the libusb_pollfds_handle_timeouts() function to do a runtime - * check to see if it is safe to ignore the time-based event complications. - * If your application has taken the shortcut of ignoring libusb's next timeout - * in your main loop, then you are advised to check the return value of - * libusb_pollfds_handle_timeouts() during application startup, and to abort - * if the platform does suffer from these timing complications. - * - * \subsection fdsetchange Changes in the file descriptor set - * - * The set of file descriptors that libusb uses as event sources may change - * during the life of your application. Rather than having to repeatedly - * call libusb_get_pollfds(), you can set up notification functions for when - * the file descriptor set changes using libusb_set_pollfd_notifiers(). - * - * \subsection mtissues Multi-threaded considerations - * - * Unfortunately, the situation is complicated further when multiple threads - * come into play. If two threads are monitoring the same file descriptors, - * the fact that only one thread will be woken up when an event occurs causes - * some headaches. - * - * The events lock, event waiters lock, and libusb_handle_events_locked() - * entities are added to solve these problems. You do not need to be concerned - * with these entities otherwise. - * - * See the extra documentation: \ref mtasync - */ - -/** \page mtasync Multi-threaded applications and asynchronous I/O - * - * libusb is a thread-safe library, but extra considerations must be applied - * to applications which interact with libusb from multiple threads. - * - * The underlying issue that must be addressed is that all libusb I/O - * revolves around monitoring file descriptors through the poll()/select() - * system calls. This is directly exposed at the - * \ref asyncio "asynchronous interface" but it is important to note that the - * \ref syncio "synchronous interface" is implemented on top of the - * asynchonrous interface, therefore the same considerations apply. - * - * The issue is that if two or more threads are concurrently calling poll() - * or select() on libusb's file descriptors then only one of those threads - * will be woken up when an event arrives. The others will be completely - * oblivious that anything has happened. - * - * Consider the following pseudo-code, which submits an asynchronous transfer - * then waits for its completion. This style is one way you could implement a - * synchronous interface on top of the asynchronous interface (and libusb - * does something similar, albeit more advanced due to the complications - * explained on this page). - * -\code -void cb(struct libusb_transfer *transfer) -{ - int *completed = transfer->user_data; - *completed = 1; -} - -void myfunc() { - struct libusb_transfer *transfer; - unsigned char buffer[LIBUSB_CONTROL_SETUP_SIZE]; - int completed = 0; - - transfer = libusb_alloc_transfer(0); - libusb_fill_control_setup(buffer, - LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT, 0x04, 0x01, 0, 0); - libusb_fill_control_transfer(transfer, dev, buffer, cb, &completed, 1000); - libusb_submit_transfer(transfer); - - while (!completed) { - poll(libusb file descriptors, 120*1000); - if (poll indicates activity) - libusb_handle_events_timeout(ctx, &zero_tv); - } - printf("completed!"); - // other code here -} -\endcode - * - * Here we are serializing completion of an asynchronous event - * against a condition - the condition being completion of a specific transfer. - * The poll() loop has a long timeout to minimize CPU usage during situations - * when nothing is happening (it could reasonably be unlimited). - * - * If this is the only thread that is polling libusb's file descriptors, there - * is no problem: there is no danger that another thread will swallow up the - * event that we are interested in. On the other hand, if there is another - * thread polling the same descriptors, there is a chance that it will receive - * the event that we were interested in. In this situation, myfunc() - * will only realise that the transfer has completed on the next iteration of - * the loop, up to 120 seconds later. Clearly a two-minute delay is - * undesirable, and don't even think about using short timeouts to circumvent - * this issue! - * - * The solution here is to ensure that no two threads are ever polling the - * file descriptors at the same time. A naive implementation of this would - * impact the capabilities of the library, so libusb offers the scheme - * documented below to ensure no loss of functionality. - * - * Before we go any further, it is worth mentioning that all libusb-wrapped - * event handling procedures fully adhere to the scheme documented below. - * This includes libusb_handle_events() and its variants, and all the - * synchronous I/O functions - libusb hides this headache from you. - * - * \section Using libusb_handle_events() from multiple threads - * - * Even when only using libusb_handle_events() and synchronous I/O functions, - * you can still have a race condition. You might be tempted to solve the - * above with libusb_handle_events() like so: - * -\code - libusb_submit_transfer(transfer); - - while (!completed) { - libusb_handle_events(ctx); - } - printf("completed!"); -\endcode - * - * This however has a race between the checking of completed and - * libusb_handle_events() acquiring the events lock, so another thread - * could have completed the transfer, resulting in this thread hanging - * until either a timeout or another event occurs. See also commit - * 6696512aade99bb15d6792af90ae329af270eba6 which fixes this in the - * synchronous API implementation of libusb. - * - * Fixing this race requires checking the variable completed only after - * taking the event lock, which defeats the concept of just calling - * libusb_handle_events() without worrying about locking. This is why - * libusb-1.0.9 introduces the new libusb_handle_events_timeout_completed() - * and libusb_handle_events_completed() functions, which handles doing the - * completion check for you after they have acquired the lock: - * -\code - libusb_submit_transfer(transfer); - - while (!completed) { - libusb_handle_events_completed(ctx, &completed); - } - printf("completed!"); -\endcode - * - * This nicely fixes the race in our example. Note that if all you want to - * do is submit a single transfer and wait for its completion, then using - * one of the synchronous I/O functions is much easier. - * - * \section eventlock The events lock - * - * The problem is when we consider the fact that libusb exposes file - * descriptors to allow for you to integrate asynchronous USB I/O into - * existing main loops, effectively allowing you to do some work behind - * libusb's back. If you do take libusb's file descriptors and pass them to - * poll()/select() yourself, you need to be aware of the associated issues. - * - * The first concept to be introduced is the events lock. The events lock - * is used to serialize threads that want to handle events, such that only - * one thread is handling events at any one time. - * - * You must take the events lock before polling libusb file descriptors, - * using libusb_lock_events(). You must release the lock as soon as you have - * aborted your poll()/select() loop, using libusb_unlock_events(). - * - * \section threadwait Letting other threads do the work for you - * - * Although the events lock is a critical part of the solution, it is not - * enough on it's own. You might wonder if the following is sufficient... -\code - libusb_lock_events(ctx); - while (!completed) { - poll(libusb file descriptors, 120*1000); - if (poll indicates activity) - libusb_handle_events_timeout(ctx, &zero_tv); - } - libusb_unlock_events(ctx); -\endcode - * ...and the answer is that it is not. This is because the transfer in the - * code shown above may take a long time (say 30 seconds) to complete, and - * the lock is not released until the transfer is completed. - * - * Another thread with similar code that wants to do event handling may be - * working with a transfer that completes after a few milliseconds. Despite - * having such a quick completion time, the other thread cannot check that - * status of its transfer until the code above has finished (30 seconds later) - * due to contention on the lock. - * - * To solve this, libusb offers you a mechanism to determine when another - * thread is handling events. It also offers a mechanism to block your thread - * until the event handling thread has completed an event (and this mechanism - * does not involve polling of file descriptors). - * - * After determining that another thread is currently handling events, you - * obtain the event waiters lock using libusb_lock_event_waiters(). - * You then re-check that some other thread is still handling events, and if - * so, you call libusb_wait_for_event(). - * - * libusb_wait_for_event() puts your application to sleep until an event - * occurs, or until a thread releases the events lock. When either of these - * things happen, your thread is woken up, and should re-check the condition - * it was waiting on. It should also re-check that another thread is handling - * events, and if not, it should start handling events itself. - * - * This looks like the following, as pseudo-code: -\code -retry: -if (libusb_try_lock_events(ctx) == 0) { - // we obtained the event lock: do our own event handling - while (!completed) { - if (!libusb_event_handling_ok(ctx)) { - libusb_unlock_events(ctx); - goto retry; - } - poll(libusb file descriptors, 120*1000); - if (poll indicates activity) - libusb_handle_events_locked(ctx, 0); - } - libusb_unlock_events(ctx); -} else { - // another thread is doing event handling. wait for it to signal us that - // an event has completed - libusb_lock_event_waiters(ctx); - - while (!completed) { - // now that we have the event waiters lock, double check that another - // thread is still handling events for us. (it may have ceased handling - // events in the time it took us to reach this point) - if (!libusb_event_handler_active(ctx)) { - // whoever was handling events is no longer doing so, try again - libusb_unlock_event_waiters(ctx); - goto retry; - } - - libusb_wait_for_event(ctx, NULL); - } - libusb_unlock_event_waiters(ctx); -} -printf("completed!\n"); -\endcode - * - * A naive look at the above code may suggest that this can only support - * one event waiter (hence a total of 2 competing threads, the other doing - * event handling), because the event waiter seems to have taken the event - * waiters lock while waiting for an event. However, the system does support - * multiple event waiters, because libusb_wait_for_event() actually drops - * the lock while waiting, and reaquires it before continuing. - * - * We have now implemented code which can dynamically handle situations where - * nobody is handling events (so we should do it ourselves), and it can also - * handle situations where another thread is doing event handling (so we can - * piggyback onto them). It is also equipped to handle a combination of - * the two, for example, another thread is doing event handling, but for - * whatever reason it stops doing so before our condition is met, so we take - * over the event handling. - * - * Four functions were introduced in the above pseudo-code. Their importance - * should be apparent from the code shown above. - * -# libusb_try_lock_events() is a non-blocking function which attempts - * to acquire the events lock but returns a failure code if it is contended. - * -# libusb_event_handling_ok() checks that libusb is still happy for your - * thread to be performing event handling. Sometimes, libusb needs to - * interrupt the event handler, and this is how you can check if you have - * been interrupted. If this function returns 0, the correct behaviour is - * for you to give up the event handling lock, and then to repeat the cycle. - * The following libusb_try_lock_events() will fail, so you will become an - * events waiter. For more information on this, read \ref fullstory below. - * -# libusb_handle_events_locked() is a variant of - * libusb_handle_events_timeout() that you can call while holding the - * events lock. libusb_handle_events_timeout() itself implements similar - * logic to the above, so be sure not to call it when you are - * "working behind libusb's back", as is the case here. - * -# libusb_event_handler_active() determines if someone is currently - * holding the events lock - * - * You might be wondering why there is no function to wake up all threads - * blocked on libusb_wait_for_event(). This is because libusb can do this - * internally: it will wake up all such threads when someone calls - * libusb_unlock_events() or when a transfer completes (at the point after its - * callback has returned). - * - * \subsection fullstory The full story - * - * The above explanation should be enough to get you going, but if you're - * really thinking through the issues then you may be left with some more - * questions regarding libusb's internals. If you're curious, read on, and if - * not, skip to the next section to avoid confusing yourself! - * - * The immediate question that may spring to mind is: what if one thread - * modifies the set of file descriptors that need to be polled while another - * thread is doing event handling? - * - * There are 2 situations in which this may happen. - * -# libusb_open() will add another file descriptor to the poll set, - * therefore it is desirable to interrupt the event handler so that it - * restarts, picking up the new descriptor. - * -# libusb_close() will remove a file descriptor from the poll set. There - * are all kinds of race conditions that could arise here, so it is - * important that nobody is doing event handling at this time. - * - * libusb handles these issues internally, so application developers do not - * have to stop their event handlers while opening/closing devices. Here's how - * it works, focusing on the libusb_close() situation first: - * - * -# During initialization, libusb opens an internal pipe, and it adds the read - * end of this pipe to the set of file descriptors to be polled. - * -# During libusb_close(), libusb writes some dummy data on this control pipe. - * This immediately interrupts the event handler. libusb also records - * internally that it is trying to interrupt event handlers for this - * high-priority event. - * -# At this point, some of the functions described above start behaving - * differently: - * - libusb_event_handling_ok() starts returning 1, indicating that it is NOT - * OK for event handling to continue. - * - libusb_try_lock_events() starts returning 1, indicating that another - * thread holds the event handling lock, even if the lock is uncontended. - * - libusb_event_handler_active() starts returning 1, indicating that - * another thread is doing event handling, even if that is not true. - * -# The above changes in behaviour result in the event handler stopping and - * giving up the events lock very quickly, giving the high-priority - * libusb_close() operation a "free ride" to acquire the events lock. All - * threads that are competing to do event handling become event waiters. - * -# With the events lock held inside libusb_close(), libusb can safely remove - * a file descriptor from the poll set, in the safety of knowledge that - * nobody is polling those descriptors or trying to access the poll set. - * -# After obtaining the events lock, the close operation completes very - * quickly (usually a matter of milliseconds) and then immediately releases - * the events lock. - * -# At the same time, the behaviour of libusb_event_handling_ok() and friends - * reverts to the original, documented behaviour. - * -# The release of the events lock causes the threads that are waiting for - * events to be woken up and to start competing to become event handlers - * again. One of them will succeed; it will then re-obtain the list of poll - * descriptors, and USB I/O will then continue as normal. - * - * libusb_open() is similar, and is actually a more simplistic case. Upon a - * call to libusb_open(): - * - * -# The device is opened and a file descriptor is added to the poll set. - * -# libusb sends some dummy data on the control pipe, and records that it - * is trying to modify the poll descriptor set. - * -# The event handler is interrupted, and the same behaviour change as for - * libusb_close() takes effect, causing all event handling threads to become - * event waiters. - * -# The libusb_open() implementation takes its free ride to the events lock. - * -# Happy that it has successfully paused the events handler, libusb_open() - * releases the events lock. - * -# The event waiter threads are all woken up and compete to become event - * handlers again. The one that succeeds will obtain the list of poll - * descriptors again, which will include the addition of the new device. - * - * \subsection concl Closing remarks - * - * The above may seem a little complicated, but hopefully I have made it clear - * why such complications are necessary. Also, do not forget that this only - * applies to applications that take libusb's file descriptors and integrate - * them into their own polling loops. - * - * You may decide that it is OK for your multi-threaded application to ignore - * some of the rules and locks detailed above, because you don't think that - * two threads can ever be polling the descriptors at the same time. If that - * is the case, then that's good news for you because you don't have to worry. - * But be careful here; remember that the synchronous I/O functions do event - * handling internally. If you have one thread doing event handling in a loop - * (without implementing the rules and locking semantics documented above) - * and another trying to send a synchronous USB transfer, you will end up with - * two threads monitoring the same descriptors, and the above-described - * undesirable behaviour occuring. The solution is for your polling thread to - * play by the rules; the synchronous I/O functions do so, and this will result - * in them getting along in perfect harmony. - * - * If you do have a dedicated thread doing event handling, it is perfectly - * legal for it to take the event handling lock for long periods of time. Any - * synchronous I/O functions you call from other threads will transparently - * fall back to the "event waiters" mechanism detailed above. The only - * consideration that your event handling thread must apply is the one related - * to libusb_event_handling_ok(): you must call this before every poll(), and - * give up the events lock if instructed. - */ - -int usbi_io_init(struct libusb_context *ctx) -{ - int r; - - usbi_mutex_init(&ctx->flying_transfers_lock, NULL); - usbi_mutex_init(&ctx->pollfds_lock, NULL); - usbi_mutex_init(&ctx->pollfd_modify_lock, NULL); - usbi_mutex_init_recursive(&ctx->events_lock, NULL); - usbi_mutex_init(&ctx->event_waiters_lock, NULL); - usbi_cond_init(&ctx->event_waiters_cond, NULL); - list_init(&ctx->flying_transfers); - list_init(&ctx->pollfds); - - /* FIXME should use an eventfd on kernels that support it */ - r = usbi_pipe(ctx->ctrl_pipe); - if (r < 0) { - r = LIBUSB_ERROR_OTHER; - goto err; - } - - r = usbi_add_pollfd(ctx, ctx->ctrl_pipe[0], POLLIN); - if (r < 0) - goto err_close_pipe; - -#ifdef USBI_TIMERFD_AVAILABLE - ctx->timerfd = timerfd_create(usbi_backend->get_timerfd_clockid(), - TFD_NONBLOCK); - if (ctx->timerfd >= 0) { - usbi_dbg("using timerfd for timeouts"); - r = usbi_add_pollfd(ctx, ctx->timerfd, POLLIN); - if (r < 0) { - usbi_remove_pollfd(ctx, ctx->ctrl_pipe[0]); - close(ctx->timerfd); - goto err_close_pipe; - } - } else { - usbi_dbg("timerfd not available (code %d error %d)", ctx->timerfd, errno); - ctx->timerfd = -1; - } -#endif - - return 0; - -err_close_pipe: - usbi_close(ctx->ctrl_pipe[0]); - usbi_close(ctx->ctrl_pipe[1]); -err: - usbi_mutex_destroy(&ctx->flying_transfers_lock); - usbi_mutex_destroy(&ctx->pollfds_lock); - usbi_mutex_destroy(&ctx->pollfd_modify_lock); - usbi_mutex_destroy(&ctx->events_lock); - usbi_mutex_destroy(&ctx->event_waiters_lock); - usbi_cond_destroy(&ctx->event_waiters_cond); - return r; -} - -void usbi_io_exit(struct libusb_context *ctx) -{ - usbi_remove_pollfd(ctx, ctx->ctrl_pipe[0]); - usbi_close(ctx->ctrl_pipe[0]); - usbi_close(ctx->ctrl_pipe[1]); -#ifdef USBI_TIMERFD_AVAILABLE - if (usbi_using_timerfd(ctx)) { - usbi_remove_pollfd(ctx, ctx->timerfd); - close(ctx->timerfd); - } -#endif - usbi_mutex_destroy(&ctx->flying_transfers_lock); - usbi_mutex_destroy(&ctx->pollfds_lock); - usbi_mutex_destroy(&ctx->pollfd_modify_lock); - usbi_mutex_destroy(&ctx->events_lock); - usbi_mutex_destroy(&ctx->event_waiters_lock); - usbi_cond_destroy(&ctx->event_waiters_cond); -} - -static int calculate_timeout(struct usbi_transfer *transfer) -{ - int r; - struct timespec current_time; - unsigned int timeout = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer)->timeout; - - if (!timeout) - return 0; - - r = usbi_backend->clock_gettime(USBI_CLOCK_MONOTONIC, ¤t_time); - if (r < 0) { - usbi_err(ITRANSFER_CTX(transfer), - "failed to read monotonic clock, errno=%d", errno); - return r; - } - - current_time.tv_sec += timeout / 1000; - current_time.tv_nsec += (timeout % 1000) * 1000000; - - if (current_time.tv_nsec > 1000000000) { - current_time.tv_nsec -= 1000000000; - current_time.tv_sec++; - } - - TIMESPEC_TO_TIMEVAL(&transfer->timeout, ¤t_time); - return 0; -} - -/* add a transfer to the (timeout-sorted) active transfers list. - * returns 1 if the transfer has a timeout and it is the timeout next to - * expire */ -static int add_to_flying_list(struct usbi_transfer *transfer) -{ - struct usbi_transfer *cur; - struct timeval *timeout = &transfer->timeout; - struct libusb_context *ctx = ITRANSFER_CTX(transfer); - int r = 0; - int first = 1; - - usbi_mutex_lock(&ctx->flying_transfers_lock); - - /* if we have no other flying transfers, start the list with this one */ - if (list_empty(&ctx->flying_transfers)) { - list_add(&transfer->list, &ctx->flying_transfers); - if (timerisset(timeout)) - r = 1; - goto out; - } - - /* if we have infinite timeout, append to end of list */ - if (!timerisset(timeout)) { - list_add_tail(&transfer->list, &ctx->flying_transfers); - goto out; - } - - /* otherwise, find appropriate place in list */ - list_for_each_entry(cur, &ctx->flying_transfers, list, struct usbi_transfer) { - /* find first timeout that occurs after the transfer in question */ - struct timeval *cur_tv = &cur->timeout; - - if (!timerisset(cur_tv) || (cur_tv->tv_sec > timeout->tv_sec) || - (cur_tv->tv_sec == timeout->tv_sec && - cur_tv->tv_usec > timeout->tv_usec)) { - list_add_tail(&transfer->list, &cur->list); - r = first; - goto out; - } - first = 0; - } - - /* otherwise we need to be inserted at the end */ - list_add_tail(&transfer->list, &ctx->flying_transfers); -out: - usbi_mutex_unlock(&ctx->flying_transfers_lock); - return r; -} - -/** \ingroup asyncio - * Allocate a libusb transfer with a specified number of isochronous packet - * descriptors. The returned transfer is pre-initialized for you. When the new - * transfer is no longer needed, it should be freed with - * libusb_free_transfer(). - * - * Transfers intended for non-isochronous endpoints (e.g. control, bulk, - * interrupt) should specify an iso_packets count of zero. - * - * For transfers intended for isochronous endpoints, specify an appropriate - * number of packet descriptors to be allocated as part of the transfer. - * The returned transfer is not specially initialized for isochronous I/O; - * you are still required to set the - * \ref libusb_transfer::num_iso_packets "num_iso_packets" and - * \ref libusb_transfer::type "type" fields accordingly. - * - * It is safe to allocate a transfer with some isochronous packets and then - * use it on a non-isochronous endpoint. If you do this, ensure that at time - * of submission, num_iso_packets is 0 and that type is set appropriately. - * - * \param iso_packets number of isochronous packet descriptors to allocate - * \returns a newly allocated transfer, or NULL on error - */ -DEFAULT_VISIBILITY -struct libusb_transfer * LIBUSB_CALL libusb_alloc_transfer( - int iso_packets) -{ - size_t os_alloc_size = usbi_backend->transfer_priv_size - + (usbi_backend->add_iso_packet_size * iso_packets); - size_t alloc_size = sizeof(struct usbi_transfer) - + sizeof(struct libusb_transfer) - + (sizeof(struct libusb_iso_packet_descriptor) * iso_packets) - + os_alloc_size; - struct usbi_transfer *itransfer = malloc(alloc_size); - if (!itransfer) - return NULL; - - memset(itransfer, 0, alloc_size); - itransfer->num_iso_packets = iso_packets; - usbi_mutex_init(&itransfer->lock, NULL); - return USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); -} - -/** \ingroup asyncio - * Free a transfer structure. This should be called for all transfers - * allocated with libusb_alloc_transfer(). - * - * If the \ref libusb_transfer_flags::LIBUSB_TRANSFER_FREE_BUFFER - * "LIBUSB_TRANSFER_FREE_BUFFER" flag is set and the transfer buffer is - * non-NULL, this function will also free the transfer buffer using the - * standard system memory allocator (e.g. free()). - * - * It is legal to call this function with a NULL transfer. In this case, - * the function will simply return safely. - * - * It is not legal to free an active transfer (one which has been submitted - * and has not yet completed). - * - * \param transfer the transfer to free - */ -void API_EXPORTED libusb_free_transfer(struct libusb_transfer *transfer) -{ - struct usbi_transfer *itransfer; - if (!transfer) - return; - - if (transfer->flags & LIBUSB_TRANSFER_FREE_BUFFER && transfer->buffer) - free(transfer->buffer); - - itransfer = LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); - usbi_mutex_destroy(&itransfer->lock); - free(itransfer); -} - -/** \ingroup asyncio - * Submit a transfer. This function will fire off the USB transfer and then - * return immediately. - * - * \param transfer the transfer to submit - * \returns 0 on success - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_BUSY if the transfer has already been submitted. - * \returns LIBUSB_ERROR_NOT_SUPPORTED if the transfer flags are not supported - * by the operating system. - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_submit_transfer(struct libusb_transfer *transfer) -{ - struct libusb_context *ctx = TRANSFER_CTX(transfer); - struct usbi_transfer *itransfer = - LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); - int r; - int first; - - usbi_mutex_lock(&itransfer->lock); - itransfer->transferred = 0; - itransfer->flags = 0; - r = calculate_timeout(itransfer); - if (r < 0) { - r = LIBUSB_ERROR_OTHER; - goto out; - } - - first = add_to_flying_list(itransfer); - r = usbi_backend->submit_transfer(itransfer); - if (r) { - usbi_mutex_lock(&ctx->flying_transfers_lock); - list_del(&itransfer->list); - usbi_mutex_unlock(&ctx->flying_transfers_lock); - } -#ifdef USBI_TIMERFD_AVAILABLE - else if (first && usbi_using_timerfd(ctx)) { - /* if this transfer has the lowest timeout of all active transfers, - * rearm the timerfd with this transfer's timeout */ - const struct itimerspec it = { {0, 0}, - { itransfer->timeout.tv_sec, itransfer->timeout.tv_usec * 1000 } }; - usbi_dbg("arm timerfd for timeout in %dms (first in line)", transfer->timeout); - r = timerfd_settime(ctx->timerfd, TFD_TIMER_ABSTIME, &it, NULL); - if (r < 0) - r = LIBUSB_ERROR_OTHER; - } -#else - (void)first; -#endif - -out: - usbi_mutex_unlock(&itransfer->lock); - return r; -} - -/** \ingroup asyncio - * Asynchronously cancel a previously submitted transfer. - * This function returns immediately, but this does not indicate cancellation - * is complete. Your callback function will be invoked at some later time - * with a transfer status of - * \ref libusb_transfer_status::LIBUSB_TRANSFER_CANCELLED - * "LIBUSB_TRANSFER_CANCELLED." - * - * \param transfer the transfer to cancel - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the transfer is already complete or - * cancelled. - * \returns a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_cancel_transfer(struct libusb_transfer *transfer) -{ - struct usbi_transfer *itransfer = - LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); - int r; - - usbi_dbg(""); - usbi_mutex_lock(&itransfer->lock); - r = usbi_backend->cancel_transfer(itransfer); - if (r < 0) { - if (r != LIBUSB_ERROR_NOT_FOUND) - usbi_err(TRANSFER_CTX(transfer), - "cancel transfer failed error %d", r); - else - usbi_dbg("cancel transfer failed error %d", r); - - if (r == LIBUSB_ERROR_NO_DEVICE) - itransfer->flags |= USBI_TRANSFER_DEVICE_DISAPPEARED; - } - - itransfer->flags |= USBI_TRANSFER_CANCELLING; - - usbi_mutex_unlock(&itransfer->lock); - return r; -} - -#ifdef USBI_TIMERFD_AVAILABLE -static int disarm_timerfd(struct libusb_context *ctx) -{ - const struct itimerspec disarm_timer = { { 0, 0 }, { 0, 0 } }; - int r; - - usbi_dbg(""); - r = timerfd_settime(ctx->timerfd, 0, &disarm_timer, NULL); - if (r < 0) - return LIBUSB_ERROR_OTHER; - else - return 0; -} - -/* iterates through the flying transfers, and rearms the timerfd based on the - * next upcoming timeout. - * must be called with flying_list locked. - * returns 0 if there was no timeout to arm, 1 if the next timeout was armed, - * or a LIBUSB_ERROR code on failure. - */ -static int arm_timerfd_for_next_timeout(struct libusb_context *ctx) -{ - struct usbi_transfer *transfer; - - list_for_each_entry(transfer, &ctx->flying_transfers, list, struct usbi_transfer) { - struct timeval *cur_tv = &transfer->timeout; - - /* if we've reached transfers of infinite timeout, then we have no - * arming to do */ - if (!timerisset(cur_tv)) - return 0; - - /* act on first transfer that is not already cancelled */ - if (!(transfer->flags & USBI_TRANSFER_TIMED_OUT)) { - int r; - const struct itimerspec it = { {0, 0}, - { cur_tv->tv_sec, cur_tv->tv_usec * 1000 } }; - usbi_dbg("next timeout originally %dms", USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer)->timeout); - r = timerfd_settime(ctx->timerfd, TFD_TIMER_ABSTIME, &it, NULL); - if (r < 0) - return LIBUSB_ERROR_OTHER; - return 1; - } - } - - return 0; -} -#else -static int disarm_timerfd(struct libusb_context *ctx) -{ - (void)ctx; - return 0; -} -static int arm_timerfd_for_next_timeout(struct libusb_context *ctx) -{ - (void)ctx; - return 0; -} -#endif - -/* Handle completion of a transfer (completion might be an error condition). - * This will invoke the user-supplied callback function, which may end up - * freeing the transfer. Therefore you cannot use the transfer structure - * after calling this function, and you should free all backend-specific - * data before calling it. - * Do not call this function with the usbi_transfer lock held. User-specified - * callback functions may attempt to directly resubmit the transfer, which - * will attempt to take the lock. */ -int usbi_handle_transfer_completion(struct usbi_transfer *itransfer, - enum libusb_transfer_status status) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = TRANSFER_CTX(transfer); - uint8_t flags; - int r = 0; - - /* FIXME: could be more intelligent with the timerfd here. we don't need - * to disarm the timerfd if there was no timer running, and we only need - * to rearm the timerfd if the transfer that expired was the one with - * the shortest timeout. */ - - usbi_mutex_lock(&ctx->flying_transfers_lock); - list_del(&itransfer->list); - if (usbi_using_timerfd(ctx)) - r = arm_timerfd_for_next_timeout(ctx); - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - if (usbi_using_timerfd(ctx)) { - if (r < 0) - return r; - r = disarm_timerfd(ctx); - if (r < 0) - return r; - } - - if (status == LIBUSB_TRANSFER_COMPLETED - && transfer->flags & LIBUSB_TRANSFER_SHORT_NOT_OK) { - int rqlen = transfer->length; - if (transfer->type == LIBUSB_TRANSFER_TYPE_CONTROL) - rqlen -= LIBUSB_CONTROL_SETUP_SIZE; - if (rqlen != itransfer->transferred) { - usbi_dbg("interpreting short transfer as error"); - status = LIBUSB_TRANSFER_ERROR; - } - } - - flags = transfer->flags; - transfer->status = status; - transfer->actual_length = itransfer->transferred; - usbi_dbg("transfer %p has callback %p", transfer, transfer->callback); - if (transfer->callback) - transfer->callback(transfer); - /* transfer might have been freed by the above call, do not use from - * this point. */ - if (flags & LIBUSB_TRANSFER_FREE_TRANSFER) - libusb_free_transfer(transfer); - usbi_mutex_lock(&ctx->event_waiters_lock); - usbi_cond_broadcast(&ctx->event_waiters_cond); - usbi_mutex_unlock(&ctx->event_waiters_lock); - return 0; -} - -/* Similar to usbi_handle_transfer_completion() but exclusively for transfers - * that were asynchronously cancelled. The same concerns w.r.t. freeing of - * transfers exist here. - * Do not call this function with the usbi_transfer lock held. User-specified - * callback functions may attempt to directly resubmit the transfer, which - * will attempt to take the lock. */ -int usbi_handle_transfer_cancellation(struct usbi_transfer *transfer) -{ - /* if the URB was cancelled due to timeout, report timeout to the user */ - if (transfer->flags & USBI_TRANSFER_TIMED_OUT) { - usbi_dbg("detected timeout cancellation"); - return usbi_handle_transfer_completion(transfer, LIBUSB_TRANSFER_TIMED_OUT); - } - - /* otherwise its a normal async cancel */ - return usbi_handle_transfer_completion(transfer, LIBUSB_TRANSFER_CANCELLED); -} - -/** \ingroup poll - * Attempt to acquire the event handling lock. This lock is used to ensure that - * only one thread is monitoring libusb event sources at any one time. - * - * You only need to use this lock if you are developing an application - * which calls poll() or select() on libusb's file descriptors directly. - * If you stick to libusb's event handling loop functions (e.g. - * libusb_handle_events()) then you do not need to be concerned with this - * locking. - * - * While holding this lock, you are trusted to actually be handling events. - * If you are no longer handling events, you must call libusb_unlock_events() - * as soon as possible. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 0 if the lock was obtained successfully - * \returns 1 if the lock was not obtained (i.e. another thread holds the lock) - * \see \ref mtasync - */ -int API_EXPORTED libusb_try_lock_events(libusb_context *ctx) -{ - int r; - USBI_GET_CONTEXT(ctx); - - /* is someone else waiting to modify poll fds? if so, don't let this thread - * start event handling */ - usbi_mutex_lock(&ctx->pollfd_modify_lock); - r = ctx->pollfd_modify; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - if (r) { - usbi_dbg("someone else is modifying poll fds"); - return 1; - } - - r = usbi_mutex_trylock(&ctx->events_lock); - if (r) - return 1; - - ctx->event_handler_active = 1; - return 0; -} - -/** \ingroup poll - * Acquire the event handling lock, blocking until successful acquisition if - * it is contended. This lock is used to ensure that only one thread is - * monitoring libusb event sources at any one time. - * - * You only need to use this lock if you are developing an application - * which calls poll() or select() on libusb's file descriptors directly. - * If you stick to libusb's event handling loop functions (e.g. - * libusb_handle_events()) then you do not need to be concerned with this - * locking. - * - * While holding this lock, you are trusted to actually be handling events. - * If you are no longer handling events, you must call libusb_unlock_events() - * as soon as possible. - * - * \param ctx the context to operate on, or NULL for the default context - * \see \ref mtasync - */ -void API_EXPORTED libusb_lock_events(libusb_context *ctx) -{ - USBI_GET_CONTEXT(ctx); - usbi_mutex_lock(&ctx->events_lock); - ctx->event_handler_active = 1; -} - -/** \ingroup poll - * Release the lock previously acquired with libusb_try_lock_events() or - * libusb_lock_events(). Releasing this lock will wake up any threads blocked - * on libusb_wait_for_event(). - * - * \param ctx the context to operate on, or NULL for the default context - * \see \ref mtasync - */ -void API_EXPORTED libusb_unlock_events(libusb_context *ctx) -{ - USBI_GET_CONTEXT(ctx); - ctx->event_handler_active = 0; - usbi_mutex_unlock(&ctx->events_lock); - - /* FIXME: perhaps we should be a bit more efficient by not broadcasting - * the availability of the events lock when we are modifying pollfds - * (check ctx->pollfd_modify)? */ - usbi_mutex_lock(&ctx->event_waiters_lock); - usbi_cond_broadcast(&ctx->event_waiters_cond); - usbi_mutex_unlock(&ctx->event_waiters_lock); -} - -/** \ingroup poll - * Determine if it is still OK for this thread to be doing event handling. - * - * Sometimes, libusb needs to temporarily pause all event handlers, and this - * is the function you should use before polling file descriptors to see if - * this is the case. - * - * If this function instructs your thread to give up the events lock, you - * should just continue the usual logic that is documented in \ref mtasync. - * On the next iteration, your thread will fail to obtain the events lock, - * and will hence become an event waiter. - * - * This function should be called while the events lock is held: you don't - * need to worry about the results of this function if your thread is not - * the current event handler. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 1 if event handling can start or continue - * \returns 0 if this thread must give up the events lock - * \see \ref fullstory "Multi-threaded I/O: the full story" - */ -int API_EXPORTED libusb_event_handling_ok(libusb_context *ctx) -{ - int r; - USBI_GET_CONTEXT(ctx); - - /* is someone else waiting to modify poll fds? if so, don't let this thread - * continue event handling */ - usbi_mutex_lock(&ctx->pollfd_modify_lock); - r = ctx->pollfd_modify; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - if (r) { - usbi_dbg("someone else is modifying poll fds"); - return 0; - } - - return 1; -} - - -/** \ingroup poll - * Determine if an active thread is handling events (i.e. if anyone is holding - * the event handling lock). - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 1 if a thread is handling events - * \returns 0 if there are no threads currently handling events - * \see \ref mtasync - */ -int API_EXPORTED libusb_event_handler_active(libusb_context *ctx) -{ - int r; - USBI_GET_CONTEXT(ctx); - - /* is someone else waiting to modify poll fds? if so, don't let this thread - * start event handling -- indicate that event handling is happening */ - usbi_mutex_lock(&ctx->pollfd_modify_lock); - r = ctx->pollfd_modify; - usbi_mutex_unlock(&ctx->pollfd_modify_lock); - if (r) { - usbi_dbg("someone else is modifying poll fds"); - return 1; - } - - return ctx->event_handler_active; -} - -/** \ingroup poll - * Acquire the event waiters lock. This lock is designed to be obtained under - * the situation where you want to be aware when events are completed, but - * some other thread is event handling so calling libusb_handle_events() is not - * allowed. - * - * You then obtain this lock, re-check that another thread is still handling - * events, then call libusb_wait_for_event(). - * - * You only need to use this lock if you are developing an application - * which calls poll() or select() on libusb's file descriptors directly, - * and may potentially be handling events from 2 threads simultaenously. - * If you stick to libusb's event handling loop functions (e.g. - * libusb_handle_events()) then you do not need to be concerned with this - * locking. - * - * \param ctx the context to operate on, or NULL for the default context - * \see \ref mtasync - */ -void API_EXPORTED libusb_lock_event_waiters(libusb_context *ctx) -{ - USBI_GET_CONTEXT(ctx); - usbi_mutex_lock(&ctx->event_waiters_lock); -} - -/** \ingroup poll - * Release the event waiters lock. - * \param ctx the context to operate on, or NULL for the default context - * \see \ref mtasync - */ -void API_EXPORTED libusb_unlock_event_waiters(libusb_context *ctx) -{ - USBI_GET_CONTEXT(ctx); - usbi_mutex_unlock(&ctx->event_waiters_lock); -} - -/** \ingroup poll - * Wait for another thread to signal completion of an event. Must be called - * with the event waiters lock held, see libusb_lock_event_waiters(). - * - * This function will block until any of the following conditions are met: - * -# The timeout expires - * -# A transfer completes - * -# A thread releases the event handling lock through libusb_unlock_events() - * - * Condition 1 is obvious. Condition 2 unblocks your thread after - * the callback for the transfer has completed. Condition 3 is important - * because it means that the thread that was previously handling events is no - * longer doing so, so if any events are to complete, another thread needs to - * step up and start event handling. - * - * This function releases the event waiters lock before putting your thread - * to sleep, and reacquires the lock as it is being woken up. - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv maximum timeout for this blocking function. A NULL value - * indicates unlimited timeout. - * \returns 0 after a transfer completes or another thread stops event handling - * \returns 1 if the timeout expired - * \see \ref mtasync - */ -int API_EXPORTED libusb_wait_for_event(libusb_context *ctx, struct timeval *tv) -{ - struct timespec timeout; - int r; - - USBI_GET_CONTEXT(ctx); - if (tv == NULL) { - usbi_cond_wait(&ctx->event_waiters_cond, &ctx->event_waiters_lock); - return 0; - } - - r = usbi_backend->clock_gettime(USBI_CLOCK_REALTIME, &timeout); - if (r < 0) { - usbi_err(ctx, "failed to read realtime clock, error %d", errno); - return LIBUSB_ERROR_OTHER; - } - - timeout.tv_sec += tv->tv_sec; - timeout.tv_nsec += tv->tv_usec * 1000; - if (timeout.tv_nsec > 1000000000) { - timeout.tv_nsec -= 1000000000; - timeout.tv_sec++; - } - - r = usbi_cond_timedwait(&ctx->event_waiters_cond, - &ctx->event_waiters_lock, &timeout); - return (r == ETIMEDOUT); -} - -static void handle_timeout(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - int r; - - itransfer->flags |= USBI_TRANSFER_TIMED_OUT; - r = libusb_cancel_transfer(transfer); - if (r < 0) - usbi_warn(TRANSFER_CTX(transfer), - "async cancel failed %d errno=%d", r, errno); -} - -static int handle_timeouts_locked(struct libusb_context *ctx) -{ - int r; - struct timespec systime_ts; - struct timeval systime; - struct usbi_transfer *transfer; - - if (list_empty(&ctx->flying_transfers)) - return 0; - - /* get current time */ - r = usbi_backend->clock_gettime(USBI_CLOCK_MONOTONIC, &systime_ts); - if (r < 0) - return r; - - TIMESPEC_TO_TIMEVAL(&systime, &systime_ts); - - /* iterate through flying transfers list, finding all transfers that - * have expired timeouts */ - list_for_each_entry(transfer, &ctx->flying_transfers, list, struct usbi_transfer) { - struct timeval *cur_tv = &transfer->timeout; - - /* if we've reached transfers of infinite timeout, we're all done */ - if (!timerisset(cur_tv)) - return 0; - - /* ignore timeouts we've already handled */ - if (transfer->flags & (USBI_TRANSFER_TIMED_OUT | USBI_TRANSFER_OS_HANDLES_TIMEOUT)) - continue; - - /* if transfer has non-expired timeout, nothing more to do */ - if ((cur_tv->tv_sec > systime.tv_sec) || - (cur_tv->tv_sec == systime.tv_sec && - cur_tv->tv_usec > systime.tv_usec)) - return 0; - - /* otherwise, we've got an expired timeout to handle */ - handle_timeout(transfer); - } - return 0; -} - -static int handle_timeouts(struct libusb_context *ctx) -{ - int r; - USBI_GET_CONTEXT(ctx); - usbi_mutex_lock(&ctx->flying_transfers_lock); - r = handle_timeouts_locked(ctx); - usbi_mutex_unlock(&ctx->flying_transfers_lock); - return r; -} - -#ifdef USBI_TIMERFD_AVAILABLE -static int handle_timerfd_trigger(struct libusb_context *ctx) -{ - int r; - - r = disarm_timerfd(ctx); - if (r < 0) - return r; - - usbi_mutex_lock(&ctx->flying_transfers_lock); - - /* process the timeout that just happened */ - r = handle_timeouts_locked(ctx); - if (r < 0) - goto out; - - /* arm for next timeout*/ - r = arm_timerfd_for_next_timeout(ctx); - -out: - usbi_mutex_unlock(&ctx->flying_transfers_lock); - return r; -} -#endif - -/* do the actual event handling. assumes that no other thread is concurrently - * doing the same thing. */ -static int handle_events(struct libusb_context *ctx, struct timeval *tv) -{ - int r; - struct usbi_pollfd *ipollfd; - POLL_NFDS_TYPE nfds = 0; - struct pollfd *fds; - int i = -1; - int timeout_ms; - - usbi_mutex_lock(&ctx->pollfds_lock); - list_for_each_entry(ipollfd, &ctx->pollfds, list, struct usbi_pollfd) - nfds++; - - /* TODO: malloc when number of fd's changes, not on every poll */ - fds = malloc(sizeof(*fds) * nfds); - if (!fds) { - usbi_mutex_unlock(&ctx->pollfds_lock); - return LIBUSB_ERROR_NO_MEM; - } - - list_for_each_entry(ipollfd, &ctx->pollfds, list, struct usbi_pollfd) { - struct libusb_pollfd *pollfd = &ipollfd->pollfd; - int fd = pollfd->fd; - i++; - fds[i].fd = fd; - fds[i].events = pollfd->events; - fds[i].revents = 0; - } - usbi_mutex_unlock(&ctx->pollfds_lock); - - timeout_ms = (tv->tv_sec * 1000) + (tv->tv_usec / 1000); - - /* round up to next millisecond */ - if (tv->tv_usec % 1000) - timeout_ms++; - - usbi_dbg("poll() %d fds with timeout in %dms", nfds, timeout_ms); - r = usbi_poll(fds, nfds, timeout_ms); - usbi_dbg("poll() returned %d", r); - if (r == 0) { - free(fds); - return handle_timeouts(ctx); - } else if (r == -1 && errno == EINTR) { - free(fds); - return LIBUSB_ERROR_INTERRUPTED; - } else if (r < 0) { - free(fds); - usbi_err(ctx, "poll failed %d err=%d\n", r, errno); - return LIBUSB_ERROR_IO; - } - - /* fd[0] is always the ctrl pipe */ - if (fds[0].revents) { - /* another thread wanted to interrupt event handling, and it succeeded! - * handle any other events that cropped up at the same time, and - * simply return */ - usbi_dbg("caught a fish on the control pipe"); - - if (r == 1) { - r = 0; - goto handled; - } else { - /* prevent OS backend from trying to handle events on ctrl pipe */ - fds[0].revents = 0; - r--; - } - } - -#ifdef USBI_TIMERFD_AVAILABLE - /* on timerfd configurations, fds[1] is the timerfd */ - if (usbi_using_timerfd(ctx) && fds[1].revents) { - /* timerfd indicates that a timeout has expired */ - int ret; - usbi_dbg("timerfd triggered"); - - ret = handle_timerfd_trigger(ctx); - if (ret < 0) { - /* return error code */ - r = ret; - goto handled; - } else if (r == 1) { - /* no more active file descriptors, nothing more to do */ - r = 0; - goto handled; - } else { - /* more events pending... - * prevent OS backend from trying to handle events on timerfd */ - fds[1].revents = 0; - r--; - } - } -#endif - - r = usbi_backend->handle_events(ctx, fds, nfds, r); - if (r) - usbi_err(ctx, "backend handle_events failed with error %d", r); - -handled: - free(fds); - return r; -} - -/* returns the smallest of: - * 1. timeout of next URB - * 2. user-supplied timeout - * returns 1 if there is an already-expired timeout, otherwise returns 0 - * and populates out - */ -static int get_next_timeout(libusb_context *ctx, struct timeval *tv, - struct timeval *out) -{ - struct timeval timeout; - int r = libusb_get_next_timeout(ctx, &timeout); - if (r) { - /* timeout already expired? */ - if (!timerisset(&timeout)) - return 1; - - /* choose the smallest of next URB timeout or user specified timeout */ - if (timercmp(&timeout, tv, <)) - *out = timeout; - else - *out = *tv; - } else { - *out = *tv; - } - return 0; -} - -/** \ingroup poll - * Handle any pending events. - * - * libusb determines "pending events" by checking if any timeouts have expired - * and by checking the set of file descriptors for activity. - * - * If a zero timeval is passed, this function will handle any already-pending - * events and then immediately return in non-blocking style. - * - * If a non-zero timeval is passed and no events are currently pending, this - * function will block waiting for events to handle up until the specified - * timeout. If an event arrives or a signal is raised, this function will - * return early. - * - * If the parameter completed is not NULL then after obtaining the event - * handling lock this function will return immediately if the integer - * pointed to is not 0. This allows for race free waiting for the completion - * of a specific transfer. - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv the maximum time to block waiting for events, or an all zero - * timeval struct for non-blocking mode - * \param completed pointer to completion integer to check, or NULL - * \returns 0 on success, or a LIBUSB_ERROR code on failure - * \see \ref mtasync - */ -int API_EXPORTED libusb_handle_events_timeout_completed(libusb_context *ctx, - struct timeval *tv, int *completed) -{ - int r; - struct timeval poll_timeout; - - USBI_GET_CONTEXT(ctx); - r = get_next_timeout(ctx, tv, &poll_timeout); - if (r) { - /* timeout already expired */ - return handle_timeouts(ctx); - } - -retry: - if (libusb_try_lock_events(ctx) == 0) { - if (completed == NULL || !*completed) { - /* we obtained the event lock: do our own event handling */ - usbi_dbg("doing our own event handling"); - r = handle_events(ctx, &poll_timeout); - } - libusb_unlock_events(ctx); - return r; - } - - /* another thread is doing event handling. wait for thread events that - * notify event completion. */ - libusb_lock_event_waiters(ctx); - - if (completed && *completed) - goto already_done; - - if (!libusb_event_handler_active(ctx)) { - /* we hit a race: whoever was event handling earlier finished in the - * time it took us to reach this point. try the cycle again. */ - libusb_unlock_event_waiters(ctx); - usbi_dbg("event handler was active but went away, retrying"); - goto retry; - } - - usbi_dbg("another thread is doing event handling"); - r = libusb_wait_for_event(ctx, &poll_timeout); - -already_done: - libusb_unlock_event_waiters(ctx); - - if (r < 0) - return r; - else if (r == 1) - return handle_timeouts(ctx); - else - return 0; -} - -/** \ingroup poll - * Handle any pending events - * - * Like libusb_handle_events_timeout_completed(), but without the completed - * parameter, calling this function is equivalent to calling - * libusb_handle_events_timeout_completed() with a NULL completed parameter. - * - * This function is kept primarily for backwards compatibility. - * All new code should call libusb_handle_events_completed() or - * libusb_handle_events_timeout_completed() to avoid race conditions. - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv the maximum time to block waiting for events, or an all zero - * timeval struct for non-blocking mode - * \returns 0 on success, or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_handle_events_timeout(libusb_context *ctx, - struct timeval *tv) -{ - return libusb_handle_events_timeout_completed(ctx, tv, NULL); -} - -/** \ingroup poll - * Handle any pending events in blocking mode. There is currently a timeout - * hardcoded at 60 seconds but we plan to make it unlimited in future. For - * finer control over whether this function is blocking or non-blocking, or - * for control over the timeout, use libusb_handle_events_timeout_completed() - * instead. - * - * This function is kept primarily for backwards compatibility. - * All new code should call libusb_handle_events_completed() or - * libusb_handle_events_timeout_completed() to avoid race conditions. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 0 on success, or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_handle_events(libusb_context *ctx) -{ - struct timeval tv; - tv.tv_sec = 60; - tv.tv_usec = 0; - return libusb_handle_events_timeout_completed(ctx, &tv, NULL); -} - -/** \ingroup poll - * Handle any pending events in blocking mode. - * - * Like libusb_handle_events(), with the addition of a completed parameter - * to allow for race free waiting for the completion of a specific transfer. - * - * See libusb_handle_events_timeout_completed() for details on the completed - * parameter. - * - * \param ctx the context to operate on, or NULL for the default context - * \param completed pointer to completion integer to check, or NULL - * \returns 0 on success, or a LIBUSB_ERROR code on failure - * \see \ref mtasync - */ -int API_EXPORTED libusb_handle_events_completed(libusb_context *ctx, - int *completed) -{ - struct timeval tv; - tv.tv_sec = 60; - tv.tv_usec = 0; - return libusb_handle_events_timeout_completed(ctx, &tv, completed); -} - -/** \ingroup poll - * Handle any pending events by polling file descriptors, without checking if - * any other threads are already doing so. Must be called with the event lock - * held, see libusb_lock_events(). - * - * This function is designed to be called under the situation where you have - * taken the event lock and are calling poll()/select() directly on libusb's - * file descriptors (as opposed to using libusb_handle_events() or similar). - * You detect events on libusb's descriptors, so you then call this function - * with a zero timeout value (while still holding the event lock). - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv the maximum time to block waiting for events, or zero for - * non-blocking mode - * \returns 0 on success, or a LIBUSB_ERROR code on failure - * \see \ref mtasync - */ -int API_EXPORTED libusb_handle_events_locked(libusb_context *ctx, - struct timeval *tv) -{ - int r; - struct timeval poll_timeout; - - USBI_GET_CONTEXT(ctx); - r = get_next_timeout(ctx, tv, &poll_timeout); - if (r) { - /* timeout already expired */ - return handle_timeouts(ctx); - } - - return handle_events(ctx, &poll_timeout); -} - -/** \ingroup poll - * Determines whether your application must apply special timing considerations - * when monitoring libusb's file descriptors. - * - * This function is only useful for applications which retrieve and poll - * libusb's file descriptors in their own main loop (\ref pollmain). - * - * Ordinarily, libusb's event handler needs to be called into at specific - * moments in time (in addition to times when there is activity on the file - * descriptor set). The usual approach is to use libusb_get_next_timeout() - * to learn about when the next timeout occurs, and to adjust your - * poll()/select() timeout accordingly so that you can make a call into the - * library at that time. - * - * Some platforms supported by libusb do not come with this baggage - any - * events relevant to timing will be represented by activity on the file - * descriptor set, and libusb_get_next_timeout() will always return 0. - * This function allows you to detect whether you are running on such a - * platform. - * - * Since v1.0.5. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 0 if you must call into libusb at times determined by - * libusb_get_next_timeout(), or 1 if all timeout events are handled internally - * or through regular activity on the file descriptors. - * \see \ref pollmain "Polling libusb file descriptors for event handling" - */ -int API_EXPORTED libusb_pollfds_handle_timeouts(libusb_context *ctx) -{ -#if defined(USBI_TIMERFD_AVAILABLE) - USBI_GET_CONTEXT(ctx); - return usbi_using_timerfd(ctx); -#else - (void)ctx; - return 0; -#endif -} - -/** \ingroup poll - * Determine the next internal timeout that libusb needs to handle. You only - * need to use this function if you are calling poll() or select() or similar - * on libusb's file descriptors yourself - you do not need to use it if you - * are calling libusb_handle_events() or a variant directly. - * - * You should call this function in your main loop in order to determine how - * long to wait for select() or poll() to return results. libusb needs to be - * called into at this timeout, so you should use it as an upper bound on - * your select() or poll() call. - * - * When the timeout has expired, call into libusb_handle_events_timeout() - * (perhaps in non-blocking mode) so that libusb can handle the timeout. - * - * This function may return 1 (success) and an all-zero timeval. If this is - * the case, it indicates that libusb has a timeout that has already expired - * so you should call libusb_handle_events_timeout() or similar immediately. - * A return code of 0 indicates that there are no pending timeouts. - * - * On some platforms, this function will always returns 0 (no pending - * timeouts). See \ref polltime. - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv output location for a relative time against the current - * clock in which libusb must be called into in order to process timeout events - * \returns 0 if there are no pending timeouts, 1 if a timeout was returned, - * or LIBUSB_ERROR_OTHER on failure - */ -int API_EXPORTED libusb_get_next_timeout(libusb_context *ctx, - struct timeval *tv) -{ - struct usbi_transfer *transfer; - struct timespec cur_ts; - struct timeval cur_tv; - struct timeval *next_timeout; - int r; - int found = 0; - - USBI_GET_CONTEXT(ctx); - if (usbi_using_timerfd(ctx)) - return 0; - - usbi_mutex_lock(&ctx->flying_transfers_lock); - if (list_empty(&ctx->flying_transfers)) { - usbi_mutex_unlock(&ctx->flying_transfers_lock); - usbi_dbg("no URBs, no timeout!"); - return 0; - } - - /* find next transfer which hasn't already been processed as timed out */ - list_for_each_entry(transfer, &ctx->flying_transfers, list, struct usbi_transfer) { - if (transfer->flags & (USBI_TRANSFER_TIMED_OUT | USBI_TRANSFER_OS_HANDLES_TIMEOUT)) - continue; - - /* no timeout for this transfer? */ - if (!timerisset(&transfer->timeout)) - continue; - - found = 1; - break; - } - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - if (!found) { - usbi_dbg("no URB with timeout or all handled by OS; no timeout!"); - return 0; - } - - next_timeout = &transfer->timeout; - - r = usbi_backend->clock_gettime(USBI_CLOCK_MONOTONIC, &cur_ts); - if (r < 0) { - usbi_err(ctx, "failed to read monotonic clock, errno=%d", errno); - return LIBUSB_ERROR_OTHER; - } - TIMESPEC_TO_TIMEVAL(&cur_tv, &cur_ts); - - if (!timercmp(&cur_tv, next_timeout, <)) { - usbi_dbg("first timeout already expired"); - timerclear(tv); - } else { - timersub(next_timeout, &cur_tv, tv); - usbi_dbg("next timeout in %d.%06ds", tv->tv_sec, tv->tv_usec); - } - - return 1; -} - -/** \ingroup poll - * Register notification functions for file descriptor additions/removals. - * These functions will be invoked for every new or removed file descriptor - * that libusb uses as an event source. - * - * To remove notifiers, pass NULL values for the function pointers. - * - * Note that file descriptors may have been added even before you register - * these notifiers (e.g. at libusb_init() time). - * - * Additionally, note that the removal notifier may be called during - * libusb_exit() (e.g. when it is closing file descriptors that were opened - * and added to the poll set at libusb_init() time). If you don't want this, - * remove the notifiers immediately before calling libusb_exit(). - * - * \param ctx the context to operate on, or NULL for the default context - * \param added_cb pointer to function for addition notifications - * \param removed_cb pointer to function for removal notifications - * \param user_data User data to be passed back to callbacks (useful for - * passing context information) - */ -void API_EXPORTED libusb_set_pollfd_notifiers(libusb_context *ctx, - libusb_pollfd_added_cb added_cb, libusb_pollfd_removed_cb removed_cb, - void *user_data) -{ - USBI_GET_CONTEXT(ctx); - ctx->fd_added_cb = added_cb; - ctx->fd_removed_cb = removed_cb; - ctx->fd_cb_user_data = user_data; -} - -/* Add a file descriptor to the list of file descriptors to be monitored. - * events should be specified as a bitmask of events passed to poll(), e.g. - * POLLIN and/or POLLOUT. */ -int usbi_add_pollfd(struct libusb_context *ctx, int fd, short events) -{ - struct usbi_pollfd *ipollfd = malloc(sizeof(*ipollfd)); - if (!ipollfd) - return LIBUSB_ERROR_NO_MEM; - - usbi_dbg("add fd %d events %d", fd, events); - ipollfd->pollfd.fd = fd; - ipollfd->pollfd.events = events; - usbi_mutex_lock(&ctx->pollfds_lock); - list_add_tail(&ipollfd->list, &ctx->pollfds); - usbi_mutex_unlock(&ctx->pollfds_lock); - - if (ctx->fd_added_cb) - ctx->fd_added_cb(fd, events, ctx->fd_cb_user_data); - return 0; -} - -/* Remove a file descriptor from the list of file descriptors to be polled. */ -void usbi_remove_pollfd(struct libusb_context *ctx, int fd) -{ - struct usbi_pollfd *ipollfd; - int found = 0; - - usbi_dbg("remove fd %d", fd); - usbi_mutex_lock(&ctx->pollfds_lock); - list_for_each_entry(ipollfd, &ctx->pollfds, list, struct usbi_pollfd) - if (ipollfd->pollfd.fd == fd) { - found = 1; - break; - } - - if (!found) { - usbi_dbg("couldn't find fd %d to remove", fd); - usbi_mutex_unlock(&ctx->pollfds_lock); - return; - } - - list_del(&ipollfd->list); - usbi_mutex_unlock(&ctx->pollfds_lock); - free(ipollfd); - if (ctx->fd_removed_cb) - ctx->fd_removed_cb(fd, ctx->fd_cb_user_data); -} - -/** \ingroup poll - * Retrieve a list of file descriptors that should be polled by your main loop - * as libusb event sources. - * - * The returned list is NULL-terminated and should be freed with free() when - * done. The actual list contents must not be touched. - * - * As file descriptors are a Unix-specific concept, this function is not - * available on Windows and will always return NULL. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns a NULL-terminated list of libusb_pollfd structures - * \returns NULL on error - * \returns NULL on platforms where the functionality is not available - */ -DEFAULT_VISIBILITY -const struct libusb_pollfd ** LIBUSB_CALL libusb_get_pollfds( - libusb_context *ctx) -{ -#ifndef OS_WINDOWS - struct libusb_pollfd **ret = NULL; - struct usbi_pollfd *ipollfd; - size_t i = 0; - size_t cnt = 0; - USBI_GET_CONTEXT(ctx); - - usbi_mutex_lock(&ctx->pollfds_lock); - list_for_each_entry(ipollfd, &ctx->pollfds, list, struct usbi_pollfd) - cnt++; - - ret = calloc(cnt + 1, sizeof(struct libusb_pollfd *)); - if (!ret) - goto out; - - list_for_each_entry(ipollfd, &ctx->pollfds, list, struct usbi_pollfd) - ret[i++] = (struct libusb_pollfd *) ipollfd; - ret[cnt] = NULL; - -out: - usbi_mutex_unlock(&ctx->pollfds_lock); - return (const struct libusb_pollfd **) ret; -#else - usbi_err(ctx, "external polling of libusb's internal descriptors "\ - "is not yet supported on Windows platforms"); - return NULL; -#endif -} - -/* Backends call this from handle_events to report disconnection of a device. - * The transfers get cancelled appropriately. - */ -void usbi_handle_disconnect(struct libusb_device_handle *handle) -{ - struct usbi_transfer *cur; - struct usbi_transfer *to_cancel; - - usbi_dbg("device %d.%d", - handle->dev->bus_number, handle->dev->device_address); - - /* terminate all pending transfers with the LIBUSB_TRANSFER_NO_DEVICE - * status code. - * - * this is a bit tricky because: - * 1. we can't do transfer completion while holding flying_transfers_lock - * 2. the transfers list can change underneath us - if we were to build a - * list of transfers to complete (while holding look), the situation - * might be different by the time we come to free them - * - * so we resort to a loop-based approach as below - * FIXME: is this still potentially racy? - */ - - while (1) { - usbi_mutex_lock(&HANDLE_CTX(handle)->flying_transfers_lock); - to_cancel = NULL; - list_for_each_entry(cur, &HANDLE_CTX(handle)->flying_transfers, list, struct usbi_transfer) - if (USBI_TRANSFER_TO_LIBUSB_TRANSFER(cur)->dev_handle == handle) { - to_cancel = cur; - break; - } - usbi_mutex_unlock(&HANDLE_CTX(handle)->flying_transfers_lock); - - if (!to_cancel) - break; - - usbi_backend->clear_transfer_priv(to_cancel); - usbi_handle_transfer_completion(to_cancel, LIBUSB_TRANSFER_NO_DEVICE); - } - -} diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.def b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.def deleted file mode 100644 index 1d6a5d2..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.def +++ /dev/null @@ -1,120 +0,0 @@ -LIBRARY -EXPORTS - libusb_alloc_transfer - libusb_alloc_transfer@4 = libusb_alloc_transfer - libusb_attach_kernel_driver - libusb_attach_kernel_driver@8 = libusb_attach_kernel_driver - libusb_bulk_transfer - libusb_bulk_transfer@24 = libusb_bulk_transfer - libusb_cancel_transfer - libusb_cancel_transfer@4 = libusb_cancel_transfer - libusb_claim_interface - libusb_claim_interface@8 = libusb_claim_interface - libusb_clear_halt - libusb_clear_halt@8 = libusb_clear_halt - libusb_close - libusb_close@4 = libusb_close - libusb_control_transfer - libusb_control_transfer@32 = libusb_control_transfer - libusb_detach_kernel_driver - libusb_detach_kernel_driver@8 = libusb_detach_kernel_driver - libusb_error_name - libusb_error_name@4 = libusb_error_name - libusb_event_handler_active - libusb_event_handler_active@4 = libusb_event_handler_active - libusb_event_handling_ok - libusb_event_handling_ok@4 = libusb_event_handling_ok - libusb_exit - libusb_exit@4 = libusb_exit - libusb_free_config_descriptor - libusb_free_config_descriptor@4 = libusb_free_config_descriptor - libusb_free_device_list - libusb_free_device_list@8 = libusb_free_device_list - libusb_free_transfer - libusb_free_transfer@4 = libusb_free_transfer - libusb_get_active_config_descriptor - libusb_get_active_config_descriptor@8 = libusb_get_active_config_descriptor - libusb_get_bus_number - libusb_get_bus_number@4 = libusb_get_bus_number - libusb_get_config_descriptor - libusb_get_config_descriptor@12 = libusb_get_config_descriptor - libusb_get_config_descriptor_by_value - libusb_get_config_descriptor_by_value@12 = libusb_get_config_descriptor_by_value - libusb_get_configuration - libusb_get_configuration@8 = libusb_get_configuration - libusb_get_device - libusb_get_device@4 = libusb_get_device - libusb_get_device_address - libusb_get_device_address@4 = libusb_get_device_address - libusb_get_device_descriptor - libusb_get_device_descriptor@8 = libusb_get_device_descriptor - libusb_get_device_list - libusb_get_device_list@8 = libusb_get_device_list - libusb_get_device_speed - libusb_get_device_speed@4 = libusb_get_device_speed - libusb_get_max_iso_packet_size - libusb_get_max_iso_packet_size@8 = libusb_get_max_iso_packet_size - libusb_get_max_packet_size - libusb_get_max_packet_size@8 = libusb_get_max_packet_size - libusb_get_next_timeout - libusb_get_next_timeout@8 = libusb_get_next_timeout - libusb_get_pollfds - libusb_get_pollfds@4 = libusb_get_pollfds - libusb_get_string_descriptor_ascii - libusb_get_string_descriptor_ascii@16 = libusb_get_string_descriptor_ascii - libusb_get_version - libusb_get_version@0 = libusb_get_version - libusb_handle_events - libusb_handle_events@4 = libusb_handle_events - libusb_handle_events_completed - libusb_handle_events_completed@8 = libusb_handle_events_completed - libusb_handle_events_locked - libusb_handle_events_locked@8 = libusb_handle_events_locked - libusb_handle_events_timeout - libusb_handle_events_timeout@8 = libusb_handle_events_timeout - libusb_handle_events_timeout_completed - libusb_handle_events_timeout_completed@12 = libusb_handle_events_timeout_completed - libusb_has_capability - libusb_has_capability@4 = libusb_has_capability - libusb_init - libusb_init@4 = libusb_init - libusb_interrupt_transfer - libusb_interrupt_transfer@24 = libusb_interrupt_transfer - libusb_kernel_driver_active - libusb_kernel_driver_active@8 = libusb_kernel_driver_active - libusb_lock_event_waiters - libusb_lock_event_waiters@4 = libusb_lock_event_waiters - libusb_lock_events - libusb_lock_events@4 = libusb_lock_events - libusb_open - libusb_open@8 = libusb_open - libusb_open_device_with_vid_pid - libusb_open_device_with_vid_pid@12 = libusb_open_device_with_vid_pid - libusb_pollfds_handle_timeouts - libusb_pollfds_handle_timeouts@4 = libusb_pollfds_handle_timeouts - libusb_ref_device - libusb_ref_device@4 = libusb_ref_device - libusb_release_interface - libusb_release_interface@8 = libusb_release_interface - libusb_reset_device - libusb_reset_device@4 = libusb_reset_device - libusb_set_configuration - libusb_set_configuration@8 = libusb_set_configuration - libusb_set_debug - libusb_set_debug@8 = libusb_set_debug - libusb_set_interface_alt_setting - libusb_set_interface_alt_setting@12 = libusb_set_interface_alt_setting - libusb_set_pollfd_notifiers - libusb_set_pollfd_notifiers@16 = libusb_set_pollfd_notifiers - libusb_submit_transfer - libusb_submit_transfer@4 = libusb_submit_transfer - libusb_try_lock_events - libusb_try_lock_events@4 = libusb_try_lock_events - libusb_unlock_event_waiters - libusb_unlock_event_waiters@4 = libusb_unlock_event_waiters - libusb_unlock_events - libusb_unlock_events@4 = libusb_unlock_events - libusb_unref_device - libusb_unref_device@4 = libusb_unref_device - libusb_wait_for_event - libusb_wait_for_event@8 = libusb_wait_for_event diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.la b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.la deleted file mode 100644 index 384d0b2..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.la +++ /dev/null @@ -1,41 +0,0 @@ -# libusb-1.0.la - a libtool library file -# Generated by libtool (GNU libtool) 2.2.10 -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='libusb-1.0.so.0' - -# Names of this library. -library_names='libusb-1.0.so.0.1.0 libusb-1.0.so.0 libusb-1.0.so' - -# The name of the static archive. -old_library='libusb-1.0.a' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags=' -pthread' - -# Libraries that this one depends upon. -dependency_libs=' -lrt' - -# Names of additional weak libraries provided by this library -weak_library_names='' - -# Version information for libusb-1.0. -current=1 -age=1 -revision=0 - -# Is this an already installed library? -installed=no - -# Should we warn about portability when linking against -modules? -shouldnotlink=no - -# Files to dlopen/dlpreopen -dlopen='' -dlpreopen='' - -# Directory that this library needs to be installed in: -libdir='/usr/local/lib' diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.rc b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.rc deleted file mode 100644 index a59a430..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb-1.0.rc +++ /dev/null @@ -1,56 +0,0 @@ -/* - * For Windows: input this file to the Resoure Compiler to produce a binary - * .res file. This is then embedded in the resultant library (like any other - * compilation object). - * The information can then be queried using standard APIs and can also be - * viewed with utilities such as Windows Explorer. - */ -#include "winresrc.h" - -#include "version.h" -#ifndef LIBUSB_VERSIONSTRING -#define LU_STR(s) #s -#define LU_XSTR(s) LU_STR(s) -#if LIBUSB_NANO > 0 -#define LIBUSB_VERSIONSTRING LU_XSTR(LIBUSB_MAJOR) "." LU_XSTR(LIBUSB_MINOR) "." LU_XSTR(LIBUSB_MICRO) "." LU_XSTR(LIBUSB_NANO) LIBUSB_RC "\0" -#else -#define LIBUSB_VERSIONSTRING LU_XSTR(LIBUSB_MAJOR) "." LU_XSTR(LIBUSB_MINOR) "." LU_XSTR(LIBUSB_MICRO) LIBUSB_RC "\0" -#endif -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION LIBUSB_MAJOR,LIBUSB_MINOR,LIBUSB_MICRO,LIBUSB_NANO - PRODUCTVERSION LIBUSB_MAJOR,LIBUSB_MINOR,LIBUSB_MICRO,LIBUSB_NANO - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "\0" - VALUE "CompanyName", "libusb.org\0" - VALUE "FileDescription", "C library for writing portable USB drivers in userspace\0" - VALUE "FileVersion", LIBUSB_VERSIONSTRING - VALUE "InternalName", "libusb\0" - VALUE "LegalCopyright", "See individual source files, GNU LGPL v2.1 or later.\0" - VALUE "LegalTrademarks", "http://www.gnu.org/licenses/lgpl-2.1.html\0" - VALUE "OriginalFilename", "libusb-1.0.dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "libusb-1.0\0" - VALUE "ProductVersion", LIBUSB_VERSIONSTRING - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb.h deleted file mode 100644 index 58b406f..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb.h +++ /dev/null @@ -1,1443 +0,0 @@ -/* - * Public libusb header file - * Copyright (C) 2007-2008 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_H -#define LIBUSB_H - -#ifdef _MSC_VER -/* on MS environments, the inline keyword is available in C++ only */ -#define inline __inline -/* ssize_t is also not available (copy/paste from MinGW) */ -#ifndef _SSIZE_T_DEFINED -#define _SSIZE_T_DEFINED -#undef ssize_t -#ifdef _WIN64 - typedef __int64 ssize_t; -#else - typedef int ssize_t; -#endif /* _WIN64 */ -#endif /* _SSIZE_T_DEFINED */ -#endif /* _MSC_VER */ - -/* stdint.h is also not usually available on MS */ -#if defined(_MSC_VER) && (_MSC_VER < 1600) && (!defined(_STDINT)) && (!defined(_STDINT_H)) -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -#else -#include -#endif - -#include -#include -#include - -#if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__) -#include -#endif - -/* 'interface' might be defined as a macro on Windows, so we need to - * undefine it so as not to break the current libusb API, because - * libusb_config_descriptor has an 'interface' member - * As this can be problematic if you include windows.h after libusb.h - * in your sources, we force windows.h to be included first. */ -#if defined(_WIN32) || defined(__CYGWIN__) -#include -#if defined(interface) -#undef interface -#endif -#endif - -/** \def LIBUSB_CALL - * \ingroup misc - * libusb's Windows calling convention. - * - * Under Windows, the selection of available compilers and configurations - * means that, unlike other platforms, there is not one true calling - * convention (calling convention: the manner in which parameters are - * passed to funcions in the generated assembly code). - * - * Matching the Windows API itself, libusb uses the WINAPI convention (which - * translates to the stdcall convention) and guarantees that the - * library is compiled in this way. The public header file also includes - * appropriate annotations so that your own software will use the right - * convention, even if another convention is being used by default within - * your codebase. - * - * The one consideration that you must apply in your software is to mark - * all functions which you use as libusb callbacks with this LIBUSB_CALL - * annotation, so that they too get compiled for the correct calling - * convention. - * - * On non-Windows operating systems, this macro is defined as nothing. This - * means that you can apply it to your code without worrying about - * cross-platform compatibility. - */ -/* LIBUSB_CALL must be defined on both definition and declaration of libusb - * functions. You'd think that declaration would be enough, but cygwin will - * complain about conflicting types unless both are marked this way. - * The placement of this macro is important too; it must appear after the - * return type, before the function name. See internal documentation for - * API_EXPORTED. - */ -#if defined(_WIN32) || defined(__CYGWIN__) -#define LIBUSB_CALL WINAPI -#else -#define LIBUSB_CALL -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** \def libusb_cpu_to_le16 - * \ingroup misc - * Convert a 16-bit value from host-endian to little-endian format. On - * little endian systems, this function does nothing. On big endian systems, - * the bytes are swapped. - * \param x the host-endian value to convert - * \returns the value in little-endian byte order - */ -static inline uint16_t libusb_cpu_to_le16(const uint16_t x) -{ - union { - uint8_t b8[2]; - uint16_t b16; - } _tmp; - _tmp.b8[1] = x >> 8; - _tmp.b8[0] = x & 0xff; - return _tmp.b16; -} - -/** \def libusb_le16_to_cpu - * \ingroup misc - * Convert a 16-bit value from little-endian to host-endian format. On - * little endian systems, this function does nothing. On big endian systems, - * the bytes are swapped. - * \param x the little-endian value to convert - * \returns the value in host-endian byte order - */ -#define libusb_le16_to_cpu libusb_cpu_to_le16 - -/* standard USB stuff */ - -/** \ingroup desc - * Device and/or Interface Class codes */ -enum libusb_class_code { - /** In the context of a \ref libusb_device_descriptor "device descriptor", - * this bDeviceClass value indicates that each interface specifies its - * own class information and all interfaces operate independently. - */ - LIBUSB_CLASS_PER_INTERFACE = 0, - - /** Audio class */ - LIBUSB_CLASS_AUDIO = 1, - - /** Communications class */ - LIBUSB_CLASS_COMM = 2, - - /** Human Interface Device class */ - LIBUSB_CLASS_HID = 3, - - /** Physical */ - LIBUSB_CLASS_PHYSICAL = 5, - - /** Printer class */ - LIBUSB_CLASS_PRINTER = 7, - - /** Image class */ - LIBUSB_CLASS_PTP = 6, /* legacy name from libusb-0.1 usb.h */ - LIBUSB_CLASS_IMAGE = 6, - - /** Mass storage class */ - LIBUSB_CLASS_MASS_STORAGE = 8, - - /** Hub class */ - LIBUSB_CLASS_HUB = 9, - - /** Data class */ - LIBUSB_CLASS_DATA = 10, - - /** Smart Card */ - LIBUSB_CLASS_SMART_CARD = 0x0b, - - /** Content Security */ - LIBUSB_CLASS_CONTENT_SECURITY = 0x0d, - - /** Video */ - LIBUSB_CLASS_VIDEO = 0x0e, - - /** Personal Healthcare */ - LIBUSB_CLASS_PERSONAL_HEALTHCARE = 0x0f, - - /** Diagnostic Device */ - LIBUSB_CLASS_DIAGNOSTIC_DEVICE = 0xdc, - - /** Wireless class */ - LIBUSB_CLASS_WIRELESS = 0xe0, - - /** Application class */ - LIBUSB_CLASS_APPLICATION = 0xfe, - - /** Class is vendor-specific */ - LIBUSB_CLASS_VENDOR_SPEC = 0xff -}; - -/** \ingroup desc - * Descriptor types as defined by the USB specification. */ -enum libusb_descriptor_type { - /** Device descriptor. See libusb_device_descriptor. */ - LIBUSB_DT_DEVICE = 0x01, - - /** Configuration descriptor. See libusb_config_descriptor. */ - LIBUSB_DT_CONFIG = 0x02, - - /** String descriptor */ - LIBUSB_DT_STRING = 0x03, - - /** Interface descriptor. See libusb_interface_descriptor. */ - LIBUSB_DT_INTERFACE = 0x04, - - /** Endpoint descriptor. See libusb_endpoint_descriptor. */ - LIBUSB_DT_ENDPOINT = 0x05, - - /** HID descriptor */ - LIBUSB_DT_HID = 0x21, - - /** HID report descriptor */ - LIBUSB_DT_REPORT = 0x22, - - /** Physical descriptor */ - LIBUSB_DT_PHYSICAL = 0x23, - - /** Hub descriptor */ - LIBUSB_DT_HUB = 0x29, -}; - -/* Descriptor sizes per descriptor type */ -#define LIBUSB_DT_DEVICE_SIZE 18 -#define LIBUSB_DT_CONFIG_SIZE 9 -#define LIBUSB_DT_INTERFACE_SIZE 9 -#define LIBUSB_DT_ENDPOINT_SIZE 7 -#define LIBUSB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ -#define LIBUSB_DT_HUB_NONVAR_SIZE 7 - -#define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0f /* in bEndpointAddress */ -#define LIBUSB_ENDPOINT_DIR_MASK 0x80 - -/** \ingroup desc - * Endpoint direction. Values for bit 7 of the - * \ref libusb_endpoint_descriptor::bEndpointAddress "endpoint address" scheme. - */ -enum libusb_endpoint_direction { - /** In: device-to-host */ - LIBUSB_ENDPOINT_IN = 0x80, - - /** Out: host-to-device */ - LIBUSB_ENDPOINT_OUT = 0x00 -}; - -#define LIBUSB_TRANSFER_TYPE_MASK 0x03 /* in bmAttributes */ - -/** \ingroup desc - * Endpoint transfer type. Values for bits 0:1 of the - * \ref libusb_endpoint_descriptor::bmAttributes "endpoint attributes" field. - */ -enum libusb_transfer_type { - /** Control endpoint */ - LIBUSB_TRANSFER_TYPE_CONTROL = 0, - - /** Isochronous endpoint */ - LIBUSB_TRANSFER_TYPE_ISOCHRONOUS = 1, - - /** Bulk endpoint */ - LIBUSB_TRANSFER_TYPE_BULK = 2, - - /** Interrupt endpoint */ - LIBUSB_TRANSFER_TYPE_INTERRUPT = 3 -}; - -/** \ingroup misc - * Standard requests, as defined in table 9-3 of the USB2 specifications */ -enum libusb_standard_request { - /** Request status of the specific recipient */ - LIBUSB_REQUEST_GET_STATUS = 0x00, - - /** Clear or disable a specific feature */ - LIBUSB_REQUEST_CLEAR_FEATURE = 0x01, - - /* 0x02 is reserved */ - - /** Set or enable a specific feature */ - LIBUSB_REQUEST_SET_FEATURE = 0x03, - - /* 0x04 is reserved */ - - /** Set device address for all future accesses */ - LIBUSB_REQUEST_SET_ADDRESS = 0x05, - - /** Get the specified descriptor */ - LIBUSB_REQUEST_GET_DESCRIPTOR = 0x06, - - /** Used to update existing descriptors or add new descriptors */ - LIBUSB_REQUEST_SET_DESCRIPTOR = 0x07, - - /** Get the current device configuration value */ - LIBUSB_REQUEST_GET_CONFIGURATION = 0x08, - - /** Set device configuration */ - LIBUSB_REQUEST_SET_CONFIGURATION = 0x09, - - /** Return the selected alternate setting for the specified interface */ - LIBUSB_REQUEST_GET_INTERFACE = 0x0A, - - /** Select an alternate interface for the specified interface */ - LIBUSB_REQUEST_SET_INTERFACE = 0x0B, - - /** Set then report an endpoint's synchronization frame */ - LIBUSB_REQUEST_SYNCH_FRAME = 0x0C, -}; - -/** \ingroup misc - * Request type bits of the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field in control - * transfers. */ -enum libusb_request_type { - /** Standard */ - LIBUSB_REQUEST_TYPE_STANDARD = (0x00 << 5), - - /** Class */ - LIBUSB_REQUEST_TYPE_CLASS = (0x01 << 5), - - /** Vendor */ - LIBUSB_REQUEST_TYPE_VENDOR = (0x02 << 5), - - /** Reserved */ - LIBUSB_REQUEST_TYPE_RESERVED = (0x03 << 5) -}; - -/** \ingroup misc - * Recipient bits of the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field in control - * transfers. Values 4 through 31 are reserved. */ -enum libusb_request_recipient { - /** Device */ - LIBUSB_RECIPIENT_DEVICE = 0x00, - - /** Interface */ - LIBUSB_RECIPIENT_INTERFACE = 0x01, - - /** Endpoint */ - LIBUSB_RECIPIENT_ENDPOINT = 0x02, - - /** Other */ - LIBUSB_RECIPIENT_OTHER = 0x03, -}; - -#define LIBUSB_ISO_SYNC_TYPE_MASK 0x0C - -/** \ingroup desc - * Synchronization type for isochronous endpoints. Values for bits 2:3 of the - * \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in - * libusb_endpoint_descriptor. - */ -enum libusb_iso_sync_type { - /** No synchronization */ - LIBUSB_ISO_SYNC_TYPE_NONE = 0, - - /** Asynchronous */ - LIBUSB_ISO_SYNC_TYPE_ASYNC = 1, - - /** Adaptive */ - LIBUSB_ISO_SYNC_TYPE_ADAPTIVE = 2, - - /** Synchronous */ - LIBUSB_ISO_SYNC_TYPE_SYNC = 3 -}; - -#define LIBUSB_ISO_USAGE_TYPE_MASK 0x30 - -/** \ingroup desc - * Usage type for isochronous endpoints. Values for bits 4:5 of the - * \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in - * libusb_endpoint_descriptor. - */ -enum libusb_iso_usage_type { - /** Data endpoint */ - LIBUSB_ISO_USAGE_TYPE_DATA = 0, - - /** Feedback endpoint */ - LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1, - - /** Implicit feedback Data endpoint */ - LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2, -}; - -/** \ingroup desc - * A structure representing the standard USB device descriptor. This - * descriptor is documented in section 9.6.1 of the USB 2.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_device_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_DEVICE LIBUSB_DT_DEVICE in this - * context. */ - uint8_t bDescriptorType; - - /** USB specification release number in binary-coded decimal. A value of - * 0x0200 indicates USB 2.0, 0x0110 indicates USB 1.1, etc. */ - uint16_t bcdUSB; - - /** USB-IF class code for the device. See \ref libusb_class_code. */ - uint8_t bDeviceClass; - - /** USB-IF subclass code for the device, qualified by the bDeviceClass - * value */ - uint8_t bDeviceSubClass; - - /** USB-IF protocol code for the device, qualified by the bDeviceClass and - * bDeviceSubClass values */ - uint8_t bDeviceProtocol; - - /** Maximum packet size for endpoint 0 */ - uint8_t bMaxPacketSize0; - - /** USB-IF vendor ID */ - uint16_t idVendor; - - /** USB-IF product ID */ - uint16_t idProduct; - - /** Device release number in binary-coded decimal */ - uint16_t bcdDevice; - - /** Index of string descriptor describing manufacturer */ - uint8_t iManufacturer; - - /** Index of string descriptor describing product */ - uint8_t iProduct; - - /** Index of string descriptor containing device serial number */ - uint8_t iSerialNumber; - - /** Number of possible configurations */ - uint8_t bNumConfigurations; -}; - -/** \ingroup desc - * A structure representing the standard USB endpoint descriptor. This - * descriptor is documented in section 9.6.3 of the USB 2.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_endpoint_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_ENDPOINT LIBUSB_DT_ENDPOINT in - * this context. */ - uint8_t bDescriptorType; - - /** The address of the endpoint described by this descriptor. Bits 0:3 are - * the endpoint number. Bits 4:6 are reserved. Bit 7 indicates direction, - * see \ref libusb_endpoint_direction. - */ - uint8_t bEndpointAddress; - - /** Attributes which apply to the endpoint when it is configured using - * the bConfigurationValue. Bits 0:1 determine the transfer type and - * correspond to \ref libusb_transfer_type. Bits 2:3 are only used for - * isochronous endpoints and correspond to \ref libusb_iso_sync_type. - * Bits 4:5 are also only used for isochronous endpoints and correspond to - * \ref libusb_iso_usage_type. Bits 6:7 are reserved. - */ - uint8_t bmAttributes; - - /** Maximum packet size this endpoint is capable of sending/receiving. */ - uint16_t wMaxPacketSize; - - /** Interval for polling endpoint for data transfers. */ - uint8_t bInterval; - - /** For audio devices only: the rate at which synchronization feedback - * is provided. */ - uint8_t bRefresh; - - /** For audio devices only: the address if the synch endpoint */ - uint8_t bSynchAddress; - - /** Extra descriptors. If libusb encounters unknown endpoint descriptors, - * it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. */ - int extra_length; -}; - -/** \ingroup desc - * A structure representing the standard USB interface descriptor. This - * descriptor is documented in section 9.6.5 of the USB 2.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_interface_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_INTERFACE LIBUSB_DT_INTERFACE - * in this context. */ - uint8_t bDescriptorType; - - /** Number of this interface */ - uint8_t bInterfaceNumber; - - /** Value used to select this alternate setting for this interface */ - uint8_t bAlternateSetting; - - /** Number of endpoints used by this interface (excluding the control - * endpoint). */ - uint8_t bNumEndpoints; - - /** USB-IF class code for this interface. See \ref libusb_class_code. */ - uint8_t bInterfaceClass; - - /** USB-IF subclass code for this interface, qualified by the - * bInterfaceClass value */ - uint8_t bInterfaceSubClass; - - /** USB-IF protocol code for this interface, qualified by the - * bInterfaceClass and bInterfaceSubClass values */ - uint8_t bInterfaceProtocol; - - /** Index of string descriptor describing this interface */ - uint8_t iInterface; - - /** Array of endpoint descriptors. This length of this array is determined - * by the bNumEndpoints field. */ - const struct libusb_endpoint_descriptor *endpoint; - - /** Extra descriptors. If libusb encounters unknown interface descriptors, - * it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. */ - int extra_length; -}; - -/** \ingroup desc - * A collection of alternate settings for a particular USB interface. - */ -struct libusb_interface { - /** Array of interface descriptors. The length of this array is determined - * by the num_altsetting field. */ - const struct libusb_interface_descriptor *altsetting; - - /** The number of alternate settings that belong to this interface */ - int num_altsetting; -}; - -/** \ingroup desc - * A structure representing the standard USB configuration descriptor. This - * descriptor is documented in section 9.6.3 of the USB 2.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_config_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_CONFIG LIBUSB_DT_CONFIG - * in this context. */ - uint8_t bDescriptorType; - - /** Total length of data returned for this configuration */ - uint16_t wTotalLength; - - /** Number of interfaces supported by this configuration */ - uint8_t bNumInterfaces; - - /** Identifier value for this configuration */ - uint8_t bConfigurationValue; - - /** Index of string descriptor describing this configuration */ - uint8_t iConfiguration; - - /** Configuration characteristics */ - uint8_t bmAttributes; - - /** Maximum power consumption of the USB device from this bus in this - * configuration when the device is fully opreation. Expressed in units - * of 2 mA. */ - uint8_t MaxPower; - - /** Array of interfaces supported by this configuration. The length of - * this array is determined by the bNumInterfaces field. */ - const struct libusb_interface *interface; - - /** Extra descriptors. If libusb encounters unknown configuration - * descriptors, it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. */ - int extra_length; -}; - -/** \ingroup asyncio - * Setup packet for control transfers. */ -struct libusb_control_setup { - /** Request type. Bits 0:4 determine recipient, see - * \ref libusb_request_recipient. Bits 5:6 determine type, see - * \ref libusb_request_type. Bit 7 determines data transfer direction, see - * \ref libusb_endpoint_direction. - */ - uint8_t bmRequestType; - - /** Request. If the type bits of bmRequestType are equal to - * \ref libusb_request_type::LIBUSB_REQUEST_TYPE_STANDARD - * "LIBUSB_REQUEST_TYPE_STANDARD" then this field refers to - * \ref libusb_standard_request. For other cases, use of this field is - * application-specific. */ - uint8_t bRequest; - - /** Value. Varies according to request */ - uint16_t wValue; - - /** Index. Varies according to request, typically used to pass an index - * or offset */ - uint16_t wIndex; - - /** Number of bytes to transfer */ - uint16_t wLength; -}; - -#define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup)) - -/* libusb */ - -struct libusb_context; -struct libusb_device; -struct libusb_device_handle; - -/** \ingroup lib - * Structure representing the libusb version. - */ -struct libusb_version { - /** Library major version. */ - const uint16_t major; - - /** Library minor version. */ - const uint16_t minor; - - /** Library micro version. */ - const uint16_t micro; - - /** Library nano version. This field is only nonzero on Windows. */ - const uint16_t nano; - - /** Library release candidate suffix string, e.g. "-rc4". */ - const char *rc; - - /** Output of `git describe --tags` at library build time. */ - const char *describe; -}; - -/** \ingroup lib - * Structure representing a libusb session. The concept of individual libusb - * sessions allows for your program to use two libraries (or dynamically - * load two modules) which both independently use libusb. This will prevent - * interference between the individual libusb users - for example - * libusb_set_debug() will not affect the other user of the library, and - * libusb_exit() will not destroy resources that the other user is still - * using. - * - * Sessions are created by libusb_init() and destroyed through libusb_exit(). - * If your application is guaranteed to only ever include a single libusb - * user (i.e. you), you do not have to worry about contexts: pass NULL in - * every function call where a context is required. The default context - * will be used. - * - * For more information, see \ref contexts. - */ -typedef struct libusb_context libusb_context; - -/** \ingroup dev - * Structure representing a USB device detected on the system. This is an - * opaque type for which you are only ever provided with a pointer, usually - * originating from libusb_get_device_list(). - * - * Certain operations can be performed on a device, but in order to do any - * I/O you will have to first obtain a device handle using libusb_open(). - * - * Devices are reference counted with libusb_device_ref() and - * libusb_device_unref(), and are freed when the reference count reaches 0. - * New devices presented by libusb_get_device_list() have a reference count of - * 1, and libusb_free_device_list() can optionally decrease the reference count - * on all devices in the list. libusb_open() adds another reference which is - * later destroyed by libusb_close(). - */ -typedef struct libusb_device libusb_device; - - -/** \ingroup dev - * Structure representing a handle on a USB device. This is an opaque type for - * which you are only ever provided with a pointer, usually originating from - * libusb_open(). - * - * A device handle is used to perform I/O and other operations. When finished - * with a device handle, you should call libusb_close(). - */ -typedef struct libusb_device_handle libusb_device_handle; - -/** \ingroup dev - * Speed codes. Indicates the speed at which the device is operating. - */ -enum libusb_speed { - /** The OS doesn't report or know the device speed. */ - LIBUSB_SPEED_UNKNOWN = 0, - - /** The device is operating at low speed (1.5MBit/s). */ - LIBUSB_SPEED_LOW = 1, - - /** The device is operating at full speed (12MBit/s). */ - LIBUSB_SPEED_FULL = 2, - - /** The device is operating at high speed (480MBit/s). */ - LIBUSB_SPEED_HIGH = 3, - - /** The device is operating at super speed (5000MBit/s). */ - LIBUSB_SPEED_SUPER = 4, -}; - -/** \ingroup misc - * Error codes. Most libusb functions return 0 on success or one of these - * codes on failure. - * You can call \ref libusb_error_name() to retrieve a string representation - * of an error code. - */ -enum libusb_error { - /** Success (no error) */ - LIBUSB_SUCCESS = 0, - - /** Input/output error */ - LIBUSB_ERROR_IO = -1, - - /** Invalid parameter */ - LIBUSB_ERROR_INVALID_PARAM = -2, - - /** Access denied (insufficient permissions) */ - LIBUSB_ERROR_ACCESS = -3, - - /** No such device (it may have been disconnected) */ - LIBUSB_ERROR_NO_DEVICE = -4, - - /** Entity not found */ - LIBUSB_ERROR_NOT_FOUND = -5, - - /** Resource busy */ - LIBUSB_ERROR_BUSY = -6, - - /** Operation timed out */ - LIBUSB_ERROR_TIMEOUT = -7, - - /** Overflow */ - LIBUSB_ERROR_OVERFLOW = -8, - - /** Pipe error */ - LIBUSB_ERROR_PIPE = -9, - - /** System call interrupted (perhaps due to signal) */ - LIBUSB_ERROR_INTERRUPTED = -10, - - /** Insufficient memory */ - LIBUSB_ERROR_NO_MEM = -11, - - /** Operation not supported or unimplemented on this platform */ - LIBUSB_ERROR_NOT_SUPPORTED = -12, - - /* NB! Remember to update libusb_error_name() - when adding new error codes here. */ - - /** Other error */ - LIBUSB_ERROR_OTHER = -99, -}; - -/** \ingroup asyncio - * Transfer status codes */ -enum libusb_transfer_status { - /** Transfer completed without error. Note that this does not indicate - * that the entire amount of requested data was transferred. */ - LIBUSB_TRANSFER_COMPLETED, - - /** Transfer failed */ - LIBUSB_TRANSFER_ERROR, - - /** Transfer timed out */ - LIBUSB_TRANSFER_TIMED_OUT, - - /** Transfer was cancelled */ - LIBUSB_TRANSFER_CANCELLED, - - /** For bulk/interrupt endpoints: halt condition detected (endpoint - * stalled). For control endpoints: control request not supported. */ - LIBUSB_TRANSFER_STALL, - - /** Device was disconnected */ - LIBUSB_TRANSFER_NO_DEVICE, - - /** Device sent more data than requested */ - LIBUSB_TRANSFER_OVERFLOW, -}; - -/** \ingroup asyncio - * libusb_transfer.flags values */ -enum libusb_transfer_flags { - /** Report short frames as errors */ - LIBUSB_TRANSFER_SHORT_NOT_OK = 1<<0, - - /** Automatically free() transfer buffer during libusb_free_transfer() */ - LIBUSB_TRANSFER_FREE_BUFFER = 1<<1, - - /** Automatically call libusb_free_transfer() after callback returns. - * If this flag is set, it is illegal to call libusb_free_transfer() - * from your transfer callback, as this will result in a double-free - * when this flag is acted upon. */ - LIBUSB_TRANSFER_FREE_TRANSFER = 1<<2, - - /** Terminate transfers that are a multiple of the endpoint's - * wMaxPacketSize with an extra zero length packet. This is useful - * when a device protocol mandates that each logical request is - * terminated by an incomplete packet (i.e. the logical requests are - * not separated by other means). - * - * This flag only affects host-to-device transfers to bulk and interrupt - * endpoints. In other situations, it is ignored. - * - * This flag only affects transfers with a length that is a multiple of - * the endpoint's wMaxPacketSize. On transfers of other lengths, this - * flag has no effect. Therefore, if you are working with a device that - * needs a ZLP whenever the end of the logical request falls on a packet - * boundary, then it is sensible to set this flag on every - * transfer (you do not have to worry about only setting it on transfers - * that end on the boundary). - * - * This flag is currently only supported on Linux. - * On other systems, libusb_submit_transfer() will return - * LIBUSB_ERROR_NOT_SUPPORTED for every transfer where this flag is set. - * - * Available since libusb-1.0.9. - */ - LIBUSB_TRANSFER_ADD_ZERO_PACKET = 1 << 3, -}; - -/** \ingroup asyncio - * Isochronous packet descriptor. */ -struct libusb_iso_packet_descriptor { - /** Length of data to request in this packet */ - unsigned int length; - - /** Amount of data that was actually transferred */ - unsigned int actual_length; - - /** Status code for this packet */ - enum libusb_transfer_status status; -}; - -struct libusb_transfer; - -/** \ingroup asyncio - * Asynchronous transfer callback function type. When submitting asynchronous - * transfers, you pass a pointer to a callback function of this type via the - * \ref libusb_transfer::callback "callback" member of the libusb_transfer - * structure. libusb will call this function later, when the transfer has - * completed or failed. See \ref asyncio for more information. - * \param transfer The libusb_transfer struct the callback function is being - * notified about. - */ -typedef void (LIBUSB_CALL *libusb_transfer_cb_fn)(struct libusb_transfer *transfer); - -/** \ingroup asyncio - * The generic USB transfer structure. The user populates this structure and - * then submits it in order to request a transfer. After the transfer has - * completed, the library populates the transfer with the results and passes - * it back to the user. - */ -struct libusb_transfer { - /** Handle of the device that this transfer will be submitted to */ - libusb_device_handle *dev_handle; - - /** A bitwise OR combination of \ref libusb_transfer_flags. */ - uint8_t flags; - - /** Address of the endpoint where this transfer will be sent. */ - unsigned char endpoint; - - /** Type of the endpoint from \ref libusb_transfer_type */ - unsigned char type; - - /** Timeout for this transfer in millseconds. A value of 0 indicates no - * timeout. */ - unsigned int timeout; - - /** The status of the transfer. Read-only, and only for use within - * transfer callback function. - * - * If this is an isochronous transfer, this field may read COMPLETED even - * if there were errors in the frames. Use the - * \ref libusb_iso_packet_descriptor::status "status" field in each packet - * to determine if errors occurred. */ - enum libusb_transfer_status status; - - /** Length of the data buffer */ - int length; - - /** Actual length of data that was transferred. Read-only, and only for - * use within transfer callback function. Not valid for isochronous - * endpoint transfers. */ - int actual_length; - - /** Callback function. This will be invoked when the transfer completes, - * fails, or is cancelled. */ - libusb_transfer_cb_fn callback; - - /** User context data to pass to the callback function. */ - void *user_data; - - /** Data buffer */ - unsigned char *buffer; - - /** Number of isochronous packets. Only used for I/O with isochronous - * endpoints. */ - int num_iso_packets; - - /** Isochronous packet descriptors, for isochronous transfers only. */ - struct libusb_iso_packet_descriptor iso_packet_desc -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) - [] /* valid C99 code */ -#else - [0] /* non-standard, but usually working code */ -#endif - ; -}; - -/** \ingroup misc - * Capabilities supported by this instance of libusb. Test if the loaded - * library supports a given capability by calling - * \ref libusb_has_capability(). - */ -enum libusb_capability { - /** The libusb_has_capability() API is available. */ - LIBUSB_CAP_HAS_CAPABILITY = 0, -}; - -int LIBUSB_CALL libusb_init(libusb_context **ctx); -void LIBUSB_CALL libusb_exit(libusb_context *ctx); -void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level); -const struct libusb_version * LIBUSB_CALL libusb_get_version(void); -int LIBUSB_CALL libusb_has_capability(uint32_t capability); -const char * LIBUSB_CALL libusb_error_name(int errcode); - -ssize_t LIBUSB_CALL libusb_get_device_list(libusb_context *ctx, - libusb_device ***list); -void LIBUSB_CALL libusb_free_device_list(libusb_device **list, - int unref_devices); -libusb_device * LIBUSB_CALL libusb_ref_device(libusb_device *dev); -void LIBUSB_CALL libusb_unref_device(libusb_device *dev); - -int LIBUSB_CALL libusb_get_configuration(libusb_device_handle *dev, - int *config); -int LIBUSB_CALL libusb_get_device_descriptor(libusb_device *dev, - struct libusb_device_descriptor *desc); -int LIBUSB_CALL libusb_get_active_config_descriptor(libusb_device *dev, - struct libusb_config_descriptor **config); -int LIBUSB_CALL libusb_get_config_descriptor(libusb_device *dev, - uint8_t config_index, struct libusb_config_descriptor **config); -int LIBUSB_CALL libusb_get_config_descriptor_by_value(libusb_device *dev, - uint8_t bConfigurationValue, struct libusb_config_descriptor **config); -void LIBUSB_CALL libusb_free_config_descriptor( - struct libusb_config_descriptor *config); -uint8_t LIBUSB_CALL libusb_get_bus_number(libusb_device *dev); -uint8_t LIBUSB_CALL libusb_get_device_address(libusb_device *dev); -int LIBUSB_CALL libusb_get_device_speed(libusb_device *dev); -int LIBUSB_CALL libusb_get_max_packet_size(libusb_device *dev, - unsigned char endpoint); -int LIBUSB_CALL libusb_get_max_iso_packet_size(libusb_device *dev, - unsigned char endpoint); - -int LIBUSB_CALL libusb_open(libusb_device *dev, libusb_device_handle **handle); -void LIBUSB_CALL libusb_close(libusb_device_handle *dev_handle); -libusb_device * LIBUSB_CALL libusb_get_device(libusb_device_handle *dev_handle); - -int LIBUSB_CALL libusb_set_configuration(libusb_device_handle *dev, - int configuration); -int LIBUSB_CALL libusb_claim_interface(libusb_device_handle *dev, - int interface_number); -int LIBUSB_CALL libusb_release_interface(libusb_device_handle *dev, - int interface_number); - -libusb_device_handle * LIBUSB_CALL libusb_open_device_with_vid_pid( - libusb_context *ctx, uint16_t vendor_id, uint16_t product_id); - -int LIBUSB_CALL libusb_set_interface_alt_setting(libusb_device_handle *dev, - int interface_number, int alternate_setting); -int LIBUSB_CALL libusb_clear_halt(libusb_device_handle *dev, - unsigned char endpoint); -int LIBUSB_CALL libusb_reset_device(libusb_device_handle *dev); - -int LIBUSB_CALL libusb_kernel_driver_active(libusb_device_handle *dev, - int interface_number); -int LIBUSB_CALL libusb_detach_kernel_driver(libusb_device_handle *dev, - int interface_number); -int LIBUSB_CALL libusb_attach_kernel_driver(libusb_device_handle *dev, - int interface_number); - -/* async I/O */ - -/** \ingroup asyncio - * Get the data section of a control transfer. This convenience function is here - * to remind you that the data does not start until 8 bytes into the actual - * buffer, as the setup packet comes first. - * - * Calling this function only makes sense from a transfer callback function, - * or situations where you have already allocated a suitably sized buffer at - * transfer->buffer. - * - * \param transfer a transfer - * \returns pointer to the first byte of the data section - */ -static inline unsigned char *libusb_control_transfer_get_data( - struct libusb_transfer *transfer) -{ - return transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; -} - -/** \ingroup asyncio - * Get the control setup packet of a control transfer. This convenience - * function is here to remind you that the control setup occupies the first - * 8 bytes of the transfer data buffer. - * - * Calling this function only makes sense from a transfer callback function, - * or situations where you have already allocated a suitably sized buffer at - * transfer->buffer. - * - * \param transfer a transfer - * \returns a casted pointer to the start of the transfer data buffer - */ -static inline struct libusb_control_setup *libusb_control_transfer_get_setup( - struct libusb_transfer *transfer) -{ - return (struct libusb_control_setup *) transfer->buffer; -} - -/** \ingroup asyncio - * Helper function to populate the setup packet (first 8 bytes of the data - * buffer) for a control transfer. The wIndex, wValue and wLength values should - * be given in host-endian byte order. - * - * \param buffer buffer to output the setup packet into - * \param bmRequestType see the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field of - * \ref libusb_control_setup - * \param bRequest see the - * \ref libusb_control_setup::bRequest "bRequest" field of - * \ref libusb_control_setup - * \param wValue see the - * \ref libusb_control_setup::wValue "wValue" field of - * \ref libusb_control_setup - * \param wIndex see the - * \ref libusb_control_setup::wIndex "wIndex" field of - * \ref libusb_control_setup - * \param wLength see the - * \ref libusb_control_setup::wLength "wLength" field of - * \ref libusb_control_setup - */ -static inline void libusb_fill_control_setup(unsigned char *buffer, - uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, - uint16_t wLength) -{ - struct libusb_control_setup *setup = (struct libusb_control_setup *) buffer; - setup->bmRequestType = bmRequestType; - setup->bRequest = bRequest; - setup->wValue = libusb_cpu_to_le16(wValue); - setup->wIndex = libusb_cpu_to_le16(wIndex); - setup->wLength = libusb_cpu_to_le16(wLength); -} - -struct libusb_transfer * LIBUSB_CALL libusb_alloc_transfer(int iso_packets); -int LIBUSB_CALL libusb_submit_transfer(struct libusb_transfer *transfer); -int LIBUSB_CALL libusb_cancel_transfer(struct libusb_transfer *transfer); -void LIBUSB_CALL libusb_free_transfer(struct libusb_transfer *transfer); - -/** \ingroup asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for a control transfer. - * - * If you pass a transfer buffer to this function, the first 8 bytes will - * be interpreted as a control setup packet, and the wLength field will be - * used to automatically populate the \ref libusb_transfer::length "length" - * field of the transfer. Therefore the recommended approach is: - * -# Allocate a suitably sized data buffer (including space for control setup) - * -# Call libusb_fill_control_setup() - * -# If this is a host-to-device transfer with a data stage, put the data - * in place after the setup packet - * -# Call this function - * -# Call libusb_submit_transfer() - * - * It is also legal to pass a NULL buffer to this function, in which case this - * function will not attempt to populate the length field. Remember that you - * must then populate the buffer and length fields later. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param buffer data buffer. If provided, this function will interpret the - * first 8 bytes as a setup packet and infer the transfer length from that. - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_control_transfer( - struct libusb_transfer *transfer, libusb_device_handle *dev_handle, - unsigned char *buffer, libusb_transfer_cb_fn callback, void *user_data, - unsigned int timeout) -{ - struct libusb_control_setup *setup = (struct libusb_control_setup *) buffer; - transfer->dev_handle = dev_handle; - transfer->endpoint = 0; - transfer->type = LIBUSB_TRANSFER_TYPE_CONTROL; - transfer->timeout = timeout; - transfer->buffer = buffer; - if (setup) - transfer->length = LIBUSB_CONTROL_SETUP_SIZE - + libusb_le16_to_cpu(setup->wLength); - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for a bulk transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_bulk_transfer(struct libusb_transfer *transfer, - libusb_device_handle *dev_handle, unsigned char endpoint, - unsigned char *buffer, int length, libusb_transfer_cb_fn callback, - void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_BULK; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for an interrupt transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_interrupt_transfer( - struct libusb_transfer *transfer, libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *buffer, int length, - libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_INTERRUPT; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for an isochronous transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param num_iso_packets the number of isochronous packets - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_iso_transfer(struct libusb_transfer *transfer, - libusb_device_handle *dev_handle, unsigned char endpoint, - unsigned char *buffer, int length, int num_iso_packets, - libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->num_iso_packets = num_iso_packets; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup asyncio - * Convenience function to set the length of all packets in an isochronous - * transfer, based on the num_iso_packets field in the transfer structure. - * - * \param transfer a transfer - * \param length the length to set in each isochronous packet descriptor - * \see libusb_get_max_packet_size() - */ -static inline void libusb_set_iso_packet_lengths( - struct libusb_transfer *transfer, unsigned int length) -{ - int i; - for (i = 0; i < transfer->num_iso_packets; i++) - transfer->iso_packet_desc[i].length = length; -} - -/** \ingroup asyncio - * Convenience function to locate the position of an isochronous packet - * within the buffer of an isochronous transfer. - * - * This is a thorough function which loops through all preceding packets, - * accumulating their lengths to find the position of the specified packet. - * Typically you will assign equal lengths to each packet in the transfer, - * and hence the above method is sub-optimal. You may wish to use - * libusb_get_iso_packet_buffer_simple() instead. - * - * \param transfer a transfer - * \param packet the packet to return the address of - * \returns the base address of the packet buffer inside the transfer buffer, - * or NULL if the packet does not exist. - * \see libusb_get_iso_packet_buffer_simple() - */ -static inline unsigned char *libusb_get_iso_packet_buffer( - struct libusb_transfer *transfer, unsigned int packet) -{ - int i; - size_t offset = 0; - int _packet; - - /* oops..slight bug in the API. packet is an unsigned int, but we use - * signed integers almost everywhere else. range-check and convert to - * signed to avoid compiler warnings. FIXME for libusb-2. */ - if (packet > INT_MAX) - return NULL; - _packet = packet; - - if (_packet >= transfer->num_iso_packets) - return NULL; - - for (i = 0; i < _packet; i++) - offset += transfer->iso_packet_desc[i].length; - - return transfer->buffer + offset; -} - -/** \ingroup asyncio - * Convenience function to locate the position of an isochronous packet - * within the buffer of an isochronous transfer, for transfers where each - * packet is of identical size. - * - * This function relies on the assumption that every packet within the transfer - * is of identical size to the first packet. Calculating the location of - * the packet buffer is then just a simple calculation: - * buffer + (packet_size * packet) - * - * Do not use this function on transfers other than those that have identical - * packet lengths for each packet. - * - * \param transfer a transfer - * \param packet the packet to return the address of - * \returns the base address of the packet buffer inside the transfer buffer, - * or NULL if the packet does not exist. - * \see libusb_get_iso_packet_buffer() - */ -static inline unsigned char *libusb_get_iso_packet_buffer_simple( - struct libusb_transfer *transfer, unsigned int packet) -{ - int _packet; - - /* oops..slight bug in the API. packet is an unsigned int, but we use - * signed integers almost everywhere else. range-check and convert to - * signed to avoid compiler warnings. FIXME for libusb-2. */ - if (packet > INT_MAX) - return NULL; - _packet = packet; - - if (_packet >= transfer->num_iso_packets) - return NULL; - - return transfer->buffer + (transfer->iso_packet_desc[0].length * _packet); -} - -/* sync I/O */ - -int LIBUSB_CALL libusb_control_transfer(libusb_device_handle *dev_handle, - uint8_t request_type, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, - unsigned char *data, uint16_t wLength, unsigned int timeout); - -int LIBUSB_CALL libusb_bulk_transfer(libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *data, int length, - int *actual_length, unsigned int timeout); - -int LIBUSB_CALL libusb_interrupt_transfer(libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *data, int length, - int *actual_length, unsigned int timeout); - -/** \ingroup desc - * Retrieve a descriptor from the default control pipe. - * This is a convenience function which formulates the appropriate control - * message to retrieve the descriptor. - * - * \param dev a device handle - * \param desc_type the descriptor type, see \ref libusb_descriptor_type - * \param desc_index the index of the descriptor to retrieve - * \param data output buffer for descriptor - * \param length size of data buffer - * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure - */ -static inline int libusb_get_descriptor(libusb_device_handle *dev, - uint8_t desc_type, uint8_t desc_index, unsigned char *data, int length) -{ - return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN, - LIBUSB_REQUEST_GET_DESCRIPTOR, (desc_type << 8) | desc_index, 0, data, - (uint16_t) length, 1000); -} - -/** \ingroup desc - * Retrieve a descriptor from a device. - * This is a convenience function which formulates the appropriate control - * message to retrieve the descriptor. The string returned is Unicode, as - * detailed in the USB specifications. - * - * \param dev a device handle - * \param desc_index the index of the descriptor to retrieve - * \param langid the language ID for the string descriptor - * \param data output buffer for descriptor - * \param length size of data buffer - * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure - * \see libusb_get_string_descriptor_ascii() - */ -static inline int libusb_get_string_descriptor(libusb_device_handle *dev, - uint8_t desc_index, uint16_t langid, unsigned char *data, int length) -{ - return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN, - LIBUSB_REQUEST_GET_DESCRIPTOR, (uint16_t)((LIBUSB_DT_STRING << 8) | desc_index), - langid, data, (uint16_t) length, 1000); -} - -int LIBUSB_CALL libusb_get_string_descriptor_ascii(libusb_device_handle *dev, - uint8_t desc_index, unsigned char *data, int length); - -/* polling and timeouts */ - -int LIBUSB_CALL libusb_try_lock_events(libusb_context *ctx); -void LIBUSB_CALL libusb_lock_events(libusb_context *ctx); -void LIBUSB_CALL libusb_unlock_events(libusb_context *ctx); -int LIBUSB_CALL libusb_event_handling_ok(libusb_context *ctx); -int LIBUSB_CALL libusb_event_handler_active(libusb_context *ctx); -void LIBUSB_CALL libusb_lock_event_waiters(libusb_context *ctx); -void LIBUSB_CALL libusb_unlock_event_waiters(libusb_context *ctx); -int LIBUSB_CALL libusb_wait_for_event(libusb_context *ctx, struct timeval *tv); - -int LIBUSB_CALL libusb_handle_events_timeout(libusb_context *ctx, - struct timeval *tv); -int LIBUSB_CALL libusb_handle_events_timeout_completed(libusb_context *ctx, - struct timeval *tv, int *completed); -int LIBUSB_CALL libusb_handle_events(libusb_context *ctx); -int LIBUSB_CALL libusb_handle_events_completed(libusb_context *ctx, int *completed); -int LIBUSB_CALL libusb_handle_events_locked(libusb_context *ctx, - struct timeval *tv); -int LIBUSB_CALL libusb_pollfds_handle_timeouts(libusb_context *ctx); -int LIBUSB_CALL libusb_get_next_timeout(libusb_context *ctx, - struct timeval *tv); - -/** \ingroup poll - * File descriptor for polling - */ -struct libusb_pollfd { - /** Numeric file descriptor */ - int fd; - - /** Event flags to poll for from . POLLIN indicates that you - * should monitor this file descriptor for becoming ready to read from, - * and POLLOUT indicates that you should monitor this file descriptor for - * nonblocking write readiness. */ - short events; -}; - -/** \ingroup poll - * Callback function, invoked when a new file descriptor should be added - * to the set of file descriptors monitored for events. - * \param fd the new file descriptor - * \param events events to monitor for, see \ref libusb_pollfd for a - * description - * \param user_data User data pointer specified in - * libusb_set_pollfd_notifiers() call - * \see libusb_set_pollfd_notifiers() - */ -typedef void (LIBUSB_CALL *libusb_pollfd_added_cb)(int fd, short events, - void *user_data); - -/** \ingroup poll - * Callback function, invoked when a file descriptor should be removed from - * the set of file descriptors being monitored for events. After returning - * from this callback, do not use that file descriptor again. - * \param fd the file descriptor to stop monitoring - * \param user_data User data pointer specified in - * libusb_set_pollfd_notifiers() call - * \see libusb_set_pollfd_notifiers() - */ -typedef void (LIBUSB_CALL *libusb_pollfd_removed_cb)(int fd, void *user_data); - -const struct libusb_pollfd ** LIBUSB_CALL libusb_get_pollfds( - libusb_context *ctx); -void LIBUSB_CALL libusb_set_pollfd_notifiers(libusb_context *ctx, - libusb_pollfd_added_cb added_cb, libusb_pollfd_removed_cb removed_cb, - void *user_data); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-core.lo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-core.lo deleted file mode 100644 index 30e5bee..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-core.lo +++ /dev/null @@ -1,12 +0,0 @@ -# libusb_1_0_la-core.lo - a libtool object file -# Generated by libtool (GNU libtool) 2.2.10 -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/libusb_1_0_la-core.o' - -# Name of the non-PIC object -non_pic_object='libusb_1_0_la-core.o' - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-core.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-core.o deleted file mode 100644 index e02312f88b8aed03d1e7b1f3af53f46eb29c8449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80176 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≈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 b%CS9s^s2Xy(`#q#7dOiKUuX?#tnq&VJam_7 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-io.lo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-io.lo deleted file mode 100644 index dd09400..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-io.lo +++ /dev/null @@ -1,12 +0,0 @@ -# libusb_1_0_la-io.lo - a libtool object file -# Generated by libtool (GNU libtool) 2.2.10 -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/libusb_1_0_la-io.o' - -# Name of the non-PIC object -non_pic_object='libusb_1_0_la-io.o' - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-io.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-io.o deleted file mode 100644 index 026b9af7435c735982e2071eaf55de04655c7dd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71112 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 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-linux_usbfs.lo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-linux_usbfs.lo deleted file mode 100644 index 3822630..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-linux_usbfs.lo +++ /dev/null @@ -1,12 +0,0 @@ -# libusb_1_0_la-linux_usbfs.lo - a libtool object file -# Generated by libtool (GNU libtool) 2.2.10 -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/libusb_1_0_la-linux_usbfs.o' - -# Name of the non-PIC object -non_pic_object='libusb_1_0_la-linux_usbfs.o' - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-linux_usbfs.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-linux_usbfs.o deleted file mode 100644 index eb458f5676e84d669359a0d9b1ea58c8e837d185..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164400 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 z 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 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-threads_posix.lo b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-threads_posix.lo deleted file mode 100644 index 06e649c..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-threads_posix.lo +++ /dev/null @@ -1,12 +0,0 @@ -# libusb_1_0_la-threads_posix.lo - a libtool object file -# Generated by libtool (GNU libtool) 2.2.10 -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/libusb_1_0_la-threads_posix.o' - -# Name of the non-PIC object -non_pic_object='libusb_1_0_la-threads_posix.o' - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-threads_posix.o b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusb_1_0_la-threads_posix.o deleted file mode 100644 index 523873e6589e38f77ce996d5113e32b8aef09668..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7408 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 diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusbi.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusbi.h deleted file mode 100644 index 976be0d..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/libusbi.h +++ /dev/null @@ -1,935 +0,0 @@ -/* - * Internal header for libusb - * Copyright (C) 2007-2009 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSBI_H -#define LIBUSBI_H - -#include - -#include -#include -#include -#include -#ifdef HAVE_POLL_H -#include -#endif - -#include -#include - -/* Inside the libusb code, mark all public functions as follows: - * return_type API_EXPORTED function_name(params) { ... } - * But if the function returns a pointer, mark it as follows: - * DEFAULT_VISIBILITY return_type * LIBUSB_CALL function_name(params) { ... } - * In the libusb public header, mark all declarations as: - * return_type LIBUSB_CALL function_name(params); - */ -#define API_EXPORTED LIBUSB_CALL DEFAULT_VISIBILITY - -#define DEVICE_DESC_LENGTH 18 - -#define USB_MAXENDPOINTS 32 -#define USB_MAXINTERFACES 32 -#define USB_MAXCONFIG 8 - -struct list_head { - struct list_head *prev, *next; -}; - -/* Get an entry from the list - * ptr - the address of this list_head element in "type" - * type - the data type that contains "member" - * member - the list_head element in "type" - */ -#define list_entry(ptr, type, member) \ - ((type *)((uintptr_t)(ptr) - (uintptr_t)(&((type *)0L)->member))) - -/* Get each entry from a list - * pos - A structure pointer has a "member" element - * head - list head - * member - the list_head element in "pos" - * type - the type of the first parameter - */ -#define list_for_each_entry(pos, head, member, type) \ - for (pos = list_entry((head)->next, type, member); \ - &pos->member != (head); \ - pos = list_entry(pos->member.next, type, member)) - -#define list_for_each_entry_safe(pos, n, head, member, type) \ - for (pos = list_entry((head)->next, type, member), \ - n = list_entry(pos->member.next, type, member); \ - &pos->member != (head); \ - pos = n, n = list_entry(n->member.next, type, member)) - -#define list_empty(entry) ((entry)->next == (entry)) - -static inline void list_init(struct list_head *entry) -{ - entry->prev = entry->next = entry; -} - -static inline void list_add(struct list_head *entry, struct list_head *head) -{ - entry->next = head->next; - entry->prev = head; - - head->next->prev = entry; - head->next = entry; -} - -static inline void list_add_tail(struct list_head *entry, - struct list_head *head) -{ - entry->next = head; - entry->prev = head->prev; - - head->prev->next = entry; - head->prev = entry; -} - -static inline void list_del(struct list_head *entry) -{ - entry->next->prev = entry->prev; - entry->prev->next = entry->next; -} - -#define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *mptr = (ptr); \ - (type *)( (char *)mptr - offsetof(type,member) );}) - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - -#define TIMESPEC_IS_SET(ts) ((ts)->tv_sec != 0 || (ts)->tv_nsec != 0) - -enum usbi_log_level { - LOG_LEVEL_DEBUG, - LOG_LEVEL_INFO, - LOG_LEVEL_WARNING, - LOG_LEVEL_ERROR, -}; - -void usbi_log(struct libusb_context *ctx, enum usbi_log_level level, - const char *function, const char *format, ...); - -void usbi_log_v(struct libusb_context *ctx, enum usbi_log_level level, - const char *function, const char *format, va_list args); - -#if !defined(_MSC_VER) || _MSC_VER >= 1400 - -#ifdef ENABLE_LOGGING -#define _usbi_log(ctx, level, ...) usbi_log(ctx, level, __FUNCTION__, __VA_ARGS__) -#else -#define _usbi_log(ctx, level, ...) do { (void)(ctx); } while(0) -#endif - -#ifdef ENABLE_DEBUG_LOGGING -#define usbi_dbg(...) _usbi_log(NULL, LOG_LEVEL_DEBUG, __VA_ARGS__) -#else -#define usbi_dbg(...) do {} while(0) -#endif - -#define usbi_info(ctx, ...) _usbi_log(ctx, LOG_LEVEL_INFO, __VA_ARGS__) -#define usbi_warn(ctx, ...) _usbi_log(ctx, LOG_LEVEL_WARNING, __VA_ARGS__) -#define usbi_err(ctx, ...) _usbi_log(ctx, LOG_LEVEL_ERROR, __VA_ARGS__) - -#else /* !defined(_MSC_VER) || _MSC_VER >= 1400 */ - -/* Old MS compilers don't support variadic macros. The code is simple, so we - * repeat it for each loglevel. Note that the debug case is special. - * - * Support for variadic macros was introduced in Visual C++ 2005. - * http://msdn.microsoft.com/en-us/library/ms177415%28v=VS.80%29.aspx - */ - -static inline void usbi_info(struct libusb_context *ctx, const char *fmt, ...) -{ -#ifdef ENABLE_LOGGING - va_list args; - va_start(args, fmt); - usbi_log_v(ctx, LOG_LEVEL_INFO, "", fmt, args); - va_end(args); -#else - (void)ctx; -#endif -} - -static inline void usbi_warn(struct libusb_context *ctx, const char *fmt, ...) -{ -#ifdef ENABLE_LOGGING - va_list args; - va_start(args, fmt); - usbi_log_v(ctx, LOG_LEVEL_WARNING, "", fmt, args); - va_end(args); -#else - (void)ctx; -#endif -} - -static inline void usbi_err(struct libusb_context *ctx, const char *fmt, ...) -{ -#ifdef ENABLE_LOGGING - va_list args; - va_start(args, fmt); - usbi_log_v(ctx, LOG_LEVEL_ERROR, "", fmt, args); - va_end(args); -#else - (void)ctx; -#endif -} - -static inline void usbi_dbg(const char *fmt, ...) -{ -#ifdef ENABLE_DEBUG_LOGGING - va_list args; - va_start(args, fmt); - usbi_log_v(NULL, LOG_LEVEL_DEBUG, "", fmt, args); - va_end(args); -#else - (void)fmt; -#endif -} - -#endif /* !defined(_MSC_VER) || _MSC_VER >= 1400 */ - -#define USBI_GET_CONTEXT(ctx) if (!(ctx)) (ctx) = usbi_default_context -#define DEVICE_CTX(dev) ((dev)->ctx) -#define HANDLE_CTX(handle) (DEVICE_CTX((handle)->dev)) -#define TRANSFER_CTX(transfer) (HANDLE_CTX((transfer)->dev_handle)) -#define ITRANSFER_CTX(transfer) \ - (TRANSFER_CTX(USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer))) - -#define IS_EPIN(ep) (0 != ((ep) & LIBUSB_ENDPOINT_IN)) -#define IS_EPOUT(ep) (!IS_EPIN(ep)) -#define IS_XFERIN(xfer) (0 != ((xfer)->endpoint & LIBUSB_ENDPOINT_IN)) -#define IS_XFEROUT(xfer) (!IS_XFERIN(xfer)) - -/* Internal abstractions for thread synchronization and poll */ -#if defined(THREADS_POSIX) -#include -#elif defined(OS_WINDOWS) -#include -#endif - -#if defined(OS_LINUX) || defined(OS_DARWIN) || defined(OS_OPENBSD) -#include -#include -#elif defined(OS_WINDOWS) -#include -#endif - -#if defined(OS_WINDOWS) && !defined(__GCC__) -#undef HAVE_GETTIMEOFDAY -int usbi_gettimeofday(struct timeval *tp, void *tzp); -#define LIBUSB_GETTIMEOFDAY_WIN32 -#define HAVE_USBI_GETTIMEOFDAY -#else -#ifdef HAVE_GETTIMEOFDAY -#define usbi_gettimeofday(tv, tz) gettimeofday((tv), (tz)) -#define HAVE_USBI_GETTIMEOFDAY -#endif -#endif - -extern struct libusb_context *usbi_default_context; - -struct libusb_context { - int debug; - int debug_fixed; - - /* internal control pipe, used for interrupting event handling when - * something needs to modify poll fds. */ - int ctrl_pipe[2]; - - struct list_head usb_devs; - usbi_mutex_t usb_devs_lock; - - /* A list of open handles. Backends are free to traverse this if required. - */ - struct list_head open_devs; - usbi_mutex_t open_devs_lock; - - /* this is a list of in-flight transfer handles, sorted by timeout - * expiration. URBs to timeout the soonest are placed at the beginning of - * the list, URBs that will time out later are placed after, and urbs with - * infinite timeout are always placed at the very end. */ - struct list_head flying_transfers; - usbi_mutex_t flying_transfers_lock; - - /* list of poll fds */ - struct list_head pollfds; - usbi_mutex_t pollfds_lock; - - /* a counter that is set when we want to interrupt event handling, in order - * to modify the poll fd set. and a lock to protect it. */ - unsigned int pollfd_modify; - usbi_mutex_t pollfd_modify_lock; - - /* user callbacks for pollfd changes */ - libusb_pollfd_added_cb fd_added_cb; - libusb_pollfd_removed_cb fd_removed_cb; - void *fd_cb_user_data; - - /* ensures that only one thread is handling events at any one time */ - usbi_mutex_t events_lock; - - /* used to see if there is an active thread doing event handling */ - int event_handler_active; - - /* used to wait for event completion in threads other than the one that is - * event handling */ - usbi_mutex_t event_waiters_lock; - usbi_cond_t event_waiters_cond; - -#ifdef USBI_TIMERFD_AVAILABLE - /* used for timeout handling, if supported by OS. - * this timerfd is maintained to trigger on the next pending timeout */ - int timerfd; -#endif -}; - -#ifdef USBI_TIMERFD_AVAILABLE -#define usbi_using_timerfd(ctx) ((ctx)->timerfd >= 0) -#else -#define usbi_using_timerfd(ctx) (0) -#endif - -struct libusb_device { - /* lock protects refcnt, everything else is finalized at initialization - * time */ - usbi_mutex_t lock; - int refcnt; - - struct libusb_context *ctx; - - uint8_t bus_number; - uint8_t device_address; - uint8_t num_configurations; - enum libusb_speed speed; - - struct list_head list; - unsigned long session_data; - unsigned char os_priv[0]; -}; - -struct libusb_device_handle { - /* lock protects claimed_interfaces */ - usbi_mutex_t lock; - unsigned long claimed_interfaces; - - struct list_head list; - struct libusb_device *dev; - unsigned char os_priv[0]; -}; - -enum { - USBI_CLOCK_MONOTONIC, - USBI_CLOCK_REALTIME -}; - -/* in-memory transfer layout: - * - * 1. struct usbi_transfer - * 2. struct libusb_transfer (which includes iso packets) [variable size] - * 3. os private data [variable size] - * - * from a libusb_transfer, you can get the usbi_transfer by rewinding the - * appropriate number of bytes. - * the usbi_transfer includes the number of allocated packets, so you can - * determine the size of the transfer and hence the start and length of the - * OS-private data. - */ - -struct usbi_transfer { - int num_iso_packets; - struct list_head list; - struct timeval timeout; - int transferred; - uint8_t flags; - - /* this lock is held during libusb_submit_transfer() and - * libusb_cancel_transfer() (allowing the OS backend to prevent duplicate - * cancellation, submission-during-cancellation, etc). the OS backend - * should also take this lock in the handle_events path, to prevent the user - * cancelling the transfer from another thread while you are processing - * its completion (presumably there would be races within your OS backend - * if this were possible). */ - usbi_mutex_t lock; -}; - -enum usbi_transfer_flags { - /* The transfer has timed out */ - USBI_TRANSFER_TIMED_OUT = 1 << 0, - - /* Set by backend submit_transfer() if the OS handles timeout */ - USBI_TRANSFER_OS_HANDLES_TIMEOUT = 1 << 1, - - /* Cancellation was requested via libusb_cancel_transfer() */ - USBI_TRANSFER_CANCELLING = 1 << 2, - - /* Operation on the transfer failed because the device disappeared */ - USBI_TRANSFER_DEVICE_DISAPPEARED = 1 << 3, -}; - -#define USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer) \ - ((struct libusb_transfer *)(((unsigned char *)(transfer)) \ - + sizeof(struct usbi_transfer))) -#define LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer) \ - ((struct usbi_transfer *)(((unsigned char *)(transfer)) \ - - sizeof(struct usbi_transfer))) - -static inline void *usbi_transfer_get_os_priv(struct usbi_transfer *transfer) -{ - return ((unsigned char *)transfer) + sizeof(struct usbi_transfer) - + sizeof(struct libusb_transfer) - + (transfer->num_iso_packets - * sizeof(struct libusb_iso_packet_descriptor)); -} - -/* bus structures */ - -/* All standard descriptors have these 2 fields in common */ -struct usb_descriptor_header { - uint8_t bLength; - uint8_t bDescriptorType; -}; - -/* shared data and functions */ - -int usbi_io_init(struct libusb_context *ctx); -void usbi_io_exit(struct libusb_context *ctx); - -struct libusb_device *usbi_alloc_device(struct libusb_context *ctx, - unsigned long session_id); -struct libusb_device *usbi_get_device_by_session_id(struct libusb_context *ctx, - unsigned long session_id); -int usbi_sanitize_device(struct libusb_device *dev); -void usbi_handle_disconnect(struct libusb_device_handle *handle); - -int usbi_handle_transfer_completion(struct usbi_transfer *itransfer, - enum libusb_transfer_status status); -int usbi_handle_transfer_cancellation(struct usbi_transfer *transfer); - -int usbi_parse_descriptor(unsigned char *source, const char *descriptor, - void *dest, int host_endian); -int usbi_get_config_index_by_value(struct libusb_device *dev, - uint8_t bConfigurationValue, int *idx); - -/* polling */ - -struct usbi_pollfd { - /* must come first */ - struct libusb_pollfd pollfd; - - struct list_head list; -}; - -int usbi_add_pollfd(struct libusb_context *ctx, int fd, short events); -void usbi_remove_pollfd(struct libusb_context *ctx, int fd); -void usbi_fd_notification(struct libusb_context *ctx); - -/* device discovery */ - -/* we traverse usbfs without knowing how many devices we are going to find. - * so we create this discovered_devs model which is similar to a linked-list - * which grows when required. it can be freed once discovery has completed, - * eliminating the need for a list node in the libusb_device structure - * itself. */ -struct discovered_devs { - size_t len; - size_t capacity; - struct libusb_device *devices[0]; -}; - -struct discovered_devs *discovered_devs_append( - struct discovered_devs *discdevs, struct libusb_device *dev); - -/* OS abstraction */ - -/* This is the interface that OS backends need to implement. - * All fields are mandatory, except ones explicitly noted as optional. */ -struct usbi_os_backend { - /* A human-readable name for your backend, e.g. "Linux usbfs" */ - const char *name; - - /* Perform initialization of your backend. You might use this function - * to determine specific capabilities of the system, allocate required - * data structures for later, etc. - * - * This function is called when a libusb user initializes the library - * prior to use. - * - * Return 0 on success, or a LIBUSB_ERROR code on failure. - */ - int (*init)(struct libusb_context *ctx); - - /* Deinitialization. Optional. This function should destroy anything - * that was set up by init. - * - * This function is called when the user deinitializes the library. - */ - void (*exit)(void); - - /* Enumerate all the USB devices on the system, returning them in a list - * of discovered devices. - * - * Your implementation should enumerate all devices on the system, - * regardless of whether they have been seen before or not. - * - * When you have found a device, compute a session ID for it. The session - * ID should uniquely represent that particular device for that particular - * connection session since boot (i.e. if you disconnect and reconnect a - * device immediately after, it should be assigned a different session ID). - * If your OS cannot provide a unique session ID as described above, - * presenting a session ID of (bus_number << 8 | device_address) should - * be sufficient. Bus numbers and device addresses wrap and get reused, - * but that is an unlikely case. - * - * After computing a session ID for a device, call - * usbi_get_device_by_session_id(). This function checks if libusb already - * knows about the device, and if so, it provides you with a libusb_device - * structure for it. - * - * If usbi_get_device_by_session_id() returns NULL, it is time to allocate - * a new device structure for the device. Call usbi_alloc_device() to - * obtain a new libusb_device structure with reference count 1. Populate - * the bus_number and device_address attributes of the new device, and - * perform any other internal backend initialization you need to do. At - * this point, you should be ready to provide device descriptors and so - * on through the get_*_descriptor functions. Finally, call - * usbi_sanitize_device() to perform some final sanity checks on the - * device. Assuming all of the above succeeded, we can now continue. - * If any of the above failed, remember to unreference the device that - * was returned by usbi_alloc_device(). - * - * At this stage we have a populated libusb_device structure (either one - * that was found earlier, or one that we have just allocated and - * populated). This can now be added to the discovered devices list - * using discovered_devs_append(). Note that discovered_devs_append() - * may reallocate the list, returning a new location for it, and also - * note that reallocation can fail. Your backend should handle these - * error conditions appropriately. - * - * This function should not generate any bus I/O and should not block. - * If I/O is required (e.g. reading the active configuration value), it is - * OK to ignore these suggestions :) - * - * This function is executed when the user wishes to retrieve a list - * of USB devices connected to the system. - * - * Return 0 on success, or a LIBUSB_ERROR code on failure. - */ - int (*get_device_list)(struct libusb_context *ctx, - struct discovered_devs **discdevs); - - /* Open a device for I/O and other USB operations. The device handle - * is preallocated for you, you can retrieve the device in question - * through handle->dev. - * - * Your backend should allocate any internal resources required for I/O - * and other operations so that those operations can happen (hopefully) - * without hiccup. This is also a good place to inform libusb that it - * should monitor certain file descriptors related to this device - - * see the usbi_add_pollfd() function. - * - * This function should not generate any bus I/O and should not block. - * - * This function is called when the user attempts to obtain a device - * handle for a device. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_ACCESS if the user has insufficient permissions - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since - * discovery - * - another LIBUSB_ERROR code on other failure - * - * Do not worry about freeing the handle on failed open, the upper layers - * do this for you. - */ - int (*open)(struct libusb_device_handle *handle); - - /* Close a device such that the handle cannot be used again. Your backend - * should destroy any resources that were allocated in the open path. - * This may also be a good place to call usbi_remove_pollfd() to inform - * libusb of any file descriptors associated with this device that should - * no longer be monitored. - * - * This function is called when the user closes a device handle. - */ - void (*close)(struct libusb_device_handle *handle); - - /* Retrieve the device descriptor from a device. - * - * The descriptor should be retrieved from memory, NOT via bus I/O to the - * device. This means that you may have to cache it in a private structure - * during get_device_list enumeration. Alternatively, you may be able - * to retrieve it from a kernel interface (some Linux setups can do this) - * still without generating bus I/O. - * - * This function is expected to write DEVICE_DESC_LENGTH (18) bytes into - * buffer, which is guaranteed to be big enough. - * - * This function is called when sanity-checking a device before adding - * it to the list of discovered devices, and also when the user requests - * to read the device descriptor. - * - * This function is expected to return the descriptor in bus-endian format - * (LE). If it returns the multi-byte values in host-endian format, - * set the host_endian output parameter to "1". - * - * Return 0 on success or a LIBUSB_ERROR code on failure. - */ - int (*get_device_descriptor)(struct libusb_device *device, - unsigned char *buffer, int *host_endian); - - /* Get the ACTIVE configuration descriptor for a device. - * - * The descriptor should be retrieved from memory, NOT via bus I/O to the - * device. This means that you may have to cache it in a private structure - * during get_device_list enumeration. You may also have to keep track - * of which configuration is active when the user changes it. - * - * This function is expected to write len bytes of data into buffer, which - * is guaranteed to be big enough. If you can only do a partial write, - * return an error code. - * - * This function is expected to return the descriptor in bus-endian format - * (LE). If it returns the multi-byte values in host-endian format, - * set the host_endian output parameter to "1". - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the device is in unconfigured state - * - another LIBUSB_ERROR code on other failure - */ - int (*get_active_config_descriptor)(struct libusb_device *device, - unsigned char *buffer, size_t len, int *host_endian); - - /* Get a specific configuration descriptor for a device. - * - * The descriptor should be retrieved from memory, NOT via bus I/O to the - * device. This means that you may have to cache it in a private structure - * during get_device_list enumeration. - * - * The requested descriptor is expressed as a zero-based index (i.e. 0 - * indicates that we are requesting the first descriptor). The index does - * not (necessarily) equal the bConfigurationValue of the configuration - * being requested. - * - * This function is expected to write len bytes of data into buffer, which - * is guaranteed to be big enough. If you can only do a partial write, - * return an error code. - * - * This function is expected to return the descriptor in bus-endian format - * (LE). If it returns the multi-byte values in host-endian format, - * set the host_endian output parameter to "1". - * - * Return 0 on success or a LIBUSB_ERROR code on failure. - */ - int (*get_config_descriptor)(struct libusb_device *device, - uint8_t config_index, unsigned char *buffer, size_t len, - int *host_endian); - - /* Get the bConfigurationValue for the active configuration for a device. - * Optional. This should only be implemented if you can retrieve it from - * cache (don't generate I/O). - * - * If you cannot retrieve this from cache, either do not implement this - * function, or return LIBUSB_ERROR_NOT_SUPPORTED. This will cause - * libusb to retrieve the information through a standard control transfer. - * - * This function must be non-blocking. - * Return: - * - 0 on success - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - LIBUSB_ERROR_NOT_SUPPORTED if the value cannot be retrieved without - * blocking - * - another LIBUSB_ERROR code on other failure. - */ - int (*get_configuration)(struct libusb_device_handle *handle, int *config); - - /* Set the active configuration for a device. - * - * A configuration value of -1 should put the device in unconfigured state. - * - * This function can block. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the configuration does not exist - * - LIBUSB_ERROR_BUSY if interfaces are currently claimed (and hence - * configuration cannot be changed) - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure. - */ - int (*set_configuration)(struct libusb_device_handle *handle, int config); - - /* Claim an interface. When claimed, the application can then perform - * I/O to an interface's endpoints. - * - * This function should not generate any bus I/O and should not block. - * Interface claiming is a logical operation that simply ensures that - * no other drivers/applications are using the interface, and after - * claiming, no other drivers/applicatiosn can use the interface because - * we now "own" it. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the interface does not exist - * - LIBUSB_ERROR_BUSY if the interface is in use by another driver/app - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*claim_interface)(struct libusb_device_handle *handle, int interface_number); - - /* Release a previously claimed interface. - * - * This function should also generate a SET_INTERFACE control request, - * resetting the alternate setting of that interface to 0. It's OK for - * this function to block as a result. - * - * You will only ever be asked to release an interface which was - * successfully claimed earlier. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*release_interface)(struct libusb_device_handle *handle, int interface_number); - - /* Set the alternate setting for an interface. - * - * You will only ever be asked to set the alternate setting for an - * interface which was successfully claimed earlier. - * - * It's OK for this function to block. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the alternate setting does not exist - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*set_interface_altsetting)(struct libusb_device_handle *handle, - int interface_number, int altsetting); - - /* Clear a halt/stall condition on an endpoint. - * - * It's OK for this function to block. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*clear_halt)(struct libusb_device_handle *handle, - unsigned char endpoint); - - /* Perform a USB port reset to reinitialize a device. - * - * If possible, the handle should still be usable after the reset - * completes, assuming that the device descriptors did not change during - * reset and all previous interface state can be restored. - * - * If something changes, or you cannot easily locate/verify the resetted - * device, return LIBUSB_ERROR_NOT_FOUND. This prompts the application - * to close the old handle and re-enumerate the device. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if re-enumeration is required, or if the device - * has been disconnected since it was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*reset_device)(struct libusb_device_handle *handle); - - /* Determine if a kernel driver is active on an interface. Optional. - * - * The presence of a kernel driver on an interface indicates that any - * calls to claim_interface would fail with the LIBUSB_ERROR_BUSY code. - * - * Return: - * - 0 if no driver is active - * - 1 if a driver is active - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*kernel_driver_active)(struct libusb_device_handle *handle, - int interface_number); - - /* Detach a kernel driver from an interface. Optional. - * - * After detaching a kernel driver, the interface should be available - * for claim. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if no kernel driver was active - * - LIBUSB_ERROR_INVALID_PARAM if the interface does not exist - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*detach_kernel_driver)(struct libusb_device_handle *handle, - int interface_number); - - /* Attach a kernel driver to an interface. Optional. - * - * Reattach a kernel driver to the device. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if no kernel driver was active - * - LIBUSB_ERROR_INVALID_PARAM if the interface does not exist - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - LIBUSB_ERROR_BUSY if a program or driver has claimed the interface, - * preventing reattachment - * - another LIBUSB_ERROR code on other failure - */ - int (*attach_kernel_driver)(struct libusb_device_handle *handle, - int interface_number); - - /* Destroy a device. Optional. - * - * This function is called when the last reference to a device is - * destroyed. It should free any resources allocated in the get_device_list - * path. - */ - void (*destroy_device)(struct libusb_device *dev); - - /* Submit a transfer. Your implementation should take the transfer, - * morph it into whatever form your platform requires, and submit it - * asynchronously. - * - * This function must not block. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * - another LIBUSB_ERROR code on other failure - */ - int (*submit_transfer)(struct usbi_transfer *itransfer); - - /* Cancel a previously submitted transfer. - * - * This function must not block. The transfer cancellation must complete - * later, resulting in a call to usbi_handle_transfer_cancellation() - * from the context of handle_events. - */ - int (*cancel_transfer)(struct usbi_transfer *itransfer); - - /* Clear a transfer as if it has completed or cancelled, but do not - * report any completion/cancellation to the library. You should free - * all private data from the transfer as if you were just about to report - * completion or cancellation. - * - * This function might seem a bit out of place. It is used when libusb - * detects a disconnected device - it calls this function for all pending - * transfers before reporting completion (with the disconnect code) to - * the user. Maybe we can improve upon this internal interface in future. - */ - void (*clear_transfer_priv)(struct usbi_transfer *itransfer); - - /* Handle any pending events. This involves monitoring any active - * transfers and processing their completion or cancellation. - * - * The function is passed an array of pollfd structures (size nfds) - * as a result of the poll() system call. The num_ready parameter - * indicates the number of file descriptors that have reported events - * (i.e. the poll() return value). This should be enough information - * for you to determine which actions need to be taken on the currently - * active transfers. - * - * For any cancelled transfers, call usbi_handle_transfer_cancellation(). - * For completed transfers, call usbi_handle_transfer_completion(). - * For control/bulk/interrupt transfers, populate the "transferred" - * element of the appropriate usbi_transfer structure before calling the - * above functions. For isochronous transfers, populate the status and - * transferred fields of the iso packet descriptors of the transfer. - * - * This function should also be able to detect disconnection of the - * device, reporting that situation with usbi_handle_disconnect(). - * - * When processing an event related to a transfer, you probably want to - * take usbi_transfer.lock to prevent races. See the documentation for - * the usbi_transfer structure. - * - * Return 0 on success, or a LIBUSB_ERROR code on failure. - */ - int (*handle_events)(struct libusb_context *ctx, - struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready); - - /* Get time from specified clock. At least two clocks must be implemented - by the backend: USBI_CLOCK_REALTIME, and USBI_CLOCK_MONOTONIC. - - Description of clocks: - USBI_CLOCK_REALTIME : clock returns time since system epoch. - USBI_CLOCK_MONOTONIC: clock returns time since unspecified start - time (usually boot). - */ - int (*clock_gettime)(int clkid, struct timespec *tp); - -#ifdef USBI_TIMERFD_AVAILABLE - /* clock ID of the clock that should be used for timerfd */ - clockid_t (*get_timerfd_clockid)(void); -#endif - - /* Number of bytes to reserve for per-device private backend data. - * This private data area is accessible through the "os_priv" field of - * struct libusb_device. */ - size_t device_priv_size; - - /* Number of bytes to reserve for per-handle private backend data. - * This private data area is accessible through the "os_priv" field of - * struct libusb_device. */ - size_t device_handle_priv_size; - - /* Number of bytes to reserve for per-transfer private backend data. - * This private data area is accessible by calling - * usbi_transfer_get_os_priv() on the appropriate usbi_transfer instance. - */ - size_t transfer_priv_size; - - /* Mumber of additional bytes for os_priv for each iso packet. - * Can your backend use this? */ - /* FIXME: linux can't use this any more. if other OS's cannot either, - * then remove this */ - size_t add_iso_packet_size; -}; - -extern const struct usbi_os_backend * const usbi_backend; - -extern const struct usbi_os_backend linux_usbfs_backend; -extern const struct usbi_os_backend darwin_backend; -extern const struct usbi_os_backend openbsd_backend; -extern const struct usbi_os_backend windows_backend; - -#endif - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/darwin_usb.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/darwin_usb.c deleted file mode 100644 index 8834d0f..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/darwin_usb.c +++ /dev/null @@ -1,1750 +0,0 @@ -/* - * darwin backend for libusb 1.0 - * Copyright (C) 2008-2011 Nathan Hjelm - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 - #include -#endif - -#include -#include -#include - -#include "darwin_usb.h" - -/* async event thread */ -static pthread_mutex_t libusb_darwin_at_mutex; -static pthread_cond_t libusb_darwin_at_cond; - -static clock_serv_t clock_realtime; -static clock_serv_t clock_monotonic; - -static CFRunLoopRef libusb_darwin_acfl = NULL; /* async cf loop */ -static volatile int32_t initCount = 0; - -/* async event thread */ -static pthread_t libusb_darwin_at; - -static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian); -static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int iface); -static int darwin_release_interface(struct libusb_device_handle *dev_handle, int iface); -static int darwin_reset_device(struct libusb_device_handle *dev_handle); -static void darwin_async_io_callback (void *refcon, IOReturn result, void *arg0); - -static const char *darwin_error_str (int result) { - switch (result) { - case kIOReturnSuccess: - return "no error"; - case kIOReturnNotOpen: - return "device not opened for exclusive access"; - case kIOReturnNoDevice: - return "no connection to an IOService"; - case kIOUSBNoAsyncPortErr: - return "no async port has been opened for interface"; - case kIOReturnExclusiveAccess: - return "another process has device opened for exclusive access"; - case kIOUSBPipeStalled: - return "pipe is stalled"; - case kIOReturnError: - return "could not establish a connection to the Darwin kernel"; - case kIOUSBTransactionTimeout: - return "transaction timed out"; - case kIOReturnBadArgument: - return "invalid argument"; - case kIOReturnAborted: - return "transaction aborted"; - case kIOReturnNotResponding: - return "device not responding"; - case kIOReturnOverrun: - return "data overrun"; - case kIOReturnCannotWire: - return "physical memory can not be wired down"; - default: - return "unknown error"; - } -} - -static int darwin_to_libusb (int result) { - switch (result) { - case kIOReturnUnderrun: - case kIOReturnSuccess: - return LIBUSB_SUCCESS; - case kIOReturnNotOpen: - case kIOReturnNoDevice: - return LIBUSB_ERROR_NO_DEVICE; - case kIOReturnExclusiveAccess: - return LIBUSB_ERROR_ACCESS; - case kIOUSBPipeStalled: - return LIBUSB_ERROR_PIPE; - case kIOReturnBadArgument: - return LIBUSB_ERROR_INVALID_PARAM; - case kIOUSBTransactionTimeout: - return LIBUSB_ERROR_TIMEOUT; - case kIOReturnNotResponding: - case kIOReturnAborted: - case kIOReturnError: - case kIOUSBNoAsyncPortErr: - default: - return LIBUSB_ERROR_OTHER; - } -} - - -static int ep_to_pipeRef(struct libusb_device_handle *dev_handle, uint8_t ep, uint8_t *pipep, uint8_t *ifcp) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - - /* current interface */ - struct darwin_interface *cInterface; - - int8_t i, iface; - - usbi_info (HANDLE_CTX(dev_handle), "converting ep address 0x%02x to pipeRef and interface", ep); - - for (iface = 0 ; iface < USB_MAXINTERFACES ; iface++) { - cInterface = &priv->interfaces[iface]; - - if (dev_handle->claimed_interfaces & (1 << iface)) { - for (i = 0 ; i < cInterface->num_endpoints ; i++) { - if (cInterface->endpoint_addrs[i] == ep) { - *pipep = i + 1; - *ifcp = iface; - usbi_info (HANDLE_CTX(dev_handle), "pipe %d on interface %d matches", *pipep, *ifcp); - return 0; - } - } - } - } - - /* No pipe found with the correct endpoint address */ - usbi_warn (HANDLE_CTX(dev_handle), "no pipeRef found with endpoint address 0x%02x.", ep); - - return -1; -} - -static int usb_setup_device_iterator (io_iterator_t *deviceIterator, long location) { - CFMutableDictionaryRef matchingDict = IOServiceMatching(kIOUSBDeviceClassName); - - if (!matchingDict) - return kIOReturnError; - - if (location) { - CFMutableDictionaryRef propertyMatchDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - - if (propertyMatchDict) { - CFTypeRef locationCF = CFNumberCreate (NULL, kCFNumberLongType, &location); - - CFDictionarySetValue (propertyMatchDict, CFSTR(kUSBDevicePropertyLocationID), locationCF); - /* release our reference to the CFNumber (CFDictionarySetValue retains it) */ - CFRelease (locationCF); - - CFDictionarySetValue (matchingDict, CFSTR(kIOPropertyMatchKey), propertyMatchDict); - /* release out reference to the CFMutableDictionaryRef (CFDictionarySetValue retains it) */ - CFRelease (propertyMatchDict); - } - /* else we can still proceed as long as the caller accounts for the possibility of other devices in the iterator */ - } - - return IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, deviceIterator); -} - -static usb_device_t **usb_get_next_device (io_iterator_t deviceIterator, UInt32 *locationp) { - io_cf_plugin_ref_t *plugInInterface = NULL; - usb_device_t **device; - io_service_t usbDevice; - long result; - SInt32 score; - - if (!IOIteratorIsValid (deviceIterator)) - return NULL; - - - while ((usbDevice = IOIteratorNext(deviceIterator))) { - result = IOCreatePlugInInterfaceForService(usbDevice, kIOUSBDeviceUserClientTypeID, - kIOCFPlugInInterfaceID, &plugInInterface, - &score); - - /* we are done with the usb_device_t */ - (void)IOObjectRelease(usbDevice); - if (kIOReturnSuccess == result && plugInInterface) - break; - - usbi_dbg ("libusb/darwin.c usb_get_next_device: could not set up plugin for service: %s\n", darwin_error_str (result)); - } - - if (!usbDevice) - return NULL; - - (void)(*plugInInterface)->QueryInterface(plugInInterface, CFUUIDGetUUIDBytes(DeviceInterfaceID), - (LPVOID)&device); - - (*plugInInterface)->Stop(plugInInterface); - IODestroyPlugInInterface (plugInInterface); - - /* get the location from the device */ - if (locationp) - (*(device))->GetLocationID(device, locationp); - - return device; -} - -static kern_return_t darwin_get_device (uint32_t dev_location, usb_device_t ***darwin_device) { - kern_return_t kresult; - UInt32 location; - io_iterator_t deviceIterator; - - kresult = usb_setup_device_iterator (&deviceIterator, dev_location); - if (kresult) - return kresult; - - /* This port of libusb uses locations to keep track of devices. */ - while ((*darwin_device = usb_get_next_device (deviceIterator, &location)) != NULL) { - if (location == dev_location) - break; - - (**darwin_device)->Release(*darwin_device); - } - - IOObjectRelease (deviceIterator); - - if (!(*darwin_device)) - return kIOReturnNoDevice; - - return kIOReturnSuccess; -} - - - -static void darwin_devices_detached (void *ptr, io_iterator_t rem_devices) { - struct libusb_context *ctx = (struct libusb_context *)ptr; - struct libusb_device_handle *handle; - struct darwin_device_priv *dpriv; - struct darwin_device_handle_priv *priv; - - io_service_t device; - long location; - bool locationValid; - CFTypeRef locationCF; - UInt32 message; - - usbi_info (ctx, "a device has been detached"); - - while ((device = IOIteratorNext (rem_devices)) != 0) { - /* get the location from the i/o registry */ - locationCF = IORegistryEntryCreateCFProperty (device, CFSTR(kUSBDevicePropertyLocationID), kCFAllocatorDefault, 0); - - IOObjectRelease (device); - - if (!locationCF) - continue; - - locationValid = CFGetTypeID(locationCF) == CFNumberGetTypeID() && - CFNumberGetValue(locationCF, kCFNumberLongType, &location); - - CFRelease (locationCF); - - if (!locationValid) - continue; - - usbi_mutex_lock(&ctx->open_devs_lock); - list_for_each_entry(handle, &ctx->open_devs, list, struct libusb_device_handle) { - dpriv = (struct darwin_device_priv *)handle->dev->os_priv; - - /* the device may have been opened several times. write to each handle's event descriptor */ - if (dpriv->location == location && handle->os_priv) { - priv = (struct darwin_device_handle_priv *)handle->os_priv; - - message = MESSAGE_DEVICE_GONE; - write (priv->fds[1], &message, sizeof (message)); - } - } - - usbi_mutex_unlock(&ctx->open_devs_lock); - } -} - -static void darwin_clear_iterator (io_iterator_t iter) { - io_service_t device; - - while ((device = IOIteratorNext (iter)) != 0) - IOObjectRelease (device); -} - -static void *event_thread_main (void *arg0) { - IOReturn kresult; - struct libusb_context *ctx = (struct libusb_context *)arg0; - CFRunLoopRef runloop; - - /* Set this thread's name, so it can be seen in the debugger - and crash reports. */ -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 - pthread_setname_np ("org.libusb.device-detach"); -#endif - - /* Tell the Objective-C garbage collector about this thread. - This is required because, unlike NSThreads, pthreads are - not automatically registered. Although we don't use - Objective-C, we use CoreFoundation, which does. */ -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 - objc_registerThreadWithCollector(); -#endif - - /* hotplug (device removal) source */ - CFRunLoopSourceRef libusb_notification_cfsource; - io_notification_port_t libusb_notification_port; - io_iterator_t libusb_rem_device_iterator; - - usbi_info (ctx, "creating hotplug event source"); - - runloop = CFRunLoopGetCurrent (); - CFRetain (runloop); - - /* add the notification port to the run loop */ - libusb_notification_port = IONotificationPortCreate (kIOMasterPortDefault); - libusb_notification_cfsource = IONotificationPortGetRunLoopSource (libusb_notification_port); - CFRunLoopAddSource(runloop, libusb_notification_cfsource, kCFRunLoopDefaultMode); - - /* create notifications for removed devices */ - kresult = IOServiceAddMatchingNotification (libusb_notification_port, kIOTerminatedNotification, - IOServiceMatching(kIOUSBDeviceClassName), - (IOServiceMatchingCallback)darwin_devices_detached, - (void *)ctx, &libusb_rem_device_iterator); - - if (kresult != kIOReturnSuccess) { - usbi_err (ctx, "could not add hotplug event source: %s", darwin_error_str (kresult)); - - pthread_exit (NULL); - } - - /* arm notifiers */ - darwin_clear_iterator (libusb_rem_device_iterator); - - usbi_info (ctx, "thread ready to receive events"); - - /* signal the main thread that the async runloop has been created. */ - pthread_mutex_lock (&libusb_darwin_at_mutex); - libusb_darwin_acfl = runloop; - pthread_cond_signal (&libusb_darwin_at_cond); - pthread_mutex_unlock (&libusb_darwin_at_mutex); - - /* run the runloop */ - CFRunLoopRun(); - - usbi_info (ctx, "thread exiting"); - - /* delete notification port */ - IONotificationPortDestroy (libusb_notification_port); - IOObjectRelease (libusb_rem_device_iterator); - - CFRelease (runloop); - - libusb_darwin_acfl = NULL; - - pthread_exit (NULL); -} - -static int darwin_init(struct libusb_context *ctx) { - host_name_port_t host_self; - - if (OSAtomicIncrement32Barrier(&initCount) == 1) { - /* create the clocks that will be used */ - - host_self = mach_host_self(); - host_get_clock_service(host_self, CALENDAR_CLOCK, &clock_realtime); - host_get_clock_service(host_self, SYSTEM_CLOCK, &clock_monotonic); - mach_port_deallocate(mach_task_self(), host_self); - - pthread_mutex_init (&libusb_darwin_at_mutex, NULL); - pthread_cond_init (&libusb_darwin_at_cond, NULL); - - pthread_create (&libusb_darwin_at, NULL, event_thread_main, (void *)ctx); - - pthread_mutex_lock (&libusb_darwin_at_mutex); - while (!libusb_darwin_acfl) - pthread_cond_wait (&libusb_darwin_at_cond, &libusb_darwin_at_mutex); - pthread_mutex_unlock (&libusb_darwin_at_mutex); - } - - return 0; -} - -static void darwin_exit (void) { - if (OSAtomicDecrement32Barrier(&initCount) == 0) { - mach_port_deallocate(mach_task_self(), clock_realtime); - mach_port_deallocate(mach_task_self(), clock_monotonic); - - /* stop the async runloop and wait for the thread to terminate. */ - CFRunLoopStop (libusb_darwin_acfl); - pthread_join (libusb_darwin_at, NULL); - } -} - -static int darwin_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer, int *host_endian) { - struct darwin_device_priv *priv = (struct darwin_device_priv *)dev->os_priv; - - /* return cached copy */ - memmove (buffer, &(priv->dev_descriptor), DEVICE_DESC_LENGTH); - - *host_endian = 0; - - return 0; -} - -static int get_configuration_index (struct libusb_device *dev, int config_value) { - struct darwin_device_priv *priv = (struct darwin_device_priv *)dev->os_priv; - UInt8 i, numConfig; - IOUSBConfigurationDescriptorPtr desc; - IOReturn kresult; - - /* is there a simpler way to determine the index? */ - kresult = (*(priv->device))->GetNumberOfConfigurations (priv->device, &numConfig); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - for (i = 0 ; i < numConfig ; i++) { - (*(priv->device))->GetConfigurationDescriptorPtr (priv->device, i, &desc); - - if (desc->bConfigurationValue == config_value) - return i; - } - - /* configuration not found */ - return LIBUSB_ERROR_OTHER; -} - -static int darwin_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len, int *host_endian) { - struct darwin_device_priv *priv = (struct darwin_device_priv *)dev->os_priv; - int config_index; - - if (0 == priv->active_config) - return LIBUSB_ERROR_INVALID_PARAM; - - config_index = get_configuration_index (dev, priv->active_config); - if (config_index < 0) - return config_index; - - return darwin_get_config_descriptor (dev, config_index, buffer, len, host_endian); -} - -static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) { - struct darwin_device_priv *priv = (struct darwin_device_priv *)dev->os_priv; - IOUSBConfigurationDescriptorPtr desc; - IOReturn kresult; - usb_device_t **device = NULL; - - if (!priv) - return LIBUSB_ERROR_OTHER; - - if (!priv->device) { - kresult = darwin_get_device (priv->location, &device); - if (kresult || !device) { - usbi_err (DEVICE_CTX (dev), "could not find device: %s", darwin_error_str (kresult)); - - return darwin_to_libusb (kresult); - } - - /* don't have to open the device to get a config descriptor */ - } else - device = priv->device; - - kresult = (*device)->GetConfigurationDescriptorPtr (device, config_index, &desc); - if (kresult == kIOReturnSuccess) { - /* copy descriptor */ - if (libusb_le16_to_cpu(desc->wTotalLength) < len) - len = libusb_le16_to_cpu(desc->wTotalLength); - - memmove (buffer, desc, len); - - /* GetConfigurationDescriptorPtr returns the descriptor in USB bus order */ - *host_endian = 0; - } - - if (!priv->device) - (*device)->Release (device); - - return darwin_to_libusb (kresult); -} - -/* check whether the os has configured the device */ -static int darwin_check_configuration (struct libusb_context *ctx, struct libusb_device *dev, usb_device_t **darwin_device) { - struct darwin_device_priv *priv = (struct darwin_device_priv *)dev->os_priv; - - IOUSBConfigurationDescriptorPtr configDesc; - IOUSBFindInterfaceRequest request; - kern_return_t kresult; - io_iterator_t interface_iterator; - io_service_t firstInterface; - - if (priv->dev_descriptor.bNumConfigurations < 1) { - usbi_err (ctx, "device has no configurations"); - return LIBUSB_ERROR_OTHER; /* no configurations at this speed so we can't use it */ - } - - /* find the first configuration */ - kresult = (*darwin_device)->GetConfigurationDescriptorPtr (darwin_device, 0, &configDesc); - priv->first_config = (kIOReturnSuccess == kresult) ? configDesc->bConfigurationValue : 1; - - /* check if the device is already configured. there is probably a better way than iterating over the - to accomplish this (the trick is we need to avoid a call to GetConfigurations since buggy devices - might lock up on the device request) */ - - /* Setup the Interface Request */ - request.bInterfaceClass = kIOUSBFindInterfaceDontCare; - request.bInterfaceSubClass = kIOUSBFindInterfaceDontCare; - request.bInterfaceProtocol = kIOUSBFindInterfaceDontCare; - request.bAlternateSetting = kIOUSBFindInterfaceDontCare; - - kresult = (*(darwin_device))->CreateInterfaceIterator(darwin_device, &request, &interface_iterator); - if (kresult) - return darwin_to_libusb (kresult); - - /* iterate once */ - firstInterface = IOIteratorNext(interface_iterator); - - /* done with the interface iterator */ - IOObjectRelease(interface_iterator); - - if (firstInterface) { - IOObjectRelease (firstInterface); - - /* device is configured */ - if (priv->dev_descriptor.bNumConfigurations == 1) - /* to avoid problems with some devices get the configurations value from the configuration descriptor */ - priv->active_config = priv->first_config; - else - /* devices with more than one configuration should work with GetConfiguration */ - (*darwin_device)->GetConfiguration (darwin_device, &priv->active_config); - } else - /* not configured */ - priv->active_config = 0; - - usbi_info (ctx, "active config: %u, first config: %u", priv->active_config, priv->first_config); - - return 0; -} - -static int darwin_cache_device_descriptor (struct libusb_context *ctx, struct libusb_device *dev, usb_device_t **device) { - struct darwin_device_priv *priv; - int retries = 5, delay = 30000; - int unsuspended = 0, try_unsuspend = 1, try_reconfigure = 1; - int is_open = 0; - int ret = 0, ret2; - IOUSBDevRequest req; - UInt8 bDeviceClass; - UInt16 idProduct, idVendor; - - (*device)->GetDeviceClass (device, &bDeviceClass); - (*device)->GetDeviceProduct (device, &idProduct); - (*device)->GetDeviceVendor (device, &idVendor); - - priv = (struct darwin_device_priv *)dev->os_priv; - - /* try to open the device (we can usually continue even if this fails) */ - is_open = ((*device)->USBDeviceOpenSeize(device) == kIOReturnSuccess); - - /**** retrieve device descriptor ****/ - do { - /* Set up request for device descriptor */ - memset (&(priv->dev_descriptor), 0, sizeof(IOUSBDeviceDescriptor)); - req.bmRequestType = USBmakebmRequestType(kUSBIn, kUSBStandard, kUSBDevice); - req.bRequest = kUSBRqGetDescriptor; - req.wValue = kUSBDeviceDesc << 8; - req.wIndex = 0; - req.wLength = sizeof(priv->dev_descriptor); - req.pData = &(priv->dev_descriptor); - - /* according to Apple's documentation the device must be open for DeviceRequest but we may not be able to open some - * devices and Apple's USB Prober doesn't bother to open the device before issuing a descriptor request. Still, - * to follow the spec as closely as possible, try opening the device */ - - ret = (*(device))->DeviceRequest (device, &req); - - if (kIOReturnOverrun == ret && kUSBDeviceDesc == priv->dev_descriptor.bDescriptorType) - /* received an overrun error but we still received a device descriptor */ - ret = kIOReturnSuccess; - - if (kIOReturnSuccess == ret && (0 == priv->dev_descriptor.bNumConfigurations || - 0 == priv->dev_descriptor.bcdUSB)) { - /* work around for incorrectly configured devices */ - if (try_reconfigure && is_open) { - usbi_dbg("descriptor appears to be invalid. resetting configuration before trying again..."); - - /* set the first configuration */ - (*device)->SetConfiguration(device, 1); - - /* don't try to reconfigure again */ - try_reconfigure = 0; - } - - ret = kIOUSBPipeStalled; - } - - if (kIOReturnSuccess != ret && is_open && try_unsuspend) { - /* device may be suspended. unsuspend it and try again */ -#if DeviceVersion >= 320 - UInt32 info; - - /* IOUSBFamily 320+ provides a way to detect device suspension but earlier versions do not */ - (void)(*device)->GetUSBDeviceInformation (device, &info); - - try_unsuspend = info & (1 << kUSBInformationDeviceIsSuspendedBit); -#endif - - if (try_unsuspend) { - /* resume the device */ - ret2 = (*device)->USBDeviceSuspend (device, 0); - if (kIOReturnSuccess != ret2) { - /* prevent log spew from poorly behaving devices. this indicates the - os actually had trouble communicating with the device */ - usbi_dbg("could not retrieve device descriptor. failed to unsuspend: %s",darwin_error_str(ret2)); - } else - unsuspended = 1; - - try_unsuspend = 0; - } - } - - if (kIOReturnSuccess != ret) { - usbi_dbg("kernel responded with code: 0x%08x. sleeping for %d ms before trying again", ret, delay/1000); - /* sleep for a little while before trying again */ - usleep (delay); - } - } while (kIOReturnSuccess != ret && retries--); - - if (unsuspended) - /* resuspend the device */ - (void)(*device)->USBDeviceSuspend (device, 1); - - if (is_open) - (void) (*device)->USBDeviceClose (device); - - if (ret != kIOReturnSuccess) { - /* a debug message was already printed out for this error */ - if (LIBUSB_CLASS_HUB == bDeviceClass) - usbi_dbg ("could not retrieve device descriptor %.4x:%.4x: %s. skipping device", idVendor, idProduct, darwin_error_str (ret)); - else - usbi_warn (ctx, "could not retrieve device descriptor %.4x:%.4x: %s. skipping device", idVendor, idProduct, darwin_error_str (ret)); - - return -1; - } - - usbi_dbg ("device descriptor:"); - usbi_dbg (" bDescriptorType: 0x%02x", priv->dev_descriptor.bDescriptorType); - usbi_dbg (" bcdUSB: 0x%04x", priv->dev_descriptor.bcdUSB); - usbi_dbg (" bDeviceClass: 0x%02x", priv->dev_descriptor.bDeviceClass); - usbi_dbg (" bDeviceSubClass: 0x%02x", priv->dev_descriptor.bDeviceSubClass); - usbi_dbg (" bDeviceProtocol: 0x%02x", priv->dev_descriptor.bDeviceProtocol); - usbi_dbg (" bMaxPacketSize0: 0x%02x", priv->dev_descriptor.bMaxPacketSize0); - usbi_dbg (" idVendor: 0x%04x", priv->dev_descriptor.idVendor); - usbi_dbg (" idProduct: 0x%04x", priv->dev_descriptor.idProduct); - usbi_dbg (" bcdDevice: 0x%04x", priv->dev_descriptor.bcdDevice); - usbi_dbg (" iManufacturer: 0x%02x", priv->dev_descriptor.iManufacturer); - usbi_dbg (" iProduct: 0x%02x", priv->dev_descriptor.iProduct); - usbi_dbg (" iSerialNumber: 0x%02x", priv->dev_descriptor.iSerialNumber); - usbi_dbg (" bNumConfigurations: 0x%02x", priv->dev_descriptor.bNumConfigurations); - - /* catch buggy hubs (which appear to be virtual). Apple's own USB prober has problems with these devices. */ - if (libusb_le16_to_cpu (priv->dev_descriptor.idProduct) != idProduct) { - /* not a valid device */ - usbi_warn (ctx, "idProduct from iokit (%04x) does not match idProduct in descriptor (%04x). skipping device", - idProduct, libusb_le16_to_cpu (priv->dev_descriptor.idProduct)); - return -1; - } - - return 0; -} - -static int process_new_device (struct libusb_context *ctx, usb_device_t **device, UInt32 locationID, struct discovered_devs **_discdevs) { - struct darwin_device_priv *priv; - struct libusb_device *dev; - struct discovered_devs *discdevs; - UInt16 address; - UInt8 devSpeed; - int ret = 0, need_unref = 0; - - do { - dev = usbi_get_device_by_session_id(ctx, locationID); - if (!dev) { - usbi_info (ctx, "allocating new device for location 0x%08x", locationID); - dev = usbi_alloc_device(ctx, locationID); - need_unref = 1; - } else - usbi_info (ctx, "using existing device for location 0x%08x", locationID); - - if (!dev) { - ret = LIBUSB_ERROR_NO_MEM; - break; - } - - priv = (struct darwin_device_priv *)dev->os_priv; - - (*device)->GetDeviceAddress (device, (USBDeviceAddress *)&address); - - ret = darwin_cache_device_descriptor (ctx, dev, device); - if (ret < 0) - break; - - /* check current active configuration (and cache the first configuration value-- which may be used by claim_interface) */ - ret = darwin_check_configuration (ctx, dev, device); - if (ret < 0) - break; - - dev->bus_number = locationID >> 24; - dev->device_address = address; - - (*device)->GetDeviceSpeed (device, &devSpeed); - - switch (devSpeed) { - case kUSBDeviceSpeedLow: dev->speed = LIBUSB_SPEED_LOW; break; - case kUSBDeviceSpeedFull: dev->speed = LIBUSB_SPEED_FULL; break; - case kUSBDeviceSpeedHigh: dev->speed = LIBUSB_SPEED_HIGH; break; - default: - usbi_warn (ctx, "Got unknown device speed %d", devSpeed); - } - - /* save our location, we'll need this later */ - priv->location = locationID; - snprintf(priv->sys_path, 20, "%03i-%04x-%04x-%02x-%02x", address, priv->dev_descriptor.idVendor, priv->dev_descriptor.idProduct, - priv->dev_descriptor.bDeviceClass, priv->dev_descriptor.bDeviceSubClass); - - ret = usbi_sanitize_device (dev); - if (ret < 0) - break; - - /* append the device to the list of discovered devices */ - discdevs = discovered_devs_append(*_discdevs, dev); - if (!discdevs) { - ret = LIBUSB_ERROR_NO_MEM; - break; - } - - *_discdevs = discdevs; - - usbi_info (ctx, "found device with address %d at %s", dev->device_address, priv->sys_path); - } while (0); - - if (need_unref) - libusb_unref_device(dev); - - return ret; -} - -static int darwin_get_device_list(struct libusb_context *ctx, struct discovered_devs **_discdevs) { - io_iterator_t deviceIterator; - usb_device_t **device; - kern_return_t kresult; - UInt32 location; - - kresult = usb_setup_device_iterator (&deviceIterator, 0); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - while ((device = usb_get_next_device (deviceIterator, &location)) != NULL) { - (void) process_new_device (ctx, device, location, _discdevs); - - (*(device))->Release(device); - } - - IOObjectRelease(deviceIterator); - - return 0; -} - -static int darwin_open (struct libusb_device_handle *dev_handle) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)dev_handle->dev->os_priv; - usb_device_t **darwin_device; - IOReturn kresult; - - if (0 == dpriv->open_count) { - kresult = darwin_get_device (dpriv->location, &darwin_device); - if (kresult) { - usbi_err (HANDLE_CTX (dev_handle), "could not find device: %s", darwin_error_str (kresult)); - return darwin_to_libusb (kresult); - } - - dpriv->device = darwin_device; - - /* try to open the device */ - kresult = (*(dpriv->device))->USBDeviceOpenSeize (dpriv->device); - - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "USBDeviceOpen: %s", darwin_error_str(kresult)); - - switch (kresult) { - case kIOReturnExclusiveAccess: - /* it is possible to perform some actions on a device that is not open so do not return an error */ - priv->is_open = 0; - - break; - default: - (*(dpriv->device))->Release (dpriv->device); - dpriv->device = NULL; - return darwin_to_libusb (kresult); - } - } else { - /* create async event source */ - kresult = (*(dpriv->device))->CreateDeviceAsyncEventSource (dpriv->device, &priv->cfSource); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "CreateDeviceAsyncEventSource: %s", darwin_error_str(kresult)); - - (*(dpriv->device))->USBDeviceClose (dpriv->device); - (*(dpriv->device))->Release (dpriv->device); - - dpriv->device = NULL; - return darwin_to_libusb (kresult); - } - - priv->is_open = 1; - - CFRetain (libusb_darwin_acfl); - - /* add the cfSource to the aync run loop */ - CFRunLoopAddSource(libusb_darwin_acfl, priv->cfSource, kCFRunLoopCommonModes); - } - } - - /* device opened successfully */ - dpriv->open_count++; - - /* create a file descriptor for notifications */ - pipe (priv->fds); - - /* set the pipe to be non-blocking */ - fcntl (priv->fds[1], F_SETFD, O_NONBLOCK); - - usbi_add_pollfd(HANDLE_CTX(dev_handle), priv->fds[0], POLLIN); - - usbi_info (HANDLE_CTX (dev_handle), "device open for access"); - - return 0; -} - -static void darwin_close (struct libusb_device_handle *dev_handle) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)dev_handle->dev->os_priv; - IOReturn kresult; - int i; - - if (dpriv->open_count == 0) { - /* something is probably very wrong if this is the case */ - usbi_err (HANDLE_CTX (dev_handle), "Close called on a device that was not open!\n"); - return; - } - - dpriv->open_count--; - - /* make sure all interfaces are released */ - for (i = 0 ; i < USB_MAXINTERFACES ; i++) - if (dev_handle->claimed_interfaces & (1 << i)) - libusb_release_interface (dev_handle, i); - - if (0 == dpriv->open_count) { - if (priv->is_open) { - /* delete the device's async event source */ - if (priv->cfSource) { - CFRunLoopRemoveSource (libusb_darwin_acfl, priv->cfSource, kCFRunLoopDefaultMode); - CFRelease (priv->cfSource); - } - - /* close the device */ - kresult = (*(dpriv->device))->USBDeviceClose(dpriv->device); - if (kresult) { - /* Log the fact that we had a problem closing the file, however failing a - * close isn't really an error, so return success anyway */ - usbi_err (HANDLE_CTX (dev_handle), "USBDeviceClose: %s", darwin_error_str(kresult)); - } - } - - kresult = (*(dpriv->device))->Release(dpriv->device); - if (kresult) { - /* Log the fact that we had a problem closing the file, however failing a - * close isn't really an error, so return success anyway */ - usbi_err (HANDLE_CTX (dev_handle), "Release: %s", darwin_error_str(kresult)); - } - - dpriv->device = NULL; - } - - /* file descriptors are maintained per-instance */ - usbi_remove_pollfd (HANDLE_CTX (dev_handle), priv->fds[0]); - close (priv->fds[1]); - close (priv->fds[0]); - - priv->fds[0] = priv->fds[1] = -1; -} - -static int darwin_get_configuration(struct libusb_device_handle *dev_handle, int *config) { - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)dev_handle->dev->os_priv; - - *config = (int) dpriv->active_config; - - return 0; -} - -static int darwin_set_configuration(struct libusb_device_handle *dev_handle, int config) { - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)dev_handle->dev->os_priv; - IOReturn kresult; - int i; - - /* Setting configuration will invalidate the interface, so we need - to reclaim it. First, dispose of existing interfaces, if any. */ - for (i = 0 ; i < USB_MAXINTERFACES ; i++) - if (dev_handle->claimed_interfaces & (1 << i)) - darwin_release_interface (dev_handle, i); - - kresult = (*(dpriv->device))->SetConfiguration (dpriv->device, config); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - /* Reclaim any interfaces. */ - for (i = 0 ; i < USB_MAXINTERFACES ; i++) - if (dev_handle->claimed_interfaces & (1 << i)) - darwin_claim_interface (dev_handle, i); - - dpriv->active_config = config; - - return 0; -} - -static int darwin_get_interface (usb_device_t **darwin_device, uint8_t ifc, io_service_t *usbInterfacep) { - IOUSBFindInterfaceRequest request; - uint8_t current_interface; - kern_return_t kresult; - io_iterator_t interface_iterator; - - *usbInterfacep = IO_OBJECT_NULL; - - /* Setup the Interface Request */ - request.bInterfaceClass = kIOUSBFindInterfaceDontCare; - request.bInterfaceSubClass = kIOUSBFindInterfaceDontCare; - request.bInterfaceProtocol = kIOUSBFindInterfaceDontCare; - request.bAlternateSetting = kIOUSBFindInterfaceDontCare; - - kresult = (*(darwin_device))->CreateInterfaceIterator(darwin_device, &request, &interface_iterator); - if (kresult) - return kresult; - - for ( current_interface = 0 ; current_interface <= ifc ; current_interface++ ) { - *usbInterfacep = IOIteratorNext(interface_iterator); - if (current_interface != ifc) - (void) IOObjectRelease (*usbInterfacep); - } - - /* done with the interface iterator */ - IOObjectRelease(interface_iterator); - - return 0; -} - -static int get_endpoints (struct libusb_device_handle *dev_handle, int iface) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - - /* current interface */ - struct darwin_interface *cInterface = &priv->interfaces[iface]; - - kern_return_t kresult; - - u_int8_t numep, direction, number; - u_int8_t dont_care1, dont_care3; - u_int16_t dont_care2; - int i; - - usbi_info (HANDLE_CTX (dev_handle), "building table of endpoints."); - - /* retrieve the total number of endpoints on this interface */ - kresult = (*(cInterface->interface))->GetNumEndpoints(cInterface->interface, &numep); - if (kresult) { - usbi_err (HANDLE_CTX (dev_handle), "can't get number of endpoints for interface: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - - /* iterate through pipe references */ - for (i = 1 ; i <= numep ; i++) { - kresult = (*(cInterface->interface))->GetPipeProperties(cInterface->interface, i, &direction, &number, &dont_care1, - &dont_care2, &dont_care3); - - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "error getting pipe information for pipe %d: %s", i, darwin_error_str(kresult)); - - return darwin_to_libusb (kresult); - } - - usbi_info (HANDLE_CTX (dev_handle), "interface: %i pipe %i: dir: %i number: %i", iface, i, direction, number); - - cInterface->endpoint_addrs[i - 1] = ((direction << 7 & LIBUSB_ENDPOINT_DIR_MASK) | (number & LIBUSB_ENDPOINT_ADDRESS_MASK)); - } - - cInterface->num_endpoints = numep; - - return 0; -} - -static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int iface) { - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)dev_handle->dev->os_priv; - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - io_service_t usbInterface = IO_OBJECT_NULL; - IOReturn kresult; - IOCFPlugInInterface **plugInInterface = NULL; - SInt32 score; - - /* current interface */ - struct darwin_interface *cInterface = &priv->interfaces[iface]; - - kresult = darwin_get_interface (dpriv->device, iface, &usbInterface); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - /* make sure we have an interface */ - if (!usbInterface && dpriv->first_config != 0) { - usbi_info (HANDLE_CTX (dev_handle), "no interface found; setting configuration: %d", dpriv->first_config); - - /* set the configuration */ - kresult = darwin_set_configuration (dev_handle, dpriv->first_config); - if (kresult != LIBUSB_SUCCESS) { - usbi_err (HANDLE_CTX (dev_handle), "could not set configuration"); - return kresult; - } - - kresult = darwin_get_interface (dpriv->device, iface, &usbInterface); - if (kresult) { - usbi_err (HANDLE_CTX (dev_handle), "darwin_get_interface: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - } - - if (!usbInterface) { - usbi_err (HANDLE_CTX (dev_handle), "interface not found"); - return LIBUSB_ERROR_NOT_FOUND; - } - - /* get an interface to the device's interface */ - kresult = IOCreatePlugInInterfaceForService (usbInterface, kIOUSBInterfaceUserClientTypeID, - kIOCFPlugInInterfaceID, &plugInInterface, &score); - - /* ignore release error */ - (void)IOObjectRelease (usbInterface); - - if (kresult) { - usbi_err (HANDLE_CTX (dev_handle), "IOCreatePlugInInterfaceForService: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - - if (!plugInInterface) { - usbi_err (HANDLE_CTX (dev_handle), "plugin interface not found"); - return LIBUSB_ERROR_NOT_FOUND; - } - - /* Do the actual claim */ - kresult = (*plugInInterface)->QueryInterface(plugInInterface, - CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID), - (LPVOID)&cInterface->interface); - /* We no longer need the intermediate plug-in */ - IODestroyPlugInInterface (plugInInterface); - if (kresult || !cInterface->interface) { - usbi_err (HANDLE_CTX (dev_handle), "QueryInterface: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - - /* claim the interface */ - kresult = (*(cInterface->interface))->USBInterfaceOpen(cInterface->interface); - if (kresult) { - usbi_err (HANDLE_CTX (dev_handle), "USBInterfaceOpen: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - - /* update list of endpoints */ - kresult = get_endpoints (dev_handle, iface); - if (kresult) { - /* this should not happen */ - darwin_release_interface (dev_handle, iface); - usbi_err (HANDLE_CTX (dev_handle), "could not build endpoint table"); - return kresult; - } - - cInterface->cfSource = NULL; - - /* create async event source */ - kresult = (*(cInterface->interface))->CreateInterfaceAsyncEventSource (cInterface->interface, &cInterface->cfSource); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "could not create async event source"); - - /* can't continue without an async event source */ - (void)darwin_release_interface (dev_handle, iface); - - return darwin_to_libusb (kresult); - } - - /* add the cfSource to the async thread's run loop */ - CFRunLoopAddSource(libusb_darwin_acfl, cInterface->cfSource, kCFRunLoopDefaultMode); - - usbi_info (HANDLE_CTX (dev_handle), "interface opened"); - - return 0; -} - -static int darwin_release_interface(struct libusb_device_handle *dev_handle, int iface) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - IOReturn kresult; - - /* current interface */ - struct darwin_interface *cInterface = &priv->interfaces[iface]; - - /* Check to see if an interface is open */ - if (!cInterface->interface) - return LIBUSB_SUCCESS; - - /* clean up endpoint data */ - cInterface->num_endpoints = 0; - - /* delete the interface's async event source */ - if (cInterface->cfSource) { - CFRunLoopRemoveSource (libusb_darwin_acfl, cInterface->cfSource, kCFRunLoopDefaultMode); - CFRelease (cInterface->cfSource); - } - - kresult = (*(cInterface->interface))->USBInterfaceClose(cInterface->interface); - if (kresult) - usbi_err (HANDLE_CTX (dev_handle), "USBInterfaceClose: %s", darwin_error_str(kresult)); - - kresult = (*(cInterface->interface))->Release(cInterface->interface); - if (kresult != kIOReturnSuccess) - usbi_err (HANDLE_CTX (dev_handle), "Release: %s", darwin_error_str(kresult)); - - cInterface->interface = IO_OBJECT_NULL; - - return darwin_to_libusb (kresult); -} - -static int darwin_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - IOReturn kresult; - - /* current interface */ - struct darwin_interface *cInterface = &priv->interfaces[iface]; - - if (!cInterface->interface) - return LIBUSB_ERROR_NO_DEVICE; - - kresult = (*(cInterface->interface))->SetAlternateInterface (cInterface->interface, altsetting); - if (kresult != kIOReturnSuccess) - darwin_reset_device (dev_handle); - - /* update list of endpoints */ - kresult = get_endpoints (dev_handle, iface); - if (kresult) { - /* this should not happen */ - darwin_release_interface (dev_handle, iface); - usbi_err (HANDLE_CTX (dev_handle), "could not build endpoint table"); - return kresult; - } - - return darwin_to_libusb (kresult); -} - -static int darwin_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - - /* current interface */ - struct darwin_interface *cInterface; - uint8_t pipeRef, iface; - IOReturn kresult; - - /* determine the interface/endpoint to use */ - if (ep_to_pipeRef (dev_handle, endpoint, &pipeRef, &iface) != 0) { - usbi_err (HANDLE_CTX (dev_handle), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - cInterface = &priv->interfaces[iface]; - -#if (InterfaceVersion < 190) - kresult = (*(cInterface->interface))->ClearPipeStall(cInterface->interface, pipeRef); -#else - /* newer versions of darwin support clearing additional bits on the device's endpoint */ - kresult = (*(cInterface->interface))->ClearPipeStallBothEnds(cInterface->interface, pipeRef); -#endif - if (kresult) - usbi_err (HANDLE_CTX (dev_handle), "ClearPipeStall: %s", darwin_error_str (kresult)); - - return darwin_to_libusb (kresult); -} - -static int darwin_reset_device(struct libusb_device_handle *dev_handle) { - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)dev_handle->dev->os_priv; - IOReturn kresult; - - kresult = (*(dpriv->device))->ResetDevice (dpriv->device); - if (kresult) - usbi_err (HANDLE_CTX (dev_handle), "ResetDevice: %s", darwin_error_str (kresult)); - - return darwin_to_libusb (kresult); -} - -static int darwin_kernel_driver_active(struct libusb_device_handle *dev_handle, int interface) { - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)dev_handle->dev->os_priv; - io_service_t usbInterface; - CFTypeRef driver; - IOReturn kresult; - - kresult = darwin_get_interface (dpriv->device, interface, &usbInterface); - if (kresult) { - usbi_err (HANDLE_CTX (dev_handle), "darwin_get_interface: %s", darwin_error_str(kresult)); - - return darwin_to_libusb (kresult); - } - - driver = IORegistryEntryCreateCFProperty (usbInterface, kIOBundleIdentifierKey, kCFAllocatorDefault, 0); - IOObjectRelease (usbInterface); - - if (driver) { - CFRelease (driver); - - return 1; - } - - /* no driver */ - return 0; -} - -/* attaching/detaching kernel drivers is not currently supported (maybe in the future?) */ -static int darwin_attach_kernel_driver (struct libusb_device_handle *dev_handle, int interface) { - (void)dev_handle; - (void)interface; - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static int darwin_detach_kernel_driver (struct libusb_device_handle *dev_handle, int interface) { - (void)dev_handle; - (void)interface; - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static void darwin_destroy_device(struct libusb_device *dev) { - (void)dev; -} - -static int submit_bulk_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)transfer->dev_handle->os_priv; - - IOReturn ret; - uint8_t transferType; - /* None of the values below are used in libusb for bulk transfers */ - uint8_t direction, number, interval, pipeRef, iface; - uint16_t maxPacketSize; - - struct darwin_interface *cInterface; - - if (IS_XFEROUT(transfer) && transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) - return LIBUSB_ERROR_NOT_SUPPORTED; - - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, &iface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - cInterface = &priv->interfaces[iface]; - - (*(cInterface->interface))->GetPipeProperties (cInterface->interface, pipeRef, &direction, &number, - &transferType, &maxPacketSize, &interval); - - /* submit the request */ - /* timeouts are unavailable on interrupt endpoints */ - if (transferType == kUSBInterrupt) { - if (IS_XFERIN(transfer)) - ret = (*(cInterface->interface))->ReadPipeAsync(cInterface->interface, pipeRef, transfer->buffer, - transfer->length, darwin_async_io_callback, itransfer); - else - ret = (*(cInterface->interface))->WritePipeAsync(cInterface->interface, pipeRef, transfer->buffer, - transfer->length, darwin_async_io_callback, itransfer); - } else { - itransfer->flags |= USBI_TRANSFER_OS_HANDLES_TIMEOUT; - - if (IS_XFERIN(transfer)) - ret = (*(cInterface->interface))->ReadPipeAsyncTO(cInterface->interface, pipeRef, transfer->buffer, - transfer->length, transfer->timeout, transfer->timeout, - darwin_async_io_callback, (void *)itransfer); - else - ret = (*(cInterface->interface))->WritePipeAsyncTO(cInterface->interface, pipeRef, transfer->buffer, - transfer->length, transfer->timeout, transfer->timeout, - darwin_async_io_callback, (void *)itransfer); - } - - if (ret) - usbi_err (TRANSFER_CTX (transfer), "bulk transfer failed (dir = %s): %s (code = 0x%08x)", IS_XFERIN(transfer) ? "In" : "Out", - darwin_error_str(ret), ret); - - return darwin_to_libusb (ret); -} - -static int submit_iso_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)transfer->dev_handle->os_priv; - - IOReturn kresult; - uint8_t pipeRef, iface; - UInt64 frame; - AbsoluteTime atTime; - int i; - - struct darwin_interface *cInterface; - - /* construct an array of IOUSBIsocFrames, reuse the old one if possible */ - if (tpriv->isoc_framelist && tpriv->num_iso_packets != transfer->num_iso_packets) { - free(tpriv->isoc_framelist); - tpriv->isoc_framelist = NULL; - } - - if (!tpriv->isoc_framelist) { - tpriv->num_iso_packets = transfer->num_iso_packets; - tpriv->isoc_framelist = (IOUSBIsocFrame*) calloc (transfer->num_iso_packets, sizeof(IOUSBIsocFrame)); - if (!tpriv->isoc_framelist) - return LIBUSB_ERROR_NO_MEM; - } - - /* copy the frame list from the libusb descriptor (the structures differ only is member order) */ - for (i = 0 ; i < transfer->num_iso_packets ; i++) - tpriv->isoc_framelist[i].frReqCount = transfer->iso_packet_desc[i].length; - - /* determine the interface/endpoint to use */ - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, &iface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - cInterface = &priv->interfaces[iface]; - - /* Last but not least we need the bus frame number */ - kresult = (*(cInterface->interface))->GetBusFrameNumber(cInterface->interface, &frame, &atTime); - if (kresult) { - usbi_err (TRANSFER_CTX (transfer), "failed to get bus frame number: %d", kresult); - free(tpriv->isoc_framelist); - tpriv->isoc_framelist = NULL; - - return darwin_to_libusb (kresult); - } - - /* schedule for a frame a little in the future */ - frame += 4; - - if (cInterface->frames[transfer->endpoint] && frame < cInterface->frames[transfer->endpoint]) - frame = cInterface->frames[transfer->endpoint]; - - /* submit the request */ - if (IS_XFERIN(transfer)) - kresult = (*(cInterface->interface))->ReadIsochPipeAsync(cInterface->interface, pipeRef, transfer->buffer, frame, - transfer->num_iso_packets, tpriv->isoc_framelist, darwin_async_io_callback, - itransfer); - else - kresult = (*(cInterface->interface))->WriteIsochPipeAsync(cInterface->interface, pipeRef, transfer->buffer, frame, - transfer->num_iso_packets, tpriv->isoc_framelist, darwin_async_io_callback, - itransfer); - - cInterface->frames[transfer->endpoint] = frame + transfer->num_iso_packets / 8; - - if (kresult != kIOReturnSuccess) { - usbi_err (TRANSFER_CTX (transfer), "isochronous transfer failed (dir: %s): %s", IS_XFERIN(transfer) ? "In" : "Out", - darwin_error_str(kresult)); - free (tpriv->isoc_framelist); - tpriv->isoc_framelist = NULL; - } - - return darwin_to_libusb (kresult); -} - -static int submit_control_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_control_setup *setup = (struct libusb_control_setup *) transfer->buffer; - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)transfer->dev_handle->dev->os_priv; - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)transfer->dev_handle->os_priv; - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - - IOReturn kresult; - - bzero(&tpriv->req, sizeof(tpriv->req)); - - /* IOUSBDeviceInterface expects the request in cpu endianess */ - tpriv->req.bmRequestType = setup->bmRequestType; - tpriv->req.bRequest = setup->bRequest; - /* these values should be in bus order from libusb_fill_control_setup */ - tpriv->req.wValue = OSSwapLittleToHostInt16 (setup->wValue); - tpriv->req.wIndex = OSSwapLittleToHostInt16 (setup->wIndex); - tpriv->req.wLength = OSSwapLittleToHostInt16 (setup->wLength); - /* data is stored after the libusb control block */ - tpriv->req.pData = transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; - tpriv->req.completionTimeout = transfer->timeout; - tpriv->req.noDataTimeout = transfer->timeout; - - itransfer->flags |= USBI_TRANSFER_OS_HANDLES_TIMEOUT; - - /* all transfers in libusb-1.0 are async */ - - if (transfer->endpoint) { - struct darwin_interface *cInterface; - uint8_t pipeRef, iface; - - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, &iface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - cInterface = &priv->interfaces[iface]; - - kresult = (*(cInterface->interface))->ControlRequestAsyncTO (cInterface->interface, pipeRef, &(tpriv->req), darwin_async_io_callback, itransfer); - } else - /* control request on endpoint 0 */ - kresult = (*(dpriv->device))->DeviceRequestAsyncTO(dpriv->device, &(tpriv->req), darwin_async_io_callback, itransfer); - - if (kresult != kIOReturnSuccess) - usbi_err (TRANSFER_CTX (transfer), "control request failed: %s", darwin_error_str(kresult)); - - return darwin_to_libusb (kresult); -} - -static int darwin_submit_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return submit_control_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - return submit_bulk_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return submit_iso_transfer(itransfer); - default: - usbi_err (TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static int cancel_control_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)transfer->dev_handle->dev->os_priv; - IOReturn kresult; - - usbi_info (ITRANSFER_CTX (itransfer), "WARNING: aborting all transactions control pipe"); - - if (!dpriv->device) - return LIBUSB_ERROR_NO_DEVICE; - - kresult = (*(dpriv->device))->USBDeviceAbortPipeZero (dpriv->device); - - return darwin_to_libusb (kresult); -} - -static int darwin_abort_transfers (struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_device_priv *dpriv = (struct darwin_device_priv *)transfer->dev_handle->dev->os_priv; - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)transfer->dev_handle->os_priv; - struct darwin_interface *cInterface; - uint8_t pipeRef, iface; - IOReturn kresult; - - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, &iface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - cInterface = &priv->interfaces[iface]; - - if (!dpriv->device) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_info (ITRANSFER_CTX (itransfer), "WARNING: aborting all transactions on interface %d pipe %d", iface, pipeRef); - - /* abort transactions */ - (*(cInterface->interface))->AbortPipe (cInterface->interface, pipeRef); - - usbi_info (ITRANSFER_CTX (itransfer), "calling clear pipe stall to clear the data toggle bit"); - - /* clear the data toggle bit */ -#if (InterfaceVersion < 190) - kresult = (*(cInterface->interface))->ClearPipeStall(cInterface->interface, pipeRef); -#else - /* newer versions of darwin support clearing additional bits on the device's endpoint */ - kresult = (*(cInterface->interface))->ClearPipeStallBothEnds(cInterface->interface, pipeRef); -#endif - - return darwin_to_libusb (kresult); -} - -static int darwin_cancel_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return cancel_control_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return darwin_abort_transfers (itransfer); - default: - usbi_err (TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static void darwin_clear_transfer_priv (struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - - if (transfer->type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS && tpriv->isoc_framelist) { - free (tpriv->isoc_framelist); - tpriv->isoc_framelist = NULL; - } -} - -static void darwin_async_io_callback (void *refcon, IOReturn result, void *arg0) { - struct usbi_transfer *itransfer = (struct usbi_transfer *)refcon; - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)transfer->dev_handle->os_priv; - UInt32 message, size; - - usbi_info (ITRANSFER_CTX (itransfer), "an async io operation has completed"); - - size = (UInt32) (uintptr_t) arg0; - - /* send a completion message to the device's file descriptor */ - message = MESSAGE_ASYNC_IO_COMPLETE; - write (priv->fds[1], &message, sizeof (message)); - write (priv->fds[1], &itransfer, sizeof (itransfer)); - write (priv->fds[1], &result, sizeof (IOReturn)); - write (priv->fds[1], &size, sizeof (size)); -} - -static int darwin_transfer_status (struct usbi_transfer *itransfer, kern_return_t result) { - if (itransfer->flags & USBI_TRANSFER_TIMED_OUT) - result = kIOUSBTransactionTimeout; - - switch (result) { - case kIOReturnUnderrun: - case kIOReturnSuccess: - return LIBUSB_TRANSFER_COMPLETED; - case kIOReturnAborted: - return LIBUSB_TRANSFER_CANCELLED; - case kIOUSBPipeStalled: - usbi_warn (ITRANSFER_CTX (itransfer), "transfer error: pipe is stalled"); - return LIBUSB_TRANSFER_STALL; - case kIOReturnOverrun: - usbi_err (ITRANSFER_CTX (itransfer), "transfer error: data overrun"); - return LIBUSB_TRANSFER_OVERFLOW; - case kIOUSBTransactionTimeout: - usbi_err (ITRANSFER_CTX (itransfer), "transfer error: timed out"); - itransfer->flags |= USBI_TRANSFER_TIMED_OUT; - return LIBUSB_TRANSFER_TIMED_OUT; - default: - usbi_err (ITRANSFER_CTX (itransfer), "transfer error: %s (value = 0x%08x)", darwin_error_str (result), result); - return LIBUSB_TRANSFER_ERROR; - } -} - -static void darwin_handle_callback (struct usbi_transfer *itransfer, kern_return_t result, UInt32 io_size) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - int isIsoc = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS == transfer->type; - int isBulk = LIBUSB_TRANSFER_TYPE_BULK == transfer->type; - int isControl = LIBUSB_TRANSFER_TYPE_CONTROL == transfer->type; - int isInterrupt = LIBUSB_TRANSFER_TYPE_INTERRUPT == transfer->type; - int i; - - if (!isIsoc && !isBulk && !isControl && !isInterrupt) { - usbi_err (TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return; - } - - usbi_info (ITRANSFER_CTX (itransfer), "handling %s completion with kernel status %d", - isControl ? "control" : isBulk ? "bulk" : isIsoc ? "isoc" : "interrupt", result); - - if (kIOReturnSuccess == result || kIOReturnUnderrun == result) { - if (isIsoc && tpriv->isoc_framelist) { - /* copy isochronous results back */ - - for (i = 0; i < transfer->num_iso_packets ; i++) { - struct libusb_iso_packet_descriptor *lib_desc = &transfer->iso_packet_desc[i]; - lib_desc->status = darwin_to_libusb (tpriv->isoc_framelist[i].frStatus); - lib_desc->actual_length = tpriv->isoc_framelist[i].frActCount; - } - } else if (!isIsoc) - itransfer->transferred += io_size; - } - - /* it is ok to handle cancelled transfers without calling usbi_handle_transfer_cancellation (we catch timeout transfers) */ - usbi_handle_transfer_completion (itransfer, darwin_transfer_status (itransfer, result)); -} - -static int op_handle_events(struct libusb_context *ctx, struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready) { - struct usbi_transfer *itransfer; - UInt32 io_size; - IOReturn kresult; - POLL_NFDS_TYPE i = 0; - ssize_t ret; - UInt32 message; - - usbi_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - struct pollfd *pollfd = &fds[i]; - struct libusb_device_handle *handle; - struct darwin_device_handle_priv *hpriv = NULL; - - usbi_info (ctx, "checking fd %i with revents = %x", fds[i], pollfd->revents); - - if (!pollfd->revents) - continue; - - num_ready--; - list_for_each_entry(handle, &ctx->open_devs, list, struct libusb_device_handle) { - hpriv = (struct darwin_device_handle_priv *)handle->os_priv; - if (hpriv->fds[0] == pollfd->fd) - break; - } - - if (!(pollfd->revents & POLLERR)) { - ret = read (hpriv->fds[0], &message, sizeof (message)); - if (ret < (ssize_t)sizeof (message)) - continue; - } else - /* could not poll the device-- response is to delete the device (this seems a little heavy-handed) */ - message = MESSAGE_DEVICE_GONE; - - switch (message) { - case MESSAGE_DEVICE_GONE: - /* remove the device's async port from the runloop */ - if (hpriv->cfSource) { - if (libusb_darwin_acfl) - CFRunLoopRemoveSource (libusb_darwin_acfl, hpriv->cfSource, kCFRunLoopDefaultMode); - CFRelease (hpriv->cfSource); - hpriv->cfSource = NULL; - } - - usbi_remove_pollfd(HANDLE_CTX(handle), hpriv->fds[0]); - usbi_handle_disconnect(handle); - - /* done with this device */ - continue; - case MESSAGE_ASYNC_IO_COMPLETE: - read (hpriv->fds[0], &itransfer, sizeof (itransfer)); - read (hpriv->fds[0], &kresult, sizeof (IOReturn)); - read (hpriv->fds[0], &io_size, sizeof (UInt32)); - - darwin_handle_callback (itransfer, kresult, io_size); - break; - default: - usbi_err (ctx, "unknown message received from device pipe"); - } - } - - usbi_mutex_unlock(&ctx->open_devs_lock); - - return 0; -} - -static int darwin_clock_gettime(int clk_id, struct timespec *tp) { - mach_timespec_t sys_time; - clock_serv_t clock_ref; - - switch (clk_id) { - case USBI_CLOCK_REALTIME: - /* CLOCK_REALTIME represents time since the epoch */ - clock_ref = clock_realtime; - break; - case USBI_CLOCK_MONOTONIC: - /* use system boot time as reference for the monotonic clock */ - clock_ref = clock_monotonic; - break; - default: - return LIBUSB_ERROR_INVALID_PARAM; - } - - clock_get_time (clock_ref, &sys_time); - - tp->tv_sec = sys_time.tv_sec; - tp->tv_nsec = sys_time.tv_nsec; - - return 0; -} - -const struct usbi_os_backend darwin_backend = { - .name = "Darwin", - .init = darwin_init, - .exit = darwin_exit, - .get_device_list = darwin_get_device_list, - .get_device_descriptor = darwin_get_device_descriptor, - .get_active_config_descriptor = darwin_get_active_config_descriptor, - .get_config_descriptor = darwin_get_config_descriptor, - - .open = darwin_open, - .close = darwin_close, - .get_configuration = darwin_get_configuration, - .set_configuration = darwin_set_configuration, - .claim_interface = darwin_claim_interface, - .release_interface = darwin_release_interface, - - .set_interface_altsetting = darwin_set_interface_altsetting, - .clear_halt = darwin_clear_halt, - .reset_device = darwin_reset_device, - - .kernel_driver_active = darwin_kernel_driver_active, - .detach_kernel_driver = darwin_detach_kernel_driver, - .attach_kernel_driver = darwin_attach_kernel_driver, - - .destroy_device = darwin_destroy_device, - - .submit_transfer = darwin_submit_transfer, - .cancel_transfer = darwin_cancel_transfer, - .clear_transfer_priv = darwin_clear_transfer_priv, - - .handle_events = op_handle_events, - - .clock_gettime = darwin_clock_gettime, - - .device_priv_size = sizeof(struct darwin_device_priv), - .device_handle_priv_size = sizeof(struct darwin_device_handle_priv), - .transfer_priv_size = sizeof(struct darwin_transfer_priv), - .add_iso_packet_size = 0, -}; - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/darwin_usb.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/darwin_usb.h deleted file mode 100644 index 59d0a69..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/darwin_usb.h +++ /dev/null @@ -1,169 +0,0 @@ -/* - * darwin backend for libusb 1.0 - * Copyright (C) 2008-2009 Nathan Hjelm - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#if !defined(LIBUSB_DARWIN_H) -#define LIBUSB_DARWIN_H - -#include "libusbi.h" - -#include -#include -#include -#include - -/* IOUSBInterfaceInferface */ -#if defined (kIOUSBInterfaceInterfaceID300) - -#define usb_interface_t IOUSBInterfaceInterface300 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID300 -#define InterfaceVersion 300 - -#elif defined (kIOUSBInterfaceInterfaceID245) - -#define usb_interface_t IOUSBInterfaceInterface245 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID245 -#define InterfaceVersion 245 - -#elif defined (kIOUSBInterfaceInterfaceID220) - -#define usb_interface_t IOUSBInterfaceInterface220 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID220 -#define InterfaceVersion 220 - -#elif defined (kIOUSBInterfaceInterfaceID197) - -#define usb_interface_t IOUSBInterfaceInterface197 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID197 -#define InterfaceVersion 197 - -#elif defined (kIOUSBInterfaceInterfaceID190) - -#define usb_interface_t IOUSBInterfaceInterface190 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID190 -#define InterfaceVersion 190 - -#elif defined (kIOUSBInterfaceInterfaceID182) - -#define usb_interface_t IOUSBInterfaceInterface182 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID182 -#define InterfaceVersion 182 - -#else - -#error "IOUSBFamily is too old. Please upgrade your OS" - -#endif - -/* IOUSBDeviceInterface */ -#if defined (kIOUSBDeviceInterfaceID320) - -#define usb_device_t IOUSBDeviceInterface320 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID320 -#define DeviceVersion 320 - -#elif defined (kIOUSBDeviceInterfaceID300) - -#define usb_device_t IOUSBDeviceInterface300 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID300 -#define DeviceVersion 300 - -#elif defined (kIOUSBDeviceInterfaceID245) - -#define usb_device_t IOUSBDeviceInterface245 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID245 -#define DeviceVersion 245 - -#elif defined (kIOUSBDeviceInterfaceID197) - -#define usb_device_t IOUSBDeviceInterface197 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID197 -#define DeviceVersion 197 - -#elif defined (kIOUSBDeviceInterfaceID187) - -#define usb_device_t IOUSBDeviceInterface187 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID187 -#define DeviceVersion 187 - -#elif defined (kIOUSBDeviceInterfaceID182) - -#define usb_device_t IOUSBDeviceInterface182 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID182 -#define DeviceVersion 182 - -#else - -#error "IOUSBFamily is too old. Please upgrade your OS" - -#endif - -#if !defined(IO_OBJECT_NULL) -#define IO_OBJECT_NULL ((io_object_t) 0) -#endif - -typedef IOCFPlugInInterface *io_cf_plugin_ref_t; -typedef IONotificationPortRef io_notification_port_t; - -/* private structures */ -struct darwin_device_priv { - IOUSBDeviceDescriptor dev_descriptor; - UInt32 location; - char sys_path[21]; - usb_device_t **device; - int open_count; - UInt8 first_config, active_config; -}; - -struct darwin_device_handle_priv { - int is_open; - CFRunLoopSourceRef cfSource; - int fds[2]; - - struct darwin_interface { - usb_interface_t **interface; - uint8_t num_endpoints; - CFRunLoopSourceRef cfSource; - uint64_t frames[256]; - uint8_t endpoint_addrs[USB_MAXENDPOINTS]; - } interfaces[USB_MAXINTERFACES]; -}; - -struct darwin_transfer_priv { - /* Isoc */ - IOUSBIsocFrame *isoc_framelist; - size_t num_iso_packets; - - /* Control */ -#if !defined (LIBUSB_NO_TIMEOUT_DEVICE) - IOUSBDevRequestTO req; -#else - IOUSBDevRequest req; -#endif - - /* Bulk */ -}; - -enum { - MESSAGE_DEVICE_GONE, - MESSAGE_ASYNC_IO_COMPLETE -}; - - - -#endif diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/linux_usbfs.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/linux_usbfs.c deleted file mode 100644 index 02d182d..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/linux_usbfs.c +++ /dev/null @@ -1,2438 +0,0 @@ -/* - * Linux usbfs backend for libusb - * Copyright (C) 2007-2009 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libusb.h" -#include "libusbi.h" -#include "linux_usbfs.h" - -/* sysfs vs usbfs: - * opening a usbfs node causes the device to be resumed, so we attempt to - * avoid this during enumeration. - * - * sysfs allows us to read the kernel's in-memory copies of device descriptors - * and so forth, avoiding the need to open the device: - * - The binary "descriptors" file was added in 2.6.23. - * - The "busnum" file was added in 2.6.22 - * - The "devnum" file has been present since pre-2.6.18 - * - the "bConfigurationValue" file has been present since pre-2.6.18 - * - * If we have bConfigurationValue, busnum, and devnum, then we can determine - * the active configuration without having to open the usbfs node in RDWR mode. - * We assume this is the case if we see the busnum file (indicates 2.6.22+). - * The busnum file is important as that is the only way we can relate sysfs - * devices to usbfs nodes. - * - * If we also have descriptors, we can obtain the device descriptor and active - * configuration without touching usbfs at all. - * - * The descriptors file originally only contained the active configuration - * descriptor alongside the device descriptor, but all configurations are - * included as of Linux 2.6.26. - */ - -/* endianness for multi-byte fields: - * - * Descriptors exposed by usbfs have the multi-byte fields in the device - * descriptor as host endian. Multi-byte fields in the other descriptors are - * bus-endian. The kernel documentation says otherwise, but it is wrong. - */ - -static const char *usbfs_path = NULL; - -/* use usbdev*.* device names in /dev instead of the usbfs bus directories */ -static int usbdev_names = 0; - -/* Linux 2.6.32 adds support for a bulk continuation URB flag. this basically - * allows us to mark URBs as being part of a specific logical transfer when - * we submit them to the kernel. then, on any error except a cancellation, all - * URBs within that transfer will be cancelled and no more URBs will be - * accepted for the transfer, meaning that no more data can creep in. - * - * The BULK_CONTINUATION flag must be set on all URBs within a bulk transfer - * (in either direction) except the first. - * For IN transfers, we must also set SHORT_NOT_OK on all URBs except the - * last; it means that the kernel should treat a short reply as an error. - * For OUT transfers, SHORT_NOT_OK must not be set. it isn't needed (OUT - * transfers can't be short unless there's already some sort of error), and - * setting this flag is disallowed (a kernel with USB debugging enabled will - * reject such URBs). - */ -static int supports_flag_bulk_continuation = -1; - -/* Linux 2.6.31 fixes support for the zero length packet URB flag. This - * allows us to mark URBs that should be followed by a zero length data - * packet, which can be required by device- or class-specific protocols. - */ -static int supports_flag_zero_packet = -1; - -/* clock ID for monotonic clock, as not all clock sources are available on all - * systems. appropriate choice made at initialization time. */ -static clockid_t monotonic_clkid = -1; - -/* do we have a busnum to relate devices? this also implies that we can read - * the active configuration through bConfigurationValue */ -static int sysfs_can_relate_devices = 0; - -/* do we have a descriptors file? */ -static int sysfs_has_descriptors = 0; - -struct linux_device_priv { - char *sysfs_dir; - unsigned char *dev_descriptor; - unsigned char *config_descriptor; -}; - -struct linux_device_handle_priv { - int fd; -}; - -enum reap_action { - NORMAL = 0, - /* submission failed after the first URB, so await cancellation/completion - * of all the others */ - SUBMIT_FAILED, - - /* cancelled by user or timeout */ - CANCELLED, - - /* completed multi-URB transfer in non-final URB */ - COMPLETED_EARLY, - - /* one or more urbs encountered a low-level error */ - ERROR, -}; - -struct linux_transfer_priv { - union { - struct usbfs_urb *urbs; - struct usbfs_urb **iso_urbs; - }; - - enum reap_action reap_action; - int num_urbs; - unsigned int num_retired; - enum libusb_transfer_status reap_status; - - /* next iso packet in user-supplied transfer to be populated */ - int iso_packet_offset; -}; - -static void _get_usbfs_path(struct libusb_device *dev, char *path) -{ - if (usbdev_names) - snprintf(path, PATH_MAX, "%s/usbdev%d.%d", - usbfs_path, dev->bus_number, dev->device_address); - else - snprintf(path, PATH_MAX, "%s/%03d/%03d", - usbfs_path, dev->bus_number, dev->device_address); -} - -static struct linux_device_priv *_device_priv(struct libusb_device *dev) -{ - return (struct linux_device_priv *) dev->os_priv; -} - -static struct linux_device_handle_priv *_device_handle_priv( - struct libusb_device_handle *handle) -{ - return (struct linux_device_handle_priv *) handle->os_priv; -} - -/* check dirent for a /dev/usbdev%d.%d name - * optionally return bus/device on success */ -static int _is_usbdev_entry(struct dirent *entry, int *bus_p, int *dev_p) -{ - int busnum, devnum; - - if (sscanf(entry->d_name, "usbdev%d.%d", &busnum, &devnum) != 2) - return 0; - - usbi_dbg("found: %s", entry->d_name); - if (bus_p != NULL) - *bus_p = busnum; - if (dev_p != NULL) - *dev_p = devnum; - return 1; -} - -static int check_usb_vfs(const char *dirname) -{ - DIR *dir; - struct dirent *entry; - int found = 0; - - dir = opendir(dirname); - if (!dir) - return 0; - - while ((entry = readdir(dir)) != NULL) { - if (entry->d_name[0] == '.') - continue; - - /* We assume if we find any files that it must be the right place */ - found = 1; - break; - } - - closedir(dir); - return found; -} - -static const char *find_usbfs_path(void) -{ - const char *path = "/dev/bus/usb"; - const char *ret = NULL; - - if (check_usb_vfs(path)) { - ret = path; - } else { - path = "/proc/bus/usb"; - if (check_usb_vfs(path)) - ret = path; - } - - /* look for /dev/usbdev*.* if the normal places fail */ - if (ret == NULL) { - struct dirent *entry; - DIR *dir; - - path = "/dev"; - dir = opendir(path); - if (dir != NULL) { - while ((entry = readdir(dir)) != NULL) { - if (_is_usbdev_entry(entry, NULL, NULL)) { - /* found one; that's enough */ - ret = path; - usbdev_names = 1; - break; - } - } - closedir(dir); - } - } - - if (ret != NULL) - usbi_dbg("found usbfs at %s", ret); - - return ret; -} - -/* the monotonic clock is not usable on all systems (e.g. embedded ones often - * seem to lack it). fall back to REALTIME if we have to. */ -static clockid_t find_monotonic_clock(void) -{ -#ifdef CLOCK_MONOTONIC - struct timespec ts; - int r; - - /* Linux 2.6.28 adds CLOCK_MONOTONIC_RAW but we don't use it - * because it's not available through timerfd */ - r = clock_gettime(CLOCK_MONOTONIC, &ts); - if (r == 0) - return CLOCK_MONOTONIC; - usbi_dbg("monotonic clock doesn't work, errno %d", errno); -#endif - - return CLOCK_REALTIME; -} - -static int kernel_version_ge(int major, int minor, int sublevel) -{ - struct utsname uts; - int atoms, kmajor, kminor, ksublevel; - - if (uname(&uts) < 0) - return -1; - atoms = sscanf(uts.release, "%d.%d.%d", &kmajor, &kminor, &ksublevel); - if (atoms < 1) - return -1; - - if (kmajor > major) - return 1; - if (kmajor < major) - return 0; - - /* kmajor == major */ - if (atoms < 2) - return 0 == minor && 0 == sublevel; - if (kminor > minor) - return 1; - if (kminor < minor) - return 0; - - /* kminor == minor */ - if (atoms < 3) - return 0 == sublevel; - - return ksublevel >= sublevel; -} - -/* Return 1 if filename exists inside dirname in sysfs. - SYSFS_DEVICE_PATH is assumed to be the beginning of the path. */ -static int sysfs_has_file(const char *dirname, const char *filename) -{ - struct stat statbuf; - char path[PATH_MAX]; - int r; - - snprintf(path, PATH_MAX, "%s/%s/%s", SYSFS_DEVICE_PATH, dirname, filename); - r = stat(path, &statbuf); - if (r == 0 && S_ISREG(statbuf.st_mode)) - return 1; - - return 0; -} - -static int op_init(struct libusb_context *ctx) -{ - struct stat statbuf; - int r; - - usbfs_path = find_usbfs_path(); - if (!usbfs_path) { - usbi_err(ctx, "could not find usbfs"); - return LIBUSB_ERROR_OTHER; - } - - if (monotonic_clkid == -1) - monotonic_clkid = find_monotonic_clock(); - - if (supports_flag_bulk_continuation == -1) { - /* bulk continuation URB flag available from Linux 2.6.32 */ - supports_flag_bulk_continuation = kernel_version_ge(2,6,32); - if (supports_flag_bulk_continuation == -1) { - usbi_err(ctx, "error checking for bulk continuation support"); - return LIBUSB_ERROR_OTHER; - } - } - - if (supports_flag_bulk_continuation) - usbi_dbg("bulk continuation flag supported"); - - if (-1 == supports_flag_zero_packet) { - /* zero length packet URB flag fixed since Linux 2.6.31 */ - supports_flag_zero_packet = kernel_version_ge(2,6,31); - if (-1 == supports_flag_zero_packet) { - usbi_err(ctx, "error checking for zero length packet support"); - return LIBUSB_ERROR_OTHER; - } - } - - if (supports_flag_zero_packet) - usbi_dbg("zero length packet flag supported"); - - r = stat(SYSFS_DEVICE_PATH, &statbuf); - if (r == 0 && S_ISDIR(statbuf.st_mode)) { - DIR *devices = opendir(SYSFS_DEVICE_PATH); - struct dirent *entry; - - usbi_dbg("found usb devices in sysfs"); - - if (!devices) { - usbi_err(ctx, "opendir devices failed errno=%d", errno); - return LIBUSB_ERROR_IO; - } - - /* Make sure sysfs supports all the required files. If it - * does not, then usbfs will be used instead. Determine - * this by looping through the directories in - * SYSFS_DEVICE_PATH. With the assumption that there will - * always be subdirectories of the name usbN (usb1, usb2, - * etc) representing the root hubs, check the usbN - * subdirectories to see if they have all the needed files. - * This algorithm uses the usbN subdirectories (root hubs) - * because a device disconnection will cause a race - * condition regarding which files are available, sometimes - * causing an incorrect result. The root hubs are used - * because it is assumed that they will always be present. - * See the "sysfs vs usbfs" comment at the top of this file - * for more details. */ - while ((entry = readdir(devices))) { - int has_busnum=0, has_devnum=0, has_descriptors=0; - int has_configuration_value=0; - - /* Only check the usbN directories. */ - if (strncmp(entry->d_name, "usb", 3) != 0) - continue; - - /* Check for the files libusb needs from sysfs. */ - has_busnum = sysfs_has_file(entry->d_name, "busnum"); - has_devnum = sysfs_has_file(entry->d_name, "devnum"); - has_descriptors = sysfs_has_file(entry->d_name, "descriptors"); - has_configuration_value = sysfs_has_file(entry->d_name, "bConfigurationValue"); - - if (has_busnum && has_devnum && has_configuration_value) - sysfs_can_relate_devices = 1; - if (has_descriptors) - sysfs_has_descriptors = 1; - - /* Only need to check until we've found ONE device which - has all the attributes. */ - if (sysfs_has_descriptors && sysfs_can_relate_devices) - break; - } - closedir(devices); - - /* Only use sysfs descriptors if the rest of - sysfs will work for libusb. */ - if (!sysfs_can_relate_devices) - sysfs_has_descriptors = 0; - } else { - usbi_dbg("sysfs usb info not available"); - sysfs_has_descriptors = 0; - sysfs_can_relate_devices = 0; - } - - return 0; -} - -static int usbfs_get_device_descriptor(struct libusb_device *dev, - unsigned char *buffer) -{ - struct linux_device_priv *priv = _device_priv(dev); - - /* return cached copy */ - memcpy(buffer, priv->dev_descriptor, DEVICE_DESC_LENGTH); - return 0; -} - -static int _open_sysfs_attr(struct libusb_device *dev, const char *attr) -{ - struct linux_device_priv *priv = _device_priv(dev); - char filename[PATH_MAX]; - int fd; - - snprintf(filename, PATH_MAX, "%s/%s/%s", - SYSFS_DEVICE_PATH, priv->sysfs_dir, attr); - fd = open(filename, O_RDONLY); - if (fd < 0) { - usbi_err(DEVICE_CTX(dev), - "open %s failed ret=%d errno=%d", filename, fd, errno); - return LIBUSB_ERROR_IO; - } - - return fd; -} - -/* Note only suitable for attributes which always read >= 0, < 0 is error */ -static int __read_sysfs_attr(struct libusb_context *ctx, - const char *devname, const char *attr) -{ - char filename[PATH_MAX]; - FILE *f; - int r, value; - - snprintf(filename, PATH_MAX, "%s/%s/%s", SYSFS_DEVICE_PATH, - devname, attr); - f = fopen(filename, "r"); - if (f == NULL) { - if (errno == ENOENT) { - /* File doesn't exist. Assume the device has been - disconnected (see trac ticket #70). */ - return LIBUSB_ERROR_NO_DEVICE; - } - usbi_err(ctx, "open %s failed errno=%d", filename, errno); - return LIBUSB_ERROR_IO; - } - - r = fscanf(f, "%d", &value); - fclose(f); - if (r != 1) { - usbi_err(ctx, "fscanf %s returned %d, errno=%d", attr, r, errno); - return LIBUSB_ERROR_NO_DEVICE; /* For unplug race (trac #70) */ - } - if (value < 0) { - usbi_err(ctx, "%s contains a negative value", filename); - return LIBUSB_ERROR_IO; - } - - return value; -} - -static int sysfs_get_device_descriptor(struct libusb_device *dev, - unsigned char *buffer) -{ - int fd; - ssize_t r; - - /* sysfs provides access to an in-memory copy of the device descriptor, - * so we use that rather than keeping our own copy */ - - fd = _open_sysfs_attr(dev, "descriptors"); - if (fd < 0) - return fd; - - r = read(fd, buffer, DEVICE_DESC_LENGTH);; - close(fd); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), "read failed, ret=%d errno=%d", fd, errno); - return LIBUSB_ERROR_IO; - } else if (r < DEVICE_DESC_LENGTH) { - usbi_err(DEVICE_CTX(dev), "short read %d/%d", r, DEVICE_DESC_LENGTH); - return LIBUSB_ERROR_IO; - } - - return 0; -} - -static int op_get_device_descriptor(struct libusb_device *dev, - unsigned char *buffer, int *host_endian) -{ - if (sysfs_has_descriptors) { - return sysfs_get_device_descriptor(dev, buffer); - } else { - *host_endian = 1; - return usbfs_get_device_descriptor(dev, buffer); - } -} - -static int usbfs_get_active_config_descriptor(struct libusb_device *dev, - unsigned char *buffer, size_t len) -{ - struct linux_device_priv *priv = _device_priv(dev); - if (!priv->config_descriptor) - return LIBUSB_ERROR_NOT_FOUND; /* device is unconfigured */ - - /* retrieve cached copy */ - memcpy(buffer, priv->config_descriptor, len); - return 0; -} - -/* read the bConfigurationValue for a device */ -static int sysfs_get_active_config(struct libusb_device *dev, int *config) -{ - char *endptr; - char tmp[4] = {0, 0, 0, 0}; - long num; - int fd; - ssize_t r; - - fd = _open_sysfs_attr(dev, "bConfigurationValue"); - if (fd < 0) - return fd; - - r = read(fd, tmp, sizeof(tmp)); - close(fd); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), - "read bConfigurationValue failed ret=%d errno=%d", r, errno); - return LIBUSB_ERROR_IO; - } else if (r == 0) { - usbi_dbg("device unconfigured"); - *config = -1; - return 0; - } - - if (tmp[sizeof(tmp) - 1] != 0) { - usbi_err(DEVICE_CTX(dev), "not null-terminated?"); - return LIBUSB_ERROR_IO; - } else if (tmp[0] == 0) { - usbi_err(DEVICE_CTX(dev), "no configuration value?"); - return LIBUSB_ERROR_IO; - } - - num = strtol(tmp, &endptr, 10); - if (endptr == tmp) { - usbi_err(DEVICE_CTX(dev), "error converting '%s' to integer", tmp); - return LIBUSB_ERROR_IO; - } - - *config = (int) num; - return 0; -} - -/* takes a usbfs/descriptors fd seeked to the start of a configuration, and - * seeks to the next one. */ -static int seek_to_next_config(struct libusb_context *ctx, int fd, - int host_endian) -{ - struct libusb_config_descriptor config; - unsigned char tmp[6]; - off_t off; - ssize_t r; - - /* read first 6 bytes of descriptor */ - r = read(fd, tmp, sizeof(tmp)); - if (r < 0) { - usbi_err(ctx, "read failed ret=%d errno=%d", r, errno); - return LIBUSB_ERROR_IO; - } else if (r < sizeof(tmp)) { - usbi_err(ctx, "short descriptor read %d/%d", r, sizeof(tmp)); - return LIBUSB_ERROR_IO; - } - - /* seek forward to end of config */ - usbi_parse_descriptor(tmp, "bbwbb", &config, host_endian); - off = lseek(fd, config.wTotalLength - sizeof(tmp), SEEK_CUR); - if (off < 0) { - usbi_err(ctx, "seek failed ret=%d errno=%d", off, errno); - return LIBUSB_ERROR_IO; - } - - return 0; -} - -static int sysfs_get_active_config_descriptor(struct libusb_device *dev, - unsigned char *buffer, size_t len) -{ - int fd; - ssize_t r; - off_t off; - int to_copy; - int config; - unsigned char tmp[6]; - - r = sysfs_get_active_config(dev, &config); - if (r < 0) - return r; - if (config == -1) - return LIBUSB_ERROR_NOT_FOUND; - - usbi_dbg("active configuration %d", config); - - /* sysfs provides access to an in-memory copy of the device descriptor, - * so we use that rather than keeping our own copy */ - - fd = _open_sysfs_attr(dev, "descriptors"); - if (fd < 0) - return fd; - - /* device might have been unconfigured since we read bConfigurationValue, - * so first check that there is any config descriptor data at all... */ - off = lseek(fd, 0, SEEK_END); - if (off < 1) { - usbi_err(DEVICE_CTX(dev), "end seek failed, ret=%d errno=%d", - off, errno); - close(fd); - return LIBUSB_ERROR_IO; - } else if (off == DEVICE_DESC_LENGTH) { - close(fd); - return LIBUSB_ERROR_NOT_FOUND; - } - - off = lseek(fd, DEVICE_DESC_LENGTH, SEEK_SET); - if (off < 0) { - usbi_err(DEVICE_CTX(dev), "seek failed, ret=%d errno=%d", off, errno); - close(fd); - return LIBUSB_ERROR_IO; - } - - /* unbounded loop: we expect the descriptor to be present under all - * circumstances */ - while (1) { - r = read(fd, tmp, sizeof(tmp)); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), "read failed, ret=%d errno=%d", - fd, errno); - return LIBUSB_ERROR_IO; - } else if (r < sizeof(tmp)) { - usbi_err(DEVICE_CTX(dev), "short read %d/%d", r, sizeof(tmp)); - return LIBUSB_ERROR_IO; - } - - /* check bConfigurationValue */ - if (tmp[5] == config) - break; - - /* try the next descriptor */ - off = lseek(fd, 0 - sizeof(tmp), SEEK_CUR); - if (off < 0) - return LIBUSB_ERROR_IO; - - r = seek_to_next_config(DEVICE_CTX(dev), fd, 0); - if (r < 0) - return r; - } - - to_copy = (len < sizeof(tmp)) ? len : sizeof(tmp); - memcpy(buffer, tmp, to_copy); - if (len > sizeof(tmp)) { - r = read(fd, buffer + sizeof(tmp), len - sizeof(tmp)); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), "read failed, ret=%d errno=%d", - fd, errno); - r = LIBUSB_ERROR_IO; - } else if (r == 0) { - usbi_dbg("device is unconfigured"); - r = LIBUSB_ERROR_NOT_FOUND; - } else if (r < len - sizeof(tmp)) { - usbi_err(DEVICE_CTX(dev), "short read %d/%d", r, len); - r = LIBUSB_ERROR_IO; - } - } else { - r = 0; - } - - close(fd); - return r; -} - -static int op_get_active_config_descriptor(struct libusb_device *dev, - unsigned char *buffer, size_t len, int *host_endian) -{ - if (sysfs_has_descriptors) { - return sysfs_get_active_config_descriptor(dev, buffer, len); - } else { - return usbfs_get_active_config_descriptor(dev, buffer, len); - } -} - -/* takes a usbfs fd, attempts to find the requested config and copy a certain - * amount of it into an output buffer. */ -static int get_config_descriptor(struct libusb_context *ctx, int fd, - uint8_t config_index, unsigned char *buffer, size_t len) -{ - off_t off; - ssize_t r; - - off = lseek(fd, DEVICE_DESC_LENGTH, SEEK_SET); - if (off < 0) { - usbi_err(ctx, "seek failed ret=%d errno=%d", off, errno); - return LIBUSB_ERROR_IO; - } - - /* might need to skip some configuration descriptors to reach the - * requested configuration */ - while (config_index > 0) { - r = seek_to_next_config(ctx, fd, 1); - if (r < 0) - return r; - config_index--; - } - - /* read the rest of the descriptor */ - r = read(fd, buffer, len); - if (r < 0) { - usbi_err(ctx, "read failed ret=%d errno=%d", r, errno); - return LIBUSB_ERROR_IO; - } else if (r < len) { - usbi_err(ctx, "short output read %d/%d", r, len); - return LIBUSB_ERROR_IO; - } - - return 0; -} - -static int op_get_config_descriptor(struct libusb_device *dev, - uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) -{ - char filename[PATH_MAX]; - int fd; - int r; - - /* always read from usbfs: sysfs only has the active descriptor - * this will involve waking the device up, but oh well! */ - - /* FIXME: the above is no longer true, new kernels have all descriptors - * in the descriptors file. but its kinda hard to detect if the kernel - * is sufficiently new. */ - - _get_usbfs_path(dev, filename); - fd = open(filename, O_RDONLY); - if (fd < 0) { - usbi_err(DEVICE_CTX(dev), - "open '%s' failed, ret=%d errno=%d", filename, fd, errno); - return LIBUSB_ERROR_IO; - } - - r = get_config_descriptor(DEVICE_CTX(dev), fd, config_index, buffer, len); - close(fd); - return r; -} - -/* cache the active config descriptor in memory. a value of -1 means that - * we aren't sure which one is active, so just assume the first one. - * only for usbfs. */ -static int cache_active_config(struct libusb_device *dev, int fd, - int active_config) -{ - struct linux_device_priv *priv = _device_priv(dev); - struct libusb_config_descriptor config; - unsigned char tmp[8]; - unsigned char *buf; - int idx; - int r; - - if (active_config == -1) { - idx = 0; - } else { - r = usbi_get_config_index_by_value(dev, active_config, &idx); - if (r < 0) - return r; - if (idx == -1) - return LIBUSB_ERROR_NOT_FOUND; - } - - r = get_config_descriptor(DEVICE_CTX(dev), fd, idx, tmp, sizeof(tmp)); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), "first read error %d", r); - return r; - } - - usbi_parse_descriptor(tmp, "bbw", &config, 0); - buf = malloc(config.wTotalLength); - if (!buf) - return LIBUSB_ERROR_NO_MEM; - - r = get_config_descriptor(DEVICE_CTX(dev), fd, idx, buf, - config.wTotalLength); - if (r < 0) { - free(buf); - return r; - } - - if (priv->config_descriptor) - free(priv->config_descriptor); - priv->config_descriptor = buf; - return 0; -} - -/* send a control message to retrieve active configuration */ -static int usbfs_get_active_config(struct libusb_device *dev, int fd) -{ - unsigned char active_config = 0; - int r; - - struct usbfs_ctrltransfer ctrl = { - .bmRequestType = LIBUSB_ENDPOINT_IN, - .bRequest = LIBUSB_REQUEST_GET_CONFIGURATION, - .wValue = 0, - .wIndex = 0, - .wLength = 1, - .timeout = 1000, - .data = &active_config - }; - - r = ioctl(fd, IOCTL_USBFS_CONTROL, &ctrl); - if (r < 0) { - if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - /* we hit this error path frequently with buggy devices :( */ - usbi_warn(DEVICE_CTX(dev), - "get_configuration failed ret=%d errno=%d", r, errno); - return LIBUSB_ERROR_IO; - } - - return active_config; -} - -static int initialize_device(struct libusb_device *dev, uint8_t busnum, - uint8_t devaddr, const char *sysfs_dir) -{ - struct linux_device_priv *priv = _device_priv(dev); - unsigned char *dev_buf; - char path[PATH_MAX]; - int fd, speed; - int active_config = 0; - int device_configured = 1; - ssize_t r; - - dev->bus_number = busnum; - dev->device_address = devaddr; - - if (sysfs_dir) { - priv->sysfs_dir = malloc(strlen(sysfs_dir) + 1); - if (!priv->sysfs_dir) - return LIBUSB_ERROR_NO_MEM; - strcpy(priv->sysfs_dir, sysfs_dir); - - /* Note speed can contain 1.5, in this case __read_sysfs_attr - will stop parsing at the '.' and return 1 */ - speed = __read_sysfs_attr(DEVICE_CTX(dev), sysfs_dir, "speed"); - if (speed >= 0) { - switch (speed) { - case 1: dev->speed = LIBUSB_SPEED_LOW; break; - case 12: dev->speed = LIBUSB_SPEED_FULL; break; - case 480: dev->speed = LIBUSB_SPEED_HIGH; break; - case 5000: dev->speed = LIBUSB_SPEED_SUPER; break; - default: - usbi_warn(DEVICE_CTX(dev), "Unknown device speed: %d Mbps", speed); - } - } - } - - if (sysfs_has_descriptors) - return 0; - - /* cache device descriptor in memory so that we can retrieve it later - * without waking the device up (op_get_device_descriptor) */ - - priv->dev_descriptor = NULL; - priv->config_descriptor = NULL; - - if (sysfs_can_relate_devices) { - int tmp = sysfs_get_active_config(dev, &active_config); - if (tmp < 0) - return tmp; - if (active_config == -1) - device_configured = 0; - } - - _get_usbfs_path(dev, path); - fd = open(path, O_RDWR); - if (fd < 0 && errno == EACCES) { - fd = open(path, O_RDONLY); - /* if we only have read-only access to the device, we cannot - * send a control message to determine the active config. just - * assume the first one is active. */ - active_config = -1; - } - - if (fd < 0) { - usbi_err(DEVICE_CTX(dev), "open failed, ret=%d errno=%d", fd, errno); - return LIBUSB_ERROR_IO; - } - - if (!sysfs_can_relate_devices) { - if (active_config == -1) { - /* if we only have read-only access to the device, we cannot - * send a control message to determine the active config. just - * assume the first one is active. */ - usbi_warn(DEVICE_CTX(dev), "access to %s is read-only; cannot " - "determine active configuration descriptor", path); - } else { - active_config = usbfs_get_active_config(dev, fd); - if (active_config == LIBUSB_ERROR_IO) { - /* buggy devices sometimes fail to report their active config. - * assume unconfigured and continue the probing */ - usbi_warn(DEVICE_CTX(dev), "couldn't query active " - "configuration, assumung unconfigured"); - device_configured = 0; - } else if (active_config < 0) { - close(fd); - return active_config; - } else if (active_config == 0) { - /* some buggy devices have a configuration 0, but we're - * reaching into the corner of a corner case here, so let's - * not support buggy devices in these circumstances. - * stick to the specs: a configuration value of 0 means - * unconfigured. */ - usbi_dbg("active cfg 0? assuming unconfigured device"); - device_configured = 0; - } - } - } - - dev_buf = malloc(DEVICE_DESC_LENGTH); - if (!dev_buf) { - close(fd); - return LIBUSB_ERROR_NO_MEM; - } - - r = read(fd, dev_buf, DEVICE_DESC_LENGTH); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), - "read descriptor failed ret=%d errno=%d", fd, errno); - free(dev_buf); - close(fd); - return LIBUSB_ERROR_IO; - } else if (r < DEVICE_DESC_LENGTH) { - usbi_err(DEVICE_CTX(dev), "short descriptor read (%d)", r); - free(dev_buf); - close(fd); - return LIBUSB_ERROR_IO; - } - - /* bit of a hack: set num_configurations now because cache_active_config() - * calls usbi_get_config_index_by_value() which uses it */ - dev->num_configurations = dev_buf[DEVICE_DESC_LENGTH - 1]; - - if (device_configured) { - r = cache_active_config(dev, fd, active_config); - if (r < 0) { - close(fd); - free(dev_buf); - return r; - } - } - - close(fd); - priv->dev_descriptor = dev_buf; - return 0; -} - -static int enumerate_device(struct libusb_context *ctx, - struct discovered_devs **_discdevs, uint8_t busnum, uint8_t devaddr, - const char *sysfs_dir) -{ - struct discovered_devs *discdevs; - unsigned long session_id; - int need_unref = 0; - struct libusb_device *dev; - int r = 0; - - /* FIXME: session ID is not guaranteed unique as addresses can wrap and - * will be reused. instead we should add a simple sysfs attribute with - * a session ID. */ - session_id = busnum << 8 | devaddr; - usbi_dbg("busnum %d devaddr %d session_id %ld", busnum, devaddr, - session_id); - - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev) { - usbi_dbg("using existing device for %d/%d (session %ld)", - busnum, devaddr, session_id); - } else { - usbi_dbg("allocating new device for %d/%d (session %ld)", - busnum, devaddr, session_id); - dev = usbi_alloc_device(ctx, session_id); - if (!dev) - return LIBUSB_ERROR_NO_MEM; - need_unref = 1; - r = initialize_device(dev, busnum, devaddr, sysfs_dir); - if (r < 0) - goto out; - r = usbi_sanitize_device(dev); - if (r < 0) - goto out; - } - - discdevs = discovered_devs_append(*_discdevs, dev); - if (!discdevs) - r = LIBUSB_ERROR_NO_MEM; - else - *_discdevs = discdevs; - -out: - if (need_unref) - libusb_unref_device(dev); - return r; -} - -/* open a bus directory and adds all discovered devices to discdevs. on - * failure (non-zero return) the pre-existing discdevs should be destroyed - * (and devices freed). on success, the new discdevs pointer should be used - * as it may have been moved. */ -static int usbfs_scan_busdir(struct libusb_context *ctx, - struct discovered_devs **_discdevs, uint8_t busnum) -{ - DIR *dir; - char dirpath[PATH_MAX]; - struct dirent *entry; - struct discovered_devs *discdevs = *_discdevs; - int r = LIBUSB_ERROR_IO; - - snprintf(dirpath, PATH_MAX, "%s/%03d", usbfs_path, busnum); - usbi_dbg("%s", dirpath); - dir = opendir(dirpath); - if (!dir) { - usbi_err(ctx, "opendir '%s' failed, errno=%d", dirpath, errno); - /* FIXME: should handle valid race conditions like hub unplugged - * during directory iteration - this is not an error */ - return r; - } - - while ((entry = readdir(dir))) { - int devaddr; - - if (entry->d_name[0] == '.') - continue; - - devaddr = atoi(entry->d_name); - if (devaddr == 0) { - usbi_dbg("unknown dir entry %s", entry->d_name); - continue; - } - - if (enumerate_device(ctx, &discdevs, busnum, (uint8_t) devaddr, NULL)) { - usbi_dbg("failed to enumerate dir entry %s", entry->d_name); - continue; - } - - r = 0; - } - - if (!r) - *_discdevs = discdevs; - closedir(dir); - return r; -} - -static int usbfs_get_device_list(struct libusb_context *ctx, - struct discovered_devs **_discdevs) -{ - struct dirent *entry; - DIR *buses = opendir(usbfs_path); - struct discovered_devs *discdevs = *_discdevs; - int r = 0; - - if (!buses) { - usbi_err(ctx, "opendir buses failed errno=%d", errno); - return LIBUSB_ERROR_IO; - } - - while ((entry = readdir(buses))) { - struct discovered_devs *discdevs_new = discdevs; - int busnum; - - if (entry->d_name[0] == '.') - continue; - - if (usbdev_names) { - int devaddr; - if (!_is_usbdev_entry(entry, &busnum, &devaddr)) - continue; - - r = enumerate_device(ctx, &discdevs_new, busnum, - (uint8_t) devaddr, NULL); - if (r < 0) { - usbi_dbg("failed to enumerate dir entry %s", entry->d_name); - continue; - } - } else { - busnum = atoi(entry->d_name); - if (busnum == 0) { - usbi_dbg("unknown dir entry %s", entry->d_name); - continue; - } - - r = usbfs_scan_busdir(ctx, &discdevs_new, busnum); - if (r < 0) - goto out; - } - discdevs = discdevs_new; - } - -out: - closedir(buses); - *_discdevs = discdevs; - return r; - -} - -static int sysfs_scan_device(struct libusb_context *ctx, - struct discovered_devs **_discdevs, const char *devname) -{ - int busnum; - int devaddr; - - usbi_dbg("scan %s", devname); - - busnum = __read_sysfs_attr(ctx, devname, "busnum"); - if (busnum < 0) - return busnum; - - devaddr = __read_sysfs_attr(ctx, devname, "devnum"); - if (devaddr < 0) - return devaddr; - - usbi_dbg("bus=%d dev=%d", busnum, devaddr); - if (busnum > 255 || devaddr > 255) - return LIBUSB_ERROR_INVALID_PARAM; - - return enumerate_device(ctx, _discdevs, busnum & 0xff, devaddr & 0xff, - devname); -} - -static int sysfs_get_device_list(struct libusb_context *ctx, - struct discovered_devs **_discdevs) -{ - struct discovered_devs *discdevs = *_discdevs; - DIR *devices = opendir(SYSFS_DEVICE_PATH); - struct dirent *entry; - int r = LIBUSB_ERROR_IO; - - if (!devices) { - usbi_err(ctx, "opendir devices failed errno=%d", errno); - return r; - } - - while ((entry = readdir(devices))) { - struct discovered_devs *discdevs_new = discdevs; - - if ((!isdigit(entry->d_name[0]) && strncmp(entry->d_name, "usb", 3)) - || strchr(entry->d_name, ':')) - continue; - - if (sysfs_scan_device(ctx, &discdevs_new, entry->d_name)) { - usbi_dbg("failed to enumerate dir entry %s", entry->d_name); - continue; - } - - r = 0; - discdevs = discdevs_new; - } - - if (!r) - *_discdevs = discdevs; - closedir(devices); - return r; -} - -static int op_get_device_list(struct libusb_context *ctx, - struct discovered_devs **_discdevs) -{ - /* we can retrieve device list and descriptors from sysfs or usbfs. - * sysfs is preferable, because if we use usbfs we end up resuming - * any autosuspended USB devices. however, sysfs is not available - * everywhere, so we need a usbfs fallback too. - * - * as described in the "sysfs vs usbfs" comment at the top of this - * file, sometimes we have sysfs but not enough information to - * relate sysfs devices to usbfs nodes. op_init() determines the - * adequacy of sysfs and sets sysfs_can_relate_devices. - */ - if (sysfs_can_relate_devices != 0) - return sysfs_get_device_list(ctx, _discdevs); - else - return usbfs_get_device_list(ctx, _discdevs); -} - -static int op_open(struct libusb_device_handle *handle) -{ - struct linux_device_handle_priv *hpriv = _device_handle_priv(handle); - char filename[PATH_MAX]; - - _get_usbfs_path(handle->dev, filename); - usbi_dbg("opening %s", filename); - hpriv->fd = open(filename, O_RDWR); - if (hpriv->fd < 0) { - if (errno == EACCES) { - usbi_err(HANDLE_CTX(handle), "libusb couldn't open USB device %s: " - "Permission denied.", filename); - usbi_err(HANDLE_CTX(handle), - "libusb requires write access to USB device nodes."); - return LIBUSB_ERROR_ACCESS; - } else if (errno == ENOENT) { - usbi_err(HANDLE_CTX(handle), "libusb couldn't open USB device %s: " - "No such file or directory.", filename); - return LIBUSB_ERROR_NO_DEVICE; - } else { - usbi_err(HANDLE_CTX(handle), - "open failed, code %d errno %d", hpriv->fd, errno); - return LIBUSB_ERROR_IO; - } - } - - return usbi_add_pollfd(HANDLE_CTX(handle), hpriv->fd, POLLOUT); -} - -static void op_close(struct libusb_device_handle *dev_handle) -{ - int fd = _device_handle_priv(dev_handle)->fd; - usbi_remove_pollfd(HANDLE_CTX(dev_handle), fd); - close(fd); -} - -static int op_get_configuration(struct libusb_device_handle *handle, - int *config) -{ - int r; - if (sysfs_can_relate_devices != 1) - return LIBUSB_ERROR_NOT_SUPPORTED; - - r = sysfs_get_active_config(handle->dev, config); - if (r < 0) - return r; - - if (*config == -1) { - usbi_err(HANDLE_CTX(handle), "device unconfigured"); - *config = 0; - } - - return 0; -} - -static int op_set_configuration(struct libusb_device_handle *handle, int config) -{ - struct linux_device_priv *priv = _device_priv(handle->dev); - int fd = _device_handle_priv(handle)->fd; - int r = ioctl(fd, IOCTL_USBFS_SETCONFIG, &config); - if (r) { - if (errno == EINVAL) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == EBUSY) - return LIBUSB_ERROR_BUSY; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), "failed, error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - if (!sysfs_has_descriptors) { - /* update our cached active config descriptor */ - if (config == -1) { - if (priv->config_descriptor) { - free(priv->config_descriptor); - priv->config_descriptor = NULL; - } - } else { - r = cache_active_config(handle->dev, fd, config); - if (r < 0) - usbi_warn(HANDLE_CTX(handle), - "failed to update cached config descriptor, error %d", r); - } - } - - return 0; -} - -static int op_claim_interface(struct libusb_device_handle *handle, int iface) -{ - int fd = _device_handle_priv(handle)->fd; - int r = ioctl(fd, IOCTL_USBFS_CLAIMINTF, &iface); - if (r) { - if (errno == ENOENT) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == EBUSY) - return LIBUSB_ERROR_BUSY; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "claim interface failed, error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - return 0; -} - -static int op_release_interface(struct libusb_device_handle *handle, int iface) -{ - int fd = _device_handle_priv(handle)->fd; - int r = ioctl(fd, IOCTL_USBFS_RELEASEINTF, &iface); - if (r) { - if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "release interface failed, error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - return 0; -} - -static int op_set_interface(struct libusb_device_handle *handle, int iface, - int altsetting) -{ - int fd = _device_handle_priv(handle)->fd; - struct usbfs_setinterface setintf; - int r; - - setintf.interface = iface; - setintf.altsetting = altsetting; - r = ioctl(fd, IOCTL_USBFS_SETINTF, &setintf); - if (r) { - if (errno == EINVAL) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "setintf failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - return 0; -} - -static int op_clear_halt(struct libusb_device_handle *handle, - unsigned char endpoint) -{ - int fd = _device_handle_priv(handle)->fd; - unsigned int _endpoint = endpoint; - int r = ioctl(fd, IOCTL_USBFS_CLEAR_HALT, &_endpoint); - if (r) { - if (errno == ENOENT) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "clear_halt failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - return 0; -} - -static int op_reset_device(struct libusb_device_handle *handle) -{ - int fd = _device_handle_priv(handle)->fd; - int i, r, ret = 0; - - /* Doing a device reset will cause the usbfs driver to get unbound - from any interfaces it is bound to. By voluntarily unbinding - the usbfs driver ourself, we stop the kernel from rebinding - the interface after reset (which would end up with the interface - getting bound to the in kernel driver if any). */ - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (handle->claimed_interfaces & (1L << i)) { - op_release_interface(handle, i); - } - } - - usbi_mutex_lock(&handle->lock); - r = ioctl(fd, IOCTL_USBFS_RESET, NULL); - if (r) { - if (errno == ENODEV) { - ret = LIBUSB_ERROR_NOT_FOUND; - goto out; - } - - usbi_err(HANDLE_CTX(handle), - "reset failed error %d errno %d", r, errno); - ret = LIBUSB_ERROR_OTHER; - goto out; - } - - /* And re-claim any interfaces which were claimed before the reset */ - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (handle->claimed_interfaces & (1L << i)) { - r = op_claim_interface(handle, i); - if (r) { - usbi_warn(HANDLE_CTX(handle), - "failed to re-claim interface %d after reset", i); - handle->claimed_interfaces &= ~(1L << i); - } - } - } -out: - usbi_mutex_unlock(&handle->lock); - return ret; -} - -static int op_kernel_driver_active(struct libusb_device_handle *handle, - int interface) -{ - int fd = _device_handle_priv(handle)->fd; - struct usbfs_getdriver getdrv; - int r; - - getdrv.interface = interface; - r = ioctl(fd, IOCTL_USBFS_GETDRIVER, &getdrv); - if (r) { - if (errno == ENODATA) - return 0; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "get driver failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - return 1; -} - -static int op_detach_kernel_driver(struct libusb_device_handle *handle, - int interface) -{ - int fd = _device_handle_priv(handle)->fd; - struct usbfs_ioctl command; - int r; - - command.ifno = interface; - command.ioctl_code = IOCTL_USBFS_DISCONNECT; - command.data = NULL; - - r = ioctl(fd, IOCTL_USBFS_IOCTL, &command); - if (r) { - if (errno == ENODATA) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == EINVAL) - return LIBUSB_ERROR_INVALID_PARAM; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "detach failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - return 0; -} - -static int op_attach_kernel_driver(struct libusb_device_handle *handle, - int interface) -{ - int fd = _device_handle_priv(handle)->fd; - struct usbfs_ioctl command; - int r; - - command.ifno = interface; - command.ioctl_code = IOCTL_USBFS_CONNECT; - command.data = NULL; - - r = ioctl(fd, IOCTL_USBFS_IOCTL, &command); - if (r < 0) { - if (errno == ENODATA) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == EINVAL) - return LIBUSB_ERROR_INVALID_PARAM; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - else if (errno == EBUSY) - return LIBUSB_ERROR_BUSY; - - usbi_err(HANDLE_CTX(handle), - "attach failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } else if (r == 0) { - return LIBUSB_ERROR_NOT_FOUND; - } - - return 0; -} - -static void op_destroy_device(struct libusb_device *dev) -{ - struct linux_device_priv *priv = _device_priv(dev); - if (!sysfs_has_descriptors) { - if (priv->dev_descriptor) - free(priv->dev_descriptor); - if (priv->config_descriptor) - free(priv->config_descriptor); - } - if (priv->sysfs_dir) - free(priv->sysfs_dir); -} - -/* URBs are discarded in reverse order of submission to avoid races. */ -static int discard_urbs(struct usbi_transfer *itransfer, int first, int last_plus_one) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = - usbi_transfer_get_os_priv(itransfer); - struct linux_device_handle_priv *dpriv = - _device_handle_priv(transfer->dev_handle); - int i, ret = 0; - struct usbfs_urb *urb; - - for (i = last_plus_one - 1; i >= first; i--) { - if (LIBUSB_TRANSFER_TYPE_ISOCHRONOUS == transfer->type) - urb = tpriv->iso_urbs[i]; - else - urb = &tpriv->urbs[i]; - - if (0 == ioctl(dpriv->fd, IOCTL_USBFS_DISCARDURB, urb)) - continue; - - if (EINVAL == errno) { - usbi_dbg("URB not found --> assuming ready to be reaped"); - if (i == (last_plus_one - 1)) - ret = LIBUSB_ERROR_NOT_FOUND; - } else if (ENODEV == errno) { - usbi_dbg("Device not found for URB --> assuming ready to be reaped"); - ret = LIBUSB_ERROR_NO_DEVICE; - } else { - usbi_warn(TRANSFER_CTX(transfer), - "unrecognised discard errno %d", errno); - ret = LIBUSB_ERROR_OTHER; - } - } - return ret; -} - -static void free_iso_urbs(struct linux_transfer_priv *tpriv) -{ - int i; - for (i = 0; i < tpriv->num_urbs; i++) { - struct usbfs_urb *urb = tpriv->iso_urbs[i]; - if (!urb) - break; - free(urb); - } - - free(tpriv->iso_urbs); - tpriv->iso_urbs = NULL; -} - -static int submit_bulk_transfer(struct usbi_transfer *itransfer, - unsigned char urb_type) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct linux_device_handle_priv *dpriv = - _device_handle_priv(transfer->dev_handle); - struct usbfs_urb *urbs; - int is_out = (transfer->endpoint & LIBUSB_ENDPOINT_DIR_MASK) - == LIBUSB_ENDPOINT_OUT; - int r; - int i; - size_t alloc_size; - - if (tpriv->urbs) - return LIBUSB_ERROR_BUSY; - - if (is_out && transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET && - !supports_flag_zero_packet) - return LIBUSB_ERROR_NOT_SUPPORTED; - - /* usbfs places a 16kb limit on bulk URBs. we divide up larger requests - * into smaller units to meet such restriction, then fire off all the - * units at once. it would be simpler if we just fired one unit at a time, - * but there is a big performance gain through doing it this way. */ - int num_urbs = transfer->length / MAX_BULK_BUFFER_LENGTH; - int last_urb_partial = 0; - - if (transfer->length == 0) { - num_urbs = 1; - } else if ((transfer->length % MAX_BULK_BUFFER_LENGTH) > 0) { - last_urb_partial = 1; - num_urbs++; - } - usbi_dbg("need %d urbs for new transfer with length %d", num_urbs, - transfer->length); - alloc_size = num_urbs * sizeof(struct usbfs_urb); - urbs = malloc(alloc_size); - if (!urbs) - return LIBUSB_ERROR_NO_MEM; - memset(urbs, 0, alloc_size); - tpriv->urbs = urbs; - tpriv->num_urbs = num_urbs; - tpriv->num_retired = 0; - tpriv->reap_action = NORMAL; - tpriv->reap_status = LIBUSB_TRANSFER_COMPLETED; - - for (i = 0; i < num_urbs; i++) { - struct usbfs_urb *urb = &urbs[i]; - urb->usercontext = itransfer; - urb->type = urb_type; - urb->endpoint = transfer->endpoint; - urb->buffer = transfer->buffer + (i * MAX_BULK_BUFFER_LENGTH); - if (supports_flag_bulk_continuation && !is_out) - urb->flags = USBFS_URB_SHORT_NOT_OK; - if (i == num_urbs - 1 && last_urb_partial) - urb->buffer_length = transfer->length % MAX_BULK_BUFFER_LENGTH; - else if (transfer->length == 0) - urb->buffer_length = 0; - else - urb->buffer_length = MAX_BULK_BUFFER_LENGTH; - - if (i > 0 && supports_flag_bulk_continuation) - urb->flags |= USBFS_URB_BULK_CONTINUATION; - - /* we have already checked that the flag is supported */ - if (is_out && i == num_urbs - 1 && - transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) - urb->flags |= USBFS_URB_ZERO_PACKET; - - r = ioctl(dpriv->fd, IOCTL_USBFS_SUBMITURB, urb); - if (r < 0) { - if (errno == ENODEV) { - r = LIBUSB_ERROR_NO_DEVICE; - } else { - usbi_err(TRANSFER_CTX(transfer), - "submiturb failed error %d errno=%d", r, errno); - r = LIBUSB_ERROR_IO; - } - - /* if the first URB submission fails, we can simply free up and - * return failure immediately. */ - if (i == 0) { - usbi_dbg("first URB failed, easy peasy"); - free(urbs); - tpriv->urbs = NULL; - return r; - } - - /* if it's not the first URB that failed, the situation is a bit - * tricky. we may need to discard all previous URBs. there are - * complications: - * - discarding is asynchronous - discarded urbs will be reaped - * later. the user must not have freed the transfer when the - * discarded URBs are reaped, otherwise libusb will be using - * freed memory. - * - the earlier URBs may have completed successfully and we do - * not want to throw away any data. - * - this URB failing may be no error; EREMOTEIO means that - * this transfer simply didn't need all the URBs we submitted - * so, we report that the transfer was submitted successfully and - * in case of error we discard all previous URBs. later when - * the final reap completes we can report error to the user, - * or success if an earlier URB was completed successfully. - */ - tpriv->reap_action = EREMOTEIO == errno ? COMPLETED_EARLY : SUBMIT_FAILED; - - /* The URBs we haven't submitted yet we count as already - * retired. */ - tpriv->num_retired += num_urbs - i; - - /* If we completed short then don't try to discard. */ - if (COMPLETED_EARLY == tpriv->reap_action) - return 0; - - discard_urbs(itransfer, 0, i); - - usbi_dbg("reporting successful submission but waiting for %d " - "discards before reporting error", i); - return 0; - } - } - - return 0; -} - -static int submit_iso_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct linux_device_handle_priv *dpriv = - _device_handle_priv(transfer->dev_handle); - struct usbfs_urb **urbs; - size_t alloc_size; - int num_packets = transfer->num_iso_packets; - int i; - int this_urb_len = 0; - int num_urbs = 1; - int packet_offset = 0; - unsigned int packet_len; - unsigned char *urb_buffer = transfer->buffer; - - if (tpriv->iso_urbs) - return LIBUSB_ERROR_BUSY; - - /* usbfs places a 32kb limit on iso URBs. we divide up larger requests - * into smaller units to meet such restriction, then fire off all the - * units at once. it would be simpler if we just fired one unit at a time, - * but there is a big performance gain through doing it this way. */ - - /* calculate how many URBs we need */ - for (i = 0; i < num_packets; i++) { - int space_remaining = MAX_ISO_BUFFER_LENGTH - this_urb_len; - packet_len = transfer->iso_packet_desc[i].length; - - if (packet_len > space_remaining) { - num_urbs++; - this_urb_len = packet_len; - } else { - this_urb_len += packet_len; - } - } - usbi_dbg("need %d 32k URBs for transfer", num_urbs); - - alloc_size = num_urbs * sizeof(*urbs); - urbs = malloc(alloc_size); - if (!urbs) - return LIBUSB_ERROR_NO_MEM; - memset(urbs, 0, alloc_size); - - tpriv->iso_urbs = urbs; - tpriv->num_urbs = num_urbs; - tpriv->num_retired = 0; - tpriv->reap_action = NORMAL; - tpriv->iso_packet_offset = 0; - - /* allocate + initialize each URB with the correct number of packets */ - for (i = 0; i < num_urbs; i++) { - struct usbfs_urb *urb; - int space_remaining_in_urb = MAX_ISO_BUFFER_LENGTH; - int urb_packet_offset = 0; - unsigned char *urb_buffer_orig = urb_buffer; - int j; - int k; - - /* swallow up all the packets we can fit into this URB */ - while (packet_offset < transfer->num_iso_packets) { - packet_len = transfer->iso_packet_desc[packet_offset].length; - if (packet_len <= space_remaining_in_urb) { - /* throw it in */ - urb_packet_offset++; - packet_offset++; - space_remaining_in_urb -= packet_len; - urb_buffer += packet_len; - } else { - /* it can't fit, save it for the next URB */ - break; - } - } - - alloc_size = sizeof(*urb) - + (urb_packet_offset * sizeof(struct usbfs_iso_packet_desc)); - urb = malloc(alloc_size); - if (!urb) { - free_iso_urbs(tpriv); - return LIBUSB_ERROR_NO_MEM; - } - memset(urb, 0, alloc_size); - urbs[i] = urb; - - /* populate packet lengths */ - for (j = 0, k = packet_offset - urb_packet_offset; - k < packet_offset; k++, j++) { - packet_len = transfer->iso_packet_desc[k].length; - urb->iso_frame_desc[j].length = packet_len; - } - - urb->usercontext = itransfer; - urb->type = USBFS_URB_TYPE_ISO; - /* FIXME: interface for non-ASAP data? */ - urb->flags = USBFS_URB_ISO_ASAP; - urb->endpoint = transfer->endpoint; - urb->number_of_packets = urb_packet_offset; - urb->buffer = urb_buffer_orig; - } - - /* submit URBs */ - for (i = 0; i < num_urbs; i++) { - int r = ioctl(dpriv->fd, IOCTL_USBFS_SUBMITURB, urbs[i]); - if (r < 0) { - if (errno == ENODEV) { - r = LIBUSB_ERROR_NO_DEVICE; - } else { - usbi_err(TRANSFER_CTX(transfer), - "submiturb failed error %d errno=%d", r, errno); - r = LIBUSB_ERROR_IO; - } - - /* if the first URB submission fails, we can simply free up and - * return failure immediately. */ - if (i == 0) { - usbi_dbg("first URB failed, easy peasy"); - free_iso_urbs(tpriv); - return r; - } - - /* if it's not the first URB that failed, the situation is a bit - * tricky. we must discard all previous URBs. there are - * complications: - * - discarding is asynchronous - discarded urbs will be reaped - * later. the user must not have freed the transfer when the - * discarded URBs are reaped, otherwise libusb will be using - * freed memory. - * - the earlier URBs may have completed successfully and we do - * not want to throw away any data. - * so, in this case we discard all the previous URBs BUT we report - * that the transfer was submitted successfully. then later when - * the final discard completes we can report error to the user. - */ - tpriv->reap_action = SUBMIT_FAILED; - - /* The URBs we haven't submitted yet we count as already - * retired. */ - tpriv->num_retired = num_urbs - i; - discard_urbs(itransfer, 0, i); - - usbi_dbg("reporting successful submission but waiting for %d " - "discards before reporting error", i); - return 0; - } - } - - return 0; -} - -static int submit_control_transfer(struct usbi_transfer *itransfer) -{ - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_device_handle_priv *dpriv = - _device_handle_priv(transfer->dev_handle); - struct usbfs_urb *urb; - int r; - - if (tpriv->urbs) - return LIBUSB_ERROR_BUSY; - - if (transfer->length - LIBUSB_CONTROL_SETUP_SIZE > MAX_CTRL_BUFFER_LENGTH) - return LIBUSB_ERROR_INVALID_PARAM; - - urb = malloc(sizeof(struct usbfs_urb)); - if (!urb) - return LIBUSB_ERROR_NO_MEM; - memset(urb, 0, sizeof(struct usbfs_urb)); - tpriv->urbs = urb; - tpriv->num_urbs = 1; - tpriv->reap_action = NORMAL; - - urb->usercontext = itransfer; - urb->type = USBFS_URB_TYPE_CONTROL; - urb->endpoint = transfer->endpoint; - urb->buffer = transfer->buffer; - urb->buffer_length = transfer->length; - - r = ioctl(dpriv->fd, IOCTL_USBFS_SUBMITURB, urb); - if (r < 0) { - free(urb); - tpriv->urbs = NULL; - if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(TRANSFER_CTX(transfer), - "submiturb failed error %d errno=%d", r, errno); - return LIBUSB_ERROR_IO; - } - return 0; -} - -static int op_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return submit_control_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - return submit_bulk_transfer(itransfer, USBFS_URB_TYPE_BULK); - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - return submit_bulk_transfer(itransfer, USBFS_URB_TYPE_INTERRUPT); - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return submit_iso_transfer(itransfer); - default: - usbi_err(TRANSFER_CTX(transfer), - "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static int op_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_BULK: - if (tpriv->reap_action == ERROR) - break; - /* else, fall through */ - case LIBUSB_TRANSFER_TYPE_CONTROL: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - tpriv->reap_action = CANCELLED; - break; - default: - usbi_err(TRANSFER_CTX(transfer), - "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - if (!tpriv->urbs) - return LIBUSB_ERROR_NOT_FOUND; - - return discard_urbs(itransfer, 0, tpriv->num_urbs); -} - -static void op_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - - /* urbs can be freed also in submit_transfer so lock mutex first */ - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - usbi_mutex_lock(&itransfer->lock); - if (tpriv->urbs) - free(tpriv->urbs); - tpriv->urbs = NULL; - usbi_mutex_unlock(&itransfer->lock); - break; - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - usbi_mutex_lock(&itransfer->lock); - if (tpriv->iso_urbs) - free_iso_urbs(tpriv); - usbi_mutex_unlock(&itransfer->lock); - break; - default: - usbi_err(TRANSFER_CTX(transfer), - "unknown endpoint type %d", transfer->type); - } -} - -static int handle_bulk_completion(struct usbi_transfer *itransfer, - struct usbfs_urb *urb) -{ - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - int urb_idx = urb - tpriv->urbs; - - usbi_mutex_lock(&itransfer->lock); - usbi_dbg("handling completion status %d of bulk urb %d/%d", urb->status, - urb_idx + 1, tpriv->num_urbs); - - tpriv->num_retired++; - - if (tpriv->reap_action != NORMAL) { - /* cancelled, submit_fail, or completed early */ - usbi_dbg("abnormal reap: urb status %d", urb->status); - - /* even though we're in the process of cancelling, it's possible that - * we may receive some data in these URBs that we don't want to lose. - * examples: - * 1. while the kernel is cancelling all the packets that make up an - * URB, a few of them might complete. so we get back a successful - * cancellation *and* some data. - * 2. we receive a short URB which marks the early completion condition, - * so we start cancelling the remaining URBs. however, we're too - * slow and another URB completes (or at least completes partially). - * (this can't happen since we always use BULK_CONTINUATION.) - * - * When this happens, our objectives are not to lose any "surplus" data, - * and also to stick it at the end of the previously-received data - * (closing any holes), so that libusb reports the total amount of - * transferred data and presents it in a contiguous chunk. - */ - if (urb->actual_length > 0) { - unsigned char *target = transfer->buffer + itransfer->transferred; - usbi_dbg("received %d bytes of surplus data", urb->actual_length); - if (urb->buffer != target) { - usbi_dbg("moving surplus data from offset %d to offset %d", - (unsigned char *) urb->buffer - transfer->buffer, - target - transfer->buffer); - memmove(target, urb->buffer, urb->actual_length); - } - itransfer->transferred += urb->actual_length; - } - - if (tpriv->num_retired == tpriv->num_urbs) { - usbi_dbg("abnormal reap: last URB handled, reporting"); - if (tpriv->reap_action != COMPLETED_EARLY && - tpriv->reap_status == LIBUSB_TRANSFER_COMPLETED) - tpriv->reap_status = LIBUSB_TRANSFER_ERROR; - goto completed; - } - goto out_unlock; - } - - itransfer->transferred += urb->actual_length; - - /* Many of these errors can occur on *any* urb of a multi-urb - * transfer. When they do, we tear down the rest of the transfer. - */ - switch (urb->status) { - case 0: - break; - case -EREMOTEIO: /* short transfer */ - break; - case -ENOENT: /* cancelled */ - case -ECONNRESET: - break; - case -ENODEV: - case -ESHUTDOWN: - usbi_dbg("device removed"); - tpriv->reap_status = LIBUSB_TRANSFER_NO_DEVICE; - goto cancel_remaining; - case -EPIPE: - usbi_dbg("detected endpoint stall"); - if (tpriv->reap_status == LIBUSB_TRANSFER_COMPLETED) - tpriv->reap_status = LIBUSB_TRANSFER_STALL; - goto cancel_remaining; - case -EOVERFLOW: - /* overflow can only ever occur in the last urb */ - usbi_dbg("overflow, actual_length=%d", urb->actual_length); - if (tpriv->reap_status == LIBUSB_TRANSFER_COMPLETED) - tpriv->reap_status = LIBUSB_TRANSFER_OVERFLOW; - goto completed; - case -ETIME: - case -EPROTO: - case -EILSEQ: - case -ECOMM: - case -ENOSR: - usbi_dbg("low level error %d", urb->status); - tpriv->reap_action = ERROR; - goto cancel_remaining; - default: - usbi_warn(ITRANSFER_CTX(itransfer), - "unrecognised urb status %d", urb->status); - tpriv->reap_action = ERROR; - goto cancel_remaining; - } - - /* if we're the last urb or we got less data than requested then we're - * done */ - if (urb_idx == tpriv->num_urbs - 1) { - usbi_dbg("last URB in transfer --> complete!"); - goto completed; - } else if (urb->actual_length < urb->buffer_length) { - usbi_dbg("short transfer %d/%d --> complete!", - urb->actual_length, urb->buffer_length); - if (tpriv->reap_action == NORMAL) - tpriv->reap_action = COMPLETED_EARLY; - } else - goto out_unlock; - -cancel_remaining: - if (ERROR == tpriv->reap_action && LIBUSB_TRANSFER_COMPLETED == tpriv->reap_status) - tpriv->reap_status = LIBUSB_TRANSFER_ERROR; - - if (tpriv->num_retired == tpriv->num_urbs) /* nothing to cancel */ - goto completed; - - /* cancel remaining urbs and wait for their completion before - * reporting results */ - discard_urbs(itransfer, urb_idx + 1, tpriv->num_urbs); - -out_unlock: - usbi_mutex_unlock(&itransfer->lock); - return 0; - -completed: - free(tpriv->urbs); - tpriv->urbs = NULL; - usbi_mutex_unlock(&itransfer->lock); - return CANCELLED == tpriv->reap_action ? - usbi_handle_transfer_cancellation(itransfer) : - usbi_handle_transfer_completion(itransfer, tpriv->reap_status); -} - -static int handle_iso_completion(struct usbi_transfer *itransfer, - struct usbfs_urb *urb) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - int num_urbs = tpriv->num_urbs; - int urb_idx = 0; - int i; - enum libusb_transfer_status status = LIBUSB_TRANSFER_COMPLETED; - - usbi_mutex_lock(&itransfer->lock); - for (i = 0; i < num_urbs; i++) { - if (urb == tpriv->iso_urbs[i]) { - urb_idx = i + 1; - break; - } - } - if (urb_idx == 0) { - usbi_err(TRANSFER_CTX(transfer), "could not locate urb!"); - usbi_mutex_unlock(&itransfer->lock); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("handling completion status %d of iso urb %d/%d", urb->status, - urb_idx, num_urbs); - - /* copy isochronous results back in */ - - for (i = 0; i < urb->number_of_packets; i++) { - struct usbfs_iso_packet_desc *urb_desc = &urb->iso_frame_desc[i]; - struct libusb_iso_packet_descriptor *lib_desc = - &transfer->iso_packet_desc[tpriv->iso_packet_offset++]; - lib_desc->status = LIBUSB_TRANSFER_COMPLETED; - switch (urb_desc->status) { - case 0: - break; - case -ENOENT: /* cancelled */ - case -ECONNRESET: - break; - case -ENODEV: - case -ESHUTDOWN: - usbi_dbg("device removed"); - lib_desc->status = LIBUSB_TRANSFER_NO_DEVICE; - break; - case -EPIPE: - usbi_dbg("detected endpoint stall"); - lib_desc->status = LIBUSB_TRANSFER_STALL; - break; - case -EOVERFLOW: - usbi_dbg("overflow error"); - lib_desc->status = LIBUSB_TRANSFER_OVERFLOW; - break; - case -ETIME: - case -EPROTO: - case -EILSEQ: - case -ECOMM: - case -ENOSR: - case -EXDEV: - usbi_dbg("low-level USB error %d", urb_desc->status); - lib_desc->status = LIBUSB_TRANSFER_ERROR; - break; - default: - usbi_warn(TRANSFER_CTX(transfer), - "unrecognised urb status %d", urb_desc->status); - lib_desc->status = LIBUSB_TRANSFER_ERROR; - break; - } - lib_desc->actual_length = urb_desc->actual_length; - } - - tpriv->num_retired++; - - if (tpriv->reap_action != NORMAL) { /* cancelled or submit_fail */ - usbi_dbg("CANCEL: urb status %d", urb->status); - - if (tpriv->num_retired == num_urbs) { - usbi_dbg("CANCEL: last URB handled, reporting"); - free_iso_urbs(tpriv); - if (tpriv->reap_action == CANCELLED) { - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_cancellation(itransfer); - } else { - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_completion(itransfer, - LIBUSB_TRANSFER_ERROR); - } - } - goto out; - } - - switch (urb->status) { - case 0: - break; - case -ENOENT: /* cancelled */ - case -ECONNRESET: - break; - case -ESHUTDOWN: - usbi_dbg("device removed"); - status = LIBUSB_TRANSFER_NO_DEVICE; - break; - default: - usbi_warn(TRANSFER_CTX(transfer), - "unrecognised urb status %d", urb->status); - status = LIBUSB_TRANSFER_ERROR; - break; - } - - /* if we're the last urb then we're done */ - if (urb_idx == num_urbs) { - usbi_dbg("last URB in transfer --> complete!"); - free_iso_urbs(tpriv); - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_completion(itransfer, status); - } - -out: - usbi_mutex_unlock(&itransfer->lock); - return 0; -} - -static int handle_control_completion(struct usbi_transfer *itransfer, - struct usbfs_urb *urb) -{ - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - int status; - - usbi_mutex_lock(&itransfer->lock); - usbi_dbg("handling completion status %d", urb->status); - - itransfer->transferred += urb->actual_length; - - if (tpriv->reap_action == CANCELLED) { - if (urb->status != 0 && urb->status != -ENOENT) - usbi_warn(ITRANSFER_CTX(itransfer), - "cancel: unrecognised urb status %d", urb->status); - free(tpriv->urbs); - tpriv->urbs = NULL; - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_cancellation(itransfer); - } - - switch (urb->status) { - case 0: - status = LIBUSB_TRANSFER_COMPLETED; - break; - case -ENOENT: /* cancelled */ - status = LIBUSB_TRANSFER_CANCELLED; - break; - case -ENODEV: - case -ESHUTDOWN: - usbi_dbg("device removed"); - status = LIBUSB_TRANSFER_NO_DEVICE; - break; - case -EPIPE: - usbi_dbg("unsupported control request"); - status = LIBUSB_TRANSFER_STALL; - break; - case -EOVERFLOW: - usbi_dbg("control overflow error"); - status = LIBUSB_TRANSFER_OVERFLOW; - break; - case -ETIME: - case -EPROTO: - case -EILSEQ: - case -ECOMM: - case -ENOSR: - usbi_dbg("low-level bus error occurred"); - status = LIBUSB_TRANSFER_ERROR; - break; - default: - usbi_warn(ITRANSFER_CTX(itransfer), - "unrecognised urb status %d", urb->status); - status = LIBUSB_TRANSFER_ERROR; - break; - } - - free(tpriv->urbs); - tpriv->urbs = NULL; - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_completion(itransfer, status); -} - -static int reap_for_handle(struct libusb_device_handle *handle) -{ - struct linux_device_handle_priv *hpriv = _device_handle_priv(handle); - int r; - struct usbfs_urb *urb; - struct usbi_transfer *itransfer; - struct libusb_transfer *transfer; - - r = ioctl(hpriv->fd, IOCTL_USBFS_REAPURBNDELAY, &urb); - if (r == -1 && errno == EAGAIN) - return 1; - if (r < 0) { - if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), "reap failed error %d errno=%d", - r, errno); - return LIBUSB_ERROR_IO; - } - - itransfer = urb->usercontext; - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - usbi_dbg("urb type=%d status=%d transferred=%d", urb->type, urb->status, - urb->actual_length); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return handle_iso_completion(itransfer, urb); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - return handle_bulk_completion(itransfer, urb); - case LIBUSB_TRANSFER_TYPE_CONTROL: - return handle_control_completion(itransfer, urb); - default: - usbi_err(HANDLE_CTX(handle), "unrecognised endpoint type %x", - transfer->type); - return LIBUSB_ERROR_OTHER; - } -} - -static int op_handle_events(struct libusb_context *ctx, - struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready) -{ - int r; - int i = 0; - - usbi_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - struct pollfd *pollfd = &fds[i]; - struct libusb_device_handle *handle; - struct linux_device_handle_priv *hpriv = NULL; - - if (!pollfd->revents) - continue; - - num_ready--; - list_for_each_entry(handle, &ctx->open_devs, list, struct libusb_device_handle) { - hpriv = _device_handle_priv(handle); - if (hpriv->fd == pollfd->fd) - break; - } - - if (pollfd->revents & POLLERR) { - usbi_remove_pollfd(HANDLE_CTX(handle), hpriv->fd); - usbi_handle_disconnect(handle); - continue; - } - - r = reap_for_handle(handle); - if (r == 1 || r == LIBUSB_ERROR_NO_DEVICE) - continue; - else if (r < 0) - goto out; - } - - r = 0; -out: - usbi_mutex_unlock(&ctx->open_devs_lock); - return r; -} - -static int op_clock_gettime(int clk_id, struct timespec *tp) -{ - switch (clk_id) { - case USBI_CLOCK_MONOTONIC: - return clock_gettime(monotonic_clkid, tp); - case USBI_CLOCK_REALTIME: - return clock_gettime(CLOCK_REALTIME, tp); - default: - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -#ifdef USBI_TIMERFD_AVAILABLE -static clockid_t op_get_timerfd_clockid(void) -{ - return monotonic_clkid; - -} -#endif - -const struct usbi_os_backend linux_usbfs_backend = { - .name = "Linux usbfs", - .init = op_init, - .exit = NULL, - .get_device_list = op_get_device_list, - .get_device_descriptor = op_get_device_descriptor, - .get_active_config_descriptor = op_get_active_config_descriptor, - .get_config_descriptor = op_get_config_descriptor, - - .open = op_open, - .close = op_close, - .get_configuration = op_get_configuration, - .set_configuration = op_set_configuration, - .claim_interface = op_claim_interface, - .release_interface = op_release_interface, - - .set_interface_altsetting = op_set_interface, - .clear_halt = op_clear_halt, - .reset_device = op_reset_device, - - .kernel_driver_active = op_kernel_driver_active, - .detach_kernel_driver = op_detach_kernel_driver, - .attach_kernel_driver = op_attach_kernel_driver, - - .destroy_device = op_destroy_device, - - .submit_transfer = op_submit_transfer, - .cancel_transfer = op_cancel_transfer, - .clear_transfer_priv = op_clear_transfer_priv, - - .handle_events = op_handle_events, - - .clock_gettime = op_clock_gettime, - -#ifdef USBI_TIMERFD_AVAILABLE - .get_timerfd_clockid = op_get_timerfd_clockid, -#endif - - .device_priv_size = sizeof(struct linux_device_priv), - .device_handle_priv_size = sizeof(struct linux_device_handle_priv), - .transfer_priv_size = sizeof(struct linux_transfer_priv), - .add_iso_packet_size = 0, -}; - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/linux_usbfs.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/linux_usbfs.h deleted file mode 100644 index 487acb5..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/linux_usbfs.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - * usbfs header structures - * Copyright (C) 2007 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_USBFS_H -#define LIBUSB_USBFS_H - -#define SYSFS_DEVICE_PATH "/sys/bus/usb/devices" - -struct usbfs_ctrltransfer { - /* keep in sync with usbdevice_fs.h:usbdevfs_ctrltransfer */ - uint8_t bmRequestType; - uint8_t bRequest; - uint16_t wValue; - uint16_t wIndex; - uint16_t wLength; - - uint32_t timeout; /* in milliseconds */ - - /* pointer to data */ - void *data; -}; - -struct usbfs_bulktransfer { - /* keep in sync with usbdevice_fs.h:usbdevfs_bulktransfer */ - unsigned int ep; - unsigned int len; - unsigned int timeout; /* in milliseconds */ - - /* pointer to data */ - void *data; -}; - -struct usbfs_setinterface { - /* keep in sync with usbdevice_fs.h:usbdevfs_setinterface */ - unsigned int interface; - unsigned int altsetting; -}; - -#define USBFS_MAXDRIVERNAME 255 - -struct usbfs_getdriver { - unsigned int interface; - char driver[USBFS_MAXDRIVERNAME + 1]; -}; - -#define USBFS_URB_SHORT_NOT_OK 0x01 -#define USBFS_URB_ISO_ASAP 0x02 -#define USBFS_URB_BULK_CONTINUATION 0x04 -#define USBFS_URB_QUEUE_BULK 0x10 -#define USBFS_URB_ZERO_PACKET 0x40 - -enum usbfs_urb_type { - USBFS_URB_TYPE_ISO = 0, - USBFS_URB_TYPE_INTERRUPT = 1, - USBFS_URB_TYPE_CONTROL = 2, - USBFS_URB_TYPE_BULK = 3, -}; - -struct usbfs_iso_packet_desc { - unsigned int length; - unsigned int actual_length; - unsigned int status; -}; - -#define MAX_ISO_BUFFER_LENGTH 32768 -#define MAX_BULK_BUFFER_LENGTH 16384 -#define MAX_CTRL_BUFFER_LENGTH 4096 - -struct usbfs_urb { - unsigned char type; - unsigned char endpoint; - int status; - unsigned int flags; - void *buffer; - int buffer_length; - int actual_length; - int start_frame; - int number_of_packets; - int error_count; - unsigned int signr; - void *usercontext; - struct usbfs_iso_packet_desc iso_frame_desc[0]; -}; - -struct usbfs_connectinfo { - unsigned int devnum; - unsigned char slow; -}; - -struct usbfs_ioctl { - int ifno; /* interface 0..N ; negative numbers reserved */ - int ioctl_code; /* MUST encode size + direction of data so the - * macros in give correct values */ - void *data; /* param buffer (in, or out) */ -}; - -struct usbfs_hub_portinfo { - unsigned char numports; - unsigned char port[127]; /* port to device num mapping */ -}; - -#define IOCTL_USBFS_CONTROL _IOWR('U', 0, struct usbfs_ctrltransfer) -#define IOCTL_USBFS_BULK _IOWR('U', 2, struct usbfs_bulktransfer) -#define IOCTL_USBFS_RESETEP _IOR('U', 3, unsigned int) -#define IOCTL_USBFS_SETINTF _IOR('U', 4, struct usbfs_setinterface) -#define IOCTL_USBFS_SETCONFIG _IOR('U', 5, unsigned int) -#define IOCTL_USBFS_GETDRIVER _IOW('U', 8, struct usbfs_getdriver) -#define IOCTL_USBFS_SUBMITURB _IOR('U', 10, struct usbfs_urb) -#define IOCTL_USBFS_DISCARDURB _IO('U', 11) -#define IOCTL_USBFS_REAPURB _IOW('U', 12, void *) -#define IOCTL_USBFS_REAPURBNDELAY _IOW('U', 13, void *) -#define IOCTL_USBFS_CLAIMINTF _IOR('U', 15, unsigned int) -#define IOCTL_USBFS_RELEASEINTF _IOR('U', 16, unsigned int) -#define IOCTL_USBFS_CONNECTINFO _IOW('U', 17, struct usbfs_connectinfo) -#define IOCTL_USBFS_IOCTL _IOWR('U', 18, struct usbfs_ioctl) -#define IOCTL_USBFS_HUB_PORTINFO _IOR('U', 19, struct usbfs_hub_portinfo) -#define IOCTL_USBFS_RESET _IO('U', 20) -#define IOCTL_USBFS_CLEAR_HALT _IOR('U', 21, unsigned int) -#define IOCTL_USBFS_DISCONNECT _IO('U', 22) -#define IOCTL_USBFS_CONNECT _IO('U', 23) - -#endif diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/openbsd_usb.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/openbsd_usb.c deleted file mode 100644 index e31941b..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/openbsd_usb.c +++ /dev/null @@ -1,727 +0,0 @@ -/* - * Copyright (c) 2011 Martin Pieuchot - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include "libusb.h" -#include "libusbi.h" - -struct device_priv { - char devnode[16]; - int fd; - - unsigned char *cdesc; /* active config descriptor */ - usb_device_descriptor_t ddesc; /* usb device descriptor */ -}; - -struct handle_priv { - int pipe[2]; /* for event notification */ - int endpoints[USB_MAX_ENDPOINTS]; -}; - -/* - * Backend functions - */ -static int obsd_get_device_list(struct libusb_context *, - struct discovered_devs **); -static int obsd_open(struct libusb_device_handle *); -static void obsd_close(struct libusb_device_handle *); - -static int obsd_get_device_descriptor(struct libusb_device *, unsigned char *, - int *); -static int obsd_get_active_config_descriptor(struct libusb_device *, - unsigned char *, size_t, int *); -static int obsd_get_config_descriptor(struct libusb_device *, uint8_t, - unsigned char *, size_t, int *); - -static int obsd_get_configuration(struct libusb_device_handle *, int *); -static int obsd_set_configuration(struct libusb_device_handle *, int); - -static int obsd_claim_interface(struct libusb_device_handle *, int); -static int obsd_release_interface(struct libusb_device_handle *, int); - -static int obsd_set_interface_altsetting(struct libusb_device_handle *, int, - int); -static int obsd_clear_halt(struct libusb_device_handle *, unsigned char); -static int obsd_reset_device(struct libusb_device_handle *); -static void obsd_destroy_device(struct libusb_device *); - -static int obsd_submit_transfer(struct usbi_transfer *); -static int obsd_cancel_transfer(struct usbi_transfer *); -static void obsd_clear_transfer_priv(struct usbi_transfer *); -static int obsd_handle_events(struct libusb_context *ctx, struct pollfd *, - nfds_t, int); -static int obsd_clock_gettime(int, struct timespec *); - -/* - * Private functions - */ -static int _errno_to_libusb(int); -static int _cache_active_config_descriptor(struct libusb_device *, int); -static int _sync_control_transfer(struct usbi_transfer *); -static int _sync_gen_transfer(struct usbi_transfer *); -static int _access_endpoint(struct libusb_transfer *); - -const struct usbi_os_backend openbsd_backend = { - "Synchronous OpenBSD backend", - NULL, /* init() */ - NULL, /* exit() */ - obsd_get_device_list, - obsd_open, - obsd_close, - - obsd_get_device_descriptor, - obsd_get_active_config_descriptor, - obsd_get_config_descriptor, - - obsd_get_configuration, - obsd_set_configuration, - - obsd_claim_interface, - obsd_release_interface, - - obsd_set_interface_altsetting, - obsd_clear_halt, - obsd_reset_device, - - NULL, /* kernel_driver_active() */ - NULL, /* detach_kernel_driver() */ - NULL, /* attach_kernel_driver() */ - - obsd_destroy_device, - - obsd_submit_transfer, - obsd_cancel_transfer, - obsd_clear_transfer_priv, - - obsd_handle_events, - - obsd_clock_gettime, - sizeof(struct device_priv), - sizeof(struct handle_priv), - 0, /* transfer_priv_size */ - 0, /* add_iso_packet_size */ -}; - -int -obsd_get_device_list(struct libusb_context * ctx, - struct discovered_devs **discdevs) -{ - struct libusb_device *dev; - struct device_priv *dpriv; - struct usb_device_info di; - unsigned long session_id; - char devnode[16]; - int fd, err, i; - - usbi_dbg(""); - - /* Only ugen(4) is supported */ - for (i = 0; i < USB_MAX_DEVICES; i++) { - /* Control endpoint is always .00 */ - snprintf(devnode, sizeof(devnode), "/dev/ugen%d.00", i); - - if ((fd = open(devnode, O_RDONLY)) < 0) { - if (errno != ENOENT && errno != ENXIO) - usbi_err(ctx, "could not open %s", devnode); - continue; - } - - if (ioctl(fd, USB_GET_DEVICEINFO, &di) < 0) - continue; - - session_id = (di.udi_bus << 8 | di.udi_addr); - dev = usbi_get_device_by_session_id(ctx, session_id); - - if (dev == NULL) { - dev = usbi_alloc_device(ctx, session_id); - if (dev == NULL) - return (LIBUSB_ERROR_NO_MEM); - - dev->bus_number = di.udi_bus; - dev->device_address = di.udi_addr; - dev->speed = di.udi_speed; - - dpriv = (struct device_priv *)dev->os_priv; - strlcpy(dpriv->devnode, devnode, sizeof(devnode)); - dpriv->fd = -1; - - if (ioctl(fd, USB_GET_DEVICE_DESC, &dpriv->ddesc) < 0) { - err = errno; - goto error; - } - - dpriv->cdesc = NULL; - if (_cache_active_config_descriptor(dev, fd)) { - err = errno; - goto error; - } - - if ((err = usbi_sanitize_device(dev))) - goto error; - } - close(fd); - - if (discovered_devs_append(*discdevs, dev) == NULL) - return (LIBUSB_ERROR_NO_MEM); - } - - return (LIBUSB_SUCCESS); - -error: - close(fd); - libusb_unref_device(dev); - return _errno_to_libusb(err); -} - -int -obsd_open(struct libusb_device_handle *handle) -{ - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - dpriv->fd = open(dpriv->devnode, O_RDWR); - if (dpriv->fd < 0) { - dpriv->fd = open(dpriv->devnode, O_RDONLY); - if (dpriv->fd < 0) - return _errno_to_libusb(errno); - } - - usbi_dbg("open %s: fd %d", dpriv->devnode, dpriv->fd); - - if (pipe(hpriv->pipe) < 0) - return _errno_to_libusb(errno); - - return usbi_add_pollfd(HANDLE_CTX(handle), hpriv->pipe[0], POLLIN); -} - -void -obsd_close(struct libusb_device_handle *handle) -{ - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - usbi_dbg("close: fd %d", dpriv->fd); - - close(dpriv->fd); - dpriv->fd = -1; - - usbi_remove_pollfd(HANDLE_CTX(handle), hpriv->pipe[0]); - - close(hpriv->pipe[0]); - close(hpriv->pipe[1]); -} - -int -obsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf, - int *host_endian) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - - usbi_dbg(""); - - memcpy(buf, &dpriv->ddesc, DEVICE_DESC_LENGTH); - - *host_endian = 0; - - return (LIBUSB_SUCCESS); -} - -int -obsd_get_active_config_descriptor(struct libusb_device *dev, - unsigned char *buf, size_t len, int *host_endian) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - usb_config_descriptor_t *ucd; - - ucd = (usb_config_descriptor_t *) dpriv->cdesc; - len = MIN(len, UGETW(ucd->wTotalLength)); - - usbi_dbg("len %d", len); - - memcpy(buf, dpriv->cdesc, len); - - *host_endian = 0; - - return (LIBUSB_SUCCESS); -} - -int -obsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx, - unsigned char *buf, size_t len, int *host_endian) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - struct usb_full_desc ufd; - int fd, err; - - usbi_dbg("index %d, len %d", idx, len); - - /* A config descriptor may be requested before opening the device */ - if (dpriv->fd >= 0) { - fd = dpriv->fd; - } else { - fd = open(dpriv->devnode, O_RDONLY); - if (fd < 0) - return _errno_to_libusb(errno); - } - - ufd.ufd_config_index = idx; - ufd.ufd_size = len; - ufd.ufd_data = buf; - - if ((ioctl(fd, USB_GET_FULL_DESC, &ufd)) < 0) { - err = errno; - if (dpriv->fd < 0) - close(fd); - return _errno_to_libusb(err); - } - - if (dpriv->fd < 0) - close(fd); - - *host_endian = 0; - - return (LIBUSB_SUCCESS); -} - -int -obsd_get_configuration(struct libusb_device_handle *handle, int *config) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - usbi_dbg(""); - - if (ioctl(dpriv->fd, USB_GET_CONFIG, config) < 0) - return _errno_to_libusb(errno); - - usbi_dbg("configuration %d", *config); - - return (LIBUSB_SUCCESS); -} - -int -obsd_set_configuration(struct libusb_device_handle *handle, int config) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - usbi_dbg("configuration %d", config); - - if (ioctl(dpriv->fd, USB_SET_CONFIG, &config) < 0) - return _errno_to_libusb(errno); - - return _cache_active_config_descriptor(handle->dev, dpriv->fd); -} - -int -obsd_claim_interface(struct libusb_device_handle *handle, int iface) -{ - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - int i; - - for (i = 0; i < USB_MAX_ENDPOINTS; i++) - hpriv->endpoints[i] = -1; - - return (LIBUSB_SUCCESS); -} - -int -obsd_release_interface(struct libusb_device_handle *handle, int iface) -{ - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - int i; - - for (i = 0; i < USB_MAX_ENDPOINTS; i++) - if (hpriv->endpoints[i] >= 0) - close(hpriv->endpoints[i]); - - return (LIBUSB_SUCCESS); -} - -int -obsd_set_interface_altsetting(struct libusb_device_handle *handle, int iface, - int altsetting) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - struct usb_alt_interface intf; - - usbi_dbg("iface %d, setting %d", iface, altsetting); - - memset(&intf, 0, sizeof(intf)); - - intf.uai_interface_index = iface; - intf.uai_alt_no = altsetting; - - if (ioctl(dpriv->fd, USB_SET_ALTINTERFACE, &intf) < 0) - return _errno_to_libusb(errno); - - return (LIBUSB_SUCCESS); -} - -int -obsd_clear_halt(struct libusb_device_handle *handle, unsigned char endpoint) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - struct usb_ctl_request req; - - usbi_dbg(""); - - req.ucr_request.bmRequestType = UT_WRITE_ENDPOINT; - req.ucr_request.bRequest = UR_CLEAR_FEATURE; - USETW(req.ucr_request.wValue, UF_ENDPOINT_HALT); - USETW(req.ucr_request.wIndex, endpoint); - USETW(req.ucr_request.wLength, 0); - - if (ioctl(dpriv->fd, USB_DO_REQUEST, &req) < 0) - return _errno_to_libusb(errno); - - return (LIBUSB_SUCCESS); -} - -int -obsd_reset_device(struct libusb_device_handle *handle) -{ - usbi_dbg(""); - - return (LIBUSB_ERROR_NOT_SUPPORTED); -} - -void -obsd_destroy_device(struct libusb_device *dev) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - - usbi_dbg(""); - - free(dpriv->cdesc); -} - -int -obsd_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - struct handle_priv *hpriv; - int err = 0; - - usbi_dbg(""); - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - hpriv = (struct handle_priv *)transfer->dev_handle->os_priv; - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - err = _sync_control_transfer(itransfer); - break; - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - if (IS_XFEROUT(transfer)) { - /* Isochronous write is not supported */ - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - err = _sync_gen_transfer(itransfer); - break; - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (IS_XFEROUT(transfer) && - transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) { - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - err = _sync_gen_transfer(itransfer); - break; - } - - if (err) - return (err); - - if (write(hpriv->pipe[1], &itransfer, sizeof(itransfer)) < 0) - return _errno_to_libusb(errno); - - return (LIBUSB_SUCCESS); -} - -int -obsd_cancel_transfer(struct usbi_transfer *itransfer) -{ - usbi_dbg(""); - - return (LIBUSB_ERROR_NOT_SUPPORTED); -} - -void -obsd_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - usbi_dbg(""); - - /* Nothing to do */ -} - -int -obsd_handle_events(struct libusb_context *ctx, struct pollfd *fds, nfds_t nfds, - int num_ready) -{ - struct libusb_device_handle *handle; - struct handle_priv *hpriv = NULL; - struct usbi_transfer *itransfer; - struct pollfd *pollfd; - int i, err = 0; - - usbi_dbg(""); - - pthread_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - pollfd = &fds[i]; - - if (!pollfd->revents) - continue; - - hpriv = NULL; - num_ready--; - list_for_each_entry(handle, &ctx->open_devs, list, - struct libusb_device_handle) { - hpriv = (struct handle_priv *)handle->os_priv; - - if (hpriv->pipe[0] == pollfd->fd) - break; - - hpriv = NULL; - } - - if (NULL == hpriv) { - usbi_dbg("fd %d is not an event pipe!", pollfd->fd); - err = ENOENT; - break; - } - - if (pollfd->revents & POLLERR) { - usbi_remove_pollfd(HANDLE_CTX(handle), hpriv->pipe[0]); - usbi_handle_disconnect(handle); - continue; - } - - if (read(hpriv->pipe[0], &itransfer, sizeof(itransfer)) < 0) { - err = errno; - break; - } - - if ((err = usbi_handle_transfer_completion(itransfer, - LIBUSB_TRANSFER_COMPLETED))) - break; - } - pthread_mutex_unlock(&ctx->open_devs_lock); - - if (err) - return _errno_to_libusb(err); - - return (LIBUSB_SUCCESS); -} - -int -obsd_clock_gettime(int clkid, struct timespec *tp) -{ - usbi_dbg("clock %d", clkid); - - if (clkid == USBI_CLOCK_REALTIME) - return clock_gettime(CLOCK_REALTIME, tp); - - if (clkid == USBI_CLOCK_MONOTONIC) - return clock_gettime(CLOCK_MONOTONIC, tp); - - return (LIBUSB_ERROR_INVALID_PARAM); -} - -int -_errno_to_libusb(int err) -{ - switch (err) { - case EIO: - return (LIBUSB_ERROR_IO); - case EACCES: - return (LIBUSB_ERROR_ACCESS); - case ENOENT: - return (LIBUSB_ERROR_NO_DEVICE); - case ENOMEM: - return (LIBUSB_ERROR_NO_MEM); - } - - usbi_dbg("error: %s", strerror(err)); - - return (LIBUSB_ERROR_OTHER); -} - -int -_cache_active_config_descriptor(struct libusb_device *dev, int fd) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - struct usb_config_desc ucd; - struct usb_full_desc ufd; - unsigned char* buf; - int len; - - usbi_dbg("fd %d", fd); - - ucd.ucd_config_index = USB_CURRENT_CONFIG_INDEX; - - if ((ioctl(fd, USB_GET_CONFIG_DESC, &ucd)) < 0) - return _errno_to_libusb(errno); - - usbi_dbg("active bLength %d", ucd.ucd_desc.bLength); - - len = UGETW(ucd.ucd_desc.wTotalLength); - buf = malloc(len); - if (buf == NULL) - return (LIBUSB_ERROR_NO_MEM); - - ufd.ufd_config_index = ucd.ucd_config_index; - ufd.ufd_size = len; - ufd.ufd_data = buf; - - usbi_dbg("index %d, len %d", ufd.ufd_config_index, len); - - if ((ioctl(fd, USB_GET_FULL_DESC, &ufd)) < 0) { - free(buf); - return _errno_to_libusb(errno); - } - - if (dpriv->cdesc) - free(dpriv->cdesc); - dpriv->cdesc = buf; - - return (0); -} - -int -_sync_control_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - struct libusb_control_setup *setup; - struct device_priv *dpriv; - struct usb_ctl_request req; - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - dpriv = (struct device_priv *)transfer->dev_handle->dev->os_priv; - setup = (struct libusb_control_setup *)transfer->buffer; - - usbi_dbg("type %d request %d value %d index %d length %d timeout %d", - setup->bmRequestType, setup->bRequest, - libusb_le16_to_cpu(setup->wValue), - libusb_le16_to_cpu(setup->wIndex), - libusb_le16_to_cpu(setup->wLength), transfer->timeout); - - req.ucr_request.bmRequestType = setup->bmRequestType; - req.ucr_request.bRequest = setup->bRequest; - /* Don't use USETW, libusb already deals with the endianness */ - (*(uint16_t *)req.ucr_request.wValue) = setup->wValue; - (*(uint16_t *)req.ucr_request.wIndex) = setup->wIndex; - (*(uint16_t *)req.ucr_request.wLength) = setup->wLength; - req.ucr_data = transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; - - if ((transfer->flags & LIBUSB_TRANSFER_SHORT_NOT_OK) == 0) - req.ucr_flags = USBD_SHORT_XFER_OK; - - if ((ioctl(dpriv->fd, USB_SET_TIMEOUT, &transfer->timeout)) < 0) - return _errno_to_libusb(errno); - - if ((ioctl(dpriv->fd, USB_DO_REQUEST, &req)) < 0) - return _errno_to_libusb(errno); - - itransfer->transferred = req.ucr_actlen; - - usbi_dbg("transferred %d", itransfer->transferred); - - return (0); -} - -int -_access_endpoint(struct libusb_transfer *transfer) -{ - struct handle_priv *hpriv; - struct device_priv *dpriv; - char *s, devnode[16]; - int fd, endpt; - mode_t mode; - - hpriv = (struct handle_priv *)transfer->dev_handle->os_priv; - dpriv = (struct device_priv *)transfer->dev_handle->dev->os_priv; - - endpt = UE_GET_ADDR(transfer->endpoint); - mode = IS_XFERIN(transfer) ? O_RDONLY : O_WRONLY; - - usbi_dbg("endpoint %d mode %d", endpt, mode); - - if (hpriv->endpoints[endpt] < 0) { - /* Pick the right node given the control one */ - strlcpy(devnode, dpriv->devnode, sizeof(devnode)); - s = strchr(devnode, '.'); - snprintf(s, 4, ".%02d", endpt); - - /* We may need to read/write to the same endpoint later. */ - if (((fd = open(devnode, O_RDWR)) < 0) && (errno == ENXIO)) - if ((fd = open(devnode, mode)) < 0) - return (-1); - - hpriv->endpoints[endpt] = fd; - } - - return (hpriv->endpoints[endpt]); -} - -int -_sync_gen_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - int fd, nr = 1; - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - /* - * Bulk, Interrupt or Isochronous transfer depends on the - * endpoint and thus the node to open. - */ - if ((fd = _access_endpoint(transfer)) < 0) - return _errno_to_libusb(errno); - - if ((ioctl(fd, USB_SET_TIMEOUT, &transfer->timeout)) < 0) - return _errno_to_libusb(errno); - - if (IS_XFERIN(transfer)) { - if ((transfer->flags & LIBUSB_TRANSFER_SHORT_NOT_OK) == 0) - if ((ioctl(fd, USB_SET_SHORT_XFER, &nr)) < 0) - return _errno_to_libusb(errno); - - nr = read(fd, transfer->buffer, transfer->length); - } else { - nr = write(fd, transfer->buffer, transfer->length); - } - - if (nr < 0) - return _errno_to_libusb(errno); - - itransfer->transferred = nr; - - return (0); -} diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_posix.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_posix.h deleted file mode 100644 index 0e5e7f5..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_posix.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef LIBUSB_POLL_POSIX_H -#define LIBUSB_POLL_POSIX_H - -#define usbi_write write -#define usbi_read read -#define usbi_close close -#define usbi_pipe pipe -#define usbi_poll poll - -#endif /* LIBUSB_POLL_POSIX_H */ diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_windows.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_windows.c deleted file mode 100644 index 7f4d9c4..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_windows.c +++ /dev/null @@ -1,745 +0,0 @@ -/* - * poll_windows: poll compatibility wrapper for Windows - * Copyright (C) 2009-2010 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of poll implementation from libusb-win32, by Stephan Meyer et al. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -/* - * poll() and pipe() Windows compatibility layer for libusb 1.0 - * - * The way this layer works is by using OVERLAPPED with async I/O transfers, as - * OVERLAPPED have an associated event which is flagged for I/O completion. - * - * For USB pollable async I/O, you would typically: - * - obtain a Windows HANDLE to a file or device that has been opened in - * OVERLAPPED mode - * - call usbi_create_fd with this handle to obtain a custom fd. - * Note that if you need simultaneous R/W access, you need to call create_fd - * twice, once in _O_RDONLY and once in _O_WRONLY mode to obtain 2 separate - * pollable fds - * - leave the core functions call the poll routine and flag POLLIN/POLLOUT - * - * The pipe pollable synchronous I/O works using the overlapped event associated - * with a fake pipe. The read/write functions are only meant to be used in that - * context. - */ -#include -#include -#include -#include -#include - -#include - -// Uncomment to debug the polling layer -//#define DEBUG_POLL_WINDOWS -#if defined(DEBUG_POLL_WINDOWS) -#define poll_dbg usbi_dbg -#else -// MSVC++ < 2005 cannot use a variadic argument and non MSVC -// compilers produce warnings if parenthesis are omitted. -#if defined(_MSC_VER) && _MSC_VER < 1400 -#define poll_dbg -#else -#define poll_dbg(...) -#endif -#endif - -#if defined(_PREFAST_) -#pragma warning(disable:28719) -#endif - -#if defined(__CYGWIN__) -// cygwin produces a warning unless these prototypes are defined -extern int _open(char* name, int flags); -extern int _close(int fd); -extern int _snprintf(char *buffer, size_t count, const char *format, ...); -#define NUL_DEVICE "/dev/null" -#else -#define NUL_DEVICE "NUL" -#endif - -#define CHECK_INIT_POLLING do {if(!is_polling_set) init_polling();} while(0) - -// public fd data -const struct winfd INVALID_WINFD = {-1, INVALID_HANDLE_VALUE, NULL, RW_NONE}; -struct winfd poll_fd[MAX_FDS]; -// internal fd data -struct { - CRITICAL_SECTION mutex; // lock for fds - // Additional variables for XP CancelIoEx partial emulation - HANDLE original_handle; - DWORD thread_id; -} _poll_fd[MAX_FDS]; - -// globals -BOOLEAN is_polling_set = FALSE; -LONG pipe_number = 0; -static volatile LONG compat_spinlock = 0; - -// CancelIoEx, available on Vista and later only, provides the ability to cancel -// a single transfer (OVERLAPPED) when used. As it may not be part of any of the -// platform headers, we hook into the Kernel32 system DLL directly to seek it. -static BOOL (__stdcall *pCancelIoEx)(HANDLE, LPOVERLAPPED) = NULL; -#define CancelIoEx_Available (pCancelIoEx != NULL) -static __inline BOOL cancel_io(int _index) -{ - if ((_index < 0) || (_index >= MAX_FDS)) { - return FALSE; - } - - if ( (poll_fd[_index].fd < 0) || (poll_fd[_index].handle == INVALID_HANDLE_VALUE) - || (poll_fd[_index].handle == 0) || (poll_fd[_index].overlapped == NULL) ) { - return TRUE; - } - if (CancelIoEx_Available) { - return (*pCancelIoEx)(poll_fd[_index].handle, poll_fd[_index].overlapped); - } - if (_poll_fd[_index].thread_id == GetCurrentThreadId()) { - return CancelIo(poll_fd[_index].handle); - } - usbi_warn(NULL, "Unable to cancel I/O that was started from another thread"); - return FALSE; -} - -// Init -void init_polling(void) -{ - int i; - - while (InterlockedExchange((LONG *)&compat_spinlock, 1) == 1) { - SleepEx(0, TRUE); - } - if (!is_polling_set) { - pCancelIoEx = (BOOL (__stdcall *)(HANDLE,LPOVERLAPPED)) - GetProcAddress(GetModuleHandleA("KERNEL32"), "CancelIoEx"); - usbi_dbg("Will use CancelIo%s for I/O cancellation", - CancelIoEx_Available?"Ex":""); - for (i=0; ihEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - if(overlapped->hEvent == NULL) { - free (overlapped); - return NULL; - } - return overlapped; -} - -void free_overlapped(OVERLAPPED *overlapped) -{ - if (overlapped == NULL) - return; - - if ( (overlapped->hEvent != 0) - && (overlapped->hEvent != INVALID_HANDLE_VALUE) ) { - CloseHandle(overlapped->hEvent); - } - free(overlapped); -} - -void reset_overlapped(OVERLAPPED *overlapped) -{ - HANDLE event_handle; - if (overlapped == NULL) - return; - - event_handle = overlapped->hEvent; - if (event_handle != NULL) { - ResetEvent(event_handle); - } - memset(overlapped, 0, sizeof(OVERLAPPED)); - overlapped->hEvent = event_handle; -} - -void exit_polling(void) -{ - int i; - - while (InterlockedExchange((LONG *)&compat_spinlock, 1) == 1) { - SleepEx(0, TRUE); - } - if (is_polling_set) { - is_polling_set = FALSE; - - for (i=0; i 0) && (poll_fd[i].handle != INVALID_HANDLE_VALUE) && (poll_fd[i].handle != 0) - && (GetFileType(poll_fd[i].handle) == FILE_TYPE_UNKNOWN) ) { - _close(poll_fd[i].fd); - } - free_overlapped(poll_fd[i].overlapped); - if (!CancelIoEx_Available) { - // Close duplicate handle - if (_poll_fd[i].original_handle != INVALID_HANDLE_VALUE) { - CloseHandle(poll_fd[i].handle); - } - } - poll_fd[i] = INVALID_WINFD; - LeaveCriticalSection(&_poll_fd[i].mutex); - DeleteCriticalSection(&_poll_fd[i].mutex); - } - } - compat_spinlock = 0; -} - -/* - * Create a fake pipe. - * As libusb only uses pipes for signaling, all we need from a pipe is an - * event. To that extent, we create a single wfd and overlapped as a means - * to access that event. - */ -int usbi_pipe(int filedes[2]) -{ - int i; - OVERLAPPED* overlapped; - - CHECK_INIT_POLLING; - - overlapped = (OVERLAPPED*) calloc(1, sizeof(OVERLAPPED)); - if (overlapped == NULL) { - return -1; - } - // The overlapped must have status pending for signaling to work in poll - overlapped->Internal = STATUS_PENDING; - overlapped->InternalHigh = 0; - - // Read end of the "pipe" - filedes[0] = _open(NUL_DEVICE, _O_WRONLY); - if (filedes[0] < 0) { - usbi_err(NULL, "could not create pipe: errno %d", errno); - goto out1; - } - // We can use the same handle for both ends - filedes[1] = filedes[0]; - poll_dbg("pipe filedes = %d", filedes[0]); - - // Note: manual reset must be true (second param) as the reset occurs in read - overlapped->hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - if(!overlapped->hEvent) { - goto out2; - } - - for (i=0; i= 0) { - LeaveCriticalSection(&_poll_fd[i].mutex); - continue; - } - - poll_fd[i].fd = filedes[0]; - poll_fd[i].handle = DUMMY_HANDLE; - poll_fd[i].overlapped = overlapped; - // There's no polling on the write end, so we just use READ for our needs - poll_fd[i].rw = RW_READ; - _poll_fd[i].original_handle = INVALID_HANDLE_VALUE; - LeaveCriticalSection(&_poll_fd[i].mutex); - return 0; - } - } - - CloseHandle(overlapped->hEvent); -out2: - _close(filedes[0]); -out1: - free(overlapped); - return -1; -} - -/* - * Create both an fd and an OVERLAPPED from an open Windows handle, so that - * it can be used with our polling function - * The handle MUST support overlapped transfers (usually requires CreateFile - * with FILE_FLAG_OVERLAPPED) - * Return a pollable file descriptor struct, or INVALID_WINFD on error - * - * Note that the fd returned by this function is a per-transfer fd, rather - * than a per-session fd and cannot be used for anything else but our - * custom functions (the fd itself points to the NUL: device) - * if you plan to do R/W on the same handle, you MUST create 2 fds: one for - * read and one for write. Using a single R/W fd is unsupported and will - * produce unexpected results - */ -struct winfd usbi_create_fd(HANDLE handle, int access_mode) -{ - int i, fd; - struct winfd wfd = INVALID_WINFD; - OVERLAPPED* overlapped = NULL; - - CHECK_INIT_POLLING; - - if ((handle == 0) || (handle == INVALID_HANDLE_VALUE)) { - return INVALID_WINFD; - } - - if ((access_mode != _O_RDONLY) && (access_mode != _O_WRONLY)) { - usbi_warn(NULL, "only one of _O_RDONLY or _O_WRONLY are supported.\n" - "If you want to poll for R/W simultaneously, create multiple fds from the same handle."); - return INVALID_WINFD; - } - if (access_mode == _O_RDONLY) { - wfd.rw = RW_READ; - } else { - wfd.rw = RW_WRITE; - } - - // Ensure that we get a non system conflicting unique fd, using - // the same fd attribution system as the pipe ends - fd = _open(NUL_DEVICE, _O_WRONLY); - if (fd < 0) { - return INVALID_WINFD; - } - - overlapped = create_overlapped(); - if(overlapped == NULL) { - _close(fd); - return INVALID_WINFD; - } - - for (i=0; i= 0) { - LeaveCriticalSection(&_poll_fd[i].mutex); - continue; - } - wfd.fd = fd; - // Attempt to emulate some of the CancelIoEx behaviour on platforms - // that don't have it - if (!CancelIoEx_Available) { - _poll_fd[i].thread_id = GetCurrentThreadId(); - if (!DuplicateHandle(GetCurrentProcess(), handle, GetCurrentProcess(), - &wfd.handle, 0, TRUE, DUPLICATE_SAME_ACCESS)) { - usbi_dbg("could not duplicate handle for CancelIo - using original one"); - wfd.handle = handle; - // Make sure we won't close the original handle on fd deletion then - _poll_fd[i].original_handle = INVALID_HANDLE_VALUE; - } else { - _poll_fd[i].original_handle = handle; - } - } else { - wfd.handle = handle; - } - wfd.overlapped = overlapped; - memcpy(&poll_fd[i], &wfd, sizeof(struct winfd)); - LeaveCriticalSection(&_poll_fd[i].mutex); - return wfd; - } - } - free_overlapped(overlapped); - _close(fd); - return INVALID_WINFD; -} - -void _free_index(int _index) -{ - // Cancel any async IO (Don't care about the validity of our handles for this) - cancel_io(_index); - // close fake handle for devices - if ( (poll_fd[_index].handle != INVALID_HANDLE_VALUE) && (poll_fd[_index].handle != 0) - && (GetFileType(poll_fd[_index].handle) == FILE_TYPE_UNKNOWN) ) { - _close(poll_fd[_index].fd); - } - // close the duplicate handle (if we have an actual duplicate) - if (!CancelIoEx_Available) { - if (_poll_fd[_index].original_handle != INVALID_HANDLE_VALUE) { - CloseHandle(poll_fd[_index].handle); - } - _poll_fd[_index].original_handle = INVALID_HANDLE_VALUE; - _poll_fd[_index].thread_id = 0; - } - free_overlapped(poll_fd[_index].overlapped); - poll_fd[_index] = INVALID_WINFD; -} - -/* - * Release a pollable file descriptor. - * - * Note that the associated Windows handle is not closed by this call - */ -void usbi_free_fd(int fd) -{ - int _index; - - CHECK_INIT_POLLING; - - _index = _fd_to_index_and_lock(fd); - if (_index < 0) { - return; - } - _free_index(_index); - LeaveCriticalSection(&_poll_fd[_index].mutex); -} - -/* - * The functions below perform various conversions between fd, handle and OVERLAPPED - */ -struct winfd fd_to_winfd(int fd) -{ - int i; - struct winfd wfd; - - CHECK_INIT_POLLING; - - if (fd <= 0) - return INVALID_WINFD; - - for (i=0; i= 0) { - LeaveCriticalSection(&_poll_fd[_index].mutex); - } - usbi_warn(NULL, "invalid fd"); - triggered = -1; - goto poll_exit; - } - - // IN or OUT must match our fd direction - if ((fds[i].events & POLLIN) && (poll_fd[_index].rw != RW_READ)) { - fds[i].revents |= POLLNVAL | POLLERR; - errno = EBADF; - usbi_warn(NULL, "attempted POLLIN on fd without READ access"); - LeaveCriticalSection(&_poll_fd[_index].mutex); - triggered = -1; - goto poll_exit; - } - - if ((fds[i].events & POLLOUT) && (poll_fd[_index].rw != RW_WRITE)) { - fds[i].revents |= POLLNVAL | POLLERR; - errno = EBADF; - usbi_warn(NULL, "attempted POLLOUT on fd without WRITE access"); - LeaveCriticalSection(&_poll_fd[_index].mutex); - triggered = -1; - goto poll_exit; - } - - // The following macro only works if overlapped I/O was reported pending - if ( (HasOverlappedIoCompleted(poll_fd[_index].overlapped)) - || (HasOverlappedIoCompletedSync(poll_fd[_index].overlapped)) ) { - poll_dbg(" completed"); - // checks above should ensure this works: - fds[i].revents = fds[i].events; - triggered++; - } else { - handles_to_wait_on[nb_handles_to_wait_on] = poll_fd[_index].overlapped->hEvent; - handle_to_index[nb_handles_to_wait_on] = i; - nb_handles_to_wait_on++; - } - LeaveCriticalSection(&_poll_fd[_index].mutex); - } - - // If nothing was triggered, wait on all fds that require it - if ((timeout != 0) && (triggered == 0) && (nb_handles_to_wait_on != 0)) { - if (timeout < 0) { - poll_dbg("starting infinite wait for %d handles...", (int)nb_handles_to_wait_on); - } else { - poll_dbg("starting %d ms wait for %d handles...", timeout, (int)nb_handles_to_wait_on); - } - ret = WaitForMultipleObjects(nb_handles_to_wait_on, handles_to_wait_on, - FALSE, (timeout<0)?INFINITE:(DWORD)timeout); - object_index = ret-WAIT_OBJECT_0; - if ((object_index >= 0) && ((DWORD)object_index < nb_handles_to_wait_on)) { - poll_dbg(" completed after wait"); - i = handle_to_index[object_index]; - _index = _fd_to_index_and_lock(fds[i].fd); - fds[i].revents = fds[i].events; - triggered++; - if (_index >= 0) { - LeaveCriticalSection(&_poll_fd[_index].mutex); - } - } else if (ret == WAIT_TIMEOUT) { - poll_dbg(" timed out"); - triggered = 0; // 0 = timeout - } else { - errno = EIO; - triggered = -1; // error - } - } - -poll_exit: - if (handles_to_wait_on != NULL) { - free(handles_to_wait_on); - } - if (handle_to_index != NULL) { - free(handle_to_index); - } - return triggered; -} - -/* - * close a fake pipe fd - */ -int usbi_close(int fd) -{ - int _index; - int r = -1; - - CHECK_INIT_POLLING; - - _index = _fd_to_index_and_lock(fd); - - if (_index < 0) { - errno = EBADF; - } else { - if (poll_fd[_index].overlapped != NULL) { - // Must be a different event for each end of the pipe - CloseHandle(poll_fd[_index].overlapped->hEvent); - free(poll_fd[_index].overlapped); - } - r = _close(poll_fd[_index].fd); - if (r != 0) { - errno = EIO; - } - poll_fd[_index] = INVALID_WINFD; - LeaveCriticalSection(&_poll_fd[_index].mutex); - } - return r; -} - -/* - * synchronous write for fake "pipe" signaling - */ -ssize_t usbi_write(int fd, const void *buf, size_t count) -{ - int _index; - - CHECK_INIT_POLLING; - - if (count != sizeof(unsigned char)) { - usbi_err(NULL, "this function should only used for signaling"); - return -1; - } - - _index = _fd_to_index_and_lock(fd); - - if ( (_index < 0) || (poll_fd[_index].overlapped == NULL) ) { - errno = EBADF; - if (_index >= 0) { - LeaveCriticalSection(&_poll_fd[_index].mutex); - } - return -1; - } - - poll_dbg("set pipe event (fd = %d, thread = %08X)", _index, GetCurrentThreadId()); - SetEvent(poll_fd[_index].overlapped->hEvent); - poll_fd[_index].overlapped->Internal = STATUS_WAIT_0; - // If two threads write on the pipe at the same time, we need to - // process two separate reads => use the overlapped as a counter - poll_fd[_index].overlapped->InternalHigh++; - - LeaveCriticalSection(&_poll_fd[_index].mutex); - return sizeof(unsigned char); -} - -/* - * synchronous read for fake "pipe" signaling - */ -ssize_t usbi_read(int fd, void *buf, size_t count) -{ - int _index; - ssize_t r = -1; - - CHECK_INIT_POLLING; - - if (count != sizeof(unsigned char)) { - usbi_err(NULL, "this function should only used for signaling"); - return -1; - } - - _index = _fd_to_index_and_lock(fd); - - if (_index < 0) { - errno = EBADF; - return -1; - } - - if (WaitForSingleObject(poll_fd[_index].overlapped->hEvent, INFINITE) != WAIT_OBJECT_0) { - usbi_warn(NULL, "waiting for event failed: %d", (int)GetLastError()); - errno = EIO; - goto out; - } - - poll_dbg("clr pipe event (fd = %d, thread = %08X)", _index, GetCurrentThreadId()); - poll_fd[_index].overlapped->InternalHigh--; - // Don't reset unless we don't have any more events to process - if (poll_fd[_index].overlapped->InternalHigh <= 0) { - ResetEvent(poll_fd[_index].overlapped->hEvent); - poll_fd[_index].overlapped->Internal = STATUS_PENDING; - } - - r = sizeof(unsigned char); - -out: - LeaveCriticalSection(&_poll_fd[_index].mutex); - return r; -} diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_windows.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_windows.h deleted file mode 100644 index 6e5bf2b..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/poll_windows.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Windows compat: POSIX compatibility wrapper - * Copyright (C) 2009-2010 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of poll implementation from libusb-win32, by Stephan Meyer et al. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ -#pragma once - -#if defined(_MSC_VER) -// disable /W4 MSVC warnings that are benign -#pragma warning(disable:4127) // conditional expression is constant -#endif - -// Handle synchronous completion through the overlapped structure -#if !defined(STATUS_REPARSE) // reuse the REPARSE status code -#define STATUS_REPARSE ((LONG)0x00000104L) -#endif -#define STATUS_COMPLETED_SYNCHRONOUSLY STATUS_REPARSE -#define HasOverlappedIoCompletedSync(lpOverlapped) (((DWORD)(lpOverlapped)->Internal) == STATUS_COMPLETED_SYNCHRONOUSLY) - -#define DUMMY_HANDLE ((HANDLE)(LONG_PTR)-2) - -enum windows_version { - WINDOWS_UNSUPPORTED, - WINDOWS_XP, - WINDOWS_2003, // also includes XP 64 - WINDOWS_VISTA_AND_LATER, -}; -extern enum windows_version windows_version; - -#define MAX_FDS 256 - -#define POLLIN 0x0001 /* There is data to read */ -#define POLLPRI 0x0002 /* There is urgent data to read */ -#define POLLOUT 0x0004 /* Writing now will not block */ -#define POLLERR 0x0008 /* Error condition */ -#define POLLHUP 0x0010 /* Hung up */ -#define POLLNVAL 0x0020 /* Invalid request: fd not open */ - -struct pollfd { - int fd; /* file descriptor */ - short events; /* requested events */ - short revents; /* returned events */ -}; - -// access modes -enum rw_type { - RW_NONE, - RW_READ, - RW_WRITE, -}; - -// fd struct that can be used for polling on Windows -struct winfd { - int fd; // what's exposed to libusb core - HANDLE handle; // what we need to attach overlapped to the I/O op, so we can poll it - OVERLAPPED* overlapped; // what will report our I/O status - enum rw_type rw; // I/O transfer direction: read *XOR* write (NOT BOTH) -}; -extern const struct winfd INVALID_WINFD; - -int usbi_pipe(int pipefd[2]); -int usbi_poll(struct pollfd *fds, unsigned int nfds, int timeout); -ssize_t usbi_write(int fd, const void *buf, size_t count); -ssize_t usbi_read(int fd, void *buf, size_t count); -int usbi_close(int fd); - -void init_polling(void); -void exit_polling(void); -struct winfd usbi_create_fd(HANDLE handle, int access_mode); -void usbi_free_fd(int fd); -struct winfd fd_to_winfd(int fd); -struct winfd handle_to_winfd(HANDLE handle); -struct winfd overlapped_to_winfd(OVERLAPPED* overlapped); - -/* - * Timeval operations - */ -#if defined(DDKBUILD) -#include // defines timeval functions on DDK -#endif - -#if !defined(TIMESPEC_TO_TIMEVAL) -#define TIMESPEC_TO_TIMEVAL(tv, ts) { \ - (tv)->tv_sec = (long)(ts)->tv_sec; \ - (tv)->tv_usec = (long)(ts)->tv_nsec / 1000; \ -} -#endif -#if !defined(timersub) -#define timersub(a, b, result) \ -do { \ - (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ - (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ - if ((result)->tv_usec < 0) { \ - --(result)->tv_sec; \ - (result)->tv_usec += 1000000; \ - } \ -} while (0) -#endif - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_posix.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_posix.c deleted file mode 100644 index 60c57cf..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_posix.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * libusb synchronization using POSIX Threads - * - * Copyright (C) 2011 Vitali Lovich - * Copyright (C) 2011 Peter Stuge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifdef _XOPEN_SOURCE -# if _XOPEN_SOURCE < 500 -# undef _XOPEN_SOURCE -# define _XOPEN_SOURCE 500 -# endif -#else -#define _XOPEN_SOURCE 500 -#endif /* _XOPEN_SOURCE */ - -#include "threads_posix.h" - -int usbi_mutex_init_recursive(pthread_mutex_t *mutex, pthread_mutexattr_t *attr) -{ - int err; - pthread_mutexattr_t stack_attr; - if (!attr) { - attr = &stack_attr; - err = pthread_mutexattr_init(&stack_attr); - if (err != 0) - return err; - } - - err = pthread_mutexattr_settype(attr, PTHREAD_MUTEX_RECURSIVE); - if (err != 0) - goto finish; - - err = pthread_mutex_init(mutex, attr); - -finish: - if (attr == &stack_attr) - pthread_mutexattr_destroy(&stack_attr); - - return err; -} diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_posix.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_posix.h deleted file mode 100644 index 9752208..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_posix.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * libusb synchronization using POSIX Threads - * - * Copyright (C) 2010 Peter Stuge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_THREADS_POSIX_H -#define LIBUSB_THREADS_POSIX_H - -#include - -#define usbi_mutex_static_t pthread_mutex_t -#define USBI_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER -#define usbi_mutex_static_lock pthread_mutex_lock -#define usbi_mutex_static_unlock pthread_mutex_unlock - -#define usbi_mutex_t pthread_mutex_t -#define usbi_mutex_init pthread_mutex_init -#define usbi_mutex_lock pthread_mutex_lock -#define usbi_mutex_unlock pthread_mutex_unlock -#define usbi_mutex_trylock pthread_mutex_trylock -#define usbi_mutex_destroy pthread_mutex_destroy - -#define usbi_cond_t pthread_cond_t -#define usbi_cond_init pthread_cond_init -#define usbi_cond_wait pthread_cond_wait -#define usbi_cond_timedwait pthread_cond_timedwait -#define usbi_cond_broadcast pthread_cond_broadcast -#define usbi_cond_destroy pthread_cond_destroy -#define usbi_cond_signal pthread_cond_signal - -extern int usbi_mutex_init_recursive(pthread_mutex_t *mutex, pthread_mutexattr_t *attr); - -#endif /* LIBUSB_THREADS_POSIX_H */ diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_windows.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_windows.c deleted file mode 100644 index 1394bb0..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_windows.c +++ /dev/null @@ -1,207 +0,0 @@ -/* - * libusb synchronization on Microsoft Windows - * - * Copyright (C) 2010 Michael Plante - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include - -#include "libusbi.h" - - -int usbi_mutex_init(usbi_mutex_t *mutex, - const usbi_mutexattr_t *attr) { - if(! mutex) return ((errno=EINVAL)); - *mutex = CreateMutex(NULL, FALSE, NULL); - if(!*mutex) return ((errno=ENOMEM)); - return 0; -} -int usbi_mutex_destroy(usbi_mutex_t *mutex) { - // It is not clear if CloseHandle failure is due to failure to unlock. - // If so, this should be errno=EBUSY. - if(!mutex || !CloseHandle(*mutex)) return ((errno=EINVAL)); - *mutex = NULL; - return 0; -} -int usbi_mutex_trylock(usbi_mutex_t *mutex) { - DWORD result; - if(!mutex) return ((errno=EINVAL)); - result = WaitForSingleObject(*mutex, 0); - if(result == WAIT_OBJECT_0 || result == WAIT_ABANDONED) - return 0; // acquired (ToDo: check that abandoned is ok) - if(result == WAIT_TIMEOUT) - return ((errno=EBUSY)); - return ((errno=EINVAL)); // don't know how this would happen - // so don't know proper errno -} -int usbi_mutex_lock(usbi_mutex_t *mutex) { - DWORD result; - if(!mutex) return ((errno=EINVAL)); - result = WaitForSingleObject(*mutex, INFINITE); - if(result == WAIT_OBJECT_0 || result == WAIT_ABANDONED) - return 0; // acquired (ToDo: check that abandoned is ok) - return ((errno=EINVAL)); // don't know how this would happen - // so don't know proper errno -} -int usbi_mutex_unlock(usbi_mutex_t *mutex) { - if(!mutex) return ((errno=EINVAL)); - if(!ReleaseMutex(*mutex)) return ((errno=EPERM )); - return 0; -} - -int usbi_mutex_static_lock(usbi_mutex_static_t *mutex) { - if(!mutex) return ((errno=EINVAL)); - while (InterlockedExchange((LONG *)mutex, 1) == 1) { - SleepEx(0, TRUE); - } - return 0; -} -int usbi_mutex_static_unlock(usbi_mutex_static_t *mutex) { - if(!mutex) return ((errno=EINVAL)); - *mutex = 0; - return 0; -} - - - -int usbi_cond_init(usbi_cond_t *cond, - const usbi_condattr_t *attr) { - if(!cond) return ((errno=EINVAL)); - list_init(&cond->waiters ); - list_init(&cond->not_waiting); - return 0; -} -int usbi_cond_destroy(usbi_cond_t *cond) { - // This assumes no one is using this anymore. The check MAY NOT BE safe. - struct usbi_cond_perthread *pos, *prev_pos = NULL; - if(!cond) return ((errno=EINVAL)); - if(!list_empty(&cond->waiters)) return ((errno=EBUSY )); // (!see above!) - list_for_each_entry(pos, &cond->not_waiting, list, struct usbi_cond_perthread) { - free(prev_pos); - list_del(&pos->list); - prev_pos = pos; - } - free(prev_pos); - - return 0; -} - -int usbi_cond_broadcast(usbi_cond_t *cond) { - // Assumes mutex is locked; this is not in keeping with POSIX spec, but - // libusb does this anyway, so we simplify by not adding more sync - // primitives to the CV definition! - int fail = 0; - struct usbi_cond_perthread *pos; - if(!cond) return ((errno=EINVAL)); - list_for_each_entry(pos, &cond->waiters, list, struct usbi_cond_perthread) { - if(!SetEvent(pos->event)) - fail = 1; - } - // The wait function will remove its respective item from the list. - return fail ? ((errno=EINVAL)) : 0; -} -int usbi_cond_signal(usbi_cond_t *cond) { - // Assumes mutex is locked; this is not in keeping with POSIX spec, but - // libusb does this anyway, so we simplify by not adding more sync - // primitives to the CV definition! - struct usbi_cond_perthread *pos; - if(!cond) return ((errno=EINVAL)); - if(list_empty(&cond->waiters)) return 0; // no one to wakeup. - pos = list_entry(&cond->waiters.next, struct usbi_cond_perthread, list); - // The wait function will remove its respective item from the list. - return SetEvent(pos->event) ? 0 : ((errno=EINVAL)); -} -static int __inline usbi_cond_intwait(usbi_cond_t *cond, - usbi_mutex_t *mutex, - DWORD timeout_ms) { - struct usbi_cond_perthread *pos; - int found = 0, r; - DWORD r2,tid = GetCurrentThreadId(); - if(!cond || !mutex) return ((errno=EINVAL)); - list_for_each_entry(pos, &cond->not_waiting, list, struct usbi_cond_perthread) { - if(tid == pos->tid) { - found = 1; - break; - } - } - if(!found) { - pos = (struct usbi_cond_perthread*) calloc(1, sizeof(struct usbi_cond_perthread)); - if(!pos) return ((errno=ENOMEM)); // This errno is not POSIX-allowed. - pos->tid = tid; - pos->event = CreateEvent(NULL, FALSE, FALSE, NULL); // auto-reset. - if(!pos->event) { - free(pos); - return ((errno=ENOMEM)); - } - list_add(&pos->list, &cond->not_waiting); - } - - list_del(&pos->list); // remove from not_waiting list. - list_add(&pos->list, &cond->waiters); - - r = usbi_mutex_unlock(mutex); - if(r) return r; - r2 = WaitForSingleObject(pos->event, timeout_ms); - r = usbi_mutex_lock(mutex); - if(r) return r; - - list_del(&pos->list); - list_add(&pos->list, &cond->not_waiting); - - if(r2 == WAIT_TIMEOUT) return ((errno=ETIMEDOUT)); - - return 0; -} -// N.B.: usbi_cond_*wait() can also return ENOMEM, even though pthread_cond_*wait cannot! -int usbi_cond_wait(usbi_cond_t *cond, usbi_mutex_t *mutex) { - return usbi_cond_intwait(cond, mutex, INFINITE); -} -int usbi_cond_timedwait(usbi_cond_t *cond, - usbi_mutex_t *mutex, - const struct timespec *abstime) { - FILETIME filetime; - ULARGE_INTEGER rtime; - struct timeval targ_time, cur_time, delta_time; - struct timespec cur_time_ns; - DWORD millis; - extern const uint64_t epoch_time; - - GetSystemTimeAsFileTime(&filetime); - rtime.LowPart = filetime.dwLowDateTime; - rtime.HighPart = filetime.dwHighDateTime; - rtime.QuadPart -= epoch_time; - cur_time_ns.tv_sec = (long)(rtime.QuadPart / 10000000); - cur_time_ns.tv_nsec = (long)((rtime.QuadPart % 10000000)*100); - TIMESPEC_TO_TIMEVAL(&cur_time, &cur_time_ns); - - TIMESPEC_TO_TIMEVAL(&targ_time, abstime); - timersub(&targ_time, &cur_time, &delta_time); - if(delta_time.tv_sec < 0) // abstime already passed? - millis = 0; - else { - millis = delta_time.tv_usec/1000; - millis += delta_time.tv_sec *1000; - if (delta_time.tv_usec % 1000) // round up to next millisecond - millis++; - } - - return usbi_cond_intwait(cond, mutex, millis); -} - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_windows.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_windows.h deleted file mode 100644 index 7bb144a..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/threads_windows.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * libusb synchronization on Microsoft Windows - * - * Copyright (C) 2010 Michael Plante - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_THREADS_WINDOWS_H -#define LIBUSB_THREADS_WINDOWS_H - -#define usbi_mutex_static_t volatile LONG -#define USBI_MUTEX_INITIALIZER 0 - -#define usbi_mutex_t HANDLE - -struct usbi_cond_perthread { - struct list_head list; - DWORD tid; - HANDLE event; -}; -struct usbi_cond_t_ { - // Every time a thread touches the CV, it winds up in one of these lists. - // It stays there until the CV is destroyed, even if the thread - // terminates. - struct list_head waiters; - struct list_head not_waiting; -}; -typedef struct usbi_cond_t_ usbi_cond_t; - -// We *were* getting timespec from pthread.h: -#if (!defined(HAVE_STRUCT_TIMESPEC) && !defined(_TIMESPEC_DEFINED)) -#define HAVE_STRUCT_TIMESPEC 1 -#define _TIMESPEC_DEFINED 1 -struct timespec { - long tv_sec; - long tv_nsec; -}; -#endif /* HAVE_STRUCT_TIMESPEC | _TIMESPEC_DEFINED */ - -// We *were* getting ETIMEDOUT from pthread.h: -#ifndef ETIMEDOUT -# define ETIMEDOUT 10060 /* This is the value in winsock.h. */ -#endif - -#define usbi_mutexattr_t void -#define usbi_condattr_t void - -// all Windows mutexes are recursive -#define usbi_mutex_init_recursive(mutex, attr) usbi_mutex_init((mutex), (attr)) - -int usbi_mutex_static_lock(usbi_mutex_static_t *mutex); -int usbi_mutex_static_unlock(usbi_mutex_static_t *mutex); - - -int usbi_mutex_init(usbi_mutex_t *mutex, - const usbi_mutexattr_t *attr); -int usbi_mutex_lock(usbi_mutex_t *mutex); -int usbi_mutex_unlock(usbi_mutex_t *mutex); -int usbi_mutex_trylock(usbi_mutex_t *mutex); -int usbi_mutex_destroy(usbi_mutex_t *mutex); - -int usbi_cond_init(usbi_cond_t *cond, - const usbi_condattr_t *attr); -int usbi_cond_destroy(usbi_cond_t *cond); -int usbi_cond_wait(usbi_cond_t *cond, usbi_mutex_t *mutex); -int usbi_cond_timedwait(usbi_cond_t *cond, - usbi_mutex_t *mutex, - const struct timespec *abstime); -int usbi_cond_broadcast(usbi_cond_t *cond); -int usbi_cond_signal(usbi_cond_t *cond); - -#endif /* LIBUSB_THREADS_WINDOWS_H */ - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/windows_usb.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/windows_usb.c deleted file mode 100644 index 0739c19..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/windows_usb.c +++ /dev/null @@ -1,2996 +0,0 @@ -/* - * windows backend for libusb 1.0 - * Copyright (c) 2009-2010 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * Hash table functions adapted from glibc, by Ulrich Drepper et al. - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include "poll_windows.h" -#include "windows_usb.h" - -// The following prevents "banned API" errors when using the MS's WDK OACR/Prefast -#if defined(_PREFAST_) -#pragma warning(disable:28719) -#endif - -// The 2 macros below are used in conjunction with safe loops. -#define LOOP_CHECK(fcall) { r=fcall; if (r != LIBUSB_SUCCESS) continue; } -#define LOOP_BREAK(err) { r=err; continue; } - -extern void usbi_fd_notification(struct libusb_context *ctx); - -// Helper prototypes -static int windows_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len, int *host_endian); -static int windows_clock_gettime(int clk_id, struct timespec *tp); -unsigned __stdcall windows_clock_gettime_threaded(void* param); -// WinUSB API prototypes -static int winusb_init(struct libusb_context *ctx); -static int winusb_exit(void); -static int winusb_open(struct libusb_device_handle *dev_handle); -static void winusb_close(struct libusb_device_handle *dev_handle); -static int winusb_configure_endpoints(struct libusb_device_handle *dev_handle, int iface); -static int winusb_claim_interface(struct libusb_device_handle *dev_handle, int iface); -static int winusb_release_interface(struct libusb_device_handle *dev_handle, int iface); -static int winusb_submit_control_transfer(struct usbi_transfer *itransfer); -static int winusb_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting); -static int winusb_submit_bulk_transfer(struct usbi_transfer *itransfer); -static int winusb_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint); -static int winusb_abort_transfers(struct usbi_transfer *itransfer); -static int winusb_abort_control(struct usbi_transfer *itransfer); -static int winusb_reset_device(struct libusb_device_handle *dev_handle); -static int winusb_copy_transfer_data(struct usbi_transfer *itransfer, uint32_t io_size); -// Composite API prototypes -static int composite_init(struct libusb_context *ctx); -static int composite_exit(void); -static int composite_open(struct libusb_device_handle *dev_handle); -static void composite_close(struct libusb_device_handle *dev_handle); -static int composite_claim_interface(struct libusb_device_handle *dev_handle, int iface); -static int composite_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting); -static int composite_release_interface(struct libusb_device_handle *dev_handle, int iface); -static int composite_submit_control_transfer(struct usbi_transfer *itransfer); -static int composite_submit_bulk_transfer(struct usbi_transfer *itransfer); -static int composite_submit_iso_transfer(struct usbi_transfer *itransfer); -static int composite_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint); -static int composite_abort_transfers(struct usbi_transfer *itransfer); -static int composite_abort_control(struct usbi_transfer *itransfer); -static int composite_reset_device(struct libusb_device_handle *dev_handle); -static int composite_copy_transfer_data(struct usbi_transfer *itransfer, uint32_t io_size); - - -// Global variables -uint64_t hires_frequency, hires_ticks_to_ps; -const uint64_t epoch_time = UINT64_C(116444736000000000); // 1970.01.01 00:00:000 in MS Filetime -enum windows_version windows_version = WINDOWS_UNSUPPORTED; -// Concurrency -static int concurrent_usage = -1; -usbi_mutex_t autoclaim_lock; -// Timer thread -// NB: index 0 is for monotonic and 1 is for the thread exit event -HANDLE timer_thread = NULL; -HANDLE timer_mutex = NULL; -struct timespec timer_tp; -volatile LONG request_count[2] = {0, 1}; // last one must be > 0 -HANDLE timer_request[2] = { NULL, NULL }; -HANDLE timer_response = NULL; -// API globals -bool api_winusb_available = false; -#define CHECK_WINUSB_AVAILABLE do { if (!api_winusb_available) return LIBUSB_ERROR_ACCESS; } while (0) - -static inline BOOLEAN guid_eq(const GUID *guid1, const GUID *guid2) { - if ((guid1 != NULL) && (guid2 != NULL)) { - return (memcmp(guid1, guid2, sizeof(GUID)) == 0); - } - return false; -} - -#if defined(ENABLE_DEBUG_LOGGING) || (defined(_MSC_VER) && _MSC_VER < 1400) -static char* guid_to_string(const GUID* guid) -{ - static char guid_string[MAX_GUID_STRING_LENGTH]; - - if (guid == NULL) return NULL; - sprintf(guid_string, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", - (unsigned int)guid->Data1, guid->Data2, guid->Data3, - guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], - guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); - return guid_string; -} -#endif - -/* - * Converts a windows error to human readable string - * uses retval as errorcode, or, if 0, use GetLastError() - */ -static char *windows_error_str(uint32_t retval) -{ -static char err_string[ERR_BUFFER_SIZE]; - - DWORD size; - size_t i; - uint32_t error_code, format_error; - - error_code = retval?retval:GetLastError(); - - safe_sprintf(err_string, ERR_BUFFER_SIZE, "[%d] ", error_code); - - size = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error_code, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &err_string[safe_strlen(err_string)], - ERR_BUFFER_SIZE - (DWORD)safe_strlen(err_string), NULL); - if (size == 0) { - format_error = GetLastError(); - if (format_error) - safe_sprintf(err_string, ERR_BUFFER_SIZE, - "Windows error code %u (FormatMessage error code %u)", error_code, format_error); - else - safe_sprintf(err_string, ERR_BUFFER_SIZE, "Unknown error code %u", error_code); - } else { - // Remove CR/LF terminators - for (i=safe_strlen(err_string)-1; ((err_string[i]==0x0A) || (err_string[i]==0x0D)); i--) { - err_string[i] = 0; - } - } - return err_string; -} - -/* - * Sanitize Microsoft's paths: convert to uppercase, add prefix and fix backslashes. - * Return an allocated sanitized string or NULL on error. - */ -static char* sanitize_path(const char* path) -{ - const char root_prefix[] = "\\\\.\\"; - size_t j, size, root_size; - char* ret_path = NULL; - size_t add_root = 0; - - if (path == NULL) - return NULL; - - size = safe_strlen(path)+1; - root_size = sizeof(root_prefix)-1; - - // Microsoft indiscriminatly uses '\\?\', '\\.\', '##?#" or "##.#" for root prefixes. - if (!((size > 3) && (((path[0] == '\\') && (path[1] == '\\') && (path[3] == '\\')) || - ((path[0] == '#') && (path[1] == '#') && (path[3] == '#'))))) { - add_root = root_size; - size += add_root; - } - - if ((ret_path = (char*)calloc(size, 1)) == NULL) - return NULL; - - safe_strcpy(&ret_path[add_root], size-add_root, path); - - // Ensure consistancy with root prefix - for (j=0; jcbSize = sizeof(SP_DEVINFO_DATA); - if (!pSetupDiEnumDeviceInfo(*dev_info, _index, dev_info_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain device info data for index %u: %s", - _index, windows_error_str(0)); - } - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return false; - } - return true; -} - -/* - * enumerate interfaces for a specific GUID - * - * Parameters: - * dev_info: a pointer to a dev_info list - * dev_info_data: a pointer to an SP_DEVINFO_DATA to be filled (or NULL if not needed) - * guid: the GUID for which to retrieve interface details - * index: zero based index of the interface in the device info list - * - * Note: it is the responsibility of the caller to free the DEVICE_INTERFACE_DETAIL_DATA - * structure returned and call this function repeatedly using the same guid (with an - * incremented index starting at zero) until all interfaces have been returned. - */ -static SP_DEVICE_INTERFACE_DETAIL_DATA_A *get_interface_details(struct libusb_context *ctx, - HDEVINFO *dev_info, SP_DEVINFO_DATA *dev_info_data, const GUID* guid, unsigned _index) -{ - SP_DEVICE_INTERFACE_DATA dev_interface_data; - SP_DEVICE_INTERFACE_DETAIL_DATA_A *dev_interface_details = NULL; - DWORD size; - - if (_index <= 0) { - *dev_info = pSetupDiGetClassDevsA(guid, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE); - } - - if (dev_info_data != NULL) { - dev_info_data->cbSize = sizeof(SP_DEVINFO_DATA); - if (!pSetupDiEnumDeviceInfo(*dev_info, _index, dev_info_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain device info data for index %u: %s", - _index, windows_error_str(0)); - } - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; - } - } - - dev_interface_data.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); - if (!pSetupDiEnumDeviceInterfaces(*dev_info, NULL, guid, _index, &dev_interface_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain interface data for index %u: %s", - _index, windows_error_str(0)); - } - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; - } - - // Read interface data (dummy + actual) to access the device path - if (!pSetupDiGetDeviceInterfaceDetailA(*dev_info, &dev_interface_data, NULL, 0, &size, NULL)) { - // The dummy call should fail with ERROR_INSUFFICIENT_BUFFER - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { - usbi_err(ctx, "could not access interface data (dummy) for index %u: %s", - _index, windows_error_str(0)); - goto err_exit; - } - } else { - usbi_err(ctx, "program assertion failed - http://msdn.microsoft.com/en-us/library/ms792901.aspx is wrong."); - goto err_exit; - } - - if ((dev_interface_details = (SP_DEVICE_INTERFACE_DETAIL_DATA_A*) calloc(size, 1)) == NULL) { - usbi_err(ctx, "could not allocate interface data for index %u.", _index); - goto err_exit; - } - - dev_interface_details->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A); - if (!pSetupDiGetDeviceInterfaceDetailA(*dev_info, &dev_interface_data, - dev_interface_details, size, &size, NULL)) { - usbi_err(ctx, "could not access interface data (actual) for index %u: %s", - _index, windows_error_str(0)); - } - - return dev_interface_details; - -err_exit: - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; -} - -/* Hash table functions - modified From glibc 2.3.2: - [Aho,Sethi,Ullman] Compilers: Principles, Techniques and Tools, 1986 - [Knuth] The Art of Computer Programming, part 3 (6.4) */ -typedef struct htab_entry { - unsigned long used; - char* str; -} htab_entry; -htab_entry* htab_table = NULL; -usbi_mutex_t htab_write_mutex = NULL; -unsigned long htab_size, htab_filled; - -/* For the used double hash method the table size has to be a prime. To - correct the user given table size we need a prime test. This trivial - algorithm is adequate because the code is called only during init and - the number is likely to be small */ -static int isprime(unsigned long number) -{ - // no even number will be passed - unsigned int divider = 3; - - while((divider * divider < number) && (number % divider != 0)) - divider += 2; - - return (number % divider != 0); -} - -/* Before using the hash table we must allocate memory for it. - We allocate one element more as the found prime number says. - This is done for more effective indexing as explained in the - comment for the hash function. */ -static int htab_create(struct libusb_context *ctx, unsigned long nel) -{ - if (htab_table != NULL) { - usbi_err(ctx, "hash table already allocated"); - } - - // Create a mutex - usbi_mutex_init(&htab_write_mutex, NULL); - - // Change nel to the first prime number not smaller as nel. - nel |= 1; - while(!isprime(nel)) - nel += 2; - - htab_size = nel; - usbi_dbg("using %d entries hash table", nel); - htab_filled = 0; - - // allocate memory and zero out. - htab_table = (htab_entry*)calloc(htab_size + 1, sizeof(htab_entry)); - if (htab_table == NULL) { - usbi_err(ctx, "could not allocate space for hash table"); - return 0; - } - - return 1; -} - -/* After using the hash table it has to be destroyed. */ -static void htab_destroy(void) -{ - size_t i; - if (htab_table == NULL) { - return; - } - - for (i=0; i New entry - - // If the table is full return an error - if (htab_filled >= htab_size) { - usbi_err(NULL, "hash table is full (%d entries)", htab_size); - return 0; - } - - // Concurrent threads might be storing the same entry at the same time - // (eg. "simultaneous" enums from different threads) => use a mutex - usbi_mutex_lock(&htab_write_mutex); - // Just free any previously allocated string (which should be the same as - // new one). The possibility of concurrent threads storing a collision - // string (same hash, different string) at the same time is extremely low - safe_free(htab_table[idx].str); - htab_table[idx].used = hval; - htab_table[idx].str = (char*) calloc(1, safe_strlen(str)+1); - if (htab_table[idx].str == NULL) { - usbi_err(NULL, "could not duplicate string for hash table"); - usbi_mutex_unlock(&htab_write_mutex); - return 0; - } - memcpy(htab_table[idx].str, str, safe_strlen(str)+1); - ++htab_filled; - usbi_mutex_unlock(&htab_write_mutex); - - return idx; -} - -/* - * Returns the session ID of a device's nth level ancestor - * If there's no device at the nth level, return 0 - */ -static unsigned long get_ancestor_session_id(DWORD devinst, unsigned level) -{ - DWORD parent_devinst; - unsigned long session_id = 0; - char* sanitized_path = NULL; - char path[MAX_PATH_LENGTH]; - unsigned i; - - if (level < 1) return 0; - for (i = 0; idev); - struct libusb_config_descriptor *conf_desc; - const struct libusb_interface_descriptor *if_desc; - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - - r = libusb_get_config_descriptor(dev_handle->dev, 0, &conf_desc); - if (r != LIBUSB_SUCCESS) { - usbi_warn(ctx, "could not read config descriptor: error %d", r); - return r; - } - - if_desc = &conf_desc->interface[iface].altsetting[altsetting]; - safe_free(priv->usb_interface[iface].endpoint); - - if (if_desc->bNumEndpoints == 0) { - usbi_dbg("no endpoints found for interface %d", iface); - return LIBUSB_SUCCESS; - } - - priv->usb_interface[iface].endpoint = (uint8_t*) calloc(1, if_desc->bNumEndpoints); - if (priv->usb_interface[iface].endpoint == NULL) { - return LIBUSB_ERROR_NO_MEM; - } - - priv->usb_interface[iface].nb_endpoints = if_desc->bNumEndpoints; - for (i=0; ibNumEndpoints; i++) { - priv->usb_interface[iface].endpoint[i] = if_desc->endpoint[i].bEndpointAddress; - usbi_dbg("(re)assigned endpoint %02X to interface %d", priv->usb_interface[iface].endpoint[i], iface); - } - libusb_free_config_descriptor(conf_desc); - - // Extra init is required for WinUSB endpoints - if (priv->apib->id == USB_API_WINUSB) { - return winusb_configure_endpoints(dev_handle, iface); - } - - return LIBUSB_SUCCESS; -} - -// Lookup for a match in the list of API driver names -static bool is_api_driver(char* driver, uint8_t api) -{ - uint8_t i; - const char sep_str[2] = {LIST_SEPARATOR, 0}; - char *tok, *tmp_str; - size_t len = safe_strlen(driver); - - if (len == 0) return false; - tmp_str = (char*) calloc(1, len+1); - if (tmp_str == NULL) return false; - memcpy(tmp_str, driver, len+1); - tok = strtok(tmp_str, sep_str); - while (tok != NULL) { - for (i=0; idev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv( - transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface = *interface_number; - int r = LIBUSB_SUCCESS; - - usbi_mutex_lock(&autoclaim_lock); - if (current_interface < 0) // No serviceable interface was found - { - for (current_interface=0; current_interfaceusb_interface[current_interface].apib->id == api_type) - && (libusb_claim_interface(transfer->dev_handle, current_interface) == LIBUSB_SUCCESS) ) { - usbi_dbg("auto-claimed interface %d for control request", current_interface); - if (handle_priv->autoclaim_count[current_interface] != 0) { - usbi_warn(ctx, "program assertion failed - autoclaim_count was nonzero"); - } - handle_priv->autoclaim_count[current_interface]++; - break; - } - } - if (current_interface == USB_MAXINTERFACES) { - usbi_err(ctx, "could not auto-claim any interface"); - r = LIBUSB_ERROR_NOT_FOUND; - } - } else { - // If we have a valid interface that was autoclaimed, we must increment - // its autoclaim count so that we can prevent an early release. - if (handle_priv->autoclaim_count[current_interface] != 0) { - handle_priv->autoclaim_count[current_interface]++; - } - } - usbi_mutex_unlock(&autoclaim_lock); - - *interface_number = current_interface; - return r; - -} - -static void auto_release(struct usbi_transfer *itransfer) -{ - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - libusb_device_handle *dev_handle = transfer->dev_handle; - struct windows_device_handle_priv* handle_priv = _device_handle_priv(dev_handle); - int r; - - usbi_mutex_lock(&autoclaim_lock); - if (handle_priv->autoclaim_count[transfer_priv->interface_number] > 0) { - handle_priv->autoclaim_count[transfer_priv->interface_number]--; - if (handle_priv->autoclaim_count[transfer_priv->interface_number] == 0) { - r = libusb_release_interface(dev_handle, transfer_priv->interface_number); - if (r == LIBUSB_SUCCESS) { - usbi_dbg("auto-released interface %d", transfer_priv->interface_number); - } else { - usbi_dbg("failed to auto-release interface %d (%s)", - transfer_priv->interface_number, libusb_error_name((enum libusb_error)r)); - } - } - } - usbi_mutex_unlock(&autoclaim_lock); -} - -/* - * init: libusb backend init function - * - * This function enumerates the HCDs (Host Controller Drivers) and populates our private HCD list - * In our implementation, we equate Windows' "HCD" to LibUSB's "bus". Note that bus is zero indexed. - * HCDs are not expected to change after init (might not hold true for hot pluggable USB PCI card?) - */ -static int windows_init(struct libusb_context *ctx) -{ - int i, r = LIBUSB_ERROR_OTHER; - OSVERSIONINFO os_version; - HANDLE semaphore; - char sem_name[11+1+8]; // strlen(libusb_init)+'\0'+(32-bit hex PID) - - sprintf(sem_name, "libusb_init%08X", (unsigned int)GetCurrentProcessId()&0xFFFFFFFF); - semaphore = CreateSemaphoreA(NULL, 1, 1, sem_name); - if (semaphore == NULL) { - usbi_err(ctx, "could not create semaphore: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_MEM; - } - - // A successful wait brings our semaphore count to 0 (unsignaled) - // => any concurent wait stalls until the semaphore's release - if (WaitForSingleObject(semaphore, INFINITE) != WAIT_OBJECT_0) { - usbi_err(ctx, "failure to access semaphore: %s", windows_error_str(0)); - CloseHandle(semaphore); - return LIBUSB_ERROR_NO_MEM; - } - - // NB: concurrent usage supposes that init calls are equally balanced with - // exit calls. If init is called more than exit, we will not exit properly - if ( ++concurrent_usage == 0 ) { // First init? - // Detect OS version - memset(&os_version, 0, sizeof(OSVERSIONINFO)); - os_version.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - windows_version = WINDOWS_UNSUPPORTED; - if ((GetVersionEx(&os_version) != 0) && (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT)) { - if ((os_version.dwMajorVersion == 5) && (os_version.dwMinorVersion == 1)) { - windows_version = WINDOWS_XP; - } else if ((os_version.dwMajorVersion == 5) && (os_version.dwMinorVersion == 2)) { - windows_version = WINDOWS_2003; // also includes XP 64 - } else if (os_version.dwMajorVersion >= 6) { - windows_version = WINDOWS_VISTA_AND_LATER; - } - } - if (windows_version == WINDOWS_UNSUPPORTED) { - usbi_err(ctx, "This version of Windows is NOT supported"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - goto init_exit; - } - - // We need a lock for proper auto-release - usbi_mutex_init(&autoclaim_lock, NULL); - - // Initialize pollable file descriptors - init_polling(); - - // Load DLL imports - if (init_dlls() != LIBUSB_SUCCESS) { - usbi_err(ctx, "could not resolve DLL functions"); - return LIBUSB_ERROR_NOT_FOUND; - } - - // Initialize the low level APIs (we don't care about errors at this stage) - for (i=0; inum_configurations = 1; - priv->dev_descriptor.bLength = sizeof(USB_DEVICE_DESCRIPTOR); - priv->dev_descriptor.bDescriptorType = USB_DEVICE_DESCRIPTOR_TYPE; - priv->dev_descriptor.bNumConfigurations = 1; - priv->active_config = 1; - - if (priv->parent_dev == NULL) { - usbi_err(ctx, "program assertion failed - HCD hub has no parent"); - return LIBUSB_ERROR_NO_DEVICE; - } - parent_priv = _device_priv(priv->parent_dev); - if (sscanf(parent_priv->path, "\\\\.\\PCI#VEN_%04x&DEV_%04x%*s", &vid, &pid) == 2) { - priv->dev_descriptor.idVendor = (uint16_t)vid; - priv->dev_descriptor.idProduct = (uint16_t)pid; - } else { - usbi_warn(ctx, "could not infer VID/PID of HCD hub from '%s'", parent_priv->path); - priv->dev_descriptor.idVendor = 0x1d6b; // Linux Foundation root hub - priv->dev_descriptor.idProduct = 1; - } - return LIBUSB_SUCCESS; -} - -/* - * fetch and cache all the config descriptors through I/O - */ -static int cache_config_descriptors(struct libusb_device *dev, HANDLE hub_handle, char* device_id) -{ - DWORD size, ret_size; - struct libusb_context *ctx = DEVICE_CTX(dev); - struct windows_device_priv *priv = _device_priv(dev); - int r; - uint8_t i; - - USB_CONFIGURATION_DESCRIPTOR_SHORT cd_buf_short; // dummy request - PUSB_DESCRIPTOR_REQUEST cd_buf_actual = NULL; // actual request - PUSB_CONFIGURATION_DESCRIPTOR cd_data = NULL; - - if (dev->num_configurations == 0) - return LIBUSB_ERROR_INVALID_PARAM; - - priv->config_descriptor = (unsigned char**) calloc(dev->num_configurations, sizeof(PUSB_CONFIGURATION_DESCRIPTOR)); - if (priv->config_descriptor == NULL) - return LIBUSB_ERROR_NO_MEM; - for (i=0; inum_configurations; i++) - priv->config_descriptor[i] = NULL; - - for (i=0, r=LIBUSB_SUCCESS; ; i++) - { - // safe loop: release all dynamic resources - safe_free(cd_buf_actual); - - // safe loop: end of loop condition - if ((i >= dev->num_configurations) || (r != LIBUSB_SUCCESS)) - break; - - size = sizeof(USB_CONFIGURATION_DESCRIPTOR_SHORT); - memset(&cd_buf_short, 0, size); - - cd_buf_short.req.ConnectionIndex = (ULONG)priv->port; - cd_buf_short.req.SetupPacket.bmRequest = LIBUSB_ENDPOINT_IN; - cd_buf_short.req.SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR; - cd_buf_short.req.SetupPacket.wValue = (USB_CONFIGURATION_DESCRIPTOR_TYPE << 8) | i; - cd_buf_short.req.SetupPacket.wIndex = i; - cd_buf_short.req.SetupPacket.wLength = (USHORT)(size - sizeof(USB_DESCRIPTOR_REQUEST)); - - // Dummy call to get the required data size - if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, &cd_buf_short, size, - &cd_buf_short, size, &ret_size, NULL)) { - usbi_err(ctx, "could not access configuration descriptor (dummy) for '%s': %s", device_id, windows_error_str(0)); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - if ((ret_size != size) || (cd_buf_short.data.wTotalLength < sizeof(USB_CONFIGURATION_DESCRIPTOR))) { - usbi_err(ctx, "unexpected configuration descriptor size (dummy) for '%s'.", device_id); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - size = sizeof(USB_DESCRIPTOR_REQUEST) + cd_buf_short.data.wTotalLength; - if ((cd_buf_actual = (PUSB_DESCRIPTOR_REQUEST) calloc(1, size)) == NULL) { - usbi_err(ctx, "could not allocate configuration descriptor buffer for '%s'.", device_id); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - memset(cd_buf_actual, 0, size); - - // Actual call - cd_buf_actual->ConnectionIndex = (ULONG)priv->port; - cd_buf_actual->SetupPacket.bmRequest = LIBUSB_ENDPOINT_IN; - cd_buf_actual->SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR; - cd_buf_actual->SetupPacket.wValue = (USB_CONFIGURATION_DESCRIPTOR_TYPE << 8) | i; - cd_buf_actual->SetupPacket.wIndex = i; - cd_buf_actual->SetupPacket.wLength = (USHORT)(size - sizeof(USB_DESCRIPTOR_REQUEST)); - - if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, cd_buf_actual, size, - cd_buf_actual, size, &ret_size, NULL)) { - usbi_err(ctx, "could not access configuration descriptor (actual) for '%s': %s", device_id, windows_error_str(0)); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - cd_data = (PUSB_CONFIGURATION_DESCRIPTOR)((UCHAR*)cd_buf_actual+sizeof(USB_DESCRIPTOR_REQUEST)); - - if ((size != ret_size) || (cd_data->wTotalLength != cd_buf_short.data.wTotalLength)) { - usbi_err(ctx, "unexpected configuration descriptor size (actual) for '%s'.", device_id); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - if (cd_data->bDescriptorType != USB_CONFIGURATION_DESCRIPTOR_TYPE) { - usbi_err(ctx, "not a configuration descriptor for '%s'", device_id); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - usbi_dbg("cached config descriptor %d (bConfigurationValue=%d, %d bytes)", - i, cd_data->bConfigurationValue, cd_data->wTotalLength); - - // Cache the descriptor - priv->config_descriptor[i] = (unsigned char*) calloc(1, cd_data->wTotalLength); - if (priv->config_descriptor[i] == NULL) - return LIBUSB_ERROR_NO_MEM; - memcpy(priv->config_descriptor[i], cd_data, cd_data->wTotalLength); - } - return LIBUSB_SUCCESS; -} - -/* - * Populate a libusb device structure - */ -static int init_device(struct libusb_device* dev, struct libusb_device* parent_dev, - uint8_t port_number, char* device_id, DWORD devinst) -{ - HANDLE handle; - DWORD size; - USB_NODE_CONNECTION_INFORMATION_EX conn_info; - struct windows_device_priv *priv, *parent_priv; - struct libusb_context *ctx = DEVICE_CTX(dev); - struct libusb_device* tmp_dev; - unsigned i; - - if ((dev == NULL) || (parent_dev == NULL)) { - return LIBUSB_ERROR_NOT_FOUND; - } - priv = _device_priv(dev); - parent_priv = _device_priv(parent_dev); - if (parent_priv->apib->id != USB_API_HUB) { - usbi_warn(ctx, "parent for device '%s' is not a hub", device_id); - return LIBUSB_ERROR_NOT_FOUND; - } - - // It is possible for the parent hub not to have been initialized yet - // If that's the case, lookup the ancestors to set the bus number - if (parent_dev->bus_number == 0) { - for (i=2; ; i++) { - tmp_dev = usbi_get_device_by_session_id(ctx, get_ancestor_session_id(devinst, i)); - if (tmp_dev == NULL) break; - if (tmp_dev->bus_number != 0) { - usbi_dbg("got bus number from ancestor #%d", i); - parent_dev->bus_number = tmp_dev->bus_number; - break; - } - } - } - if (parent_dev->bus_number == 0) { - usbi_err(ctx, "program assertion failed: unable to find ancestor bus number for '%s'", device_id); - return LIBUSB_ERROR_NOT_FOUND; - } - dev->bus_number = parent_dev->bus_number; - priv->port = port_number; - priv->depth = parent_priv->depth + 1; - priv->parent_dev = parent_dev; - - // If the device address is already set, we can stop here - if (dev->device_address != 0) { - return LIBUSB_SUCCESS; - } - memset(&conn_info, 0, sizeof(conn_info)); - if (priv->depth != 0) { // Not a HCD hub - handle = CreateFileA(parent_priv->path, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, - FILE_FLAG_OVERLAPPED, NULL); - if (handle == INVALID_HANDLE_VALUE) { - usbi_warn(ctx, "could not open hub %s: %s", parent_priv->path, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - size = sizeof(conn_info); - conn_info.ConnectionIndex = (ULONG)port_number; - if (!DeviceIoControl(handle, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX, &conn_info, size, - &conn_info, size, &size, NULL)) { - usbi_warn(ctx, "could not get node connection information for device '%s': %s", - device_id, windows_error_str(0)); - safe_closehandle(handle); - return LIBUSB_ERROR_NO_DEVICE; - } - if (conn_info.ConnectionStatus == NoDeviceConnected) { - usbi_err(ctx, "device '%s' is no longer connected!", device_id); - safe_closehandle(handle); - return LIBUSB_ERROR_NO_DEVICE; - } - memcpy(&priv->dev_descriptor, &(conn_info.DeviceDescriptor), sizeof(USB_DEVICE_DESCRIPTOR)); - dev->num_configurations = priv->dev_descriptor.bNumConfigurations; - priv->active_config = conn_info.CurrentConfigurationValue; - usbi_dbg("found %d configurations (active conf: %d)", dev->num_configurations, priv->active_config); - // If we can't read the config descriptors, just set the number of confs to zero - if (cache_config_descriptors(dev, handle, device_id) != LIBUSB_SUCCESS) { - dev->num_configurations = 0; - priv->dev_descriptor.bNumConfigurations = 0; - } - safe_closehandle(handle); - - if (conn_info.DeviceAddress > UINT8_MAX) { - usbi_err(ctx, "program assertion failed: device address overflow"); - } - dev->device_address = (uint8_t)conn_info.DeviceAddress; - switch (conn_info.Speed) { - case 0: dev->speed = LIBUSB_SPEED_LOW; break; - case 1: dev->speed = LIBUSB_SPEED_FULL; break; - case 2: dev->speed = LIBUSB_SPEED_HIGH; break; - case 3: dev->speed = LIBUSB_SPEED_SUPER; break; - default: - usbi_warn(ctx, "Got unknown device speed %d", conn_info.Speed); - break; - } - } else { - dev->device_address = UINT8_MAX; // Hubs from HCD have a devaddr of 255 - force_hcd_device_descriptor(dev); - } - - usbi_dbg("(bus: %d, addr: %d, depth: %d, port: %d): '%s'", - dev->bus_number, dev->device_address, priv->depth, priv->port, device_id); - - return LIBUSB_SUCCESS; -} - -// Returns the api type, or 0 if not found/unsupported -static uint8_t get_api_type(struct libusb_context *ctx, - HDEVINFO *dev_info, SP_DEVINFO_DATA *dev_info_data) -{ - // Precedence for filter drivers vs driver is in the order of this array - struct driver_lookup lookup[3] = { - {"\0\0", SPDRP_SERVICE, "driver"}, - {"\0\0", SPDRP_UPPERFILTERS, "upper filter driver"}, - {"\0\0", SPDRP_LOWERFILTERS, "lower filter driver"} - }; - DWORD size, reg_type; - unsigned k, l; - uint8_t api; - - // Check the service & filter names to know the API we should use - for (k=0; k<3; k++) { - if (pSetupDiGetDeviceRegistryPropertyA(*dev_info, dev_info_data, lookup[k].reg_prop, - ®_type, (BYTE*)lookup[k].list, MAX_KEY_LENGTH, &size)) { - // Turn the REG_SZ SPDRP_SERVICE into REG_MULTI_SZ - if (lookup[k].reg_prop == SPDRP_SERVICE) { - // our buffers are MAX_KEY_LENGTH+1 so we can overflow if needed - lookup[k].list[safe_strlen(lookup[k].list)+1] = 0; - } - // MULTI_SZ is a pain to work with. Turn it into something much more manageable - // NB: none of the driver names we check against contain LIST_SEPARATOR, - // (currently ';'), so even if an unsuported one does, it's not an issue - for (l=0; (lookup[k].list[l] != 0) || (lookup[k].list[l+1] != 0); l++) { - if (lookup[k].list[l] == 0) { - lookup[k].list[l] = LIST_SEPARATOR; - } - } - upperize(lookup[k].list); - usbi_dbg("%s(s): %s", lookup[k].designation, lookup[k].list); - } else { - if (GetLastError() != ERROR_INVALID_DATA) { - usbi_dbg("could not access %s: %s", lookup[k].designation, windows_error_str(0)); - } - lookup[k].list[0] = 0; - } - } - - for (api=1; api= 3) continue; - return api; - } - return 0; -} - -static int set_composite_interface(struct libusb_context* ctx, struct libusb_device* dev, - char* dev_interface_path, char* device_id, uint8_t api) -{ - unsigned i; - struct windows_device_priv *priv = _device_priv(dev); - int interface_number; - - if (priv->apib->id != USB_API_COMPOSITE) { - usbi_err(ctx, "program assertion failed: '%s' is not composite", device_id); - return LIBUSB_ERROR_NO_DEVICE; - } - - // Because MI_## are not necessarily in sequential order (some composite - // devices will have only MI_00 & MI_03 for instance), we retrieve the actual - // interface number from the path's MI value - interface_number = 0; - for (i=0; device_id[i] != 0; ) { - if ( (device_id[i++] == 'M') && (device_id[i++] == 'I') - && (device_id[i++] == '_') ) { - interface_number = (device_id[i++] - '0')*10; - interface_number += device_id[i] - '0'; - break; - } - } - - if (device_id[i] == 0) { - usbi_warn(ctx, "failure to read interface number for %s. Using default value %d", - device_id, interface_number); - } - - if (priv->usb_interface[interface_number].path != NULL) { - usbi_warn(ctx, "interface[%d] already set - ignoring: %s", interface_number, device_id); - return LIBUSB_ERROR_ACCESS; - } - - usbi_dbg("interface[%d] = %s", interface_number, dev_interface_path); - priv->usb_interface[interface_number].path = dev_interface_path; - priv->usb_interface[interface_number].apib = &usb_api_backend[api]; - priv->composite_api_flags |= 1<DevicePath); - if (dev_interface_path == NULL) { - usbi_warn(ctx, "could not sanitize device interface path for '%s'", dev_interface_details->DevicePath); - continue; - } - } - } else { - // Workaround for a Nec/Renesas USB 3.0 driver bug where root hubs are - // being listed under the "NUSB3" PnP Symbolic Name rather than "USB" - while ( (class_index < 2) && - (!(b = get_devinfo_data(ctx, &dev_info, &dev_info_data, usb_class[class_index], i))) ) { - class_index++; - i = 0; - } - if (!b) break; - } - - // Read the Device ID path. This is what we'll use as UID - // Note that if the device is plugged in a different port or hub, the Device ID changes - if (CM_Get_Device_IDA(dev_info_data.DevInst, path, sizeof(path), 0) != CR_SUCCESS) { - usbi_warn(ctx, "could not read the device id path for devinst %X, skipping", - dev_info_data.DevInst); - continue; - } - dev_id_path = sanitize_path(path); - if (dev_id_path == NULL) { - usbi_warn(ctx, "could not sanitize device id path for devinst %X, skipping", - dev_info_data.DevInst); - continue; - } -#ifdef ENUM_DEBUG - usbi_dbg("PRO: %s", dev_id_path); -#endif - - // The SPDRP_ADDRESS for USB devices is the device port number on the hub - port_nr = 0; - if ((pass >= HUB_PASS) && (pass <= GEN_PASS)) { - if ( (!pSetupDiGetDeviceRegistryPropertyA(dev_info, &dev_info_data, SPDRP_ADDRESS, - ®_type, (BYTE*)&port_nr, 4, &size)) - || (size != 4) ) { - usbi_warn(ctx, "could not retrieve port number for device '%s', skipping: %s", - dev_id_path, windows_error_str(0)); - continue; - } - } - - // Set API to use or get additional data from generic pass - api = USB_API_UNSUPPORTED; - switch (pass) { - case HCD_PASS: - break; - case GEN_PASS: - // We use the GEN pass to detect driverless devices... - size = sizeof(strbuf); - if (!pSetupDiGetDeviceRegistryPropertyA(dev_info, &dev_info_data, SPDRP_DRIVER, - ®_type, (BYTE*)strbuf, size, &size)) { - usbi_info(ctx, "The following device has no driver: '%s'", dev_id_path); - usbi_info(ctx, "libusb will not be able to access it."); - } - // ...and to add the additional device interface GUIDs - key = pSetupDiOpenDevRegKey(dev_info, &dev_info_data, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ); - if (key != INVALID_HANDLE_VALUE) { - size = sizeof(guid_string_w); - s = pRegQueryValueExW(key, L"DeviceInterfaceGUIDs", NULL, ®_type, - (BYTE*)guid_string_w, &size); - pRegCloseKey(key); - if (s == ERROR_SUCCESS) { - if (nb_guids >= MAX_ENUM_GUIDS) { - // If this assert is ever reported, grow a GUID table dynamically - usbi_err(ctx, "program assertion failed: too many GUIDs"); - LOOP_BREAK(LIBUSB_ERROR_OVERFLOW); - } - if_guid = (GUID*) calloc(1, sizeof(GUID)); - pCLSIDFromString(guid_string_w, if_guid); - guid[nb_guids++] = if_guid; - usbi_dbg("extra GUID: %s", guid_to_string(if_guid)); - } - } - break; - default: - // Get the API type (after checking that the driver installation is OK) - if ( (!pSetupDiGetDeviceRegistryPropertyA(dev_info, &dev_info_data, SPDRP_INSTALL_STATE, - ®_type, (BYTE*)&install_state, 4, &size)) - || (size != 4) ){ - usbi_warn(ctx, "could not detect installation state of driver for '%s': %s", - dev_id_path, windows_error_str(0)); - } else if (install_state != 0) { - usbi_warn(ctx, "driver for device '%s' is reporting an issue (code: %d) - skipping", - dev_id_path, install_state); - continue; - } - api = get_api_type(ctx, &dev_info, &dev_info_data); - break; - } - - // Find parent device (for the passes that need it) - switch (pass) { - case HCD_PASS: - case DEV_PASS: - case HUB_PASS: - break; - default: - // Go through the ancestors until we see a face we recognize - parent_dev = NULL; - for (ancestor = 1; parent_dev == NULL; ancestor++) { - session_id = get_ancestor_session_id(dev_info_data.DevInst, ancestor); - if (session_id == 0) { - break; - } - parent_dev = usbi_get_device_by_session_id(ctx, session_id); - } - if (parent_dev == NULL) { - usbi_dbg("unlisted ancestor for '%s' (newly connected, etc.) - ignoring", dev_id_path); - continue; - } - parent_priv = _device_priv(parent_dev); - // virtual USB devices are also listed during GEN - don't process these yet - if ( (pass == GEN_PASS) && (parent_priv->apib->id != USB_API_HUB) ) { - continue; - } - break; - } - - // Create new or match existing device, using the (hashed) device_id as session id - if (pass <= DEV_PASS) { // For subsequent passes, we'll lookup the parent - // These are the passes that create "new" devices - session_id = htab_hash(dev_id_path); - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev == NULL) { - if (pass == DEV_PASS) { - // This can occur if the OS only reports a newly plugged device after we started enum - usbi_warn(ctx, "'%s' was only detected in late pass (newly connected device?)" - " - ignoring", dev_id_path); - continue; - } - usbi_dbg("allocating new device for session [%X]", session_id); - if ((dev = usbi_alloc_device(ctx, session_id)) == NULL) { - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - windows_device_priv_init(dev); - // Keep track of devices that need unref - unref_list[unref_cur++] = dev; - if (unref_cur >= unref_size) { - unref_size += 64; - unref_list = realloc(unref_list, unref_size*sizeof(libusb_device*)); - if (unref_list == NULL) { - usbi_err(ctx, "could not realloc list for unref - aborting."); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - } - } else { - usbi_dbg("found existing device for session [%X] (%d.%d)", - session_id, dev->bus_number, dev->device_address); - } - priv = _device_priv(dev); - } - - // Setup device - switch (pass) { - case HCD_PASS: - dev->bus_number = (uint8_t)(i + 1); // bus 0 is reserved for disconnected - dev->device_address = 0; - dev->num_configurations = 0; - priv->apib = &usb_api_backend[USB_API_HUB]; - priv->depth = UINT8_MAX; // Overflow to 0 for HCD Hubs - priv->path = dev_interface_path; dev_interface_path = NULL; - break; - case HUB_PASS: - case DEV_PASS: - // If the device has already been setup, don't do it again - if (priv->path != NULL) - break; - // Take care of API initialization - priv->path = dev_interface_path; dev_interface_path = NULL; - priv->apib = &usb_api_backend[api]; - switch(api) { - case USB_API_COMPOSITE: - case USB_API_HUB: - break; - default: - // For other devices, the first interface is the same as the device - priv->usb_interface[0].path = (char*) calloc(safe_strlen(priv->path)+1, 1); - if (priv->usb_interface[0].path != NULL) { - safe_strcpy(priv->usb_interface[0].path, safe_strlen(priv->path)+1, priv->path); - } else { - usbi_warn(ctx, "could not duplicate interface path '%s'", priv->path); - } - // The following is needed if we want API calls to work for both simple - // and composite devices. - for(j=0; jusb_interface[j].apib = &usb_api_backend[api]; - } - break; - } - break; - case GEN_PASS: - r = init_device(dev, parent_dev, (uint8_t)port_nr, dev_id_path, dev_info_data.DevInst); - if (r == LIBUSB_SUCCESS) { - // Append device to the list of discovered devices - discdevs = discovered_devs_append(*_discdevs, dev); - if (!discdevs) { - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - *_discdevs = discdevs; - } else if (r == LIBUSB_ERROR_NO_DEVICE) { - // This can occur if the device was disconnected but Windows hasn't - // refreshed its enumeration yet - in that case, we ignore the device - r = LIBUSB_SUCCESS; - } - break; - default: // later passes - if (parent_priv->apib->id == USB_API_COMPOSITE) { - usbi_dbg("setting composite interface for [%lX]:", parent_dev->session_data); - switch (set_composite_interface(ctx, parent_dev, dev_interface_path, dev_id_path, api)) { - case LIBUSB_SUCCESS: - dev_interface_path = NULL; - break; - case LIBUSB_ERROR_ACCESS: - // interface has already been set => make sure dev_interface_path is freed then - break; - default: - LOOP_BREAK(r); - break; - } - } - break; - } - } - } - - // Free any additional GUIDs - for (pass = DEV_PASS+1; pass < nb_guids; pass++) { - safe_free(guid[pass]); - } - - // Unref newly allocated devs - for (i=0; i any concurent wait stalls until the semaphore release - if (WaitForSingleObject(semaphore, INFINITE) != WAIT_OBJECT_0) { - CloseHandle(semaphore); - return; - } - - // Only works if exits and inits are balanced exactly - if (--concurrent_usage < 0) { // Last exit - for (i=0; idev_descriptor), DEVICE_DESC_LENGTH); - *host_endian = 0; - - return LIBUSB_SUCCESS; -} - -static int windows_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) -{ - struct windows_device_priv *priv = _device_priv(dev); - PUSB_CONFIGURATION_DESCRIPTOR config_header; - size_t size; - - // config index is zero based - if (config_index >= dev->num_configurations) - return LIBUSB_ERROR_INVALID_PARAM; - - if ((priv->config_descriptor == NULL) || (priv->config_descriptor[config_index] == NULL)) - return LIBUSB_ERROR_NOT_FOUND; - - config_header = (PUSB_CONFIGURATION_DESCRIPTOR)priv->config_descriptor[config_index]; - - size = min(config_header->wTotalLength, len); - memcpy(buffer, priv->config_descriptor[config_index], size); - - return LIBUSB_SUCCESS; -} - -/* - * return the cached copy of the active config descriptor - */ -static int windows_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len, int *host_endian) -{ - struct windows_device_priv *priv = _device_priv(dev); - - if (priv->active_config == 0) - return LIBUSB_ERROR_NOT_FOUND; - - // config index is zero based - return windows_get_config_descriptor(dev, (uint8_t)(priv->active_config-1), buffer, len, host_endian); -} - -static int windows_open(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - - if (priv->apib == NULL) { - usbi_err(ctx, "program assertion failed - device is not initialized"); - return LIBUSB_ERROR_NO_DEVICE; - } - - return priv->apib->open(dev_handle); -} - -static void windows_close(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - priv->apib->close(dev_handle); -} - -static int windows_get_configuration(struct libusb_device_handle *dev_handle, int *config) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - if (priv->active_config == 0) { - *config = 0; - return LIBUSB_ERROR_NOT_FOUND; - } - - *config = priv->active_config; - return LIBUSB_SUCCESS; -} - -/* - * from http://msdn.microsoft.com/en-us/library/ms793522.aspx: "The port driver - * does not currently expose a service that allows higher-level drivers to set - * the configuration." - */ -static int windows_set_configuration(struct libusb_device_handle *dev_handle, int config) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - int r = LIBUSB_SUCCESS; - - if (config >= USB_MAXCONFIG) - return LIBUSB_ERROR_INVALID_PARAM; - - r = libusb_control_transfer(dev_handle, LIBUSB_ENDPOINT_OUT | - LIBUSB_REQUEST_TYPE_STANDARD | LIBUSB_RECIPIENT_DEVICE, - LIBUSB_REQUEST_SET_CONFIGURATION, (uint16_t)config, - 0, NULL, 0, 1000); - - if (r == LIBUSB_SUCCESS) { - priv->active_config = (uint8_t)config; - } - return r; -} - -static int windows_claim_interface(struct libusb_device_handle *dev_handle, int iface) -{ - int r = LIBUSB_SUCCESS; - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - if (iface >= USB_MAXINTERFACES) - return LIBUSB_ERROR_INVALID_PARAM; - - safe_free(priv->usb_interface[iface].endpoint); - priv->usb_interface[iface].nb_endpoints= 0; - - r = priv->apib->claim_interface(dev_handle, iface); - - if (r == LIBUSB_SUCCESS) { - r = windows_assign_endpoints(dev_handle, iface, 0); - } - - return r; -} - -static int windows_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - int r = LIBUSB_SUCCESS; - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - safe_free(priv->usb_interface[iface].endpoint); - priv->usb_interface[iface].nb_endpoints= 0; - - r = priv->apib->set_interface_altsetting(dev_handle, iface, altsetting); - - if (r == LIBUSB_SUCCESS) { - r = windows_assign_endpoints(dev_handle, iface, altsetting); - } - - return r; -} - -static int windows_release_interface(struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - return priv->apib->release_interface(dev_handle, iface); -} - -static int windows_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->apib->clear_halt(dev_handle, endpoint); -} - -static int windows_reset_device(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->apib->reset_device(dev_handle); -} - -// The 3 functions below are unlikely to ever get supported on Windows -static int windows_kernel_driver_active(struct libusb_device_handle *dev_handle, int iface) -{ - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static int windows_attach_kernel_driver(struct libusb_device_handle *dev_handle, int iface) -{ - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static int windows_detach_kernel_driver(struct libusb_device_handle *dev_handle, int iface) -{ - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static void windows_destroy_device(struct libusb_device *dev) -{ - windows_device_priv_release(dev); -} - -static void windows_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - - usbi_free_fd(transfer_priv->pollable_fd.fd); - // When auto claim is in use, attempt to release the auto-claimed interface - auto_release(itransfer); -} - -static int submit_bulk_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int r; - - r = priv->apib->submit_bulk_transfer(itransfer); - if (r != LIBUSB_SUCCESS) { - return r; - } - - usbi_add_pollfd(ctx, transfer_priv->pollable_fd.fd, - (short)(IS_XFERIN(transfer) ? POLLIN : POLLOUT)); - - return LIBUSB_SUCCESS; -} - -static int submit_iso_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int r; - - r = priv->apib->submit_iso_transfer(itransfer); - if (r != LIBUSB_SUCCESS) { - return r; - } - - usbi_add_pollfd(ctx, transfer_priv->pollable_fd.fd, - (short)(IS_XFERIN(transfer) ? POLLIN : POLLOUT)); - - return LIBUSB_SUCCESS; -} - -static int submit_control_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int r; - - r = priv->apib->submit_control_transfer(itransfer); - if (r != LIBUSB_SUCCESS) { - return r; - } - - usbi_add_pollfd(ctx, transfer_priv->pollable_fd.fd, POLLIN); - - return LIBUSB_SUCCESS; - -} - -static int windows_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return submit_control_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (IS_XFEROUT(transfer) && - transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) - return LIBUSB_ERROR_NOT_SUPPORTED; - return submit_bulk_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return submit_iso_transfer(itransfer); - default: - usbi_err(TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static int windows_abort_control(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->apib->abort_control(itransfer); -} - -static int windows_abort_transfers(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->apib->abort_transfers(itransfer); -} - -static int windows_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return windows_abort_control(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return windows_abort_transfers(itransfer); - default: - usbi_err(ITRANSFER_CTX(itransfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static void windows_transfer_callback(struct usbi_transfer *itransfer, uint32_t io_result, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int status; - - usbi_dbg("handling I/O completion with errcode %d", io_result); - - switch(io_result) { - case NO_ERROR: - status = priv->apib->copy_transfer_data(itransfer, io_size); - break; - case ERROR_GEN_FAILURE: - usbi_dbg("detected endpoint stall"); - status = LIBUSB_TRANSFER_STALL; - break; - case ERROR_SEM_TIMEOUT: - usbi_dbg("detected semaphore timeout"); - status = LIBUSB_TRANSFER_TIMED_OUT; - break; - case ERROR_OPERATION_ABORTED: - if (itransfer->flags & USBI_TRANSFER_TIMED_OUT) { - usbi_dbg("detected timeout"); - status = LIBUSB_TRANSFER_TIMED_OUT; - } else { - usbi_dbg("detected operation aborted"); - status = LIBUSB_TRANSFER_CANCELLED; - } - break; - default: - usbi_err(ITRANSFER_CTX(itransfer), "detected I/O error: %s", windows_error_str(0)); - status = LIBUSB_TRANSFER_ERROR; - break; - } - windows_clear_transfer_priv(itransfer); // Cancel polling - usbi_handle_transfer_completion(itransfer, (enum libusb_transfer_status)status); -} - -static void windows_handle_callback (struct usbi_transfer *itransfer, uint32_t io_result, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - windows_transfer_callback (itransfer, io_result, io_size); - break; - default: - usbi_err(ITRANSFER_CTX(itransfer), "unknown endpoint type %d", transfer->type); - } -} - -static int windows_handle_events(struct libusb_context *ctx, struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready) -{ - struct windows_transfer_priv* transfer_priv = NULL; - POLL_NFDS_TYPE i = 0; - bool found = false; - struct usbi_transfer *transfer; - DWORD io_size, io_result; - - usbi_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - - usbi_dbg("checking fd %d with revents = %04x", fds[i].fd, fds[i].revents); - - if (!fds[i].revents) { - continue; - } - - num_ready--; - - // Because a Windows OVERLAPPED is used for poll emulation, - // a pollable fd is created and stored with each transfer - usbi_mutex_lock(&ctx->flying_transfers_lock); - list_for_each_entry(transfer, &ctx->flying_transfers, list, struct usbi_transfer) { - transfer_priv = usbi_transfer_get_os_priv(transfer); - if (transfer_priv->pollable_fd.fd == fds[i].fd) { - found = true; - break; - } - } - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - if (found) { - // Handle async requests that completed synchronously first - if (HasOverlappedIoCompletedSync(transfer_priv->pollable_fd.overlapped)) { - io_result = NO_ERROR; - io_size = (DWORD)transfer_priv->pollable_fd.overlapped->InternalHigh; - // Regular async overlapped - } else if (GetOverlappedResult(transfer_priv->pollable_fd.handle, - transfer_priv->pollable_fd.overlapped, &io_size, false)) { - io_result = NO_ERROR; - } else { - io_result = GetLastError(); - } - usbi_remove_pollfd(ctx, transfer_priv->pollable_fd.fd); - // let handle_callback free the event using the transfer wfd - // If you don't use the transfer wfd, you run a risk of trying to free a - // newly allocated wfd that took the place of the one from the transfer. - windows_handle_callback(transfer, io_result, io_size); - } else { - usbi_err(ctx, "could not find a matching transfer for fd %x", fds[i]); - return LIBUSB_ERROR_NOT_FOUND; - } - } - - usbi_mutex_unlock(&ctx->open_devs_lock); - return LIBUSB_SUCCESS; -} - -/* - * Monotonic and real time functions - */ -unsigned __stdcall windows_clock_gettime_threaded(void* param) -{ - LARGE_INTEGER hires_counter, li_frequency; - LONG nb_responses; - int timer_index; - - // Init - find out if we have access to a monotonic (hires) timer - if (!QueryPerformanceFrequency(&li_frequency)) { - usbi_dbg("no hires timer available on this platform"); - hires_frequency = 0; - hires_ticks_to_ps = UINT64_C(0); - } else { - hires_frequency = li_frequency.QuadPart; - // The hires frequency can go as high as 4 GHz, so we'll use a conversion - // to picoseconds to compute the tv_nsecs part in clock_gettime - hires_ticks_to_ps = UINT64_C(1000000000000) / hires_frequency; - usbi_dbg("hires timer available (Frequency: %"PRIu64" Hz)", hires_frequency); - } - - // Main loop - wait for requests - while (1) { - timer_index = WaitForMultipleObjects(2, timer_request, FALSE, INFINITE) - WAIT_OBJECT_0; - if ( (timer_index != 0) && (timer_index != 1) ) { - usbi_dbg("failure to wait on requests: %s", windows_error_str(0)); - continue; - } - if (request_count[timer_index] == 0) { - // Request already handled - ResetEvent(timer_request[timer_index]); - // There's still a possiblity that a thread sends a request between the - // time we test request_count[] == 0 and we reset the event, in which case - // the request would be ignored. The simple solution to that is to test - // request_count again and process requests if non zero. - if (request_count[timer_index] == 0) - continue; - } - switch (timer_index) { - case 0: - WaitForSingleObject(timer_mutex, INFINITE); - // Requests to this thread are for hires always - if (QueryPerformanceCounter(&hires_counter) != 0) { - timer_tp.tv_sec = (long)(hires_counter.QuadPart / hires_frequency); - timer_tp.tv_nsec = (long)(((hires_counter.QuadPart % hires_frequency)/1000) * hires_ticks_to_ps); - } else { - // Fallback to real-time if we can't get monotonic value - // Note that real-time clock does not wait on the mutex or this thread. - windows_clock_gettime(USBI_CLOCK_REALTIME, &timer_tp); - } - ReleaseMutex(timer_mutex); - - nb_responses = InterlockedExchange((LONG*)&request_count[0], 0); - if ( (nb_responses) - && (ReleaseSemaphore(timer_response, nb_responses, NULL) == 0) ) { - usbi_dbg("unable to release timer semaphore %d: %s", windows_error_str(0)); - } - continue; - case 1: // time to quit - usbi_dbg("timer thread quitting"); - return 0; - } - } - usbi_dbg("ERROR: broken timer thread"); - return 1; -} - -static int windows_clock_gettime(int clk_id, struct timespec *tp) -{ - FILETIME filetime; - ULARGE_INTEGER rtime; - DWORD r; - switch(clk_id) { - case USBI_CLOCK_MONOTONIC: - if (hires_frequency != 0) { - while (1) { - InterlockedIncrement((LONG*)&request_count[0]); - SetEvent(timer_request[0]); - r = WaitForSingleObject(timer_response, TIMER_REQUEST_RETRY_MS); - switch(r) { - case WAIT_OBJECT_0: - WaitForSingleObject(timer_mutex, INFINITE); - *tp = timer_tp; - ReleaseMutex(timer_mutex); - return LIBUSB_SUCCESS; - case WAIT_TIMEOUT: - usbi_dbg("could not obtain a timer value within reasonable timeframe - too much load?"); - break; // Retry until successful - default: - usbi_dbg("WaitForSingleObject failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_OTHER; - } - } - } - // Fall through and return real-time if monotonic was not detected @ timer init - case USBI_CLOCK_REALTIME: - // We follow http://msdn.microsoft.com/en-us/library/ms724928%28VS.85%29.aspx - // with a predef epoch_time to have an epoch that starts at 1970.01.01 00:00 - // Note however that our resolution is bounded by the Windows system time - // functions and is at best of the order of 1 ms (or, usually, worse) - GetSystemTimeAsFileTime(&filetime); - rtime.LowPart = filetime.dwLowDateTime; - rtime.HighPart = filetime.dwHighDateTime; - rtime.QuadPart -= epoch_time; - tp->tv_sec = (long)(rtime.QuadPart / 10000000); - tp->tv_nsec = (long)((rtime.QuadPart % 10000000)*100); - return LIBUSB_SUCCESS; - default: - return LIBUSB_ERROR_INVALID_PARAM; - } -} - - -// NB: MSVC6 does not support named initializers. -const struct usbi_os_backend windows_backend = { - "Windows", - windows_init, - windows_exit, - - windows_get_device_list, - windows_open, - windows_close, - - windows_get_device_descriptor, - windows_get_active_config_descriptor, - windows_get_config_descriptor, - - windows_get_configuration, - windows_set_configuration, - windows_claim_interface, - windows_release_interface, - - windows_set_interface_altsetting, - windows_clear_halt, - windows_reset_device, - - windows_kernel_driver_active, - windows_detach_kernel_driver, - windows_attach_kernel_driver, - - windows_destroy_device, - - windows_submit_transfer, - windows_cancel_transfer, - windows_clear_transfer_priv, - - windows_handle_events, - - windows_clock_gettime, -#if defined(USBI_TIMERFD_AVAILABLE) - NULL, -#endif - sizeof(struct windows_device_priv), - sizeof(struct windows_device_handle_priv), - sizeof(struct windows_transfer_priv), - 0, -}; - - -/* - * USB API backends - */ -static int unsupported_init(struct libusb_context *ctx) { - return LIBUSB_SUCCESS; -} -static int unsupported_exit(void) { - return LIBUSB_SUCCESS; -} -static int unsupported_open(struct libusb_device_handle *dev_handle) { - PRINT_UNSUPPORTED_API(open); -} -static void unsupported_close(struct libusb_device_handle *dev_handle) { - usbi_dbg("unsupported API call for 'close'"); -} -static int unsupported_claim_interface(struct libusb_device_handle *dev_handle, int iface) { - PRINT_UNSUPPORTED_API(claim_interface); -} -static int unsupported_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) { - PRINT_UNSUPPORTED_API(set_interface_altsetting); -} -static int unsupported_release_interface(struct libusb_device_handle *dev_handle, int iface) { - PRINT_UNSUPPORTED_API(release_interface); -} -static int unsupported_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) { - PRINT_UNSUPPORTED_API(clear_halt); -} -static int unsupported_reset_device(struct libusb_device_handle *dev_handle) { - PRINT_UNSUPPORTED_API(reset_device); -} -static int unsupported_submit_bulk_transfer(struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(submit_bulk_transfer); -} -static int unsupported_submit_iso_transfer(struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(submit_iso_transfer); -} -static int unsupported_submit_control_transfer(struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(submit_control_transfer); -} -static int unsupported_abort_control(struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(abort_control); -} -static int unsupported_abort_transfers(struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(abort_transfers); -} -static int unsupported_copy_transfer_data(struct usbi_transfer *itransfer, uint32_t io_size) { - PRINT_UNSUPPORTED_API(copy_transfer_data); -} - -// These names must be uppercase -const char* hub_driver_names[] = {"USBHUB", "USBHUB3", "NUSB3HUB", "FLXHCIH", "TIHUB3", "ETRONHUB3", "VIAHUB3", "ASMTHUB3"}; -const char* composite_driver_names[] = {"USBCCGP"}; -const char* winusb_driver_names[] = {"WINUSB"}; -const struct windows_usb_api_backend usb_api_backend[USB_API_MAX] = { - { - USB_API_UNSUPPORTED, - "Unsupported API", - &CLASS_GUID_UNSUPPORTED, - NULL, - 0, - unsupported_init, - unsupported_exit, - unsupported_open, - unsupported_close, - unsupported_claim_interface, - unsupported_set_interface_altsetting, - unsupported_release_interface, - unsupported_clear_halt, - unsupported_reset_device, - unsupported_submit_bulk_transfer, - unsupported_submit_iso_transfer, - unsupported_submit_control_transfer, - unsupported_abort_control, - unsupported_abort_transfers, - unsupported_copy_transfer_data, - }, { - USB_API_HUB, - "HUB API", - &CLASS_GUID_UNSUPPORTED, - hub_driver_names, - sizeof(hub_driver_names)/sizeof(hub_driver_names[0]), - unsupported_init, - unsupported_exit, - unsupported_open, - unsupported_close, - unsupported_claim_interface, - unsupported_set_interface_altsetting, - unsupported_release_interface, - unsupported_clear_halt, - unsupported_reset_device, - unsupported_submit_bulk_transfer, - unsupported_submit_iso_transfer, - unsupported_submit_control_transfer, - unsupported_abort_control, - unsupported_abort_transfers, - unsupported_copy_transfer_data, - }, { - USB_API_COMPOSITE, - "Composite API", - &CLASS_GUID_COMPOSITE, - composite_driver_names, - sizeof(composite_driver_names)/sizeof(composite_driver_names[0]), - composite_init, - composite_exit, - composite_open, - composite_close, - composite_claim_interface, - composite_set_interface_altsetting, - composite_release_interface, - composite_clear_halt, - composite_reset_device, - composite_submit_bulk_transfer, - composite_submit_iso_transfer, - composite_submit_control_transfer, - composite_abort_control, - composite_abort_transfers, - composite_copy_transfer_data, - }, { - USB_API_WINUSB, - "WinUSB API", - &CLASS_GUID_LIBUSB_WINUSB, - winusb_driver_names, - sizeof(winusb_driver_names)/sizeof(winusb_driver_names[0]), - winusb_init, - winusb_exit, - winusb_open, - winusb_close, - winusb_claim_interface, - winusb_set_interface_altsetting, - winusb_release_interface, - winusb_clear_halt, - winusb_reset_device, - winusb_submit_bulk_transfer, - unsupported_submit_iso_transfer, - winusb_submit_control_transfer, - winusb_abort_control, - winusb_abort_transfers, - winusb_copy_transfer_data, - }, -}; - - -/* - * WinUSB API functions - */ -static int winusb_init(struct libusb_context *ctx) -{ - DLL_LOAD(winusb.dll, WinUsb_Initialize, TRUE); - DLL_LOAD(winusb.dll, WinUsb_Free, TRUE); - DLL_LOAD(winusb.dll, WinUsb_GetAssociatedInterface, TRUE); - DLL_LOAD(winusb.dll, WinUsb_GetDescriptor, TRUE); - DLL_LOAD(winusb.dll, WinUsb_QueryInterfaceSettings, TRUE); - DLL_LOAD(winusb.dll, WinUsb_QueryDeviceInformation, TRUE); - DLL_LOAD(winusb.dll, WinUsb_SetCurrentAlternateSetting, TRUE); - DLL_LOAD(winusb.dll, WinUsb_GetCurrentAlternateSetting, TRUE); - DLL_LOAD(winusb.dll, WinUsb_QueryPipe, TRUE); - DLL_LOAD(winusb.dll, WinUsb_SetPipePolicy, TRUE); - DLL_LOAD(winusb.dll, WinUsb_GetPipePolicy, TRUE); - DLL_LOAD(winusb.dll, WinUsb_ReadPipe, TRUE); - DLL_LOAD(winusb.dll, WinUsb_WritePipe, TRUE); - DLL_LOAD(winusb.dll, WinUsb_ControlTransfer, TRUE); - DLL_LOAD(winusb.dll, WinUsb_ResetPipe, TRUE); - DLL_LOAD(winusb.dll, WinUsb_AbortPipe, TRUE); - DLL_LOAD(winusb.dll, WinUsb_FlushPipe, TRUE); - - api_winusb_available = true; - return LIBUSB_SUCCESS; -} - -static int winusb_exit(void) -{ - return LIBUSB_SUCCESS; -} - -// NB: open and close must ensure that they only handle interface of -// the right API type, as these functions can be called wholesale from -// composite_open(), with interfaces belonging to different APIs -static int winusb_open(struct libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - - HANDLE file_handle; - int i; - - CHECK_WINUSB_AVAILABLE; - - // WinUSB requires a seperate handle for each interface - for (i = 0; i < USB_MAXINTERFACES; i++) { - if ( (priv->usb_interface[i].path != NULL) - && (priv->usb_interface[i].apib->id == USB_API_WINUSB) ) { - file_handle = CreateFileA(priv->usb_interface[i].path, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - if (file_handle == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "could not open device %s (interface %d): %s", priv->usb_interface[i].path, i, windows_error_str(0)); - switch(GetLastError()) { - case ERROR_FILE_NOT_FOUND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_ACCESS_DENIED: - return LIBUSB_ERROR_ACCESS; - default: - return LIBUSB_ERROR_IO; - } - } - handle_priv->interface_handle[i].dev_handle = file_handle; - } - } - - return LIBUSB_SUCCESS; -} - -static void winusb_close(struct libusb_device_handle *dev_handle) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE file_handle; - int i; - - if (!api_winusb_available) - return; - - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (priv->usb_interface[i].apib->id == USB_API_WINUSB) { - file_handle = handle_priv->interface_handle[i].dev_handle; - if ( (file_handle != 0) && (file_handle != INVALID_HANDLE_VALUE)) { - CloseHandle(file_handle); - } - } - } -} - -static int winusb_configure_endpoints(struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle = handle_priv->interface_handle[iface].api_handle; - UCHAR policy; - ULONG timeout = 0; - uint8_t endpoint_address; - int i; - - CHECK_WINUSB_AVAILABLE; - - // With handle and enpoints set (in parent), we can setup the default pipe properties - // see http://download.microsoft.com/download/D/1/D/D1DD7745-426B-4CC3-A269-ABBBE427C0EF/DVC-T705_DDC08.pptx - for (i=-1; iusb_interface[iface].nb_endpoints; i++) { - endpoint_address =(i==-1)?0:priv->usb_interface[iface].endpoint[i]; - if (!WinUsb_SetPipePolicy(winusb_handle, endpoint_address, - PIPE_TRANSFER_TIMEOUT, sizeof(ULONG), &timeout)) { - usbi_dbg("failed to set PIPE_TRANSFER_TIMEOUT for control endpoint %02X", endpoint_address); - } - if (i == -1) continue; // Other policies don't apply to control endpoint - policy = false; - if (!WinUsb_SetPipePolicy(winusb_handle, endpoint_address, - SHORT_PACKET_TERMINATE, sizeof(UCHAR), &policy)) { - usbi_dbg("failed to disable SHORT_PACKET_TERMINATE for endpoint %02X", endpoint_address); - } - if (!WinUsb_SetPipePolicy(winusb_handle, endpoint_address, - IGNORE_SHORT_PACKETS, sizeof(UCHAR), &policy)) { - usbi_dbg("failed to disable IGNORE_SHORT_PACKETS for endpoint %02X", endpoint_address); - } - if (!WinUsb_SetPipePolicy(winusb_handle, endpoint_address, - ALLOW_PARTIAL_READS, sizeof(UCHAR), &policy)) { - usbi_dbg("failed to disable ALLOW_PARTIAL_READS for endpoint %02X", endpoint_address); - } - policy = true; - if (!WinUsb_SetPipePolicy(winusb_handle, endpoint_address, - AUTO_CLEAR_STALL, sizeof(UCHAR), &policy)) { - usbi_dbg("failed to enable AUTO_CLEAR_STALL for endpoint %02X", endpoint_address); - } - } - - return LIBUSB_SUCCESS; -} - -static int winusb_claim_interface(struct libusb_device_handle *dev_handle, int iface) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - bool is_using_usbccgp = (priv->apib->id == USB_API_COMPOSITE); - HANDLE file_handle, winusb_handle; - - CHECK_WINUSB_AVAILABLE; - - // If the device is composite, but using the default Windows composite parent driver (usbccgp) - // or if it's the first WinUSB interface, we get a handle through WinUsb_Initialize(). - if ((is_using_usbccgp) || (iface == 0)) { - // composite device (independent interfaces) or interface 0 - file_handle = handle_priv->interface_handle[iface].dev_handle; - if ((file_handle == 0) || (file_handle == INVALID_HANDLE_VALUE)) { - return LIBUSB_ERROR_NOT_FOUND; - } - - if (!WinUsb_Initialize(file_handle, &winusb_handle)) { - usbi_err(ctx, "could not access interface %d: %s", iface, windows_error_str(0)); - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - - switch(GetLastError()) { - case ERROR_BAD_COMMAND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - default: - usbi_err(ctx, "could not claim interface %d: %s", iface, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - } - handle_priv->interface_handle[iface].api_handle = winusb_handle; - } else { - // For all other interfaces, use WinUsb_GetAssociatedInterface() - winusb_handle = handle_priv->interface_handle[0].api_handle; - // It is a requirement for multiple interface devices using WinUSB that you - // must first claim the first interface before you claim any other - if ((winusb_handle == 0) || (winusb_handle == INVALID_HANDLE_VALUE)) { - file_handle = handle_priv->interface_handle[0].dev_handle; - if (WinUsb_Initialize(file_handle, &winusb_handle)) { - handle_priv->interface_handle[0].api_handle = winusb_handle; - usbi_warn(ctx, "auto-claimed interface 0 (required to claim %d with WinUSB)", iface); - } else { - usbi_warn(ctx, "failed to auto-claim interface 0 (required to claim %d with WinUSB)", iface); - return LIBUSB_ERROR_ACCESS; - } - } - if (!WinUsb_GetAssociatedInterface(winusb_handle, (UCHAR)(iface-1), - &handle_priv->interface_handle[iface].api_handle)) { - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - switch(GetLastError()) { - case ERROR_NO_MORE_ITEMS: // invalid iface - return LIBUSB_ERROR_NOT_FOUND; - case ERROR_BAD_COMMAND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_ALREADY_EXISTS: // already claimed - return LIBUSB_ERROR_BUSY; - default: - usbi_err(ctx, "could not claim interface %d: %s", iface, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - } - } - usbi_dbg("claimed interface %d", iface); - handle_priv->active_interface = iface; - - return LIBUSB_SUCCESS; -} - -static int winusb_release_interface(struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - HANDLE winusb_handle; - - CHECK_WINUSB_AVAILABLE; - - winusb_handle = handle_priv->interface_handle[iface].api_handle; - if ((winusb_handle == 0) || (winusb_handle == INVALID_HANDLE_VALUE)) { - return LIBUSB_ERROR_NOT_FOUND; - } - - WinUsb_Free(winusb_handle); - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - - return LIBUSB_SUCCESS; -} - -/* - * Return the first valid interface (of the same API type), for control transfers - */ -static int winusb_get_valid_interface(struct libusb_device_handle *dev_handle) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - int i; - - for (i=0; iinterface_handle[i].dev_handle != 0) - && (handle_priv->interface_handle[i].dev_handle != INVALID_HANDLE_VALUE) - && (handle_priv->interface_handle[i].api_handle != 0) - && (handle_priv->interface_handle[i].api_handle != INVALID_HANDLE_VALUE) ) { - return i; - } - } - return -1; -} - -/* - * Lookup interface by endpoint address. -1 if not found - */ -static int interface_by_endpoint(struct windows_device_priv *priv, - struct windows_device_handle_priv *handle_priv, uint8_t endpoint_address) -{ - int i, j; - for (i=0; iinterface_handle[i].api_handle == INVALID_HANDLE_VALUE) - continue; - if (handle_priv->interface_handle[i].api_handle == 0) - continue; - if (priv->usb_interface[i].endpoint == NULL) - continue; - for (j=0; jusb_interface[i].nb_endpoints; j++) { - if (priv->usb_interface[i].endpoint[j] == endpoint_address) { - return i; - } - } - } - return -1; -} - -static int winusb_submit_control_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_handle_priv *handle_priv = _device_handle_priv( - transfer->dev_handle); - WINUSB_SETUP_PACKET *setup = (WINUSB_SETUP_PACKET *) transfer->buffer; - ULONG size; - HANDLE winusb_handle; - int current_interface; - struct winfd wfd; - - CHECK_WINUSB_AVAILABLE; - - transfer_priv->pollable_fd = INVALID_WINFD; - size = transfer->length - LIBUSB_CONTROL_SETUP_SIZE; - - if (size > MAX_CTRL_BUFFER_LENGTH) - return LIBUSB_ERROR_INVALID_PARAM; - - current_interface = winusb_get_valid_interface(transfer->dev_handle); - if (current_interface < 0) { - if (auto_claim(transfer, ¤t_interface, USB_API_WINUSB) != LIBUSB_SUCCESS) { - return LIBUSB_ERROR_NOT_FOUND; - } - } - - usbi_dbg("will use interface %d", current_interface); - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - wfd = usbi_create_fd(winusb_handle, _O_RDONLY); - // Always use the handle returned from usbi_create_fd (wfd.handle) - if (wfd.fd < 0) { - return LIBUSB_ERROR_NO_MEM; - } - - // Sending of set configuration control requests from WinUSB creates issues - if ( ((setup->request_type & (0x03 << 5)) == LIBUSB_REQUEST_TYPE_STANDARD) - && (setup->request == LIBUSB_REQUEST_SET_CONFIGURATION) ) { - if (setup->value != priv->active_config) { - usbi_warn(ctx, "cannot set configuration other than the default one"); - usbi_free_fd(wfd.fd); - return LIBUSB_ERROR_INVALID_PARAM; - } - wfd.overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - wfd.overlapped->InternalHigh = 0; - } else { - if (!WinUsb_ControlTransfer(wfd.handle, *setup, transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, size, NULL, wfd.overlapped)) { - if(GetLastError() != ERROR_IO_PENDING) { - usbi_err(ctx, "WinUsb_ControlTransfer failed: %s", windows_error_str(0)); - usbi_free_fd(wfd.fd); - return LIBUSB_ERROR_IO; - } - } else { - wfd.overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - wfd.overlapped->InternalHigh = (DWORD)size; - } - } - - // Use priv_transfer to store data needed for async polling - transfer_priv->pollable_fd = wfd; - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; -} - -static int winusb_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - HANDLE winusb_handle; - - CHECK_WINUSB_AVAILABLE; - - if (altsetting > 255) { - return LIBUSB_ERROR_INVALID_PARAM; - } - - winusb_handle = handle_priv->interface_handle[iface].api_handle; - if ((winusb_handle == 0) || (winusb_handle == INVALID_HANDLE_VALUE)) { - usbi_err(ctx, "interface must be claimed first"); - return LIBUSB_ERROR_NOT_FOUND; - } - - if (!WinUsb_SetCurrentAlternateSetting(winusb_handle, (UCHAR)altsetting)) { - usbi_err(ctx, "WinUsb_SetCurrentAlternateSetting failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_IO; - } - - return LIBUSB_SUCCESS; -} - -static int winusb_submit_bulk_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - HANDLE winusb_handle; - bool ret; - int current_interface; - struct winfd wfd; - - CHECK_WINUSB_AVAILABLE; - - transfer_priv->pollable_fd = INVALID_WINFD; - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", transfer->endpoint, current_interface); - - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - wfd = usbi_create_fd(winusb_handle, IS_XFERIN(transfer) ? _O_RDONLY : _O_WRONLY); - // Always use the handle returned from usbi_create_fd (wfd.handle) - if (wfd.fd < 0) { - return LIBUSB_ERROR_NO_MEM; - } - - if (IS_XFERIN(transfer)) { - usbi_dbg("reading %d bytes", transfer->length); - ret = WinUsb_ReadPipe(wfd.handle, transfer->endpoint, transfer->buffer, transfer->length, NULL, wfd.overlapped); - } else { - usbi_dbg("writing %d bytes", transfer->length); - ret = WinUsb_WritePipe(wfd.handle, transfer->endpoint, transfer->buffer, transfer->length, NULL, wfd.overlapped); - } - if (!ret) { - if(GetLastError() != ERROR_IO_PENDING) { - usbi_err(ctx, "WinUsb_Pipe Transfer failed: %s", windows_error_str(0)); - usbi_free_fd(wfd.fd); - return LIBUSB_ERROR_IO; - } - } else { - wfd.overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - wfd.overlapped->InternalHigh = (DWORD)transfer->length; - } - - transfer_priv->pollable_fd = wfd; - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; -} - -static int winusb_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle; - int current_interface; - - CHECK_WINUSB_AVAILABLE; - - current_interface = interface_by_endpoint(priv, handle_priv, endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", endpoint, current_interface); - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - if (!WinUsb_ResetPipe(winusb_handle, endpoint)) { - usbi_err(ctx, "WinUsb_ResetPipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -/* - * from http://www.winvistatips.com/winusb-bugchecks-t335323.html (confirmed - * through testing as well): - * "You can not call WinUsb_AbortPipe on control pipe. You can possibly cancel - * the control transfer using CancelIo" - */ -static int winusb_abort_control(struct usbi_transfer *itransfer) -{ - // Cancelling of the I/O is done in the parent - return LIBUSB_SUCCESS; -} - -static int winusb_abort_transfers(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - HANDLE winusb_handle; - int current_interface; - - CHECK_WINUSB_AVAILABLE; - - current_interface = transfer_priv->interface_number; - if ((current_interface < 0) || (current_interface >= USB_MAXINTERFACES)) { - usbi_err(ctx, "program assertion failed: invalid interface_number"); - return LIBUSB_ERROR_NOT_FOUND; - } - usbi_dbg("will use interface %d", current_interface); - - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - if (!WinUsb_AbortPipe(winusb_handle, transfer->endpoint)) { - usbi_err(ctx, "WinUsb_AbortPipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -/* - * from the "How to Use WinUSB to Communicate with a USB Device" Microsoft white paper - * (http://www.microsoft.com/whdc/connect/usb/winusb_howto.mspx): - * "WinUSB does not support host-initiated reset port and cycle port operations" and - * IOCTL_INTERNAL_USB_CYCLE_PORT is only available in kernel mode and the - * IOCTL_USB_HUB_CYCLE_PORT ioctl was removed from Vista => the best we can do is - * cycle the pipes (and even then, the control pipe can not be reset using WinUSB) - */ -// TODO (post hotplug): see if we can force eject the device and redetect it (reuse hotplug?) -static int winusb_reset_device(struct libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct winfd wfd; - HANDLE winusb_handle; - int i, j; - - CHECK_WINUSB_AVAILABLE; - - // Reset any available pipe (except control) - for (i=0; iinterface_handle[i].api_handle; - for (wfd = handle_to_winfd(winusb_handle); wfd.fd > 0;) - { - // Cancel any pollable I/O - usbi_remove_pollfd(ctx, wfd.fd); - usbi_free_fd(wfd.fd); - wfd = handle_to_winfd(winusb_handle); - } - - if ( (winusb_handle != 0) && (winusb_handle != INVALID_HANDLE_VALUE)) { - for (j=0; jusb_interface[i].nb_endpoints; j++) { - usbi_dbg("resetting ep %02X", priv->usb_interface[i].endpoint[j]); - if (!WinUsb_AbortPipe(winusb_handle, priv->usb_interface[i].endpoint[j])) { - usbi_err(ctx, "WinUsb_AbortPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - } - // FlushPipe seems to fail on OUT pipes - if (IS_EPIN(priv->usb_interface[i].endpoint[j]) - && (!WinUsb_FlushPipe(winusb_handle, priv->usb_interface[i].endpoint[j])) ) { - usbi_err(ctx, "WinUsb_FlushPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - } - if (!WinUsb_ResetPipe(winusb_handle, priv->usb_interface[i].endpoint[j])) { - usbi_err(ctx, "WinUsb_ResetPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - } - } - } - } - - return LIBUSB_SUCCESS; -} - -static int winusb_copy_transfer_data(struct usbi_transfer *itransfer, uint32_t io_size) -{ - itransfer->transferred += io_size; - return LIBUSB_TRANSFER_COMPLETED; -} - - -/* - * Composite API functions - */ -static int composite_init(struct libusb_context *ctx) -{ - return LIBUSB_SUCCESS; -} - -static int composite_exit(void) -{ - return LIBUSB_SUCCESS; -} - -static int composite_open(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - unsigned api; - int r; - uint8_t flag = 1<composite_api_flags & flag) { - r = usb_api_backend[api].open(dev_handle); - if (r != LIBUSB_SUCCESS) { - return r; - } - } - flag <<= 1; - } - return LIBUSB_SUCCESS; -} - -static void composite_close(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - unsigned api; - uint8_t flag = 1<composite_api_flags & flag) { - usb_api_backend[api].close(dev_handle); - } - flag <<= 1; - } -} - -static int composite_claim_interface(struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->usb_interface[iface].apib->claim_interface(dev_handle, iface); -} - -static int composite_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->usb_interface[iface].apib->set_interface_altsetting(dev_handle, iface, altsetting); -} - -static int composite_release_interface(struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->usb_interface[iface].apib->release_interface(dev_handle, iface); -} - -static int composite_submit_control_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int i; - - for (i=0; iusb_interface[i].path != NULL) { - usbi_dbg("using interface %d", i); - return priv->usb_interface[i].apib->submit_control_transfer(itransfer); - } - } - - usbi_err(ctx, "no libusb supported interfaces to complete request"); - return LIBUSB_ERROR_NOT_FOUND; -} - -static int composite_submit_bulk_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - return priv->usb_interface[current_interface].apib->submit_bulk_transfer(itransfer); -} - -static int composite_submit_iso_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - return priv->usb_interface[current_interface].apib->submit_iso_transfer(itransfer); -} - -static int composite_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear"); - return LIBUSB_ERROR_NOT_FOUND; - } - - return priv->usb_interface[current_interface].apib->clear_halt(dev_handle, endpoint); -} - -static int composite_abort_control(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->usb_interface[transfer_priv->interface_number].apib->abort_control(itransfer); -} - -static int composite_abort_transfers(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->usb_interface[transfer_priv->interface_number].apib->abort_transfers(itransfer); -} - -static int composite_reset_device(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - unsigned api; - int r; - uint8_t flag = 1<composite_api_flags & flag) { - r = usb_api_backend[api].reset_device(dev_handle); - if (r != LIBUSB_SUCCESS) { - return r; - } - } - flag <<= 1; - } - return LIBUSB_SUCCESS; -} - -static int composite_copy_transfer_data(struct usbi_transfer *itransfer, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->usb_interface[transfer_priv->interface_number].apib->copy_transfer_data(itransfer, io_size); -} diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/windows_usb.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/windows_usb.h deleted file mode 100644 index ddbd680..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/os/windows_usb.h +++ /dev/null @@ -1,608 +0,0 @@ -/* - * Windows backend for libusb 1.0 - * Copyright (C) 2009-2010 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#pragma once - -#if defined(_MSC_VER) -// disable /W4 MSVC warnings that are benign -#pragma warning(disable:4127) // conditional expression is constant -#pragma warning(disable:4100) // unreferenced formal parameter -#pragma warning(disable:4214) // bit field types other than int -#pragma warning(disable:4201) // nameless struct/union -#endif - -// Windows API default is uppercase - ugh! -#if !defined(bool) -#define bool BOOL -#endif -#if !defined(true) -#define true TRUE -#endif -#if !defined(false) -#define false FALSE -#endif - -// Missing from MSVC6 setupapi.h -#if !defined(SPDRP_ADDRESS) -#define SPDRP_ADDRESS 28 -#endif -#if !defined(SPDRP_INSTALL_STATE) -#define SPDRP_INSTALL_STATE 34 -#endif - -#if defined(__CYGWIN__ ) -// cygwin produces a warning unless these prototypes are defined -extern int _snprintf(char *buffer, size_t count, const char *format, ...); -extern char *_strdup(const char *strSource); -// _beginthreadex is MSVCRT => unavailable for cygwin. Fallback to using CreateThread -#define _beginthreadex(a, b, c, d, e, f) CreateThread(a, b, (LPTHREAD_START_ROUTINE)c, d, e, f) -#endif -#define safe_free(p) do {if (p != NULL) {free((void*)p); p = NULL;}} while(0) -#define safe_closehandle(h) do {if (h != INVALID_HANDLE_VALUE) {CloseHandle(h); h = INVALID_HANDLE_VALUE;}} while(0) -#define safe_min(a, b) min((size_t)(a), (size_t)(b)) -#define safe_strcp(dst, dst_max, src, count) do {memcpy(dst, src, safe_min(count, dst_max)); \ - ((char*)dst)[safe_min(count, dst_max)-1] = 0;} while(0) -#define safe_strcpy(dst, dst_max, src) safe_strcp(dst, dst_max, src, safe_strlen(src)+1) -#define safe_strncat(dst, dst_max, src, count) strncat(dst, src, safe_min(count, dst_max - safe_strlen(dst) - 1)) -#define safe_strcat(dst, dst_max, src) safe_strncat(dst, dst_max, src, safe_strlen(src)+1) -#define safe_strcmp(str1, str2) strcmp(((str1==NULL)?"":str1), ((str2==NULL)?"":str2)) -#define safe_strncmp(str1, str2, count) strncmp(((str1==NULL)?"":str1), ((str2==NULL)?"":str2), count) -#define safe_strlen(str) ((str==NULL)?0:strlen(str)) -#define safe_sprintf _snprintf -#define safe_unref_device(dev) do {if (dev != NULL) {libusb_unref_device(dev); dev = NULL;}} while(0) -#define wchar_to_utf8_ms(wstr, str, strlen) WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, strlen, NULL, NULL) -static inline void upperize(char* str) { - size_t i; - if (str == NULL) return; - for (i=0; ios_priv; -} - -static inline void windows_device_priv_init(libusb_device* dev) { - struct windows_device_priv* p = _device_priv(dev); - int i; - p->depth = 0; - p->port = 0; - p->parent_dev = NULL; - p->path = NULL; - p->apib = &usb_api_backend[USB_API_UNSUPPORTED]; - p->composite_api_flags = 0; - p->active_config = 0; - p->config_descriptor = NULL; - memset(&(p->dev_descriptor), 0, sizeof(USB_DEVICE_DESCRIPTOR)); - for (i=0; iusb_interface[i].path = NULL; - p->usb_interface[i].apib = &usb_api_backend[USB_API_UNSUPPORTED]; - p->usb_interface[i].nb_endpoints = 0; - p->usb_interface[i].endpoint = NULL; - } -} - -static inline void windows_device_priv_release(libusb_device* dev) { - struct windows_device_priv* p = _device_priv(dev); - int i; - safe_free(p->path); - if ((dev->num_configurations > 0) && (p->config_descriptor != NULL)) { - for (i=0; i < dev->num_configurations; i++) - safe_free(p->config_descriptor[i]); - } - safe_free(p->config_descriptor); - for (i=0; iusb_interface[i].path); - safe_free(p->usb_interface[i].endpoint); - } -} - -struct interface_handle_t { - HANDLE dev_handle; // WinUSB needs an extra handle for the file - HANDLE api_handle; // used by the API to communicate with the device -}; - -struct windows_device_handle_priv { - int active_interface; - struct interface_handle_t interface_handle[USB_MAXINTERFACES]; - int autoclaim_count[USB_MAXINTERFACES]; // For auto-release -}; - -static inline struct windows_device_handle_priv *_device_handle_priv( - struct libusb_device_handle *handle) -{ - return (struct windows_device_handle_priv *) handle->os_priv; -} - -// used for async polling functions -struct windows_transfer_priv { - struct winfd pollable_fd; - uint8_t interface_number; -}; - -// used to match a device driver (including filter drivers) against a supported API -struct driver_lookup { - char list[MAX_KEY_LENGTH+1];// REG_MULTI_SZ list of services (driver) names - const DWORD reg_prop; // SPDRP registry key to use to retreive list - const char* designation; // internal designation (for debug output) -}; - -/* - * API macros - from libusb-win32 1.x - */ -#define DLL_DECLARE_PREFIXNAME(api, ret, prefixname, name, args) \ - typedef ret (api * __dll_##name##_t)args; \ - static __dll_##name##_t prefixname = NULL - -#define DLL_LOAD_PREFIXNAME(dll, prefixname, name, ret_on_failure) \ - do { \ - HMODULE h = GetModuleHandleA(#dll); \ - if (!h) \ - h = LoadLibraryA(#dll); \ - if (!h) { \ - if (ret_on_failure) { return LIBUSB_ERROR_NOT_FOUND; }\ - else { break; } \ - } \ - prefixname = (__dll_##name##_t)GetProcAddress(h, #name); \ - if (prefixname) break; \ - prefixname = (__dll_##name##_t)GetProcAddress(h, #name "A"); \ - if (prefixname) break; \ - prefixname = (__dll_##name##_t)GetProcAddress(h, #name "W"); \ - if (prefixname) break; \ - if(ret_on_failure) \ - return LIBUSB_ERROR_NOT_FOUND; \ - } while(0) - -#define DLL_DECLARE(api, ret, name, args) DLL_DECLARE_PREFIXNAME(api, ret, name, name, args) -#define DLL_LOAD(dll, name, ret_on_failure) DLL_LOAD_PREFIXNAME(dll, name, name, ret_on_failure) -#define DLL_DECLARE_PREFIXED(api, ret, prefix, name, args) DLL_DECLARE_PREFIXNAME(api, ret, prefix##name, name, args) -#define DLL_LOAD_PREFIXED(dll, prefix, name, ret_on_failure) DLL_LOAD_PREFIXNAME(dll, prefix##name, name, ret_on_failure) - -/* OLE32 dependency */ -DLL_DECLARE_PREFIXED(WINAPI, HRESULT, p, CLSIDFromString, (LPCOLESTR, LPCLSID)); - -/* SetupAPI dependencies */ -DLL_DECLARE_PREFIXED(WINAPI, HDEVINFO, p, SetupDiGetClassDevsA, (const GUID*, PCSTR, HWND, DWORD)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiEnumDeviceInfo, (HDEVINFO, DWORD, PSP_DEVINFO_DATA)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiEnumDeviceInterfaces, (HDEVINFO, PSP_DEVINFO_DATA, - const GUID*, DWORD, PSP_DEVICE_INTERFACE_DATA)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiGetDeviceInterfaceDetailA, (HDEVINFO, PSP_DEVICE_INTERFACE_DATA, - PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiDestroyDeviceInfoList, (HDEVINFO)); -DLL_DECLARE_PREFIXED(WINAPI, HKEY, p, SetupDiOpenDevRegKey, (HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiGetDeviceRegistryPropertyA, (HDEVINFO, - PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD)); -DLL_DECLARE_PREFIXED(WINAPI, LONG, p, RegQueryValueExW, (HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD)); -DLL_DECLARE_PREFIXED(WINAPI, LONG, p, RegCloseKey, (HKEY)); - -/* - * Windows DDK API definitions. Most of it copied from MinGW's includes - */ -typedef DWORD DEVNODE, DEVINST; -typedef DEVNODE *PDEVNODE, *PDEVINST; -typedef DWORD RETURN_TYPE; -typedef RETURN_TYPE CONFIGRET; - -#define CR_SUCCESS 0x00000000 -#define CR_NO_SUCH_DEVNODE 0x0000000D - -#define USB_DEVICE_DESCRIPTOR_TYPE LIBUSB_DT_DEVICE -#define USB_CONFIGURATION_DESCRIPTOR_TYPE LIBUSB_DT_CONFIG -#define USB_STRING_DESCRIPTOR_TYPE LIBUSB_DT_STRING -#define USB_INTERFACE_DESCRIPTOR_TYPE LIBUSB_DT_INTERFACE -#define USB_ENDPOINT_DESCRIPTOR_TYPE LIBUSB_DT_ENDPOINT - -#define USB_REQUEST_GET_STATUS LIBUSB_REQUEST_GET_STATUS -#define USB_REQUEST_CLEAR_FEATURE LIBUSB_REQUEST_CLEAR_FEATURE -#define USB_REQUEST_SET_FEATURE LIBUSB_REQUEST_SET_FEATURE -#define USB_REQUEST_SET_ADDRESS LIBUSB_REQUEST_SET_ADDRESS -#define USB_REQUEST_GET_DESCRIPTOR LIBUSB_REQUEST_GET_DESCRIPTOR -#define USB_REQUEST_SET_DESCRIPTOR LIBUSB_REQUEST_SET_DESCRIPTOR -#define USB_REQUEST_GET_CONFIGURATION LIBUSB_REQUEST_GET_CONFIGURATION -#define USB_REQUEST_SET_CONFIGURATION LIBUSB_REQUEST_SET_CONFIGURATION -#define USB_REQUEST_GET_INTERFACE LIBUSB_REQUEST_GET_INTERFACE -#define USB_REQUEST_SET_INTERFACE LIBUSB_REQUEST_SET_INTERFACE -#define USB_REQUEST_SYNC_FRAME LIBUSB_REQUEST_SYNCH_FRAME - -#define USB_GET_NODE_INFORMATION 258 -#define USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION 260 -#define USB_GET_NODE_CONNECTION_NAME 261 -#define USB_GET_HUB_CAPABILITIES 271 -#if !defined(USB_GET_NODE_CONNECTION_INFORMATION_EX) -#define USB_GET_NODE_CONNECTION_INFORMATION_EX 274 -#endif -#if !defined(USB_GET_HUB_CAPABILITIES_EX) -#define USB_GET_HUB_CAPABILITIES_EX 276 -#endif - -#ifndef METHOD_BUFFERED -#define METHOD_BUFFERED 0 -#endif -#ifndef FILE_ANY_ACCESS -#define FILE_ANY_ACCESS 0x00000000 -#endif -#ifndef FILE_DEVICE_UNKNOWN -#define FILE_DEVICE_UNKNOWN 0x00000022 -#endif -#ifndef FILE_DEVICE_USB -#define FILE_DEVICE_USB FILE_DEVICE_UNKNOWN -#endif - -#ifndef CTL_CODE -#define CTL_CODE(DeviceType, Function, Method, Access)( \ - ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) -#endif - -typedef enum USB_CONNECTION_STATUS { - NoDeviceConnected, - DeviceConnected, - DeviceFailedEnumeration, - DeviceGeneralFailure, - DeviceCausedOvercurrent, - DeviceNotEnoughPower, - DeviceNotEnoughBandwidth, - DeviceHubNestedTooDeeply, - DeviceInLegacyHub -} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS; - -typedef enum USB_HUB_NODE { - UsbHub, - UsbMIParent -} USB_HUB_NODE; - -/* Cfgmgr32.dll interface */ -DLL_DECLARE(WINAPI, CONFIGRET, CM_Get_Parent, (PDEVINST, DEVINST, ULONG)); -DLL_DECLARE(WINAPI, CONFIGRET, CM_Get_Child, (PDEVINST, DEVINST, ULONG)); -DLL_DECLARE(WINAPI, CONFIGRET, CM_Get_Sibling, (PDEVINST, DEVINST, ULONG)); -DLL_DECLARE(WINAPI, CONFIGRET, CM_Get_Device_IDA, (DEVINST, PCHAR, ULONG, ULONG)); - -#define IOCTL_USB_GET_HUB_CAPABILITIES_EX \ - CTL_CODE( FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES_EX, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_HUB_CAPABILITIES \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_ROOT_HUB_NAME \ - CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_INFORMATION \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION_EX, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_CONNECTION_NAME \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) - -// Most of the structures below need to be packed -#pragma pack(push, 1) - -typedef struct USB_INTERFACE_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - UCHAR bInterfaceNumber; - UCHAR bAlternateSetting; - UCHAR bNumEndpoints; - UCHAR bInterfaceClass; - UCHAR bInterfaceSubClass; - UCHAR bInterfaceProtocol; - UCHAR iInterface; -} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR; - -typedef struct USB_CONFIGURATION_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - USHORT wTotalLength; - UCHAR bNumInterfaces; - UCHAR bConfigurationValue; - UCHAR iConfiguration; - UCHAR bmAttributes; - UCHAR MaxPower; -} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR; - -typedef struct USB_CONFIGURATION_DESCRIPTOR_SHORT { - struct { - ULONG ConnectionIndex; - struct { - UCHAR bmRequest; - UCHAR bRequest; - USHORT wValue; - USHORT wIndex; - USHORT wLength; - } SetupPacket; - } req; - USB_CONFIGURATION_DESCRIPTOR data; -} USB_CONFIGURATION_DESCRIPTOR_SHORT; - -typedef struct USB_ENDPOINT_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - UCHAR bEndpointAddress; - UCHAR bmAttributes; - USHORT wMaxPacketSize; - UCHAR bInterval; -} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR; - -typedef struct USB_DESCRIPTOR_REQUEST { - ULONG ConnectionIndex; - struct { - UCHAR bmRequest; - UCHAR bRequest; - USHORT wValue; - USHORT wIndex; - USHORT wLength; - } SetupPacket; -// UCHAR Data[0]; -} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST; - -typedef struct USB_HUB_DESCRIPTOR { - UCHAR bDescriptorLength; - UCHAR bDescriptorType; - UCHAR bNumberOfPorts; - USHORT wHubCharacteristics; - UCHAR bPowerOnToPowerGood; - UCHAR bHubControlCurrent; - UCHAR bRemoveAndPowerMask[64]; -} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR; - -typedef struct USB_ROOT_HUB_NAME { - ULONG ActualLength; - WCHAR RootHubName[1]; -} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME; - -typedef struct USB_ROOT_HUB_NAME_FIXED { - ULONG ActualLength; - WCHAR RootHubName[MAX_PATH_LENGTH]; -} USB_ROOT_HUB_NAME_FIXED; - -typedef struct USB_NODE_CONNECTION_NAME { - ULONG ConnectionIndex; - ULONG ActualLength; - WCHAR NodeName[1]; -} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME; - -typedef struct USB_NODE_CONNECTION_NAME_FIXED { - ULONG ConnectionIndex; - ULONG ActualLength; - WCHAR NodeName[MAX_PATH_LENGTH]; -} USB_NODE_CONNECTION_NAME_FIXED; - -typedef struct USB_HUB_NAME_FIXED { - union { - USB_ROOT_HUB_NAME_FIXED root; - USB_NODE_CONNECTION_NAME_FIXED node; - } u; -} USB_HUB_NAME_FIXED; - -typedef struct USB_HUB_INFORMATION { - USB_HUB_DESCRIPTOR HubDescriptor; - BOOLEAN HubIsBusPowered; -} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION; - -typedef struct USB_MI_PARENT_INFORMATION { - ULONG NumberOfInterfaces; -} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION; - -typedef struct USB_NODE_INFORMATION { - USB_HUB_NODE NodeType; - union { - USB_HUB_INFORMATION HubInformation; - USB_MI_PARENT_INFORMATION MiParentInformation; - } u; -} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION; - -typedef struct USB_PIPE_INFO { - USB_ENDPOINT_DESCRIPTOR EndpointDescriptor; - ULONG ScheduleOffset; -} USB_PIPE_INFO, *PUSB_PIPE_INFO; - -typedef struct USB_NODE_CONNECTION_INFORMATION_EX { - ULONG ConnectionIndex; - USB_DEVICE_DESCRIPTOR DeviceDescriptor; - UCHAR CurrentConfigurationValue; - UCHAR Speed; - BOOLEAN DeviceIsHub; - USHORT DeviceAddress; - ULONG NumberOfOpenPipes; - USB_CONNECTION_STATUS ConnectionStatus; -// USB_PIPE_INFO PipeList[0]; -} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX; - -typedef struct USB_HUB_CAP_FLAGS { - ULONG HubIsHighSpeedCapable:1; - ULONG HubIsHighSpeed:1; - ULONG HubIsMultiTtCapable:1; - ULONG HubIsMultiTt:1; - ULONG HubIsRoot:1; - ULONG HubIsArmedWakeOnConnect:1; - ULONG ReservedMBZ:26; -} USB_HUB_CAP_FLAGS, *PUSB_HUB_CAP_FLAGS; - -typedef struct USB_HUB_CAPABILITIES { - ULONG HubIs2xCapable : 1; -} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES; - -typedef struct USB_HUB_CAPABILITIES_EX { - USB_HUB_CAP_FLAGS CapabilityFlags; -} USB_HUB_CAPABILITIES_EX, *PUSB_HUB_CAPABILITIES_EX; - -#pragma pack(pop) - -/* winusb.dll interface */ - -#define SHORT_PACKET_TERMINATE 0x01 -#define AUTO_CLEAR_STALL 0x02 -#define PIPE_TRANSFER_TIMEOUT 0x03 -#define IGNORE_SHORT_PACKETS 0x04 -#define ALLOW_PARTIAL_READS 0x05 -#define AUTO_FLUSH 0x06 -#define RAW_IO 0x07 -#define MAXIMUM_TRANSFER_SIZE 0x08 -#define AUTO_SUSPEND 0x81 -#define SUSPEND_DELAY 0x83 -#define DEVICE_SPEED 0x01 -#define LowSpeed 0x01 -#define FullSpeed 0x02 -#define HighSpeed 0x03 - -typedef enum USBD_PIPE_TYPE { - UsbdPipeTypeControl, - UsbdPipeTypeIsochronous, - UsbdPipeTypeBulk, - UsbdPipeTypeInterrupt -} USBD_PIPE_TYPE; - -typedef struct { - USBD_PIPE_TYPE PipeType; - UCHAR PipeId; - USHORT MaximumPacketSize; - UCHAR Interval; -} WINUSB_PIPE_INFORMATION, *PWINUSB_PIPE_INFORMATION; - -#pragma pack(1) -typedef struct { - UCHAR request_type; - UCHAR request; - USHORT value; - USHORT index; - USHORT length; -} WINUSB_SETUP_PACKET, *PWINUSB_SETUP_PACKET; -#pragma pack() - -typedef void *WINUSB_INTERFACE_HANDLE, *PWINUSB_INTERFACE_HANDLE; - -DLL_DECLARE(WINAPI, BOOL, WinUsb_Initialize, (HANDLE, PWINUSB_INTERFACE_HANDLE)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_Free, (WINUSB_INTERFACE_HANDLE)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_GetAssociatedInterface, (WINUSB_INTERFACE_HANDLE, UCHAR, PWINUSB_INTERFACE_HANDLE)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_GetDescriptor, (WINUSB_INTERFACE_HANDLE, UCHAR, UCHAR, USHORT, PUCHAR, ULONG, PULONG)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_QueryInterfaceSettings, (WINUSB_INTERFACE_HANDLE, UCHAR, PUSB_INTERFACE_DESCRIPTOR)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_QueryDeviceInformation, (WINUSB_INTERFACE_HANDLE, ULONG, PULONG, PVOID)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_SetCurrentAlternateSetting, (WINUSB_INTERFACE_HANDLE, UCHAR)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_GetCurrentAlternateSetting, (WINUSB_INTERFACE_HANDLE, PUCHAR)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_QueryPipe, (WINUSB_INTERFACE_HANDLE, UCHAR, UCHAR, PWINUSB_PIPE_INFORMATION)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_SetPipePolicy, (WINUSB_INTERFACE_HANDLE, UCHAR, ULONG, ULONG, PVOID)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_GetPipePolicy, (WINUSB_INTERFACE_HANDLE, UCHAR, ULONG, PULONG, PVOID)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_ReadPipe, (WINUSB_INTERFACE_HANDLE, UCHAR, PUCHAR, ULONG, PULONG, LPOVERLAPPED)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_WritePipe, (WINUSB_INTERFACE_HANDLE, UCHAR, PUCHAR, ULONG, PULONG, LPOVERLAPPED)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_ControlTransfer, (WINUSB_INTERFACE_HANDLE, WINUSB_SETUP_PACKET, PUCHAR, ULONG, PULONG, LPOVERLAPPED)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_ResetPipe, (WINUSB_INTERFACE_HANDLE, UCHAR)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_AbortPipe, (WINUSB_INTERFACE_HANDLE, UCHAR)); -DLL_DECLARE(WINAPI, BOOL, WinUsb_FlushPipe, (WINUSB_INTERFACE_HANDLE, UCHAR)); diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/sync.c b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/sync.c deleted file mode 100644 index 8eed47b..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/sync.c +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Synchronous I/O functions for libusb - * Copyright (C) 2007-2008 Daniel Drake - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include - -#include "libusbi.h" - -/** - * @defgroup syncio Synchronous device I/O - * - * This page documents libusb's synchronous (blocking) API for USB device I/O. - * This interface is easy to use but has some limitations. More advanced users - * may wish to consider using the \ref asyncio "asynchronous I/O API" instead. - */ - -static void LIBUSB_CALL ctrl_transfer_cb(struct libusb_transfer *transfer) -{ - int *completed = transfer->user_data; - *completed = 1; - usbi_dbg("actual_length=%d", transfer->actual_length); - /* caller interprets result and frees transfer */ -} - -/** \ingroup syncio - * Perform a USB control transfer. - * - * The direction of the transfer is inferred from the bmRequestType field of - * the setup packet. - * - * The wValue, wIndex and wLength fields values should be given in host-endian - * byte order. - * - * \param dev_handle a handle for the device to communicate with - * \param bmRequestType the request type field for the setup packet - * \param bRequest the request field for the setup packet - * \param wValue the value field for the setup packet - * \param wIndex the index field for the setup packet - * \param data a suitably-sized data buffer for either input or output - * (depending on direction bits within bmRequestType) - * \param wLength the length field for the setup packet. The data buffer should - * be at least this size. - * \param timeout timeout (in millseconds) that this function should wait - * before giving up due to no response being received. For an unlimited - * timeout, use value 0. - * \returns on success, the number of bytes actually transferred - * \returns LIBUSB_ERROR_TIMEOUT if the transfer timed out - * \returns LIBUSB_ERROR_PIPE if the control request was not supported by the - * device - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failures - */ -int API_EXPORTED libusb_control_transfer(libusb_device_handle *dev_handle, - uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, - unsigned char *data, uint16_t wLength, unsigned int timeout) -{ - struct libusb_transfer *transfer = libusb_alloc_transfer(0); - unsigned char *buffer; - int completed = 0; - int r; - - if (!transfer) - return LIBUSB_ERROR_NO_MEM; - - buffer = malloc(LIBUSB_CONTROL_SETUP_SIZE + wLength); - if (!buffer) { - libusb_free_transfer(transfer); - return LIBUSB_ERROR_NO_MEM; - } - - libusb_fill_control_setup(buffer, bmRequestType, bRequest, wValue, wIndex, - wLength); - if ((bmRequestType & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_OUT) - memcpy(buffer + LIBUSB_CONTROL_SETUP_SIZE, data, wLength); - - libusb_fill_control_transfer(transfer, dev_handle, buffer, - ctrl_transfer_cb, &completed, timeout); - transfer->flags = LIBUSB_TRANSFER_FREE_BUFFER; - r = libusb_submit_transfer(transfer); - if (r < 0) { - libusb_free_transfer(transfer); - return r; - } - - while (!completed) { - r = libusb_handle_events_completed(HANDLE_CTX(dev_handle), &completed); - if (r < 0) { - if (r == LIBUSB_ERROR_INTERRUPTED) - continue; - libusb_cancel_transfer(transfer); - while (!completed) - if (libusb_handle_events_completed(HANDLE_CTX(dev_handle), &completed) < 0) - break; - libusb_free_transfer(transfer); - return r; - } - } - - if ((bmRequestType & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_IN) - memcpy(data, libusb_control_transfer_get_data(transfer), - transfer->actual_length); - - switch (transfer->status) { - case LIBUSB_TRANSFER_COMPLETED: - r = transfer->actual_length; - break; - case LIBUSB_TRANSFER_TIMED_OUT: - r = LIBUSB_ERROR_TIMEOUT; - break; - case LIBUSB_TRANSFER_STALL: - r = LIBUSB_ERROR_PIPE; - break; - case LIBUSB_TRANSFER_NO_DEVICE: - r = LIBUSB_ERROR_NO_DEVICE; - break; - case LIBUSB_TRANSFER_OVERFLOW: - r = LIBUSB_ERROR_OVERFLOW; - break; - default: - usbi_warn(HANDLE_CTX(dev_handle), - "unrecognised status code %d", transfer->status); - r = LIBUSB_ERROR_OTHER; - } - - libusb_free_transfer(transfer); - return r; -} - -static void LIBUSB_CALL bulk_transfer_cb(struct libusb_transfer *transfer) -{ - int *completed = transfer->user_data; - *completed = 1; - usbi_dbg("actual_length=%d", transfer->actual_length); - /* caller interprets results and frees transfer */ -} - -static int do_sync_bulk_transfer(struct libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *buffer, int length, - int *transferred, unsigned int timeout, unsigned char type) -{ - struct libusb_transfer *transfer = libusb_alloc_transfer(0); - int completed = 0; - int r; - - if (!transfer) - return LIBUSB_ERROR_NO_MEM; - - libusb_fill_bulk_transfer(transfer, dev_handle, endpoint, buffer, length, - bulk_transfer_cb, &completed, timeout); - transfer->type = type; - - r = libusb_submit_transfer(transfer); - if (r < 0) { - libusb_free_transfer(transfer); - return r; - } - - while (!completed) { - r = libusb_handle_events_completed(HANDLE_CTX(dev_handle), &completed); - if (r < 0) { - if (r == LIBUSB_ERROR_INTERRUPTED) - continue; - libusb_cancel_transfer(transfer); - while (!completed) - if (libusb_handle_events_completed(HANDLE_CTX(dev_handle), &completed) < 0) - break; - libusb_free_transfer(transfer); - return r; - } - } - - *transferred = transfer->actual_length; - switch (transfer->status) { - case LIBUSB_TRANSFER_COMPLETED: - r = 0; - break; - case LIBUSB_TRANSFER_TIMED_OUT: - r = LIBUSB_ERROR_TIMEOUT; - break; - case LIBUSB_TRANSFER_STALL: - r = LIBUSB_ERROR_PIPE; - break; - case LIBUSB_TRANSFER_OVERFLOW: - r = LIBUSB_ERROR_OVERFLOW; - break; - case LIBUSB_TRANSFER_NO_DEVICE: - r = LIBUSB_ERROR_NO_DEVICE; - break; - default: - usbi_warn(HANDLE_CTX(dev_handle), - "unrecognised status code %d", transfer->status); - r = LIBUSB_ERROR_OTHER; - } - - libusb_free_transfer(transfer); - return r; -} - -/** \ingroup syncio - * Perform a USB bulk transfer. The direction of the transfer is inferred from - * the direction bits of the endpoint address. - * - * For bulk reads, the length field indicates the maximum length of - * data you are expecting to receive. If less data arrives than expected, - * this function will return that data, so be sure to check the - * transferred output parameter. - * - * You should also check the transferred parameter for bulk writes. - * Not all of the data may have been written. - * - * Also check transferred when dealing with a timeout error code. - * libusb may have to split your transfer into a number of chunks to satisfy - * underlying O/S requirements, meaning that the timeout may expire after - * the first few chunks have completed. libusb is careful not to lose any data - * that may have been transferred; do not assume that timeout conditions - * indicate a complete lack of I/O. - * - * \param dev_handle a handle for the device to communicate with - * \param endpoint the address of a valid endpoint to communicate with - * \param data a suitably-sized data buffer for either input or output - * (depending on endpoint) - * \param length for bulk writes, the number of bytes from data to be sent. for - * bulk reads, the maximum number of bytes to receive into the data buffer. - * \param transferred output location for the number of bytes actually - * transferred. - * \param timeout timeout (in millseconds) that this function should wait - * before giving up due to no response being received. For an unlimited - * timeout, use value 0. - * - * \returns 0 on success (and populates transferred) - * \returns LIBUSB_ERROR_TIMEOUT if the transfer timed out (and populates - * transferred) - * \returns LIBUSB_ERROR_PIPE if the endpoint halted - * \returns LIBUSB_ERROR_OVERFLOW if the device offered more data, see - * \ref packetoverflow - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failures - */ -int API_EXPORTED libusb_bulk_transfer(struct libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *data, int length, int *transferred, - unsigned int timeout) -{ - return do_sync_bulk_transfer(dev_handle, endpoint, data, length, - transferred, timeout, LIBUSB_TRANSFER_TYPE_BULK); -} - -/** \ingroup syncio - * Perform a USB interrupt transfer. The direction of the transfer is inferred - * from the direction bits of the endpoint address. - * - * For interrupt reads, the length field indicates the maximum length - * of data you are expecting to receive. If less data arrives than expected, - * this function will return that data, so be sure to check the - * transferred output parameter. - * - * You should also check the transferred parameter for interrupt - * writes. Not all of the data may have been written. - * - * Also check transferred when dealing with a timeout error code. - * libusb may have to split your transfer into a number of chunks to satisfy - * underlying O/S requirements, meaning that the timeout may expire after - * the first few chunks have completed. libusb is careful not to lose any data - * that may have been transferred; do not assume that timeout conditions - * indicate a complete lack of I/O. - * - * The default endpoint bInterval value is used as the polling interval. - * - * \param dev_handle a handle for the device to communicate with - * \param endpoint the address of a valid endpoint to communicate with - * \param data a suitably-sized data buffer for either input or output - * (depending on endpoint) - * \param length for bulk writes, the number of bytes from data to be sent. for - * bulk reads, the maximum number of bytes to receive into the data buffer. - * \param transferred output location for the number of bytes actually - * transferred. - * \param timeout timeout (in millseconds) that this function should wait - * before giving up due to no response being received. For an unlimited - * timeout, use value 0. - * - * \returns 0 on success (and populates transferred) - * \returns LIBUSB_ERROR_TIMEOUT if the transfer timed out - * \returns LIBUSB_ERROR_PIPE if the endpoint halted - * \returns LIBUSB_ERROR_OVERFLOW if the device offered more data, see - * \ref packetoverflow - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other error - */ -int API_EXPORTED libusb_interrupt_transfer( - struct libusb_device_handle *dev_handle, unsigned char endpoint, - unsigned char *data, int length, int *transferred, unsigned int timeout) -{ - return do_sync_bulk_transfer(dev_handle, endpoint, data, length, - transferred, timeout, LIBUSB_TRANSFER_TYPE_INTERRUPT); -} - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/version.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/version.h deleted file mode 100644 index 62446da..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/libusb/version.h +++ /dev/null @@ -1,18 +0,0 @@ -/* This file is parsed by m4 and windres and RC.EXE so please keep it simple. */ -#ifndef LIBUSB_MAJOR -#define LIBUSB_MAJOR 1 -#endif -#ifndef LIBUSB_MINOR -#define LIBUSB_MINOR 0 -#endif -#ifndef LIBUSB_MICRO -#define LIBUSB_MICRO 9 -#endif -/* LIBUSB_NANO may be used for Windows internal versioning. 0 means unused. */ -#ifndef LIBUSB_NANO -#define LIBUSB_NANO 0 -#endif -/* LIBUSB_RC is the release candidate suffix. Should normally be empty. */ -#ifndef LIBUSB_RC -#define LIBUSB_RC "" -#endif diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/ltmain.sh b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/ltmain.sh deleted file mode 100755 index 04eaea4..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/ltmain.sh +++ /dev/null @@ -1,8745 +0,0 @@ -# Generated from ltmain.m4sh. - -# libtool (GNU libtool) 2.2.10 -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.10 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.2.10 -TIMESTAMP="" -package_revision=1.3175 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="grep -E"} -: ${FGREP="grep -F"} -: ${GREP="grep"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SED="sed"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} - -# Generated shell functions inserted here. - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=: - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -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' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname${mode+: }$mode: $*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $SED -n '/^# Usage:/,/# Report bugs to/ { - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ - p - }' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - func_error "missing argument for $1." - exit_cmd=exit -} - -exit_cmd=: - - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -# $mode is unset -nonopt= -execute_dlfiles= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -opt_dry_run=false -opt_duplicate_deps=false -opt_silent=false -opt_debug=: - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# Parse options once, thoroughly. This comes as soon as possible in -# the script to make things like `libtool --version' happen quickly. -{ - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac - - # Parse non-mode specific arguments: - while test "$#" -gt 0; do - opt="$1" - shift - - case $opt in - --config) func_config ;; - - --debug) preserve_args="$preserve_args $opt" - func_echo "enabling shell trace mode" - opt_debug='set -x' - $opt_debug - ;; - - -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break - execute_dlfiles="$execute_dlfiles $1" - shift - ;; - - --dry-run | -n) opt_dry_run=: ;; - --features) func_features ;; - --finish) mode="finish" ;; - - --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break - case $1 in - # Valid mode arguments: - clean) ;; - compile) ;; - execute) ;; - finish) ;; - install) ;; - link) ;; - relink) ;; - uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; - esac - - mode="$1" - shift - ;; - - --preserve-dup-deps) - opt_duplicate_deps=: ;; - - --quiet|--silent) preserve_args="$preserve_args $opt" - opt_silent=: - opt_verbose=false - ;; - - --no-quiet|--no-silent) - preserve_args="$preserve_args $opt" - opt_silent=false - ;; - - --verbose| -v) preserve_args="$preserve_args $opt" - opt_silent=false - opt_verbose=: - ;; - - --no-verbose) preserve_args="$preserve_args $opt" - opt_verbose=false - ;; - - --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break - preserve_args="$preserve_args $opt $1" - func_enable_tag "$1" # tagname is set here - shift - ;; - - # Separate optargs to long options: - -dlopen=*|--mode=*|--tag=*) - func_opt_split "$opt" - set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} - shift - ;; - - -\?|-h) func_usage ;; - --help) opt_help=: ;; - --help-all) opt_help=': help-all' ;; - --version) func_version ;; - - -*) func_fatal_help "unrecognized option \`$opt'" ;; - - *) nonopt="$opt" - break - ;; - esac - done - - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_duplicate_deps - ;; - esac - - # Having warned about all mis-specified options, bail out if - # anything was wrong. - $exit_cmd $EXIT_FAILURE -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -## ----------- ## -## Main. ## -## ----------- ## - -$opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - test -z "$mode" && func_fatal_error "error: you must specify a MODE." - - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$mode' for more information." -} - - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_ltwrapper_scriptname_result="" - if func_ltwrapper_executable_p "$1"; then - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" - fi -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_quote_for_eval "$arg" - CC_quoted="$CC_quoted $func_quote_for_eval_result" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T <?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - removelist="$removelist $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - removelist="$removelist $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - command="$command -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - command="$command -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_quote_for_eval "$file" - args="$args $func_quote_for_eval_result" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - exit $EXIT_SUCCESS -} - -test "$mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - install_prog="$install_prog$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - files="$files $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - install_prog="$install_prog $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - install_shared_prog="$install_shared_prog $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_verbose "extracting global C symbols from \`$progfile'" - $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -" - case $host in - *cygwin* | *mingw* | *cegcc* ) - echo >> "$output_objdir/$my_dlsyms" "\ -/* DATA imports from DLLs on WIN32 con't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs. */" - lt_dlsym_const= ;; - *osf5*) - echo >> "$output_objdir/$my_dlsyms" "\ -/* This system does not cope well with relocations in const data */" - lt_dlsym_const= ;; - *) - lt_dlsym_const=const ;; - esac - - echo >> "$output_objdir/$my_dlsyms" "\ -extern $lt_dlsym_const lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -$lt_dlsym_const lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) symtab_cflags="$symtab_cflags $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - win32_nmres=`eval $NM -f posix -A $1 | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_to_host_path arg -# -# Convert paths to host format when used with build tools. -# Intended for use with "native" mingw (where libtool itself -# is running under the msys shell), or in the following cross- -# build environments: -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# where wine is equipped with the `winepath' executable. -# In the native mingw case, the (msys) shell automatically -# converts paths for any non-msys applications it launches, -# but that facility isn't available from inside the cwrapper. -# Similar accommodations are necessary for $host mingw and -# $build cygwin. Calling this function does no harm for other -# $host/$build combinations not listed above. -# -# ARG is the path (on $build) that should be converted to -# the proper representation for $host. The result is stored -# in $func_to_host_path_result. -func_to_host_path () -{ - func_to_host_path_result="$1" - if test -n "$1"; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - case $build in - *mingw* ) # actually, msys - # awkward: cmd appends spaces to result - func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_path_result=`cygpath -w "$1" | - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # Unfortunately, winepath does not exit with a non-zero - # error code, so we are forced to check the contents of - # stdout. On the other hand, if the command is not - # found, the shell will set an exit code of 127 and print - # *an error message* to stdout. So we must check for both - # error code of zero AND non-empty stdout, which explains - # the odd construction: - func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` - if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then - func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" | - $SED -e "$lt_sed_naive_backslashify"` - else - # Allow warning below. - func_to_host_path_result= - fi - ;; - esac - if test -z "$func_to_host_path_result" ; then - func_error "Could not determine host path corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_path_result="$1" - fi - ;; - esac - fi -} -# end: func_to_host_path - -# func_to_host_pathlist arg -# -# Convert pathlists to host format when used with build tools. -# See func_to_host_path(), above. This function supports the -# following $build/$host combinations (but does no harm for -# combinations not listed here): -# $build $host -# mingw (msys) mingw [e.g. native] -# cygwin mingw -# *nix + wine mingw -# -# Path separators are also converted from $build format to -# $host format. If ARG begins or ends with a path separator -# character, it is preserved (but converted to $host format) -# on output. -# -# ARG is a pathlist (on $build) that should be converted to -# the proper representation on $host. The result is stored -# in $func_to_host_pathlist_result. -func_to_host_pathlist () -{ - func_to_host_pathlist_result="$1" - if test -n "$1"; then - case $host in - *mingw* ) - lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_pathlist_tmp1=$func_stripname_result - case $build in - *mingw* ) # Actually, msys. - # Awkward: cmd appends spaces to result. - func_to_host_pathlist_result=` - ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` - ;; - *cygwin* ) - func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | - $SED -e "$lt_sed_naive_backslashify"` - ;; - * ) - # unfortunately, winepath doesn't convert pathlists - func_to_host_pathlist_result="" - func_to_host_pathlist_oldIFS=$IFS - IFS=: - for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do - IFS=$func_to_host_pathlist_oldIFS - if test -n "$func_to_host_pathlist_f" ; then - func_to_host_path "$func_to_host_pathlist_f" - if test -n "$func_to_host_path_result" ; then - if test -z "$func_to_host_pathlist_result" ; then - func_to_host_pathlist_result="$func_to_host_path_result" - else - func_append func_to_host_pathlist_result ";$func_to_host_path_result" - fi - fi - fi - done - IFS=$func_to_host_pathlist_oldIFS - ;; - esac - if test -z "$func_to_host_pathlist_result"; then - func_error "Could not determine the host path(s) corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This may break if $1 contains DOS-style drive - # specifications. The fix is not to complicate the expression - # below, but for the user to provide a working wine installation - # with winepath so that path translation in the cross-to-mingw - # case works properly. - lt_replace_pathsep_nix_to_dos="s|:|;|g" - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ - $SED -e "$lt_replace_pathsep_nix_to_dos"` - fi - # Now, add the leading and trailing path separators back - case "$1" in - :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" - ;; - esac - case "$1" in - *: ) func_append func_to_host_pathlist_result ";" - ;; - esac - ;; - esac - fi -} -# end: func_to_host_pathlist - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' - - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) deplibs="$deplibs $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - weak_libs="$weak_libs $arg" - prev= - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname '-L' '' "$arg" - dir=$func_stripname_result - if test -z "$dir"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot) - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - arg="$arg $func_quote_for_eval_result" - compiler_flags="$compiler_flags $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" - compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" - linker_flags="$linker_flags $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - compiler_flags="$compiler_flags $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_duplicate_deps ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - case $lib in - *.la) func_source "$lib" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) deplibs="$deplibs $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - compiler_flags="$compiler_flags $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - dir=$func_stripname_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - newlib_search_path="$newlib_search_path $func_stripname_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) temp_rpath="$temp_rpath$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - notinst_deplibs="$notinst_deplibs $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if $opt_duplicate_deps ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_dirname "$deplib" "" "." - dir="$func_dirname_result" - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - libobjs="$libobjs $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - removelist="$removelist $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - delfiles="$delfiles $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - func_len " $cmd" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - $ECHO "$obj" >> $output - done - echo ')' >> $output - delfiles="$delfiles $output" - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - $ECHO "$obj" >> $output - done - delfiles="$delfiles $output" - output=$firstobj\"$file_list_spec$output\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - delfiles="$delfiles $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $dlprefiles - libobjs="$libobjs $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - oldobjs="$oldobjs $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $dlprefiles - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" - ;; - *) oldobjs="$oldobjs $obj" ;; - esac - done - fi - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - newdlfiles="$newdlfiles $libdir/$name" - ;; - *) newdlfiles="$newdlfiles $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - newdlprefiles="$newdlprefiles $libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$mode" = link || test "$mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) RM="$RM $arg"; rmforce=yes ;; - -*) RM="$RM $arg" ;; - *) files="$files $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - - case "$mode" in - clean) - case " $library_names " in - # " " in the beginning catches empty $dlname - *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; - esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - rmfiles="$rmfiles $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$mode" = uninstall || test "$mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing deleted file mode 100755 index 28055d2..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/missing +++ /dev/null @@ -1,376 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 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, 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, see . - -# 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. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/config.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/config.h deleted file mode 100644 index 43aa1f7..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* config.h. Manual config for MSVC. */ - -#ifndef _MSC_VER -#warn "msvc/config.h shouldn't be included for your development environment." -#error "Please make sure the msvc/ directory is removed from your build path." -#endif - -/* Default visibility */ -#define DEFAULT_VISIBILITY /**/ - -/* Debug message logging */ -//#define ENABLE_DEBUG_LOGGING 1 - -/* Message logging */ -#define ENABLE_LOGGING 1 - -/* Windows backend */ -#define OS_WINDOWS 1 - -/* type of second poll() argument */ -#define POLL_NFDS_TYPE unsigned int - -/* no way to run git describe from MSVC? */ -#define LIBUSB_DESCRIBE "" diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/ddk_build.cmd b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/ddk_build.cmd deleted file mode 100644 index ed9b8a8..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/ddk_build.cmd +++ /dev/null @@ -1,106 +0,0 @@ -@rem default builds static library. -@rem you can pass the following arguments (case insensitive): -@rem - "DLL" to build a DLL instead of a static library -@rem - "/MT" to build a static library compatible with MSVC's /MT option (LIBCMT vs MSVCRT) -@echo off - -if Test%BUILD_ALT_DIR%==Test goto usage - -rem process commandline parameters -set TARGET=LIBRARY -set STATIC_LIBC= -set version=1.0 - -if "%1" == "" goto no_more_args -rem /I for case insensitive -if /I Test%1==TestDLL set TARGET=DYNLINK -if /I Test%1==Test/MT set STATIC_LIBC=1 -:no_more_args - -cd ..\libusb\os -echo TARGETTYPE=%TARGET% > target -copy target+..\..\msvc\libusb_sources sources >NUL 2>&1 -del target -@echo on -build -cwgZ -@echo off -if errorlevel 1 goto builderror -cd ..\.. - -set cpudir=i386 -set destType=Win32 -if %_BUILDARCH%==x86 goto isI386 -set cpudir=amd64 -set destType=x64 -:isI386 - -set srcPath=libusb\os\obj%BUILD_ALT_DIR%\%cpudir% - -set dstPath=%destType%\Debug -if %DDKBUILDENV%==chk goto isDebug -set dstPath=%destType%\Release -:isDebug - -if exist %destType% goto md2 -mkdir %destType% -:md2 -if exist %dstPath% goto md3 -mkdir %dstPath% -:md3 -if exist %dstPath%\dll goto md4 -mkdir %dstPath%\dll -:md4 -if exist %dstPath%\lib goto md5 -md %dstPath%\lib -:md5 -if exist %dstPath%\examples goto md6 -md %dstPath%\examples -:md6 -@echo on - -@if /I NOT Test%1==TestDLL goto copylib -copy %srcPath%\libusb-%version%.dll %dstPath%\dll -copy %srcPath%\libusb-%version%.pdb %dstPath%\dll -:copylib -copy %srcPath%\libusb-%version%.lib %dstPath%\lib - -@echo off - -if exist examples\listdevs_ddkbuild goto md7 -md examples\listdevs_ddkbuild -:md7 - -cd examples\listdevs_ddkbuild -copy ..\..\msvc\listdevs_sources sources >NUL 2>&1 -@echo on -build -cwgZ -@echo off -if errorlevel 1 goto buildlistdevserror -cd ..\.. - -set srcPath=examples\listdevs_ddkbuild\obj%BUILD_ALT_DIR%\%cpudir% -@echo on - -copy %srcPath%\listdevs.exe %dstPath%\examples -copy %srcPath%\listdevs.pdb %dstPath%\examples - -cd msvc -goto done - - -:builderror -cd ..\..\msvc -echo Build failed -goto done - -:buildlistdevserror -cd ..\..\msvc -echo listdevs build failed -goto done - -:usage -echo ddk_build must be run in a WDK build environment -pause -goto done - -:done diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/inttypes.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/inttypes.h deleted file mode 100644 index 289bb50..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/inttypes.h +++ /dev/null @@ -1,295 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file was original part of the w64 mingw-runtime package. - */ - -/* - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * Modified for libusb/MSVC: Pete Batard - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Date: 2010-04-02 - */ - -#ifndef _MSC_VER -#error This header should only be used with Microsoft compilers -#endif - -/* 7.8 Format conversion of integer types */ - -#ifndef _INTTYPES_H_ -#define _INTTYPES_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - intmax_t quot; - intmax_t rem; - } imaxdiv_t; - - -/* 7.8.1 Macros for format specifiers - * - * MS runtime does not yet understand C9x standard "ll" - * length specifier. It appears to treat "ll" as "l". - * The non-standard I64 length specifier causes warning in GCC, - * but understood by MS runtime functions. - */ - -/* fprintf macros for signed types */ -#define PRId8 "d" -#define PRId16 "d" -#define PRId32 "d" -#define PRId64 "I64d" - -#define PRIdLEAST8 "d" -#define PRIdLEAST16 "d" -#define PRIdLEAST32 "d" -#define PRIdLEAST64 "I64d" - -#define PRIdFAST8 "d" -#define PRIdFAST16 "d" -#define PRIdFAST32 "d" -#define PRIdFAST64 "I64d" - -#define PRIdMAX "I64d" - -#define PRIi8 "i" -#define PRIi16 "i" -#define PRIi32 "i" -#define PRIi64 "I64i" - -#define PRIiLEAST8 "i" -#define PRIiLEAST16 "i" -#define PRIiLEAST32 "i" -#define PRIiLEAST64 "I64i" - -#define PRIiFAST8 "i" -#define PRIiFAST16 "i" -#define PRIiFAST32 "i" -#define PRIiFAST64 "I64i" - -#define PRIiMAX "I64i" - -#define PRIo8 "o" -#define PRIo16 "o" -#define PRIo32 "o" -#define PRIo64 "I64o" - -#define PRIoLEAST8 "o" -#define PRIoLEAST16 "o" -#define PRIoLEAST32 "o" -#define PRIoLEAST64 "I64o" - -#define PRIoFAST8 "o" -#define PRIoFAST16 "o" -#define PRIoFAST32 "o" -#define PRIoFAST64 "I64o" - -#define PRIoMAX "I64o" - -/* fprintf macros for unsigned types */ -#define PRIu8 "u" -#define PRIu16 "u" -#define PRIu32 "u" -#define PRIu64 "I64u" - - -#define PRIuLEAST8 "u" -#define PRIuLEAST16 "u" -#define PRIuLEAST32 "u" -#define PRIuLEAST64 "I64u" - -#define PRIuFAST8 "u" -#define PRIuFAST16 "u" -#define PRIuFAST32 "u" -#define PRIuFAST64 "I64u" - -#define PRIuMAX "I64u" - -#define PRIx8 "x" -#define PRIx16 "x" -#define PRIx32 "x" -#define PRIx64 "I64x" - -#define PRIxLEAST8 "x" -#define PRIxLEAST16 "x" -#define PRIxLEAST32 "x" -#define PRIxLEAST64 "I64x" - -#define PRIxFAST8 "x" -#define PRIxFAST16 "x" -#define PRIxFAST32 "x" -#define PRIxFAST64 "I64x" - -#define PRIxMAX "I64x" - -#define PRIX8 "X" -#define PRIX16 "X" -#define PRIX32 "X" -#define PRIX64 "I64X" - -#define PRIXLEAST8 "X" -#define PRIXLEAST16 "X" -#define PRIXLEAST32 "X" -#define PRIXLEAST64 "I64X" - -#define PRIXFAST8 "X" -#define PRIXFAST16 "X" -#define PRIXFAST32 "X" -#define PRIXFAST64 "I64X" - -#define PRIXMAX "I64X" - -/* - * fscanf macros for signed int types - * NOTE: if 32-bit int is used for int_fast8_t and int_fast16_t - * (see stdint.h, 7.18.1.3), FAST8 and FAST16 should have - * no length identifiers - */ - -#define SCNd16 "hd" -#define SCNd32 "d" -#define SCNd64 "I64d" - -#define SCNdLEAST16 "hd" -#define SCNdLEAST32 "d" -#define SCNdLEAST64 "I64d" - -#define SCNdFAST16 "hd" -#define SCNdFAST32 "d" -#define SCNdFAST64 "I64d" - -#define SCNdMAX "I64d" - -#define SCNi16 "hi" -#define SCNi32 "i" -#define SCNi64 "I64i" - -#define SCNiLEAST16 "hi" -#define SCNiLEAST32 "i" -#define SCNiLEAST64 "I64i" - -#define SCNiFAST16 "hi" -#define SCNiFAST32 "i" -#define SCNiFAST64 "I64i" - -#define SCNiMAX "I64i" - -#define SCNo16 "ho" -#define SCNo32 "o" -#define SCNo64 "I64o" - -#define SCNoLEAST16 "ho" -#define SCNoLEAST32 "o" -#define SCNoLEAST64 "I64o" - -#define SCNoFAST16 "ho" -#define SCNoFAST32 "o" -#define SCNoFAST64 "I64o" - -#define SCNoMAX "I64o" - -#define SCNx16 "hx" -#define SCNx32 "x" -#define SCNx64 "I64x" - -#define SCNxLEAST16 "hx" -#define SCNxLEAST32 "x" -#define SCNxLEAST64 "I64x" - -#define SCNxFAST16 "hx" -#define SCNxFAST32 "x" -#define SCNxFAST64 "I64x" - -#define SCNxMAX "I64x" - -/* fscanf macros for unsigned int types */ - -#define SCNu16 "hu" -#define SCNu32 "u" -#define SCNu64 "I64u" - -#define SCNuLEAST16 "hu" -#define SCNuLEAST32 "u" -#define SCNuLEAST64 "I64u" - -#define SCNuFAST16 "hu" -#define SCNuFAST32 "u" -#define SCNuFAST64 "I64u" - -#define SCNuMAX "I64u" - -#ifdef _WIN64 -#define PRIdPTR "I64d" -#define PRIiPTR "I64i" -#define PRIoPTR "I64o" -#define PRIuPTR "I64u" -#define PRIxPTR "I64x" -#define PRIXPTR "I64X" -#define SCNdPTR "I64d" -#define SCNiPTR "I64i" -#define SCNoPTR "I64o" -#define SCNxPTR "I64x" -#define SCNuPTR "I64u" -#else -#define PRIdPTR "d" -#define PRIiPTR "i" -#define PRIoPTR "o" -#define PRIuPTR "u" -#define PRIxPTR "x" -#define PRIXPTR "X" -#define SCNdPTR "d" -#define SCNiPTR "i" -#define SCNoPTR "o" -#define SCNxPTR "x" - #define SCNuPTR "u" -#endif - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -/* - * no length modifier for char types prior to C9x - * MS runtime scanf appears to treat "hh" as "h" - */ - -/* signed char */ -#define SCNd8 "hhd" -#define SCNdLEAST8 "hhd" -#define SCNdFAST8 "hhd" - -#define SCNi8 "hhi" -#define SCNiLEAST8 "hhi" -#define SCNiFAST8 "hhi" - -#define SCNo8 "hho" -#define SCNoLEAST8 "hho" -#define SCNoFAST8 "hho" - -#define SCNx8 "hhx" -#define SCNxLEAST8 "hhx" -#define SCNxFAST8 "hhx" - -/* unsigned char */ -#define SCNu8 "hhu" -#define SCNuLEAST8 "hhu" -#define SCNuFAST8 "hhu" -#endif /* __STDC_VERSION__ >= 199901 */ - - -#ifdef __cplusplus -} -#endif - -#endif /* ndef _INTTYPES_H */ diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb.dsw b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb.dsw deleted file mode 100644 index 8926e67..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb.dsw +++ /dev/null @@ -1,56 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "libusb_dll"=".\libusb_dll.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "libusb_static"=".\libusb_static.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "listdevs"=".\listdevs.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libusb_static - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.dsp b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.dsp deleted file mode 100644 index 96a011e..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.dsp +++ /dev/null @@ -1,190 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libusb_dll" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=libusb_dll - 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 "libusb_dll.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 "libusb_dll.mak" CFG="libusb_dll - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "libusb_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libusb_dll - 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)" == "libusb_dll - 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 "../Win32/Release/dll" -# PROP Intermediate_Dir "../Win32/Release/dll" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "LIBUSB_DLL_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../libusb" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /U "_MBCS" /D "_USRDLL" /FR /FD /EHsc /c -# 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 shell32.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 shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"Win32/Release/dll/libusb-1.0.dll" - -!ELSEIF "$(CFG)" == "libusb_dll - 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 "../Win32/Debug/dll" -# PROP Intermediate_Dir "../Win32/Debug/dll" -# 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 "_USRDLL" /D "LIBUSB_DLL_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../libusb" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /U "_MBCS" /D "_USRDLL" /FR /FD /EHsc /c -# 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 /n -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shell32.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 shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Win32/Debug/dll/libusb-1.0.dll" -# SUBTRACT LINK32 /pdb:none /incremental:no - -!ENDIF - -# Begin Target - -# Name "libusb_dll - Win32 Release" -# Name "libusb_dll - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\libusb\core.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\darwin_usb.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=..\libusb\descriptor.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\io.c -# End Source File -# Begin Source File - -SOURCE="..\libusb\libusb-1.0.rc" -# End Source File -# Begin Source File - -SOURCE="..\libusb\libusb-1.0.def" -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\linux_usbfs.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\poll_windows.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\sync.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\threads_windows.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\windows_usb.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\config.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\darwin_usb.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\libusb.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\libusbi.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\linux_usbfs.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\poll_posix.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\poll_windows.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\threads_posix.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\threads_windows.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\windows_usb.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 -# End Target -# End Project diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcproj b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcproj deleted file mode 100644 index 242898b..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcproj +++ /dev/null @@ -1,421 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcxproj b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcxproj deleted file mode 100644 index fe02056..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcxproj +++ /dev/null @@ -1,166 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - libusb-1.0 (dll) - {349EE8FA-7D25-4909-AAF5-FF3FADE72187} - libusbdll - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)..\$(Platform)\$(Configuration)\dll\ - $(SolutionDir)..\$(Platform)\$(Configuration)\dll\libusb-1.0\ - $(SolutionDir)..\$(Platform)\$(Configuration)\dll\ - $(SolutionDir)..\$(Platform)\$(Configuration)\dll\libusb-1.0\ - $(SolutionDir)..\$(Platform)\$(Configuration)\dll\ - $(SolutionDir)..\$(Platform)\$(Configuration)\dll\libusb-1.0\ - $(SolutionDir)..\$(Platform)\$(Configuration)\dll\ - $(SolutionDir)..\$(Platform)\$(Configuration)\dll\libusb-1.0\ - libusb-1.0 - libusb-1.0 - libusb-1.0 - libusb-1.0 - - - - Disabled - .;..\libusb;%(AdditionalIncludeDirectories) - _WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - - - $(OutDir)libusb-1.0.dll - ..\libusb\libusb-1.0.def - libusb-1.0.rc;%(EmbedManagedResourceFile) - true - - - - - X64 - - - Disabled - .;..\libusb;%(AdditionalIncludeDirectories) - _WIN32;_WIN64;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - - - $(OutDir)libusb-1.0.dll - ..\libusb\libusb-1.0.def - libusb-1.0.rc;%(EmbedManagedResourceFile) - true - - - - - .;..\libusb;%(AdditionalIncludeDirectories) - _WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - - - $(OutDir)libusb-1.0.dll - ..\libusb\libusb-1.0.def - libusb-1.0.rc;%(EmbedManagedResourceFile) - - - - - X64 - - - .;..\libusb;%(AdditionalIncludeDirectories) - _WIN32;_WIN64;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - - - $(OutDir)libusb-1.0.dll - ..\libusb\libusb-1.0.def - libusb-1.0.rc;%(EmbedManagedResourceFile) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcxproj.filters b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcxproj.filters deleted file mode 100644 index 1078ae1..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_dll.vcxproj.filters +++ /dev/null @@ -1,69 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {d81e81ca-b13e-4a15-b54b-b12b41361e6b} - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Resource Files - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_sources b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_sources deleted file mode 100644 index 8e8e65c..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_sources +++ /dev/null @@ -1,36 +0,0 @@ -#TARGETTYPE is not defined, to allow selection between static lib or DLL with ddk_build -TARGETNAME=libusb-1.0 -DLLDEF=..\libusb-1.0.def - -!IFNDEF MSC_WARNING_LEVEL -MSC_WARNING_LEVEL=/W3 -!ENDIF - -!IFDEF STATIC_LIBC -USE_LIBCMT=1 -!ELSE -USE_MSVCRT=1 -!ENDIF - -INCLUDES=..;..\..\msvc;$(DDK_INC_PATH) -C_DEFINES= $(C_DEFINES) $(LIBUSB_DEFINES) /DDDKBUILD - -# http://jpassing.com/2009/10/21/ltcg-issues-with-the-win7amd64-environment-of-wdk-7600/ -# prevents the following error when using the 64 bit static lib with Visual Studio 2010: -# "fatal error C1001: An internal error has occurred in the compiler. -# (compiler file 'f:\dd\vctools\compiler\utc\src\p2\p2symtab.c', line 1823)" -# and the following with Visual Studio 2010: -# "fatal error C1047: The object or library file 'libusb-1.0.lib' was created with -# an older compiler than other objects; rebuild old objects and libraries" -USER_C_FLAGS=/GL- - -TARGETLIBS=$(SDK_LIB_PATH)\kernel32.lib - -SOURCES=..\core.c \ - ..\descriptor.c \ - ..\io.c \ - ..\sync.c \ - threads_windows.c \ - poll_windows.c \ - windows_usb.c \ - ..\libusb-1.0.rc diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.dsp b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.dsp deleted file mode 100644 index 007fcc7..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.dsp +++ /dev/null @@ -1,170 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libusb_static" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=libusb_static - 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 "libusb_static.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 "libusb_static.mak" CFG="libusb_static - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "libusb_static - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "libusb_static - 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)" == "libusb_static - 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 "../Win32/Release/lib" -# PROP Intermediate_Dir "../Win32/Release/lib" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../libusb" /D "WIN32" /D "NDEBUG" /D "_UNICODE" /D "UNICODE" /U "_MBCS" /D "_LIB" /FR /FD /EHsc /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"../Win32/Release/lib/libusb-1.0.lib" - -!ELSEIF "$(CFG)" == "libusb_static - 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 "../Win32/Debug/lib" -# PROP Intermediate_Dir "../Win32/Debug/lib" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../libusb" /D "WIN32" /D "_DEBUG" /D "_UNICODE" /D "UNICODE" /U "_MBCS" /D "_LIB" /FR /FD /GZ /EHsc /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo /n -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"../Win32/Debug/lib/libusb-1.0.lib" - -!ENDIF - -# Begin Target - -# Name "libusb_static - Win32 Release" -# Name "libusb_static - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\libusb\core.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\darwin_usb.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=..\libusb\descriptor.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\io.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\linux_usbfs.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\poll_windows.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\sync.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\threads_windows.c -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\windows_usb.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\config.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\darwin_usb.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\libusb.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\libusbi.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\linux_usbfs.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\poll_posix.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\poll_windows.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\threads_posix.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\threads_windows.h -# End Source File -# Begin Source File - -SOURCE=..\libusb\os\windows_usb.h -# End Source File -# End Group -# End Target -# End Project diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcproj b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcproj deleted file mode 100644 index bd0ca52..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcproj +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcxproj b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcxproj deleted file mode 100644 index 63fb20b..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcxproj +++ /dev/null @@ -1,150 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - libusb-1.0 (static) - {349EE8F9-7D25-4909-AAF5-FF3FADE72187} - libusb - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)..\$(Platform)\$(Configuration)\lib\ - $(SolutionDir)..\$(Platform)\$(Configuration)\lib\libusb-1.0\ - $(SolutionDir)..\$(Platform)\$(Configuration)\lib\ - $(SolutionDir)..\$(Platform)\$(Configuration)\lib\libusb-1.0\ - $(SolutionDir)..\$(Platform)\$(Configuration)\lib\ - $(SolutionDir)..\$(Platform)\$(Configuration)\lib\libusb-1.0\ - $(SolutionDir)..\$(Platform)\$(Configuration)\lib\ - $(SolutionDir)..\$(Platform)\$(Configuration)\lib\libusb-1.0\ - libusb-1.0 - libusb-1.0 - libusb-1.0 - libusb-1.0 - - - - Disabled - .;..\libusb;%(AdditionalIncludeDirectories) - _WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDebug - Level3 - ProgramDatabase - - - $(OutDir)libusb-1.0.lib - - - - - X64 - - - Disabled - .;..\libusb;%(AdditionalIncludeDirectories) - _WIN32;_WIN64;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDebug - Level3 - ProgramDatabase - - - $(OutDir)libusb-1.0.lib - - - - - .;..\libusb;%(AdditionalIncludeDirectories) - _WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreaded - Level3 - - - $(OutDir)libusb-1.0.lib - - - - - X64 - - - .;..\libusb;%(AdditionalIncludeDirectories) - _WIN32;_WIN64;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreaded - Level3 - - - $(OutDir)libusb-1.0.lib - - - - - - - - - - - - - - - - - - - - - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcxproj.filters b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcxproj.filters deleted file mode 100644 index 11fe1fb..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_static.vcxproj.filters +++ /dev/null @@ -1,56 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_vs2005.sln b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_vs2005.sln deleted file mode 100644 index 6ebb5e6..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_vs2005.sln +++ /dev/null @@ -1,61 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libusb-1.0 (static)", "libusb_static.vcproj", "{5AB6B770-1925-48D5-ABC2-930F3259C020}" - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libusb-1.0 (dll)", "libusb_dll.vcproj", "{8224C054-5968-4238-832C-167155E7ECC3}" - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "listdevs", "listdevs.vcproj", "{98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}" - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - {5AB6B770-1925-48D5-ABC2-930F3259C020} = {5AB6B770-1925-48D5-ABC2-930F3259C020} - EndProjectSection -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 - {5AB6B770-1925-48D5-ABC2-930F3259C020}.Debug|Win32.ActiveCfg = Debug|Win32 - {5AB6B770-1925-48D5-ABC2-930F3259C020}.Debug|Win32.Build.0 = Debug|Win32 - {5AB6B770-1925-48D5-ABC2-930F3259C020}.Debug|x64.ActiveCfg = Debug|x64 - {5AB6B770-1925-48D5-ABC2-930F3259C020}.Debug|x64.Build.0 = Debug|x64 - {5AB6B770-1925-48D5-ABC2-930F3259C020}.Release|Win32.ActiveCfg = Release|Win32 - {5AB6B770-1925-48D5-ABC2-930F3259C020}.Release|Win32.Build.0 = Release|Win32 - {5AB6B770-1925-48D5-ABC2-930F3259C020}.Release|x64.ActiveCfg = Release|x64 - {5AB6B770-1925-48D5-ABC2-930F3259C020}.Release|x64.Build.0 = Release|x64 - {8224C054-5968-4238-832C-167155E7ECC3}.Debug|Win32.ActiveCfg = Debug|Win32 - {8224C054-5968-4238-832C-167155E7ECC3}.Debug|Win32.Build.0 = Debug|Win32 - {8224C054-5968-4238-832C-167155E7ECC3}.Debug|x64.ActiveCfg = Debug|x64 - {8224C054-5968-4238-832C-167155E7ECC3}.Debug|x64.Build.0 = Debug|x64 - {8224C054-5968-4238-832C-167155E7ECC3}.Release|Win32.ActiveCfg = Release|Win32 - {8224C054-5968-4238-832C-167155E7ECC3}.Release|Win32.Build.0 = Release|Win32 - {8224C054-5968-4238-832C-167155E7ECC3}.Release|x64.ActiveCfg = Release|x64 - {8224C054-5968-4238-832C-167155E7ECC3}.Release|x64.Build.0 = Release|x64 - {98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}.Debug|Win32.ActiveCfg = Debug|Win32 - {98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}.Debug|Win32.Build.0 = Debug|Win32 - {98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}.Debug|x64.ActiveCfg = Debug|x64 - {98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}.Debug|x64.Build.0 = Debug|x64 - {98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}.Release|Win32.ActiveCfg = Release|Win32 - {98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}.Release|Win32.Build.0 = Release|Win32 - {98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}.Release|x64.ActiveCfg = Release|x64 - {98CFD8FA-EE20-40D5-AF13-F8C4856D6CA5}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_vs2010.sln b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_vs2010.sln deleted file mode 100644 index 1160f52..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/libusb_vs2010.sln +++ /dev/null @@ -1,49 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libusb-1.0 (static)", "libusb_static.vcxproj", "{349EE8F9-7D25-4909-AAF5-FF3FADE72187}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libusb-1.0 (dll)", "libusb_dll.vcxproj", "{349EE8FA-7D25-4909-AAF5-FF3FADE72187}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "listdevs", "listdevs.vcxproj", "{F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}" -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 - {349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Debug|Win32.ActiveCfg = Debug|Win32 - {349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Debug|Win32.Build.0 = Debug|Win32 - {349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Debug|x64.ActiveCfg = Debug|x64 - {349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Debug|x64.Build.0 = Debug|x64 - {349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Release|Win32.ActiveCfg = Release|Win32 - {349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Release|Win32.Build.0 = Release|Win32 - {349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Release|x64.ActiveCfg = Release|x64 - {349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Release|x64.Build.0 = Release|x64 - {349EE8FA-7D25-4909-AAF5-FF3FADE72187}.Debug|Win32.ActiveCfg = Debug|Win32 - {349EE8FA-7D25-4909-AAF5-FF3FADE72187}.Debug|x64.ActiveCfg = Debug|x64 - {349EE8FA-7D25-4909-AAF5-FF3FADE72187}.Release|Win32.ActiveCfg = Release|Win32 - {349EE8FA-7D25-4909-AAF5-FF3FADE72187}.Release|x64.ActiveCfg = Release|x64 - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}.Debug|Win32.ActiveCfg = Debug|Win32 - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}.Debug|Win32.Build.0 = Debug|Win32 - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}.Debug|x64.ActiveCfg = Debug|x64 - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}.Debug|x64.Build.0 = Debug|x64 - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}.Release|Win32.ActiveCfg = Release|Win32 - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}.Release|Win32.Build.0 = Release|Win32 - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}.Release|x64.ActiveCfg = Release|x64 - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}.Release|x64.Build.0 = Release|x64 - {3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}.Debug|Win32.ActiveCfg = Debug|Win32 - {3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}.Debug|Win32.Build.0 = Debug|Win32 - {3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}.Debug|x64.ActiveCfg = Debug|x64 - {3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}.Debug|x64.Build.0 = Debug|x64 - {3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}.Release|Win32.ActiveCfg = Release|Win32 - {3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}.Release|Win32.Build.0 = Release|Win32 - {3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}.Release|x64.ActiveCfg = Release|x64 - {3F3138D0-7AB7-4268-9BF3-1A3EA5503A11}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.dsp b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.dsp deleted file mode 100644 index 2ed8aec..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.dsp +++ /dev/null @@ -1,103 +0,0 @@ -# Microsoft Developer Studio Project File - Name="listdevs" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=listdevs - 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 "listdevs.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 "listdevs.mak" CFG="listdevs - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "listdevs - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "listdevs - 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)" == "listdevs - 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 "../Win32/Release/examples" -# PROP Intermediate_Dir "../Win32/Release/examples/listdevs" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "../libusb" /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /U "_MBCS" /FR /FD /EHsc /c -# 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 shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "listdevs - 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 "../Win32/Debug/examples" -# PROP Intermediate_Dir "../Win32/Debug/examples/listdevs" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../libusb" /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /U "_MBCS" /FR /FD /GZ /EHsc /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo /n "../Win32/Debug/dll/core.sbr" "../Win32/Debug/dll/descriptor.sbr" "../Win32/Debug/dll/io.sbr" "../Win32/Debug/dll/sync.sbr" "../Win32/Debug/dll/poll_windows.sbr" "../Win32/Debug/dll/threads_windows.sbr" "../Win32/Debug/dll/windows_usb.sbr" -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "listdevs - Win32 Release" -# Name "listdevs - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\examples\listdevs.c -# End Source File -# 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" -# End Group -# End Target -# End Project diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcproj b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcproj deleted file mode 100644 index cff754e..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcproj +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcxproj b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcxproj deleted file mode 100644 index b0164bb..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcxproj +++ /dev/null @@ -1,165 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - listdevs - {F4938DB0-3DE7-4737-9C5A-EAD1BE819F87} - examples - Win32Proj - - - - Application - Unicode - true - - - Application - Unicode - - - Application - Unicode - true - - - Application - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)..\$(Platform)\$(Configuration)\examples\ - $(SolutionDir)..\$(Platform)\$(Configuration)\examples\$(ProjectName)\ - $(SolutionDir)..\$(Platform)\$(Configuration)\examples\ - $(SolutionDir)..\$(Platform)\$(Configuration)\examples\$(ProjectName)\ - $(SolutionDir)..\$(Platform)\$(Configuration)\examples\ - $(SolutionDir)..\$(Platform)\$(Configuration)\examples\$(ProjectName)\ - $(SolutionDir)..\$(Platform)\$(Configuration)\examples\ - $(SolutionDir)..\$(Platform)\$(Configuration)\examples\$(ProjectName)\ - - - - $(IntDir)$(ProjectName).htm - - - Disabled - ..\libusb;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreadedDebug - Level3 - ProgramDatabase - - - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(ProjectName).pdb - Console - MachineX86 - - - - - $(IntDir)$(ProjectName).htm - - - X64 - - - Disabled - ..\libusb;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreadedDebug - Level3 - ProgramDatabase - - - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(ProjectName).pdb - Console - MachineX64 - - - - - $(IntDir)$(ProjectName).htm - - - ..\libusb;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreaded - Level3 - - - %(AdditionalLibraryDirectories) - $(TargetDir)$(ProjectName).pdb - Console - MachineX86 - - - - - $(IntDir)$(ProjectName).htm - - - X64 - - - ..\libusb;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreaded - Level3 - - - %(AdditionalLibraryDirectories) - $(TargetDir)$(ProjectName).pdb - Console - MachineX64 - - - - - - - - {349ee8f9-7d25-4909-aaf5-ff3fade72187} - false - - - - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcxproj.filters b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcxproj.filters deleted file mode 100644 index 856fc1c..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs.vcxproj.filters +++ /dev/null @@ -1,14 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Source Files - - - diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs_sources b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs_sources deleted file mode 100644 index 97a5723..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/listdevs_sources +++ /dev/null @@ -1,19 +0,0 @@ -TARGETNAME=listdevs -TARGETTYPE=PROGRAM -386_STDCALL=0 - -_NT_TARGET_VERSION= $(_NT_TARGET_VERSION_WINXP) -!IFNDEF MSC_WARNING_LEVEL -MSC_WARNING_LEVEL=/W3 -!ENDIF - -!IFDEF STATIC_LIBC -USE_LIBCMT=1 -!ELSE -USE_MSVCRT=1 -!ENDIF - -UMTYPE=console -INCLUDES=..\..\libusb;$(DDK_INC_PATH) -UMLIBS=..\..\libusb\os\obj$(BUILD_ALT_DIR)\*\libusb-1.0.lib -SOURCES=..\listdevs.c diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/stdint.h b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/stdint.h deleted file mode 100644 index 00988d9..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/msvc/stdint.h +++ /dev/null @@ -1,256 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file was originally part of the w64 mingw-runtime package. - */ - -/* ISO C9x 7.18 Integer types - * Based on ISO/IEC SC22/WG14 9899 Committee draft (SC22 N2794) - * - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * Contributor: Danny Smith - * Modified for libusb/MSVC: Pete Batard - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Date: 2010-04-02 - */ - -#ifndef _MSC_VER -#error This header should only be used with Microsoft compilers -#endif - -#ifndef _STDINT_H -#define _STDINT_H - -#ifndef _INTPTR_T_DEFINED -#define _INTPTR_T_DEFINED -#ifndef __intptr_t_defined -#define __intptr_t_defined -#undef intptr_t -#ifdef _WIN64 - typedef __int64 intptr_t; -#else - typedef int intptr_t; -#endif /* _WIN64 */ -#endif /* __intptr_t_defined */ -#endif /* _INTPTR_T_DEFINED */ - -#ifndef _UINTPTR_T_DEFINED -#define _UINTPTR_T_DEFINED -#ifndef __uintptr_t_defined -#define __uintptr_t_defined -#undef uintptr_t -#ifdef _WIN64 - typedef unsigned __int64 uintptr_t; -#else - typedef unsigned int uintptr_t; -#endif /* _WIN64 */ -#endif /* __uintptr_t_defined */ -#endif /* _UINTPTR_T_DEFINED */ - -#ifndef _PTRDIFF_T_DEFINED -#define _PTRDIFF_T_DEFINED -#ifndef _PTRDIFF_T_ -#define _PTRDIFF_T_ -#undef ptrdiff_t -#ifdef _WIN64 - typedef __int64 ptrdiff_t; -#else - typedef int ptrdiff_t; -#endif /* _WIN64 */ -#endif /* _PTRDIFF_T_ */ -#endif /* _PTRDIFF_T_DEFINED */ - -#ifndef _WCHAR_T_DEFINED -#define _WCHAR_T_DEFINED -#ifndef __cplusplus - typedef unsigned short wchar_t; -#endif /* C++ */ -#endif /* _WCHAR_T_DEFINED */ - -#ifndef _WCTYPE_T_DEFINED -#define _WCTYPE_T_DEFINED -#ifndef _WINT_T -#define _WINT_T - typedef unsigned short wint_t; - typedef unsigned short wctype_t; -#endif /* _WINT_T */ -#endif /* _WCTYPE_T_DEFINED */ - -/* 7.18.1.1 Exact-width integer types */ -typedef __int8 int8_t; -typedef unsigned __int8 uint8_t; -typedef __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; - -/* 7.18.1.2 Minimum-width integer types */ -typedef signed char int_least8_t; -typedef unsigned char uint_least8_t; -typedef short int_least16_t; -typedef unsigned short uint_least16_t; -typedef int int_least32_t; -typedef unsigned uint_least32_t; -typedef __int64 int_least64_t; -typedef unsigned __int64 uint_least64_t; - -/* 7.18.1.3 Fastest minimum-width integer types - * Not actually guaranteed to be fastest for all purposes - * Here we use the exact-width types for 8 and 16-bit ints. - */ -typedef __int8 int_fast8_t; -typedef unsigned __int8 uint_fast8_t; -typedef __int16 int_fast16_t; -typedef unsigned __int16 uint_fast16_t; -typedef __int32 int_fast32_t; -typedef unsigned __int32 uint_fast32_t; -typedef __int64 int_fast64_t; -typedef unsigned __int64 uint_fast64_t; - -/* 7.18.1.5 Greatest-width integer types */ -typedef __int64 intmax_t; -typedef unsigned __int64 uintmax_t; - -/* 7.18.2 Limits of specified-width integer types */ - -/* 7.18.2.1 Limits of exact-width integer types */ -#define INT8_MIN (-128) -#define INT16_MIN (-32768) -#define INT32_MIN (-2147483647 - 1) -#define INT64_MIN (-9223372036854775807LL - 1) - -#define INT8_MAX 127 -#define INT16_MAX 32767 -#define INT32_MAX 2147483647 -#define INT64_MAX 9223372036854775807LL - -#define UINT8_MAX 255 -#define UINT16_MAX 65535 -#define UINT32_MAX 0xffffffffU /* 4294967295U */ -#define UINT64_MAX 0xffffffffffffffffULL /* 18446744073709551615ULL */ - -/* 7.18.2.2 Limits of minimum-width integer types */ -#define INT_LEAST8_MIN INT8_MIN -#define INT_LEAST16_MIN INT16_MIN -#define INT_LEAST32_MIN INT32_MIN -#define INT_LEAST64_MIN INT64_MIN - -#define INT_LEAST8_MAX INT8_MAX -#define INT_LEAST16_MAX INT16_MAX -#define INT_LEAST32_MAX INT32_MAX -#define INT_LEAST64_MAX INT64_MAX - -#define UINT_LEAST8_MAX UINT8_MAX -#define UINT_LEAST16_MAX UINT16_MAX -#define UINT_LEAST32_MAX UINT32_MAX -#define UINT_LEAST64_MAX UINT64_MAX - -/* 7.18.2.3 Limits of fastest minimum-width integer types */ -#define INT_FAST8_MIN INT8_MIN -#define INT_FAST16_MIN INT16_MIN -#define INT_FAST32_MIN INT32_MIN -#define INT_FAST64_MIN INT64_MIN - -#define INT_FAST8_MAX INT8_MAX -#define INT_FAST16_MAX INT16_MAX -#define INT_FAST32_MAX INT32_MAX -#define INT_FAST64_MAX INT64_MAX - -#define UINT_FAST8_MAX UINT8_MAX -#define UINT_FAST16_MAX UINT16_MAX -#define UINT_FAST32_MAX UINT32_MAX -#define UINT_FAST64_MAX UINT64_MAX - -/* 7.18.2.4 Limits of integer types capable of holding - object pointers */ -#ifdef _WIN64 -#define INTPTR_MIN INT64_MIN -#define INTPTR_MAX INT64_MAX -#define UINTPTR_MAX UINT64_MAX -#else -#define INTPTR_MIN INT32_MIN -#define INTPTR_MAX INT32_MAX -#define UINTPTR_MAX UINT32_MAX -#endif - -/* 7.18.2.5 Limits of greatest-width integer types */ -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX -#define UINTMAX_MAX UINT64_MAX - -/* 7.18.3 Limits of other integer types */ -#ifdef _WIN64 -#define PTRDIFF_MIN INT64_MIN -#define PTRDIFF_MAX INT64_MAX -#else -#define PTRDIFF_MIN INT32_MIN -#define PTRDIFF_MAX INT32_MAX -#endif - -#define SIG_ATOMIC_MIN INT32_MIN -#define SIG_ATOMIC_MAX INT32_MAX - -#ifndef SIZE_MAX -#ifdef _WIN64 -#define SIZE_MAX UINT64_MAX -#else -#define SIZE_MAX UINT32_MAX -#endif -#endif - -#ifndef WCHAR_MIN /* also in wchar.h */ -#define WCHAR_MIN 0U -#define WCHAR_MAX 0xffffU -#endif - -/* - * wint_t is unsigned short for compatibility with MS runtime - */ -#define WINT_MIN 0U -#define WINT_MAX 0xffffU - - -/* 7.18.4 Macros for integer constants */ - -/* 7.18.4.1 Macros for minimum-width integer constants - - Accoding to Douglas Gwyn : - "This spec was changed in ISO/IEC 9899:1999 TC1; in ISO/IEC - 9899:1999 as initially published, the expansion was required - to be an integer constant of precisely matching type, which - is impossible to accomplish for the shorter types on most - platforms, because C99 provides no standard way to designate - an integer constant with width less than that of type int. - TC1 changed this to require just an integer constant - *expression* with *promoted* type." - - The trick used here is from Clive D W Feather. -*/ - -#define INT8_C(val) (INT_LEAST8_MAX-INT_LEAST8_MAX+(val)) -#define INT16_C(val) (INT_LEAST16_MAX-INT_LEAST16_MAX+(val)) -#define INT32_C(val) (INT_LEAST32_MAX-INT_LEAST32_MAX+(val)) -/* The 'trick' doesn't work in C89 for long long because, without - suffix, (val) will be evaluated as int, not intmax_t */ -#define INT64_C(val) val##i64 - -#define UINT8_C(val) (val) -#define UINT16_C(val) (val) -#define UINT32_C(val) (val##i32) -#define UINT64_C(val) val##ui64 - -/* 7.18.4.2 Macros for greatest-width integer constants */ -#define INTMAX_C(val) val##i64 -#define UINTMAX_C(val) val##ui64 - -#endif diff --git a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/stamp-h1 b/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/stamp-h1 deleted file mode 100644 index 4547fe1..0000000 --- a/CyUSBSerial_SDK_Linux/libusb/libusb-1.0.9/libusb-1.0.9/stamp-h1 +++ /dev/null @@ -1 +0,0 @@ -timestamp for config.h diff --git a/CyUSBSerial_SDK_Linux/license/license.txt b/CyUSBSerial_SDK_Linux/license/license.txt deleted file mode 100644 index 5faba9d..0000000 --- a/CyUSBSerial_SDK_Linux/license/license.txt +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/CyUSBSerial_SDK_Linux/linux/library/90-cyusb.rules b/CyUSBSerial_SDK_Linux/linux/library/90-cyusb.rules deleted file mode 100644 index 21cbba2..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/90-cyusb.rules +++ /dev/null @@ -1,5 +0,0 @@ -# Cypress USB driver for FX2 and FX3 (C) Cypress Semiconductor Corporation / ATR-LABS -# Rules written by V. Radhakrishnan ( rk@atr-labs.com ) -# Cypress USB vendor ID = 0x04b4 -KERNEL=="*", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ACTION=="add", ATTR{idVendor}=="04b4", MODE="666" -KERNEL=="*", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ACTION=="remove", TAG=="cyusb_dev" diff --git a/CyUSBSerial_SDK_Linux/linux/library/CyUSBCommon.h b/CyUSBSerial_SDK_Linux/linux/library/CyUSBCommon.h deleted file mode 100644 index 62a48e0..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/CyUSBCommon.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Common header file of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "../../common/header/CyUSBSerial.h" -#ifdef __x86_64__ -#pragma pack(1) -#else -#endif -typedef struct CY_DEVICE { - - unsigned char inEndpoint; - unsigned char outEndpoint; - unsigned char interruptEndpoint; - unsigned char interfaceNum; - bool i2cCancelEvent; - bool spiCancelEvent; - bool uartCancelEvent; - bool rtsValue; - bool dtrValue; - unsigned short numEndpoints; - CY_FLOW_CONTROL_MODES uartFlowControlMode; - struct libusb_transfer *spiTransfer; - struct libusb_transfer *uartTransfer; - libusb_device_handle *devHandle; - pthread_t spiThreadId; - pthread_t uartThreadId; - pthread_mutex_t readLock; - pthread_mutex_t writeLock; - pthread_mutex_t notificationLock; - CY_DEVICE_TYPE deviceType; - -}CY_DEVICE,*PCY_DEVICE; -#pragma pack() - -CY_RETURN_STATUS CyResetPipe (CY_HANDLE handl, UINT8); -#define CY_DEBUG_PRINT_INFO(...) //User need to enable this -#define CY_DEBUG_PRINT_ERROR(...) //printf -#define DUMP_DATA 1 -#ifdef DUMP_DATA -#define CY_DUMP_DATA(INPUT,LEN)\ -{\ - int i = 0, len = LEN;\ - while ((len)) {\ - printf ("%x ", (INPUT)[i++]);\ - len--;\ - }\ - printf ("\n");\ -} -#else -#define CY_DUMP_DATA (INPUT, LEN) do { }while (0); -#endif -#define CY_USB_SERIAL_TIMEOUT 5000 -#define CY_EVENT_NOTIFICATION_TIMEOUT 0 //This will make the transfer infinite - -#define CY_VENDOR_REQUEST_DEVICE_TO_HOST 0xC0 -#define CY_VENDOR_REQUEST_HOST_TO_DEVICE 0x40 - -#define CY_CLASS_INTERFACE_REQUEST_DEVICE_TO_HOST 0XA1 -#define CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE 0x21 -//I2C related macros -#define CY_SCB_INDEX_POS 15 -#define CY_I2C_CONFIG_LENGTH 16 -#define CY_I2C_WRITE_COMMAND_POS 3 -#define CY_I2C_WRITE_COMMAND_LEN_POS 4 -#define CY_I2C_GET_STATUS_LEN 3 -#define CY_I2C_MODE_WRITE 1 -#define CY_I2C_MODE_READ 0 -#define CY_I2C_ERROR_BIT (1) -#define CY_I2C_ARBITRATION_ERROR_BIT (1 << 1) -#define CY_I2C_NAK_ERROR_BIT (1 << 2) -#define CY_I2C_BUS_ERROR_BIT (1 << 3) -#define CY_I2C_STOP_BIT_ERROR (1 << 4) -#define CY_I2C_BUS_BUSY_ERROR (1 << 5) -#define CY_I2C_ENABLE_PRECISE_TIMING 1 -#define CY_I2C_EVENT_NOTIFICATION_LEN 3 -//SPI related Macros -#define CY_SPI_CONFIG_LEN 16 -#define CY_SPI_EVENT_NOTIFICATION_LEN 2 -#define CY_SPI_READ_BIT (1) -#define CY_SPI_WRITE_BIT (1 << 1) -#define CY_SPI_SCB_INDEX_BIT (1 << 15) -#define CY_SPI_GET_STATUS_LEN 4 -#define CY_SPI_UNDERFLOW_ERROR (1) -#define CY_SPI_BUS_ERROR (1 << 1) -//Vendor UART related macros -#define CY_UART_SET_FLOW_CONTROL_CMD 0x60 -#define CY_UART_SEND_BREAK_CMD 0x23 -#define CY_UART_CONFIG_LEN 16 -#define CY_SET_LINE_CONTROL_STATE_CMD 0x22 -#define CY_UART_EVENT_NOTIFICATION_LEN 10 - -#define CY_UART_SERIAL_STATE_CARRIER_DETECT 1 -#define CY_UART_SERIAL_STATE_TRANSMISSION_CARRIER (1 << 1) -#define CY_UART_SERIAL_STATE_BREAK_DETECTION (1<< 2) -#define CY_UART_SERIAL_STATE_RING_SIGNAL_DETECTION (1 << 3) -#define CY_UART_SERIAL_STATE_FRAMING_ERROR (1 << 4) -#define CY_UART_SERIAL_STATE_PARITY_ERROR (1 << 5) -#define CY_UART_SERIAL_STATUE_OVERRUN (1 << 6) -//Bootloader related macros -#define CY_BOOT_CONFIG_SIZE 64 -#define CY_DEVICE_CONFIG_SIZE 512 -#define CY_FIRMWARE_BREAKUP_SIZE 4096 -#define CY_GET_SILICON_ID_LEN 4 -#define CY_GET_FIRMWARE_VERSION_LEN 8 -#define CY_GET_SIGNATURE_LEN 4 -//PHDC related macros -#define CY_PHDC_SET_FEATURE 0X03 -#define CY_PHDC_CLR_FEATURE 0X01 -#define CY_PHDC_GET_DATA_STATUS 0x00 - -typedef enum CY_VENDOR_CMDS -{ - CY_GET_VERSION_CMD = 0xB0, /* Get the version of the boot-loader. - value = 0, index = 0, length = 4; - data_in = 32 bit version. */ - - CY_GET_SIGNATURE_CMD = 0xBD, /*Get the signature of the firmware - It is suppose to be 'CYUS' for normal firmware - and 'CYBL' for Bootloader.*/ - CY_UART_GET_CONFIG_CMD = 0xC0, /* Retreive the 16 byte UART configuration information. - MS bit of value indicates the SCB index. - length = 16, data_in = 16 byte configuration. */ - CY_UART_SET_CONFIG_CMD, /* Update the 16 byte UART configuration information. - MS bit of value indicates the SCB index. - length = 16, data_out = 16 byte configuration information. */ - CY_SPI_GET_CONFIG_CMD, /* Retreive the 16 byte SPI configuration information. - MS bit of value indicates the SCB index. - length = 16, data_in = 16 byte configuration. */ - CY_SPI_SET_CONFIG_CMD, /* Update the 16 byte SPI configuration information. - MS bit of value indicates the SCB index. - length = 16, data_out = 16 byte configuration information. */ - CY_I2C_GET_CONFIG_CMD, /* Retreive the 16 byte I2C configuration information. - MS bit of value indicates the SCB index. - length = 16, data_in = 16 byte configuration. */ - CY_I2C_SET_CONFIG_CMD = 0xC5, /* Update the 16 byte I2C configuration information. - MS bit of value indicates the SCB index. - length = 16, data_out = 16 byte configuration information. */ - CY_I2C_WRITE_CMD, /* Perform I2C write operation. - value = bit0 - start, bit1 - stop, bit3 - start on idle, - bits[14:8] - slave address, bit15 - scbIndex. length = 0. The - data is provided over the bulk endpoints. */ - CY_I2C_READ_CMD, /* Perform I2C read operation. - value = bit0 - start, bit1 - stop, bit2 - Nak last byte, - bit3 - start on idle, bits[14:8] - slave address, bit15 - scbIndex, - length = 0. The data is provided over the bulk endpoints. */ - CY_I2C_GET_STATUS_CMD, /* Retreive the I2C bus status. - value = bit0 - 0: TX 1: RX, bit15 - scbIndex, length = 3, - data_in = byte0: bit0 - flag, bit1 - bus_state, bit2 - SDA state, - bit3 - TX underflow, bit4 - arbitration error, bit5 - NAK - bit6 - bus error, - byte[2:1] Data count remaining. */ - CY_I2C_RESET_CMD, /* The command cleans up the I2C state machine and frees the bus. - value = bit0 - 0: TX path, 1: RX path; bit15 - scbIndex, - length = 0. */ - CY_SPI_READ_WRITE_CMD = 0xCA, /* The command starts a read / write operation at SPI. - value = bit 0 - RX enable, bit 1 - TX enable, bit 15 - scbIndex; - index = length of transfer. */ - CY_SPI_RESET_CMD, /* The command resets the SPI pipes and allows it to receive new - request. - value = bit 15 - scbIndex */ - CY_SPI_GET_STATUS_CMD, /* The command returns the current transfer status. The count will match - the TX pipe status at SPI end. For completion of read, read all data - at the USB end signifies the end of transfer. - value = bit 15 - scbIndex */ - CY_JTAG_ENABLE_CMD = 0xD0, /* Enable JTAG module */ - CY_JTAG_DISABLE_CMD, /* Disable JTAG module */ - CY_JTAG_READ_CMD, /* JTAG read vendor command */ - CY_JTAG_WRITE_CMD, /* JTAG write vendor command */ - CY_GPIO_GET_CONFIG_CMD = 0xD8, /* Get the GPIO configuration: */ - CY_GPIO_SET_CONFIG_CMD, /* Set the GPIO configuration */ - CY_GPIO_GET_VALUE_CMD, /* Get GPIO value: */ - CY_GPIO_SET_VALUE_CMD, /* Set the GPIO value:*/ - CY_PROG_USER_FLASH_CMD = 0xE0, /*Program user flash area. The total space available is 512 bytes. - This can be accessed by the user from USB. The flash area - address offset is from 0x0000 to 0x00200 and can be written to - page wise (128 byte).*/ - CY_READ_USER_FLASH_CMD, /*Read user flash area. The total space available is 512 bytes. - This can be accessed by the user from USB. The flash area - address offset is from 0x0000 to 0x00200 and can be written to - page wise (128 byte).*/ - CY_DEVICE_RESET_CMD = 0xE3, /*Performs a device reset from firmware*/ - -} CY_VENDOR_CMDS; - -//JTAG related Macros -#define CY_JTAG_OUT_EP 0x04 -#define CY_JTAG_IN_EP 0x85 - -//GPIO related Macros -#define CY_GPIO_GET_LEN 2 -#define CY_GPIO_SET_LEN 1 - -//PHDC related macros -#define CY_PHDC_GET_STATUS_LEN 2 -#define CY_PHDC_CLR_FEATURE_WVALUE 0x1 -#define CY_PHDC_SET_FEATURE_WVALUE 0x0101 - diff --git a/CyUSBSerial_SDK_Linux/linux/library/Makefile b/CyUSBSerial_SDK_Linux/linux/library/Makefile deleted file mode 100644 index 02dd0b6..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -all: - gcc -fPIC -g -Wall -o libcyusb.o -c cyusb.c -I ../../common/header - gcc -fPIC -g -Wall -o libcyuart.o -c cyuart.c -I ../../common/header - gcc -fPIC -g -Wall -o libcyi2c.o -c cyi2c.c -I ../../common/header - gcc -fPIC -g -Wall -o libcyspi.o -c cyspi.c -I ../../common/header - gcc -fPIC -g -Wall -o libcyphdc.o -c cyphdc.c -I ../../common/header - gcc -fPIC -g -Wall -o libcyjtag.o -c cyjtag.c -I ../../common/header - gcc -fPIC -g -Wall -o libcymisc.o -c cymisc.c -I ../../common/header - gcc -shared -g -Wl,-soname,libcyusbserial.so -o libcyusbserial.so.1 libcyusb.o libcyuart.o libcyi2c.o libcyspi.o libcyphdc.o libcyjtag.o libcymisc.o -l usb-1.0 - cp libcyusbserial.so.1 /usr/local/lib - ln -sf /usr/local/lib/libcyusbserial.so.1 /usr/local/lib/libcyusbserial.so - ldconfig - rm -f libcyusb.o libcyuart.o libcyspi.o libcyi2c.o libcyphdc.o libcyjtag.o libcymisc.o -clean: - rm -f libcyusbserial.so libcyusbserial.so.1 -help: - @echo 'make would compile and create the library and create a link' - @echo 'make clean would remove the library and the soft link to the library (soname)' diff --git a/CyUSBSerial_SDK_Linux/linux/library/README.txt b/CyUSBSerial_SDK_Linux/linux/library/README.txt deleted file mode 100644 index 6ba8ceb..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/README.txt +++ /dev/null @@ -1,29 +0,0 @@ -======================================================================================== - Cypress Semiconductor Corporation - CyUSB Serial library. -========================================================================================= -Pre-requisite: -1. libusb-1.0.9 is required for compilation and functioning of the APIs in the library. -2. GNU Make and the GCC tool-chain are used for the build process. - -Installation steps: - -1.cd to the main directory where library source files are extracted and type - 'sudo make' - -2.This will generate shared library libcyusbserial.so.1 and its soft link libcyusbserial.so. - Both of them will be copied/installed to /usr/local/lib. - -3.Application can link and start using the library. - -Changing USB device node permission: - -**Note: -By default the USB device node created in linux do not have read/write permission -for normal user. In order to make the USB device node accessable, copy 90-cyusb.rules -which is inside the library folder of release package to /etc/udev/rules.d folder (Default VID mentioned is Cypress VID -which is 0x4B4, if VID is changed then update it in ATTR{idVendor} section of rules file). - - - - diff --git a/CyUSBSerial_SDK_Linux/linux/library/cyi2c.c b/CyUSBSerial_SDK_Linux/linux/library/cyi2c.c deleted file mode 100644 index 10d52fe..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/cyi2c.c +++ /dev/null @@ -1,690 +0,0 @@ -/* - * I2C routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" -#pragma pack(1) -typedef struct -{ - UINT32 frequency; /* Frequency of operation. Only valid values are - 100KHz and 400KHz. */ - UINT8 sAddress; /* Slave address to be used when in slave mode. */ - BOOL isMsbFirst; /* Whether to transmit most significant bit first. */ - BOOL isMaster; /* Whether to block is to be configured as a master: - CyTrue - The block functions as I2C master; - CyFalse - The block functions as I2C slave. */ - BOOL sIgnore; /* Ignore general call in slave mode. */ - BOOL clockStretch; /* Wheteher to stretch clock in case of no FIFO availability. */ - BOOL isLoopback; /* Whether to loop back TX data to RX. Valid only - for debug purposes. */ - UCHAR reserved[6]; /*Reserved for future use*/ -} CyUsI2cConfig_t; -#pragma pack() -#ifdef CY_I2C_ENABLE_PRECISE_TIMING -struct timeval startTimeWrite, endTimeWrite, startTimeRead, endTimeRead; -//Timer helper functions for proper timing -void startI2cTick (bool isWrite) { - if (isWrite) - gettimeofday (&startTimeWrite, NULL); - else - gettimeofday (&startTimeRead, NULL); -} - -UINT32 getI2cLapsedTime (bool isWrite){ - - signed int currentTime_sec, currentTime_usec, currentTime; - if (isWrite){ - gettimeofday (&endTimeWrite, NULL); - currentTime_sec = (endTimeWrite.tv_sec - startTimeWrite.tv_sec) * 1000; - currentTime_usec = ((endTimeWrite.tv_usec - startTimeWrite.tv_usec)) / 1000; - currentTime = currentTime_sec + currentTime_usec; - return (unsigned int)currentTime; - } - else{ - gettimeofday (&endTimeRead, NULL); - currentTime_sec = (endTimeRead.tv_sec - startTimeRead.tv_sec) * 1000; - currentTime_usec = ((endTimeRead.tv_usec - startTimeRead.tv_usec)) / 1000; - currentTime = currentTime_sec + currentTime_usec; - return (unsigned int)currentTime; - } -} -#endif -CY_RETURN_STATUS handleI2cError (UINT8 i2cStatus){ - - if (i2cStatus & CY_I2C_NAK_ERROR_BIT){ - CY_DEBUG_PRINT_ERROR ("CY:Error Nacked by device ...Function is %s\n", __func__); - return CY_ERROR_I2C_NAK_ERROR; - } - if (i2cStatus & CY_I2C_BUS_ERROR_BIT){ - CY_DEBUG_PRINT_ERROR ("CY:Error bus error occured... Function is %s\n", __func__); - return CY_ERROR_I2C_BUS_ERROR; - } - if (i2cStatus & CY_I2C_ARBITRATION_ERROR_BIT){ - CY_DEBUG_PRINT_ERROR ("CY:Error Arbitration error occured.. Function is %s\n", __func__); - return CY_ERROR_I2C_ARBITRATION_ERROR; - } - if (i2cStatus & CY_I2C_STOP_BIT_ERROR){ - CY_DEBUG_PRINT_ERROR ("CY:Error Stop bit set by master..Function is %s\n", __func__); - return CY_ERROR_I2C_STOP_BIT_SET; - } - else { - //We should never hit this case!!!! - CY_DEBUG_PRINT_ERROR ("CY:Unknown error..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -//Used internally by read and write API to check if data is received at the I2C end. -CY_RETURN_STATUS CyI2cGetStatus (CY_HANDLE handle, bool mode, UCHAR *i2cStatus); -CY_RETURN_STATUS waitForNotification (CY_HANDLE handle, UINT16 *bytesPending, UINT32 ioTimeout); -/* - This API gets the current I2C config - for the particluar interface of the device - */ -CY_RETURN_STATUS CyGetI2cConfig ( - CY_HANDLE handle, - CY_I2C_CONFIG *i2cConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CyUsI2cConfig_t localI2cConfig; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 scbIndex = 0; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (i2cConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_I2C) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not i2c ..Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - scbIndex = device->interfaceNum; - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_I2C_GET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0x00; - wLength = CY_I2C_CONFIG_LENGTH; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localI2cConfig, wLength, ioTimeout); - if (rStatus == CY_I2C_CONFIG_LENGTH){ - CY_DEBUG_PRINT_INFO ("CY: Read I2C config ...size is %d \n", rStatus); - i2cConfig->frequency = localI2cConfig.frequency; - i2cConfig->slaveAddress = localI2cConfig.sAddress; - i2cConfig->isMaster = localI2cConfig.isMaster; - i2cConfig->isClockStretch = localI2cConfig.clockStretch; - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected ....Function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Error time out ....Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in doing I2C read ...libusb error is %d function is %s!\n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API sets I2C config of the device for that - interface - */ -CY_RETURN_STATUS CySetI2cConfig ( - CY_HANDLE handle, - CY_I2C_CONFIG *i2cConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - CyUsI2cConfig_t localI2cConfig; - int rStatus; - CY_DEVICE *device = NULL; - libusb_device_handle *devHandle; - UINT16 scbIndex = 0; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (i2cConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (i2cConfig->frequency < 1000 || i2cConfig->frequency > 400000){ - CY_DEBUG_PRINT_ERROR ("CY:Error frequency trying to set in out of ..range Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if ((i2cConfig->slaveAddress % 2) != 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error slave address needs to even..Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - scbIndex = device->interfaceNum; - if (device->deviceType != CY_TYPE_I2C) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not i2c ..Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_I2C_SET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0x00; - wLength = CY_I2C_CONFIG_LENGTH; - //We need to pass entire 16 bytes config structure to firmware - //but we will not expose all the structure elements to user. - //so filling some of the values. - memset (&localI2cConfig, 0, CY_I2C_CONFIG_LENGTH); - localI2cConfig.frequency = i2cConfig->frequency; - localI2cConfig.sAddress = i2cConfig->slaveAddress; - localI2cConfig.isMaster = i2cConfig->isMaster; - localI2cConfig.clockStretch = i2cConfig->isClockStretch; - localI2cConfig.isMsbFirst = 1; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localI2cConfig, wLength, ioTimeout); - if (rStatus == CY_I2C_CONFIG_LENGTH){ - CY_DEBUG_PRINT_INFO ("CY: Setting I2C config successful ...\n"); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected ....Function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Error time out ....Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in doing I2C read ...libusb error is %d function is %s!\n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API reads I2C data from the specified interface of the device - interface - */ -CY_RETURN_STATUS CyI2cRead ( - CY_HANDLE handle, - CY_I2C_DATA_CONFIG *i2cDataConfig, - CY_DATA_BUFFER *readBuffer, - UINT32 ioTimeout - ) -{ - int rStatus; - CY_DEVICE *device = NULL; - libusb_device_handle *devHandle; - UINT16 wValue = 0, wIndex, wLength, bytesPending = 0; - UINT8 bmRequestType, bmRequest; - UCHAR i2cStatus[CY_I2C_GET_STATUS_LEN]; - UINT16 scbIndex = 0; - bool mode = CY_I2C_MODE_READ; - UINT32 elapsedTime; - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if ((readBuffer == NULL) || (readBuffer->buffer == NULL) || (readBuffer->length == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - readBuffer->transferCount = 0; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_I2C) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not i2c ..Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (pthread_mutex_trylock (&device->readLock) == 0){ - scbIndex = device->interfaceNum; - if (scbIndex > 0) - scbIndex = 1; - i2cDataConfig->slaveAddress = ((i2cDataConfig->slaveAddress & 0x7F) | (scbIndex << 7)); - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_I2C_READ_CMD; - wValue = ((i2cDataConfig->isStopBit) | (i2cDataConfig->isNakBit << 1)); - wValue |= (((i2cDataConfig->slaveAddress) << 8)); - wIndex = readBuffer->length; - wLength = 0; - rStatus = CyI2cGetStatus (handle, mode, (UCHAR *)i2cStatus); - if (rStatus == CY_SUCCESS) - { - if ((i2cStatus[0] & CY_I2C_ERROR_BIT)){ - CY_DEBUG_PRINT_ERROR ("CY:Error device busy ... function is %s \n", __func__); - pthread_mutex_unlock (&device->readLock); - return CY_ERROR_I2C_DEVICE_BUSY; - } - } - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == LIBUSB_ERROR_NO_DEVICE){ - CY_DEBUG_PRINT_ERROR ("CY:Error device disconnected ... \n"); - pthread_mutex_unlock (&device->readLock); - return CY_ERROR_DEVICE_NOT_FOUND; - } - if (rStatus < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error in sending Read vendor command ... Libusb Error is %d .. Function is %s \n", rStatus, __func__); - pthread_mutex_unlock (&device->readLock); - return CY_ERROR_I2C_DEVICE_BUSY; - } - //Hoping that previous calls do not take much time!! -#ifdef CY_I2C_ENABLE_PRECISE_TIMING - startI2cTick(false); -#endif - rStatus = libusb_bulk_transfer (devHandle, device->inEndpoint, readBuffer->buffer, readBuffer->length, - (int*)&readBuffer->transferCount, ioTimeout); -#ifdef CY_I2C_ENABLE_PRECISE_TIMING - elapsedTime = getI2cLapsedTime(false); - //Giving an extra 10 msec to notification to findout the status - ioTimeout = (ioTimeout - elapsedTime); - if (ioTimeout == 0) - ioTimeout = 10; -#endif - if (rStatus == LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY: Successfully read i2c data.. %d bytes Read ...\n", readBuffer->transferCount); - bytesPending = readBuffer->length; - rStatus = waitForNotification (handle, &bytesPending, ioTimeout); - if (rStatus) - readBuffer->transferCount = (readBuffer->length - bytesPending); - else - readBuffer->transferCount = readBuffer->length; - pthread_mutex_unlock (&device->readLock); - return rStatus; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Timeout error ..Function is %s\n", __func__); - pthread_mutex_unlock (&device->readLock); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - CY_DEBUG_PRINT_INFO ("Pipe Error \n"); - rStatus = CyResetPipe (handle, device->outEndpoint); - if (rStatus != CY_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("Error in reseting the pipe \n"); - } - else - CY_DEBUG_PRINT_INFO ("Reset pipe succeded \n"); - - rStatus = CyI2cGetStatus (handle, mode, (UCHAR *)i2cStatus); - if (rStatus == CY_SUCCESS) - { - CyI2cReset (handle, mode); - rStatus = handleI2cError (i2cStatus[0]); - pthread_mutex_unlock (&device->readLock); - return rStatus; - } - else { - pthread_mutex_unlock (&device->readLock); - return CY_ERROR_I2C_DEVICE_BUSY; - } - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - pthread_mutex_unlock (&device->readLock); - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected ....Function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - pthread_mutex_unlock (&device->readLock); - CY_DEBUG_PRINT_ERROR ("CY:Error time out ....Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - pthread_mutex_unlock (&device->readLock); - CY_DEBUG_PRINT_ERROR ("CY: Error in doing I2C read ...libusb error is %d function is %s!\n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } - } - else{ - CY_DEBUG_PRINT_ERROR ("CY: Error API busy in servicing previous request... function is %s!\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API writes I2C data into the specified interface of the device - */ -CY_RETURN_STATUS CyI2cWrite ( - CY_HANDLE handle, - CY_I2C_DATA_CONFIG *i2cDataConfig, - CY_DATA_BUFFER *writeBuffer, - UINT32 ioTimeout - ) -{ - int rStatus; - UCHAR i2cStatus[CY_I2C_GET_STATUS_LEN]; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue = 0, wIndex, wLength, bytesPending = 0; - UINT8 bmRequestType, bmRequest; - UINT16 scbIndex = 0; - BOOL mode = CY_I2C_MODE_WRITE; - UINT32 elapsedTime; - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if ((writeBuffer == NULL) || (writeBuffer->buffer == NULL) || (writeBuffer->length == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - writeBuffer->transferCount = 0; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - scbIndex = device->interfaceNum; - if (device->deviceType != CY_TYPE_I2C){ - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not i2c ..Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (pthread_mutex_trylock (&device->writeLock) == 0){ - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_I2C_WRITE_CMD; - i2cDataConfig->slaveAddress = ((i2cDataConfig->slaveAddress & 0x7F) | (scbIndex << 7)); - wValue = ((i2cDataConfig->isStopBit)); - wValue |= (((i2cDataConfig->slaveAddress) << 8)); - wIndex = (UINT16)(writeBuffer->length); - wLength = 0; - CY_DEBUG_PRINT_INFO ("wValue is %x \n", wValue); - //Send I2C write vendor command before actually sending the data over bulk ep - rStatus = CyI2cGetStatus (handle, mode, (UCHAR *)i2cStatus); - if (rStatus == CY_SUCCESS) - { - if ((i2cStatus[0] & CY_I2C_ERROR_BIT)){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Device busy ... function is %s \n", __func__); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_I2C_DEVICE_BUSY; - } - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE){ - CY_DEBUG_PRINT_ERROR ("CY:Error device not found \n"); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_DEVICE_NOT_FOUND; - } - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == LIBUSB_ERROR_NO_DEVICE){ - CY_DEBUG_PRINT_ERROR ("CY:Error device not found \n"); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_DEVICE_NOT_FOUND; - } - if (rStatus < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error in sending write vendor command ... Libusb Error is %d \n", rStatus); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_I2C_DEVICE_BUSY; - } - //After vendor command is sent send the actual data to be sent to i2c devic -#ifdef CY_I2C_ENABLE_PRECISE_TIMING - startI2cTick(true); -#endif - rStatus = libusb_bulk_transfer (devHandle, device->outEndpoint, writeBuffer->buffer, writeBuffer->length, - (int*)&(writeBuffer->transferCount), ioTimeout); -#ifdef CY_I2C_ENABLE_PRECISE_TIMING - elapsedTime = getI2cLapsedTime(true); - ioTimeout = (ioTimeout - elapsedTime); - //Giving an extra 10 msec to notification to findout the status - if (ioTimeout == 0) - ioTimeout = 10; -#endif - //Once the data is sent to usbserial, check if it was actually written to i2c device. - if (rStatus == LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY: Successfully written i2c data.. %d bytes written ...\n", writeBuffer->transferCount); - bytesPending = writeBuffer->length; - rStatus = waitForNotification (handle, &bytesPending, ioTimeout); - if (rStatus) - writeBuffer->transferCount = (writeBuffer->length - bytesPending); - else - writeBuffer->transferCount = writeBuffer->length; - pthread_mutex_unlock (&device->writeLock); - return rStatus; - } - //Transaction is stallled when we hit some I2C error while the transfer - //was going on. After we hit this error clear stall and check why we hit this by - //CyGetStatus. - else if (rStatus == LIBUSB_ERROR_PIPE){ - CY_DEBUG_PRINT_INFO ("CY:Pipe Error ... Function is %s\n", __func__); - rStatus = CyResetPipe (handle, device->outEndpoint); - if (rStatus != CY_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in reseting the pipe ..Function is %s\n", __func__); - } - else - CY_DEBUG_PRINT_INFO ("Reset pipe succeded \n"); - - rStatus = CyI2cGetStatus (handle, mode, (UCHAR *)i2cStatus); - if (rStatus == CY_SUCCESS) - { - CyI2cReset (handle, mode); - rStatus = handleI2cError (i2cStatus[0]); - pthread_mutex_unlock (&device->writeLock); - return rStatus; - } - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected ....Function is %s\n", __func__); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Error time out ....Function is %s\n", __func__); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_IO_TIMEOUT; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY: Error in doing I2C read ...libusb error is %d function is %s!\n", rStatus, __func__); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_REQUEST_FAILED; - } - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:API busy with servicing previous request... function is %s!\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - return CY_ERROR_REQUEST_FAILED; -} -/* - This Api gets the current status of the I2C data transaction - */ -CY_RETURN_STATUS CyI2cGetStatus ( - CY_HANDLE handle, - bool mode, - UCHAR *i2cStatus - ) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue, wIndex, wLength, bmRequestType, bmRequest;; - UINT16 scbIndex = 0; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - if (i2cStatus == NULL) - return CY_ERROR_INVALID_PARAMETER; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_I2C) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not i2c .. \n"); - return CY_ERROR_REQUEST_FAILED; - } - scbIndex = device->interfaceNum; - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_I2C_GET_STATUS_CMD; - wValue = ((scbIndex << CY_SCB_INDEX_POS) | mode); - wIndex = 0; - wLength = CY_I2C_GET_STATUS_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,wValue, wIndex, (UCHAR*)i2cStatus, wLength, ioTimeout); - if (rStatus < CY_I2C_GET_STATUS_LEN){ - CY_DEBUG_PRINT_INFO ("CY:Error in sending I2C Get Status command...Libusb error is %d\n", rStatus); - return rStatus; - } - return CY_SUCCESS; -} -/* - This Api resets the I2C module - */ -CY_RETURN_STATUS CyI2cReset ( - CY_HANDLE handle, - BOOL resetMode - ) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue, wIndex, wLength, bmRequestType, bmRequest; - UINT16 scbIndex = 0; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_I2C) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not i2c .. \n"); - return CY_ERROR_REQUEST_FAILED; - } - scbIndex = device->interfaceNum; - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_I2C_RESET_CMD; - wValue = ((scbIndex << CY_SCB_INDEX_POS) | resetMode ); - wIndex = 0; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error in sending I2C Reset command ..libusb error is %d\n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } - return CY_SUCCESS; -} -static void LIBUSB_CALL i2c_notification_cb(struct libusb_transfer *transfer) -{ - UINT32 *completed = transfer->user_data; - *completed = 1; -} - -CY_RETURN_STATUS waitForNotification (CY_HANDLE handle, UINT16 *bytesPending, UINT32 ioTimeout){ - - UINT32 transferCompleted = 0, length = CY_I2C_EVENT_NOTIFICATION_LEN; - CY_DEVICE *device; - libusb_device_handle *devHandle; - struct libusb_transfer *transfer; - CY_RETURN_STATUS errorStatus, rStatus; - UCHAR i2cStatus[CY_I2C_EVENT_NOTIFICATION_LEN]; - struct timeval time; - - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - transfer = libusb_alloc_transfer(0); - if (transfer == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error in allocating trasnfer \n"); - errorStatus = CY_ERROR_ALLOCATION_FAILED; - (*bytesPending) = 0; - return errorStatus; - //callbackFn (errorStatus, 0); - } - libusb_fill_interrupt_transfer (transfer, devHandle, device->interruptEndpoint, i2cStatus, length, - i2c_notification_cb, &transferCompleted, ioTimeout); - if (libusb_submit_transfer (transfer)){ - CY_DEBUG_PRINT_ERROR ("CY:Error in submitting interrupt transfer ...\n"); - libusb_cancel_transfer (transfer); - libusb_free_transfer (transfer); - (*bytesPending) = 0; - //callbackFn (CY_ERROR_REQUEST_FAILED, 0); - return CY_ERROR_REQUEST_FAILED; - } - time.tv_sec = 0; - time.tv_usec = 50;//polling timeout. - while (transferCompleted == 0){ - libusb_handle_events_timeout (NULL, &time); - } - transferCompleted = 0; - if (transfer->status == LIBUSB_TRANSFER_COMPLETED){ - CY_DEBUG_PRINT_INFO ("CY:Info successfully recieved data on interrupt pipe length is %d \n", transfer->actual_length); - if (i2cStatus[0] & 0x80){ //Error notification is for write - if ((i2cStatus[0] & CY_I2C_ERROR_BIT)){ - CY_DEBUG_PRINT_INFO ("Bytes pending is %x %x %x", i2cStatus[0], i2cStatus[1], i2cStatus[2]); - if (i2cStatus[0] & 0x1E){ - //There was some error, so reset the i2c module and usb module - //of the device, so branch out of the loop(Check below for the errors reported). - rStatus = CyI2cReset (device, CY_I2C_MODE_WRITE); - if (rStatus != CY_SUCCESS) - CY_DEBUG_PRINT_INFO ("CY:i2c reset failed \n"); - //Report the amount of byte that were actually written - memcpy(bytesPending, &i2cStatus[1], 2); - errorStatus = handleI2cError (i2cStatus[0]); - } - } - else - errorStatus = CY_SUCCESS; - } - else //Error notification is for read - { - if ((i2cStatus[0] & CY_I2C_ERROR_BIT)){ - CY_DEBUG_PRINT_INFO ("Bytes pending is %x %x %x", i2cStatus[0], i2cStatus[1], i2cStatus[2]); - if (i2cStatus[0] & 0x1E){ - rStatus = CyI2cReset (device, CY_I2C_MODE_READ); - if (rStatus != CY_SUCCESS) - CY_DEBUG_PRINT_INFO ("CY:i2c reset failed \n"); - //Report the amount of byte that were actually written - memcpy(bytesPending, &i2cStatus[1], 2); - errorStatus = handleI2cError (i2cStatus[0]); - } - } - else - errorStatus = CY_SUCCESS; - } - libusb_free_transfer (transfer); - return errorStatus; - } - else{ - libusb_cancel_transfer (transfer); - if (transfer->status == LIBUSB_TRANSFER_TIMED_OUT){ - CY_DEBUG_PRINT_ERROR ("CY:Error Timeout in getting i2c transfer status ....\n"); - CyI2cGetStatus (handle, 1, (UCHAR *)&errorStatus); - errorStatus = CY_ERROR_IO_TIMEOUT; - } - if (transfer->status == LIBUSB_TRANSFER_OVERFLOW){ - CY_DEBUG_PRINT_ERROR ("CY:Error buffer overFlow in i2c transfer status ....\n"); - errorStatus = CY_ERROR_BUFFER_OVERFLOW; - } - if (transfer->status != LIBUSB_TRANSFER_COMPLETED || transfer->status != LIBUSB_TRANSFER_COMPLETED){ - CY_DEBUG_PRINT_ERROR ("CY:Error in i2c transfer status ... Libusb transfer error is %d \n", transfer->status); - errorStatus = CY_ERROR_REQUEST_FAILED; - } - libusb_free_transfer (transfer); - return CY_ERROR_REQUEST_FAILED; - } -} diff --git a/CyUSBSerial_SDK_Linux/linux/library/cyjtag.c b/CyUSBSerial_SDK_Linux/linux/library/cyjtag.c deleted file mode 100644 index f286a70..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/cyjtag.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - * JTAG routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" -/* - * This API enables the Jtag module - */ -CY_RETURN_STATUS CyJtagEnable ( - CY_HANDLE handle - ) -{ - UINT16 wValue, wIndex, wLength; - UINT16 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_JTAG) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not jtag ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_JTAG_ENABLE_CMD; - wValue = 0x00; - wIndex = 0; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus >= 0){ - CY_DEBUG_PRINT_INFO ("CY: JTAG enable successfully \n"); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - * This API disables the Jtag module - */ -CY_RETURN_STATUS CyJtagDisable ( - CY_HANDLE handle - ) -{ - UINT16 wValue, wIndex, wLength; - UINT16 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_JTAG) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not jtag ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_JTAG_DISABLE_CMD; - wValue = 0x00; - wIndex = 0; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus >= 0){ - CY_DEBUG_PRINT_INFO ("CY: JTAG disable successfully \n"); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error while enabling JTAG ..\n"); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error while enabling JTAG ...libusb error is %d function is %s!\n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - * This API is used to do jtag write - */ -CY_RETURN_STATUS CyJtagWrite ( - CY_HANDLE handle, - CY_DATA_BUFFER *writeBuffer, - UINT32 ioTimeout - ) -{ - int rStatus = 0; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue, wIndex, wLength; - UINT16 bmRequestType, bmRequest; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if ((writeBuffer == NULL) || (writeBuffer->buffer == NULL) || (writeBuffer->length == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_JTAG) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not jtag ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_JTAG_WRITE_CMD; - wValue = writeBuffer->length; - wIndex = 0; - wLength = 0; - writeBuffer->transferCount = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus < 0){ - CY_DEBUG_PRINT_ERROR ("CY: JTAG Vendor command failed %d...function is %s \n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } - rStatus = libusb_bulk_transfer (devHandle, CY_JTAG_OUT_EP, writeBuffer->buffer, writeBuffer->length, - (int*)&(writeBuffer->transferCount), ioTimeout); - if ((rStatus == CY_SUCCESS)) { - CY_DEBUG_PRINT_ERROR ("CY: Number of bytes written is .... %d \n", writeBuffer->transferCount); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:TimeOut error ...Function is %s %d\n", __func__, writeBuffer->transferCount); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - CY_DEBUG_PRINT_ERROR ("CY:Pipe error Function is %s \n", __func__); - CyResetPipe (handle, CY_JTAG_OUT_EP); - return CY_ERROR_PIPE_HALTED; - } - else if (rStatus == LIBUSB_ERROR_OVERFLOW){ - CY_DEBUG_PRINT_ERROR ("CY:Error Buffer Overflow..Function is %s \n", __func__); - return CY_ERROR_BUFFER_OVERFLOW; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected ....Function is %s \n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in Function %s...Libusb Error is %d !\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API is used to read JTAG data from device interface - */ -CY_RETURN_STATUS CyJtagRead ( - CY_HANDLE handle, - CY_DATA_BUFFER *readBuffer, - UINT32 ioTimeout - ) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue, wIndex, wLength; - UINT16 bmRequestType, bmRequest; - - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_JTAG_READ_CMD; - wValue = readBuffer->length; - wIndex = 0; - wLength = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if ((readBuffer == NULL) || (readBuffer->buffer == NULL) || (readBuffer->length == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_JTAG) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not jtag ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - readBuffer->transferCount = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus < 0){ - CY_DEBUG_PRINT_INFO ("CY: JTAG Vendor Command failed %d.. Function is %s \n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } - rStatus = libusb_bulk_transfer (devHandle, CY_JTAG_IN_EP, readBuffer->buffer, readBuffer->length, - (int*)&(readBuffer->transferCount), ioTimeout); - if (rStatus == CY_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY: Number of bytes read is .... %d \n", readBuffer->transferCount); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:TimeOut error ...Function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - CY_DEBUG_PRINT_ERROR ("CY:Pipe error Function is %s \n", __func__); - CyResetPipe (handle, CY_JTAG_IN_EP); - return CY_ERROR_PIPE_HALTED; - } - else if (rStatus == LIBUSB_ERROR_OVERFLOW){ - CY_DEBUG_PRINT_ERROR ("CY:Error Buffer Overflow..Function is %s \n", __func__); - return CY_ERROR_BUFFER_OVERFLOW; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected ....Function is %s \n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function is %s ...Libusb Error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} diff --git a/CyUSBSerial_SDK_Linux/linux/library/cymisc.c b/CyUSBSerial_SDK_Linux/linux/library/cymisc.c deleted file mode 100644 index 0321e39..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/cymisc.c +++ /dev/null @@ -1,584 +0,0 @@ -/* - * Miscellaneous routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" - -typedef struct NOTIFICATION_CB_PARAM{ - - CY_HANDLE handle; - CY_EVENT_NOTIFICATION_CB_FN notificationCbFn; - -}NOTIFICATION_CB_PARAM; -/* - This API is used to Read the Bootloder version - */ -CY_RETURN_STATUS CyGetFirmwareVersion( - CY_HANDLE handle, - CY_FIRMWARE_VERSION *firmwareVersion - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_GET_VERSION_CMD; - wValue = 0x00; - wIndex = 0x00; - wLength = CY_GET_FIRMWARE_VERSION_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)firmwareVersion, wLength, ioTimeout); - - if (rStatus > 0){ - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* -The API resets the device -*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyResetDevice ( - CY_HANDLE handle /*Valid device handle*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle \n"); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_DEVICE_RESET_CMD; - wValue = 0xA6B6; - wIndex = 0xADBA; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - //return buffer will tell the status of the command - if (rStatus == LIBUSB_SUCCESS) - return CY_SUCCESS; - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} - -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CySetGpioValue ( - CY_HANDLE handle, /*Valid device handle*/ - UINT8 gpioNumber, /*GPIO configuration value*/ - UINT8 value /*Value that needs to be set*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest, buffer[CY_GPIO_SET_LEN]; - int rStatus; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (value) - value = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_GPIO_SET_VALUE_CMD; - wValue = gpioNumber; - wIndex = value; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, buffer, wLength, ioTimeout); - if (rStatus >= 0){ - CY_DEBUG_PRINT_INFO ("CY: Get Configuration of GPIO succedded...size is %d \n", rStatus); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} - -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyGetGpioValue ( - CY_HANDLE handle, /*Valid device handle*/ - UINT8 gpioNumber, /*GPIO configuration value*/ - UINT8 *value /*Value that needs to be set*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest, buffer[CY_GPIO_GET_LEN]; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_GPIO_GET_VALUE_CMD; - wValue = gpioNumber; - wIndex = 0x00; - wLength = CY_GPIO_GET_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, buffer, wLength, ioTimeout); - if (rStatus == CY_GPIO_GET_LEN){ - CY_DEBUG_PRINT_INFO ("CY: Get GPIO Configuration succedded...size is %d \n", rStatus); - //return buffer will tell the status of the command - if (buffer[0] == 0){ - (*value) = buffer[1]; - return CY_SUCCESS; - } - else - return CY_ERROR_REQUEST_FAILED; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -static void LIBUSB_CALL uart_notification_cb(struct libusb_transfer *transfer) -{ - UINT32 *completed = transfer->user_data; - *completed = 1; -} - -void* uartSetEventNotifcation (void *inputParameters) -{ - int rStatus, transferCompleted = 0, length = CY_UART_EVENT_NOTIFICATION_LEN; - CY_DEVICE *device; - libusb_device_handle *devHandle; - struct libusb_transfer *transfer; - UINT16 errorStatus = 0; - UCHAR uartStatus[CY_UART_EVENT_NOTIFICATION_LEN]; - struct timeval time; - CY_EVENT_NOTIFICATION_CB_FN callbackFn; - NOTIFICATION_CB_PARAM *cbParameters = (NOTIFICATION_CB_PARAM*)inputParameters; - callbackFn = cbParameters->notificationCbFn; - - device = (CY_DEVICE *)cbParameters->handle; - devHandle = device->devHandle; - callbackFn = cbParameters->notificationCbFn; - device->uartTransfer = transfer = libusb_alloc_transfer(0); - if (transfer == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error in allocating trasnfer \n"); - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - callbackFn(errorStatus); - goto END; - } - while (device->uartCancelEvent == false){ - libusb_fill_interrupt_transfer (transfer, devHandle, device->interruptEndpoint, uartStatus, length, - uart_notification_cb, &transferCompleted, CY_EVENT_NOTIFICATION_TIMEOUT); - rStatus = libusb_submit_transfer (transfer); - if (rStatus){ - CY_DEBUG_PRINT_ERROR ("CY:Error submitting uart interrupt token ... Libusb error is %d\n", rStatus); - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - callbackFn(errorStatus); - break; - } - time.tv_sec = 0; - time.tv_usec = 50;//polling timeout. - while (transferCompleted == 0){ - libusb_handle_events_timeout (NULL, &time); - } - transferCompleted = 0; - if (transfer->status == LIBUSB_TRANSFER_COMPLETED){ - CY_DEBUG_PRINT_INFO ("Successfully read and recieved data %d \n", transfer->actual_length); - memcpy (&errorStatus, &uartStatus[8], 2); - printf ("%x %x ", uartStatus[8], uartStatus[9]); - callbackFn (errorStatus); - errorStatus = 0; - } - else{ - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - if (device->uartCancelEvent == false){ - CY_DEBUG_PRINT_ERROR ("CY:Error uart interrupt thread encountered error... Libusb transmission error is %d \n", transfer->status); - device->uartThreadId = 0; - callbackFn(errorStatus); - } - break; - } - } - CY_DEBUG_PRINT_INFO ("Exiting notification thread \n"); - libusb_free_transfer (transfer); -END: - free (inputParameters); - return NULL; -} - -static void LIBUSB_CALL spi_notification_cb(struct libusb_transfer *transfer) -{ - UINT32 *completed = transfer->user_data; - *completed = 1; -} - -void* spiSetEventNotifcation (void *inputParameters) -{ - int transferCompleted = 0, length = CY_SPI_EVENT_NOTIFICATION_LEN; - CY_DEVICE *device; - libusb_device_handle *devHandle; - struct libusb_transfer *transfer; - UINT8 spiStatus = 0; - UINT16 errorStatus = 0; - struct timeval time; - CY_EVENT_NOTIFICATION_CB_FN callbackFn; - NOTIFICATION_CB_PARAM *cbParameters = (NOTIFICATION_CB_PARAM*)inputParameters; - - callbackFn = cbParameters->notificationCbFn; - device = (CY_DEVICE *)cbParameters->handle; - devHandle = device->devHandle; - callbackFn = cbParameters->notificationCbFn; - device->spiTransfer = transfer = libusb_alloc_transfer(0); - if (transfer == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error in allocating trasnfer \n"); - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - callbackFn (errorStatus); - goto END; - } - libusb_fill_interrupt_transfer (transfer, devHandle, device->interruptEndpoint, &spiStatus, length, - spi_notification_cb, &transferCompleted, CY_EVENT_NOTIFICATION_TIMEOUT); - while (device->spiCancelEvent == false){ - if (libusb_submit_transfer (transfer)){ - CY_DEBUG_PRINT_ERROR ("CY:Error submitting spi interrupt token ... \n"); - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - callbackFn(errorStatus); - break; - } - time.tv_sec = 0; - time.tv_usec = 50;//polling timeout. - while (transferCompleted == 0){ - libusb_handle_events_timeout (NULL, &time); - } - transferCompleted = 0; - if (transfer->status == LIBUSB_TRANSFER_COMPLETED){ - CY_DEBUG_PRINT_INFO ("Successfully read and recieved data %d \n", transfer->actual_length); - if (spiStatus & CY_SPI_UNDERFLOW_ERROR){ - errorStatus |= (CY_SPI_TX_UNDERFLOW_BIT); - } - if (spiStatus & CY_SPI_BUS_ERROR){ - errorStatus |= (CY_SPI_BUS_ERROR_BIT); - } - callbackFn (errorStatus); - errorStatus = 0; - } - else{ - spiStatus |= CY_ERROR_EVENT_FAILED_BIT; - if (device->spiCancelEvent == false){ - device->spiThreadId = 0; - CY_DEBUG_PRINT_ERROR ("CY:Error spi interrupt thread was cancelled... Libusb transmission error is %d \n", transfer->status); - callbackFn (spiStatus); - } - break; - } - } - libusb_free_transfer (transfer); -END: - - free (inputParameters); - pthread_exit (NULL); - return NULL; -} - -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CySetEventNotification( - CY_HANDLE handle, /*Valid handle to communicate with device*/ - CY_EVENT_NOTIFICATION_CB_FN notificationCbFn /*Call back function in case on error during Uart data transfers*/ - ) -{ - CY_DEVICE *device; - NOTIFICATION_CB_PARAM *args = NULL; - int ret; - pthread_t threadID; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (notificationCbFn == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE*)handle; - pthread_mutex_lock (&device->notificationLock); - args = (NOTIFICATION_CB_PARAM *)malloc (sizeof (NOTIFICATION_CB_PARAM)); - args->handle = handle; - args->notificationCbFn = notificationCbFn; - if (device->deviceType == CY_TYPE_SPI){ - if (device->spiThreadId != 0) { - CY_DEBUG_PRINT_ERROR ("CY:Error already notification thread exists ... Function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_STATUS_MONITOR_EXIST; - } - ret = pthread_create (&threadID, NULL, spiSetEventNotifcation, (void *) args); - if (ret == 0){ - device->spiThreadId = threadID; - pthread_mutex_unlock (&device->notificationLock); - return CY_SUCCESS; - } - else { - device->spiThreadId = 0; - free (args); - pthread_mutex_unlock (&device->notificationLock); - CY_DEBUG_PRINT_ERROR ("CY:Error creating spi notification thread ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - } - else if (device->deviceType == CY_TYPE_UART){ - if (device->uartThreadId != 0) { - CY_DEBUG_PRINT_ERROR ("CY:Error already notification thread exists ... Function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_STATUS_MONITOR_EXIST; - } - ret = pthread_create (&threadID, NULL, uartSetEventNotifcation, (void *) args); - if (ret == 0){ - device->uartThreadId = threadID; - pthread_mutex_unlock (&device->notificationLock); - return CY_SUCCESS; - } - else { - device->uartThreadId = 0; - free (args); - pthread_mutex_unlock (&device->notificationLock); - CY_DEBUG_PRINT_ERROR ("CY:Error creating uart notification thread ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error unknown device type ....Function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_REQUEST_FAILED; - } -} -/*The API is used to cancel the uart Event notification*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyAbortEventNotification( - CY_HANDLE handle /*Valid handle to communicate with device*/ - ) -{ - CY_DEVICE *device; - device = (CY_DEVICE*)handle; - pthread_mutex_lock (&device->notificationLock); - if (device->deviceType == CY_TYPE_UART){ - if ((device->uartThreadId == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error uart event notification not created ....function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_REQUEST_FAILED; - } - device->uartCancelEvent = true; - libusb_cancel_transfer (device->uartTransfer); - pthread_join (device->uartThreadId, NULL); - device->uartThreadId = 0; - device->uartCancelEvent = false; - pthread_mutex_unlock (&device->notificationLock); - return CY_SUCCESS; - } - else if (device->deviceType == CY_TYPE_SPI){ - if ((device->spiThreadId == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error spi event notification not created ....function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_REQUEST_FAILED; - } - device->spiCancelEvent = true; - libusb_cancel_transfer (device->spiTransfer); - pthread_join (device->spiThreadId, NULL); - device->spiThreadId = 0; - device->spiCancelEvent = false; - pthread_mutex_unlock (&device->notificationLock); - return CY_SUCCESS; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error.. unknown device type ....function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_REQUEST_FAILED; - } -} -/* -The API is used to programme user flash area -*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyProgUserFlash ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER *progBuffer, /*data buffer containing buffer address, length to write*/ - UINT32 flashAddress, /*Address to the data is written*/ - UINT32 ioTimeout /*Timeout value of the API*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - if ((progBuffer == NULL) || (progBuffer->buffer == NULL)) - return CY_ERROR_INVALID_PARAMETER; - - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_PROG_USER_FLASH_CMD; - wValue = 0; - wIndex = flashAddress; - wLength = progBuffer->length; - - CY_DEBUG_PRINT_INFO ("CY:The Length is %d , Value is %d and index is %d\n", wLength, wValue, wIndex); - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, progBuffer->buffer, wLength, ioTimeout); - if (rStatus > 0){ - (progBuffer->transferCount) = rStatus; - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - (progBuffer->transferCount) = 0; - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - (progBuffer->transferCount) = 0; - return CY_ERROR_REQUEST_FAILED; - } -} -/* -The API is used to programme user flash area -*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyReadUserFlash ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER *readBuffer, /*data buffer containing buffer address, length to write*/ - UINT32 flashAddress, /*Address to the data is written*/ - UINT32 ioTimeout /*Timeout value of the API*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - if ((readBuffer == NULL) || (readBuffer == NULL)) - return CY_ERROR_INVALID_PARAMETER; - - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_READ_USER_FLASH_CMD; - wValue = 0; - wIndex = flashAddress; - wLength = readBuffer->length; - - CY_DEBUG_PRINT_INFO ("CY:The Length is %d , Value is %d and index is %d\n", wLength, wValue, wIndex); - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, readBuffer->buffer, wLength, ioTimeout); - if (rStatus > 0){ - (readBuffer->transferCount) = rStatus; - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - (readBuffer->transferCount) = 0; - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - (readBuffer->transferCount) = 0; - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api is used to get the signature of the device. It would be CYUS when we are in actual device mode - and CYBL when we are bootloader modeñ - */ -CY_RETURN_STATUS CyGetSignature ( - CY_HANDLE handle, - UCHAR *signature - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_GET_SIGNATURE_CMD; - wValue = 0x00; - wIndex = 0x00; - wLength = CY_GET_SIGNATURE_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)signature, wLength, ioTimeout); - if (rStatus > 0){ - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} diff --git a/CyUSBSerial_SDK_Linux/linux/library/cyphdc.c b/CyUSBSerial_SDK_Linux/linux/library/cyphdc.c deleted file mode 100644 index 9dd44b9..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/cyphdc.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * PHDC routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include "CyUSBCommon.h" -/* - PHDC clear feature -*/ -CY_RETURN_STATUS CyPhdcClrFeature (CY_HANDLE handle) -{ - - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_PHDC_CLR_FEATURE; - wValue = CY_PHDC_CLR_FEATURE_WVALUE; - wIndex = device->interfaceNum; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == 0) - return CY_SUCCESS; - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } - return CY_SUCCESS; -} -/* - PHDC set feature -*/ -CY_RETURN_STATUS CyPhdcSetFeature (CY_HANDLE handle) -{ - - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_PHDC_SET_FEATURE; - wValue = CY_PHDC_SET_FEATURE_WVALUE; - wIndex = device->interfaceNum; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == 0) - return CY_SUCCESS; - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - PHDC clear feature -*/ -CY_RETURN_STATUS CyPhdcGetStatus (CY_HANDLE handle, UINT16 *dataStatus) -{ - - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_CLASS_INTERFACE_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_PHDC_GET_DATA_STATUS; - wValue = 0x00; - wIndex = device->interfaceNum; - wLength = CY_PHDC_GET_STATUS_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)dataStatus, wLength, ioTimeout); - if (rStatus > 0) - return CY_SUCCESS; - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} diff --git a/CyUSBSerial_SDK_Linux/linux/library/cyspi.c b/CyUSBSerial_SDK_Linux/linux/library/cyspi.c deleted file mode 100644 index 56beee5..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/cyspi.c +++ /dev/null @@ -1,644 +0,0 @@ -/* - * SPI routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" -#include -#include -#pragma pack (1) -typedef struct args { - CY_HANDLE handle; - UCHAR *readBuffer; - UINT32 length; - UINT32 ioTimeout; - CY_RETURN_STATUS rStatus; - UINT32 transferCount; -}args; - -typedef struct -{ - UINT32 frequency; - UINT8 dataWidth; - UCHAR mode; - UCHAR xferMode; - BOOL isMsbFirst; - BOOL isMaster; - BOOL isContinuous; - BOOL isSelectPrecede; - BOOL cpha; - BOOL cpol; - BOOL isLoopback; - UCHAR reserver[2]; -} CyUsSpiConfig_t; -#pragma pack() - -struct timeval startSpiTimeWrite, endSpiTimeWrite, startSpiTimeRead, endSpiTimeRead; -//Timer helper functions for proper timing -void startSpiTick (bool isWrite) { - if (isWrite) - gettimeofday (&startSpiTimeWrite, NULL); - else - gettimeofday (&startSpiTimeRead, NULL); -} - -UINT32 getSpiLapsedTime (bool isWrite){ - - signed int currentTime_sec, currentTime_usec, currentTime; - if (isWrite){ - gettimeofday (&endSpiTimeWrite, NULL); - currentTime_sec = (endSpiTimeWrite.tv_sec - startSpiTimeWrite.tv_sec) * 1000; - currentTime_usec = ((endSpiTimeWrite.tv_usec - startSpiTimeWrite.tv_usec)) / 1000; - currentTime = currentTime_sec + currentTime_usec; - return (unsigned int)currentTime; - } - else{ - gettimeofday (&endSpiTimeRead, NULL); - currentTime_sec = (endSpiTimeRead.tv_sec - startSpiTimeRead.tv_sec) * 1000; - currentTime_usec = ((endSpiTimeRead.tv_usec - startSpiTimeRead.tv_usec)) / 1000; - currentTime = currentTime_sec + currentTime_usec; - return (unsigned int)currentTime; - } -} -/* - This API gets the current SPI config - for the particluar interface of the device - */ -CY_RETURN_STATUS CyGetSpiConfig ( - CY_HANDLE handle, - CY_SPI_CONFIG *spiConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT16 bmRequestType, bmRequest; - CyUsSpiConfig_t localSpiConfig; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - UINT8 scbIndex = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (spiConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not spi ..Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (device->interfaceNum > 0) - scbIndex = 1; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_SPI_GET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0; - wLength = CY_SPI_CONFIG_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localSpiConfig, wLength, ioTimeout); - if (rStatus == CY_SPI_CONFIG_LEN){ - //CY_DUMP_DATA ((unsigned char*)&localSpiConfig, wLength); - CY_DEBUG_PRINT_INFO ("CY: Read SPI config successfully %d\n", rStatus); - spiConfig->frequency = localSpiConfig.frequency; - spiConfig->dataWidth = localSpiConfig.dataWidth; - spiConfig->protocol = localSpiConfig.mode; - spiConfig->isMsbFirst = localSpiConfig.isMsbFirst; - spiConfig->isMaster = localSpiConfig.isMaster; - spiConfig->isContinuousMode = localSpiConfig.isContinuous; - spiConfig->isSelectPrecede = localSpiConfig.isSelectPrecede; - spiConfig->isCpha = localSpiConfig.cpha; - spiConfig->isCpol = localSpiConfig.cpol; - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ... Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s...libusb error is %d !\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API sets SPI config of the device for that - interface - */ -CY_RETURN_STATUS CySetSpiConfig ( - CY_HANDLE handle, - CY_SPI_CONFIG *spiConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - CyUsSpiConfig_t localSpiConfig; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - UINT8 scbIndex = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (spiConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not spi ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (spiConfig->frequency < 1000 || spiConfig->frequency > 3000000){ - CY_DEBUG_PRINT_ERROR ("CY:Error frequency trying to set in out of range ... Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (spiConfig->protocol == CY_SPI_TI){ - if (!(spiConfig->isCpol == false && spiConfig->isCpha == true && spiConfig->isContinuousMode == false)){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Wrong configuration for SPI TI mode \n"); - return CY_ERROR_REQUEST_FAILED; - } - } - if (spiConfig->protocol == CY_SPI_NS){ - if (!(spiConfig->isCpol == false && spiConfig->isCpha == false && spiConfig->isSelectPrecede == false)){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Wrong configuration for SPI ti mode \n"); - return CY_ERROR_REQUEST_FAILED; - } - } - else{ - if (spiConfig->isSelectPrecede != false){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Wrong configuration for SPI motorola mode \n"); - return CY_ERROR_REQUEST_FAILED; - } - } - if (device->interfaceNum > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SPI_SET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0; - wLength = CY_SPI_CONFIG_LEN; - //We will not expose all the spi config structure elements to user. - //Fill in rest of the values. - - memset (&localSpiConfig, 0, CY_SPI_CONFIG_LEN); - localSpiConfig.frequency = spiConfig->frequency; - localSpiConfig.dataWidth = spiConfig->dataWidth; - localSpiConfig.mode = spiConfig->protocol; - localSpiConfig.isMsbFirst = spiConfig->isMsbFirst; - localSpiConfig.isMaster = spiConfig->isMaster; - localSpiConfig.isContinuous = spiConfig->isContinuousMode; - localSpiConfig.isSelectPrecede = spiConfig->isSelectPrecede; - localSpiConfig.cpha = spiConfig->isCpha; - localSpiConfig.cpol = spiConfig->isCpol; - //CY_DUMP_DATA ((unsigned char*)&localSpiConfig, wLength); - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localSpiConfig, wLength, ioTimeout); - if (rStatus == CY_SPI_CONFIG_LEN){ - CY_DEBUG_PRINT_INFO ("CY: Setting SPI config success ...\n"); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ... !libusb error is %d\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/*Api will reset the spi module*/ -CY_RETURN_STATUS CySpiReset (CY_HANDLE handle) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue, wIndex, wLength, bmRequestType, bmRequest;; - UINT16 scbIndex = 0; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not spi ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - scbIndex = device->interfaceNum; - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_SPI_RESET_CMD; - wValue = ((scbIndex << CY_SCB_INDEX_POS)); - wIndex = 0; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error in sending spi reset command...Libusb error is %d\n", rStatus); - return rStatus; - } - return CY_SUCCESS; -} -/* - This API reads SPI data from the specified interface of the device - interface - */ - -static void LIBUSB_CALL spi_read_cb(struct libusb_transfer *transfer) -{ - UINT32 *completed = transfer->user_data; - *completed = 1; -} -//We adopted for async method here because there are 2 thread polling same fd -// i.e both read and write are polling same fd when one event triggers and other one is -//not completed then another thread will wait for more than 60sec. -CY_RETURN_STATUS CySpiRead ( - CY_HANDLE handle, - CY_DATA_BUFFER *readBuffer, - UINT32 ioTimeout - ) -{ - struct libusb_transfer *readTransfer; - CY_DEVICE *device; - libusb_device_handle *devHandle; - int readCompleted = 0; - struct timeval time; - int r; - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - readBuffer->transferCount = 0; - readTransfer = libusb_alloc_transfer(0); - if (readTransfer == NULL){ - CY_DEBUG_PRINT_ERROR("CY:Error in allocating transfers \n"); - return CY_ERROR_ALLOCATION_FAILED; - } - libusb_fill_bulk_transfer(readTransfer, devHandle, device->inEndpoint, readBuffer->buffer, readBuffer->length, - spi_read_cb, &readCompleted, ioTimeout); - libusb_submit_transfer (readTransfer); - time.tv_sec = (ioTimeout / 1000); - time.tv_usec = ((ioTimeout % 1000) * 1000);//polling timeout. - while (readCompleted == 0){ - r = libusb_handle_events_timeout_completed(NULL, &time, &readCompleted); - if (r < 0) { - if (r == LIBUSB_ERROR_INTERRUPTED) - continue; - libusb_cancel_transfer(readTransfer); - while (!readCompleted) - if (libusb_handle_events_completed(NULL, &readCompleted) < 0) - break; - readBuffer->transferCount = readTransfer->actual_length; - libusb_free_transfer(readTransfer); - return r; - } - } - if ((readTransfer->status == LIBUSB_TRANSFER_COMPLETED)){ - readBuffer->transferCount = readTransfer->actual_length; - libusb_free_transfer (readTransfer); - return CY_SUCCESS; - } - else{ - if (readTransfer->status == LIBUSB_TRANSFER_TIMED_OUT){ - //We should not be hitting this case.. As the time out is infinite!! - CY_DEBUG_PRINT_ERROR ("CY:Timeout error in doing SPI read/write .... %d Libusb errors %d\n", - readTransfer->actual_length,readTransfer->status); - readBuffer->transferCount = readTransfer->actual_length; - CySpiReset (handle); - libusb_free_transfer (readTransfer); - return CY_ERROR_IO_TIMEOUT; - } - if (readTransfer->status == LIBUSB_TRANSFER_OVERFLOW){ - //Need to handle this properly! - CY_DEBUG_PRINT_ERROR ("CY:OverFlow error in doing SPI read/write .... Libusb errors %d %d \n", - readTransfer->status, readTransfer->actual_length); - readBuffer->transferCount = readTransfer->actual_length; - CySpiReset (handle); - libusb_free_transfer (readTransfer); - return CY_ERROR_BUFFER_OVERFLOW; - } - if (readTransfer->status != LIBUSB_TRANSFER_COMPLETED){ - CY_DEBUG_PRINT_ERROR ("CY:Error in doing SPI read/write .... Libusb errors are %d %d\n", - readTransfer->status, readTransfer->actual_length); - readBuffer->transferCount = readTransfer->actual_length; - CySpiReset (handle); - libusb_free_transfer (readTransfer); - //If timer is not completed then it implies we have timeout error - return CY_ERROR_REQUEST_FAILED; - } - } - return CY_ERROR_REQUEST_FAILED; -} -/*Internal SPI get status API for Write operation*/ -CY_RETURN_STATUS CyGetSpiStatus (CY_HANDLE handle, - int *spiStatus - ) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue, wIndex, wLength, bmRequestType, bmRequest;; - UINT16 scbIndex = 0; - UINT32 ioTimeout = 0; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not spi ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - scbIndex = device->interfaceNum; - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_SPI_GET_STATUS_CMD; - wValue = ((scbIndex << CY_SCB_INDEX_POS)); - wIndex = 0; - wLength = CY_SPI_GET_STATUS_LEN; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,wValue, wIndex, (UCHAR*)spiStatus, wLength, ioTimeout); - if (rStatus < CY_SPI_GET_STATUS_LEN){ - CY_DEBUG_PRINT_INFO ("CY:Error in sending spi Get Status command...Libusb error is %d\n", rStatus); - return rStatus; - } - return CY_SUCCESS; -} -/* Function to write on to SPI alone*/ -CY_RETURN_STATUS CySpiWrite ( - CY_HANDLE handle, - CY_DATA_BUFFER *writeBuffer, - UINT32 ioTimeout - ) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - int spiStatus = 1; - UINT32 newIoTimeout = ioTimeout, elapsedTime = 0, loopCount = 1; - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not spi ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - startSpiTick (true); - rStatus = libusb_bulk_transfer (devHandle, device->outEndpoint, writeBuffer->buffer, writeBuffer->length, - (int*)&(writeBuffer->transferCount), newIoTimeout); - elapsedTime = getSpiLapsedTime(true); - newIoTimeout = ioTimeout - elapsedTime; - //because we have a sleep of 1 msec after every getstatus - if (newIoTimeout) - loopCount = (newIoTimeout); - if ((rStatus == LIBUSB_SUCCESS)){ - CY_DEBUG_PRINT_INFO ("CY: Successfully written SPI data.. %d bytes Read ...\n", writeBuffer->transferCount); - while (loopCount){ - usleep (1000); - rStatus = CyGetSpiStatus (handle, &spiStatus); - if (rStatus == CY_SUCCESS){ - if (spiStatus == 0){ - return CY_SUCCESS; - } - } - else { - //Should never hit this case - CY_DEBUG_PRINT_ERROR ("CY:Error in getting spi status \n"); - return CY_ERROR_REQUEST_FAILED; - } - if (ioTimeout) - loopCount--; - } - if (loopCount == 0 && spiStatus > 0){ - writeBuffer->length = 0; - CySpiReset (handle); - return CY_ERROR_IO_TIMEOUT; - } - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Error TimeOut ...function is %s\n", __func__); - CySpiReset (handle); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - CY_DEBUG_PRINT_ERROR ("CY:Error Pipe error..function is %s\n", __func__); - CySpiReset (handle); - CyResetPipe (handle, device->outEndpoint); - return CY_ERROR_PIPE_HALTED; - } - else if (rStatus == LIBUSB_ERROR_OVERFLOW){ - CY_DEBUG_PRINT_ERROR ("CY:Error Buffer Overflow...function is %s\n", __func__); - return CY_ERROR_BUFFER_OVERFLOW; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY:Error Device Disconnected ...function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error in writing SPI data ...Libusb Error is %d and bytes read is %d!\n", rStatus, writeBuffer->transferCount); - return CY_ERROR_REQUEST_FAILED; - } - return CY_ERROR_REQUEST_FAILED; -}/* - API to wrap up the data - */ -void spiCollectData (void *inputParameters) { - - UINT32 readLength = 0, length; - CY_DATA_BUFFER readBuffer; - args *inputData = (args *) inputParameters; - UCHAR *buffer; - CY_RETURN_STATUS rStatus = CY_SUCCESS; - buffer = readBuffer.buffer = inputData->readBuffer; - length = readBuffer.length = inputData->length; - CY_HANDLE handle = inputData->handle; - int newTimeout = inputData->ioTimeout, elapsedTime; - while (readLength != length && newTimeout >= 0 && rStatus == CY_SUCCESS){ - //Get current time - //Buffer is pointing to next address where we are suppose to fill the data - readBuffer.buffer = &buffer[readLength]; - //Updated length which total length minus the total length of data read - readBuffer.length = length - readLength; - //Libusb fix for mac os!! - //ISSUE:when api times out in MAC it comes back and say read length = 0!! -#ifdef __APPLE__ - if (readBuffer.length > 64) - readBuffer.length = 64; -#endif - startSpiTick (false); - rStatus = CySpiRead (handle, &readBuffer, newTimeout); - elapsedTime = getSpiLapsedTime (false); - //Do this only when newTimeout is non zero - if (newTimeout){ - newTimeout = newTimeout - elapsedTime; - //If timeout is 0 then libusb considers that as infinite - //So forcefully make the loop to comeout - if (newTimeout <= 0) - rStatus = CY_ERROR_IO_TIMEOUT; - } - if (rStatus != CY_SUCCESS){ - readLength += readBuffer.transferCount; - break; - } - readLength += readBuffer.transferCount; - } - if (readLength != length && rStatus == CY_ERROR_IO_TIMEOUT){ - CySpiReset (handle); - } - inputData->transferCount = readLength; - inputData->rStatus = rStatus; -} -/* - * Api used to do read as well as write on spi - */ -CY_RETURN_STATUS CySpiReadWrite (CY_HANDLE handle, - CY_DATA_BUFFER *readBuffer, - CY_DATA_BUFFER *writeBuffer, - UINT32 ioTimeout) -{ - struct args threadParameter; - UINT32 ret; - pthread_t readThreadID = (pthread_t)0; - CY_DEVICE *device; - libusb_device_handle *devHandle; - CY_RETURN_STATUS rStatus; - unsigned short spiTransferMode = 0, scbIndex = 0; - UINT16 wValue, wIndex = 0, wLength; - UINT16 bmRequestType, bmRequest; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (readBuffer == NULL && writeBuffer == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not spi .. \n"); - return CY_ERROR_REQUEST_FAILED; - } - //Set both the bits and change it accordingly based on parameters parameters - spiTransferMode |= ((CY_SPI_READ_BIT) | (CY_SPI_WRITE_BIT)); - if ((readBuffer == NULL || readBuffer->length == 0 || readBuffer->buffer == NULL)) - spiTransferMode &= ~(CY_SPI_READ_BIT); - if ((writeBuffer == NULL || writeBuffer->length == 0 || writeBuffer->buffer == NULL)) - spiTransferMode &= ~(CY_SPI_WRITE_BIT); - //if none of the bit is set it implies parameters sent is wrong - if (spiTransferMode == 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (device->interfaceNum > 0) - scbIndex = 1; - //In read only case we take length to be equal to readBuffer length. - //But in write or in write/read case we take length = writeBuffer length. - if (spiTransferMode == 0x1) - wIndex = readBuffer->length; - else - wIndex = writeBuffer->length; - spiTransferMode |= (scbIndex << 15); - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SPI_READ_WRITE_CMD; - wValue = (spiTransferMode); - wLength = 0; - if (pthread_mutex_trylock (&device->writeLock) == 0){ - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, 5000); - if (rStatus){ - CY_DEBUG_PRINT_ERROR ("CY:Error Sending spi read write vendor command failed ... Libusb error is %d\n", rStatus); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_REQUEST_FAILED; - } - //Read Bit is not set then write Only - if (!(spiTransferMode & CY_SPI_READ_BIT)) { - writeBuffer->transferCount = 0; - if (readBuffer) - readBuffer->transferCount = 0; - rStatus = CySpiWrite (handle, writeBuffer, ioTimeout); - pthread_mutex_unlock (&device->writeLock); - return rStatus; - } - //Write Bit is not set then read only - if (!(spiTransferMode & CY_SPI_WRITE_BIT)) { - // We are starting a thread so that we can collect all the data - // FIX for short length packet issue on SPI. - readBuffer->transferCount = 0; - if (writeBuffer) - writeBuffer->transferCount = 0; - threadParameter.handle = handle; - threadParameter.readBuffer = readBuffer->buffer; - threadParameter.length = readBuffer->length; - threadParameter.ioTimeout = ioTimeout; - ret = pthread_create (&readThreadID, NULL, (void *)spiCollectData, (void *)&threadParameter); - if (ret){ - CY_DEBUG_PRINT_ERROR ("CY:Error in creating read thread ... Reading failed \n"); - pthread_mutex_unlock (&device->writeLock); - readBuffer->transferCount = 0; - return CY_ERROR_REQUEST_FAILED; - } - pthread_join (readThreadID, NULL); - readBuffer->transferCount = threadParameter.transferCount; - pthread_mutex_unlock (&device->writeLock); - return threadParameter.rStatus; - } - writeBuffer->transferCount = 0; - readBuffer->transferCount = 0; - threadParameter.handle = handle; - threadParameter.readBuffer = readBuffer->buffer; - threadParameter.length = readBuffer->length; - threadParameter.ioTimeout = ioTimeout; - ret = pthread_create (&readThreadID, NULL, (void *)spiCollectData, (void *)&threadParameter); - if (ret){ - CY_DEBUG_PRINT_ERROR ("CY:Error in creating read thread ... Reading failed \n"); - readBuffer->transferCount = 0; - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_REQUEST_FAILED; - } - rStatus = CySpiWrite (handle, writeBuffer, ioTimeout); - if (rStatus == CY_SUCCESS) { - pthread_join (readThreadID, NULL); - rStatus = threadParameter.rStatus; - readBuffer->transferCount = threadParameter.transferCount; - } - else { - pthread_join (readThreadID, NULL); - readBuffer->transferCount = threadParameter.transferCount; - } - pthread_mutex_unlock (&device->writeLock); - return rStatus; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error API busy in service previous request ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - return rStatus; -} diff --git a/CyUSBSerial_SDK_Linux/linux/library/cyuart.c b/CyUSBSerial_SDK_Linux/linux/library/cyuart.c deleted file mode 100644 index 6a6cbaf..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/cyuart.c +++ /dev/null @@ -1,755 +0,0 @@ -/* - * UART routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" -#pragma pack(1) -typedef struct { - CY_UART_BAUD_RATE baudRate; - UINT8 pinType; - UINT8 dataWidth; - UINT8 stopBits; - UINT8 mode; - UINT8 parity; - UINT8 isMsbFirst; - UINT8 txRetry;; - UINT8 rxInvertPolarity; - UINT8 rxIgnoreError; - UINT8 isFlowControl; - UINT8 isLoopBack; - UINT8 flags; -}CyUsUartConfig_t; -#pragma pack() -#define MAX_DEVICE_EP_SIZE 64 -/* -There is no way in the current library architecture -Data Queue size can exceed 4 Max EP size Pages. -*/ -#define NO_DATA_QUEUE_PAGES 4 -#define NUM_MAX_UART_SCB 2 - -typedef struct dtQueue{ - - UINT8 cyDataQueue[NO_DATA_QUEUE_PAGES * MAX_DEVICE_EP_SIZE]; - UINT8 pHeadPosition; - UINT8 pTailPosition; - UINT16 nTotalAvailableData; - -}CyDataQueue; - -CyDataQueue gSimpleDataQueue[NUM_MAX_UART_SCB]; - -//Timer helper functions for proper timing -UINT32 getUartLapsedTime (struct timeval startTime){ - - signed int currentTime_sec, currentTime_usec, currentTime; - struct timeval endTime; - gettimeofday (&endTime, NULL); - currentTime_sec = (endTime.tv_sec - startTime.tv_sec) * 1000; - currentTime_usec = ((endTime.tv_usec - startTime.tv_usec)) / 1000; - currentTime = currentTime_sec + currentTime_usec; - return (unsigned int)currentTime; -} - -// Queue Helper Functions.... - -void GetDataFromTheQueue( - UINT8 scbIndex, - PCY_DATA_BUFFER cyDataBuffer - ) -{ - UINT16 headPos = gSimpleDataQueue[scbIndex].pHeadPosition; - UINT16 nCheckForWrapAround = 0; - UINT8* buffer = &gSimpleDataQueue[scbIndex].cyDataQueue[headPos]; - UINT16 nMaxBufferSize = (NO_DATA_QUEUE_PAGES * MAX_DEVICE_EP_SIZE); - - // Parameter Validation. - if (gSimpleDataQueue[scbIndex].nTotalAvailableData == 0 ) return; // No data in the queue to return. - // Is there any Memory space in the queue to add more. - if (gSimpleDataQueue[scbIndex].pHeadPosition == gSimpleDataQueue[scbIndex].pTailPosition ) return; - // Is this Invalid Parameters? - if (scbIndex > 1 || cyDataBuffer == NULL || cyDataBuffer->length == 0) return; - - // Now make the transfer from the queue. - if (cyDataBuffer->length >= gSimpleDataQueue[scbIndex].nTotalAvailableData ) { - - - - nCheckForWrapAround = (gSimpleDataQueue[scbIndex].pHeadPosition + - gSimpleDataQueue[scbIndex].nTotalAvailableData); - - // Copy the data. - if (nCheckForWrapAround <= nMaxBufferSize ) - { - memcpy(cyDataBuffer->buffer, buffer, gSimpleDataQueue[scbIndex].nTotalAvailableData); - cyDataBuffer->transferCount = gSimpleDataQueue[scbIndex].nTotalAvailableData; - } - else { - // Queue Wrap around occurred. - UINT16 bufferLen1 = nMaxBufferSize - (gSimpleDataQueue[scbIndex].pHeadPosition); - UINT16 bufferLen2 = gSimpleDataQueue[scbIndex].pTailPosition; - memcpy(cyDataBuffer->buffer, buffer, bufferLen1); - buffer = &gSimpleDataQueue[scbIndex].cyDataQueue[0]; - memcpy(cyDataBuffer->buffer+bufferLen1, buffer, bufferLen2); - cyDataBuffer->transferCount = (bufferLen1 + bufferLen2); - } - - - // Reset the queue. - gSimpleDataQueue[scbIndex].pHeadPosition = 0; - gSimpleDataQueue[scbIndex].pTailPosition = 0; - gSimpleDataQueue[scbIndex].nTotalAvailableData = 0; - return; - } - - // Here the available data buffer length is more than the requested - // transfer size. - nCheckForWrapAround = (gSimpleDataQueue[scbIndex].pHeadPosition + - cyDataBuffer->length); - // Copy the data. - if (nCheckForWrapAround <= nMaxBufferSize ) - { - memcpy(cyDataBuffer->buffer, buffer, cyDataBuffer->length); - cyDataBuffer->transferCount = cyDataBuffer->length; - gSimpleDataQueue[scbIndex].pHeadPosition += cyDataBuffer->length; - } - else { - - // Queue Wrap around occurred. - UINT16 bufferLen1 = nMaxBufferSize - (gSimpleDataQueue[scbIndex].pHeadPosition); - UINT16 bufferLen2 = cyDataBuffer->length - bufferLen1; - memcpy(cyDataBuffer->buffer, buffer, bufferLen1); - buffer = &gSimpleDataQueue[scbIndex].cyDataQueue[0]; - memcpy(cyDataBuffer->buffer+bufferLen1, buffer, bufferLen2); - cyDataBuffer->transferCount = (bufferLen1 + bufferLen2); - gSimpleDataQueue[scbIndex].pHeadPosition = (UINT8)bufferLen2; - } - - gSimpleDataQueue[scbIndex].nTotalAvailableData -= cyDataBuffer->length; - -} - -void AddDataToQueue( - UINT8 scbIndex, - UINT8* buffer, - UINT8 length - ) -{ - - UINT16 tailPos = gSimpleDataQueue[scbIndex].pTailPosition; - UINT8* bufQueue = &gSimpleDataQueue[scbIndex].cyDataQueue[tailPos]; - UINT16 nMaxBufferSize = (NO_DATA_QUEUE_PAGES * MAX_DEVICE_EP_SIZE); - - // Parameter Validation. - if (gSimpleDataQueue[scbIndex].nTotalAvailableData >= nMaxBufferSize ) return; // No space in the queue. - // Is this Invalid Parameters? - if (scbIndex > 1 || buffer == NULL || length == 0) return; - // Can this new data addition happens? - if ( (gSimpleDataQueue[scbIndex].nTotalAvailableData + length) > nMaxBufferSize ) return; - - if ((tailPos + length) <= nMaxBufferSize ) - { - // Queue doesn't need wrap around for this new data addition. - memcpy(bufQueue, buffer, length); - gSimpleDataQueue[scbIndex].nTotalAvailableData += length; - gSimpleDataQueue[scbIndex].pTailPosition += length; - return; - } - else { - // Queue Wrap around occurred. - UINT16 bufferLen1 = nMaxBufferSize - (gSimpleDataQueue[scbIndex].pTailPosition); - UINT16 bufferLen2 = length - bufferLen1; - memcpy(bufQueue, buffer, bufferLen1); - bufQueue = &gSimpleDataQueue[scbIndex].cyDataQueue[0]; - memcpy(bufQueue, buffer+bufferLen1, bufferLen2); - gSimpleDataQueue[scbIndex].pTailPosition = (UINT8)bufferLen2; - gSimpleDataQueue[scbIndex].nTotalAvailableData += length; - } - -} - -/* - This API gets the current UART configuration of the - device.Such as GPIO's assigned, flowcontrol, BaudRate - etc. - */ -CY_RETURN_STATUS CyGetUartConfig ( - CY_HANDLE handle, - PCY_UART_CONFIG uartConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - CyUsUartConfig_t localUartConfig; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - UINT8 scbIndex = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (uartConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (device->interfaceNum > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_UART_GET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0; - wLength = CY_UART_CONFIG_LEN; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localUartConfig, wLength, ioTimeout); - //Since we are not exposing all the configuration elements - //parse and fill only relevant elements. - if (rStatus == CY_UART_CONFIG_LEN){ - uartConfig->dataWidth = localUartConfig.dataWidth; - uartConfig->baudRate = localUartConfig.baudRate; - uartConfig->stopBits = localUartConfig.stopBits; - uartConfig->parityMode = (CY_UART_PARITY_MODE)localUartConfig.parity;; - uartConfig->isDropOnRxErrors = localUartConfig.rxIgnoreError; - //We are currently ignoring rest of the bits - CY_DEBUG_PRINT_INFO ("CY:Successfully read UART Config\n"); - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error in reading UART config ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API sets the current UART configuration of the - device.Such as GPIO's assigned, flowcontrol, BaudRate - etc. - */ -CY_RETURN_STATUS CySetUartConfig ( - CY_HANDLE handle, - CY_UART_CONFIG *uartConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CyUsUartConfig_t localUartConfig; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - UINT8 scbIndex = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (uartConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (uartConfig->dataWidth < 7 || uartConfig->dataWidth > 8){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (uartConfig->stopBits < 1 || uartConfig->stopBits > 2){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->interfaceNum > 0) - scbIndex = 1; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_UART_SET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0; - wLength = CY_UART_CONFIG_LEN; - - memset(&gSimpleDataQueue[scbIndex], 0, sizeof(CyDataQueue)); - - memset (&localUartConfig, 0, CY_UART_CONFIG_LEN); - //Fill in rest of the UART config structure elements - //that are not exposed in API with default values - localUartConfig.baudRate = uartConfig->baudRate; - localUartConfig.dataWidth = uartConfig->dataWidth; - localUartConfig.stopBits = uartConfig->stopBits; - localUartConfig.parity = (UCHAR) uartConfig->parityMode; - localUartConfig.rxIgnoreError = uartConfig->isDropOnRxErrors; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localUartConfig, wLength, ioTimeout); - if (rStatus == CY_UART_CONFIG_LEN){ - CY_DEBUG_PRINT_INFO ("CY:Successfully Set UART Config \n"); - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error in Setting UART config ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api writes the Data to UART block of the - device. - */ -CY_RETURN_STATUS CyUartWrite ( - CY_HANDLE handle, - CY_DATA_BUFFER* writeBuffer, - unsigned int ioTimeOut - ) - -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if ((writeBuffer == NULL) || (writeBuffer->buffer == NULL) || (writeBuffer->length == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameters..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - writeBuffer->transferCount = 0; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - rStatus = libusb_bulk_transfer (devHandle, device->outEndpoint, writeBuffer->buffer, writeBuffer->length, - (int *)&((writeBuffer->transferCount)), ioTimeOut); - if ((rStatus == CY_SUCCESS)) { - CY_DEBUG_PRINT_INFO ("CY: SuccessFull in Wrting Data,%d bytes were transfered \n", (writeBuffer->transferCount)); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:TimeOut error ...Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - CY_DEBUG_PRINT_ERROR ("CY:Pipe error endpoint Halted ...Function is %s\n", __func__); - CyResetPipe (handle, device->outEndpoint); - return CY_ERROR_PIPE_HALTED; - } - else if (rStatus == LIBUSB_ERROR_OVERFLOW){ - CY_DEBUG_PRINT_ERROR ("CY:Error Buffer Overflow occured ...Function is %s\n", __func__); - return CY_ERROR_BUFFER_OVERFLOW; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected .... Function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Unknown error ....Libusb error is %d Function is %s\n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api Reads the Data from UART block of the - device. - */ -CY_RETURN_STATUS CyUartRead ( - CY_HANDLE handle, - CY_DATA_BUFFER* readBuffer, - unsigned int ioTimeOut - ) - -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 length, totalRead = 0, newIoTimeout = ioTimeOut, elapsedTime; - int transferCount; - UCHAR *buffer; - struct timeval startTime; - UINT8 scbIndex = 0; - UINT8 cyTempBuffer[64]; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if ((readBuffer == NULL) || (readBuffer->buffer == NULL) || (readBuffer->length == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameters..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - length = readBuffer->length; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - readBuffer->transferCount = 0; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - - if (device->interfaceNum > 0) - scbIndex = 1; - - if (gSimpleDataQueue[scbIndex].nTotalAvailableData > 0 ) - { - // We already have the data read from the device. - // Provide this data to the API. - GetDataFromTheQueue(scbIndex, readBuffer); - if (readBuffer->length == readBuffer->transferCount) return CY_SUCCESS; - totalRead = readBuffer->transferCount; - length = (length - totalRead); - } - - - //Collect all the data in low baud rate for uart. As we get data in short packet - do { - // buffer will be pointing to new pointer - buffer = &(readBuffer->buffer[totalRead]); - //Start the tick - gettimeofday(&startTime, NULL); - rStatus = libusb_bulk_transfer (devHandle, device->inEndpoint, cyTempBuffer, MAX_DEVICE_EP_SIZE, - &transferCount, newIoTimeout); - elapsedTime = getUartLapsedTime(startTime); - //Get the new timeout. - newIoTimeout = newIoTimeout - elapsedTime; - - if (transferCount <= length ) { - //Initialise totalRead to initially read + bytes returned now - totalRead += transferCount; - //length will initial length - transferCount - length = (length - transferCount); - memcpy(buffer, cyTempBuffer, transferCount); - } - else { - totalRead += length; - memcpy(buffer, cyTempBuffer, length); - AddDataToQueue(scbIndex, cyTempBuffer+length, (transferCount - length)); - length = 0; - } - - }while ((rStatus == CY_SUCCESS) && (totalRead != readBuffer->length) && (newIoTimeout > 0)); - if (newIoTimeout <= 0 && totalRead != readBuffer->length) - rStatus = LIBUSB_ERROR_TIMEOUT; - if (rStatus == CY_SUCCESS){ - //CY_DUMP_DATA (readBuffer->buffer, readBuffer->transferCount); - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_INFO ("CY: SuccessFull in Reading Data,%d bytes were transfered \n", (readBuffer->transferCount)); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY:TimeOut error... Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY:Pipe error endpoint Halted ...Function is %s\n", __func__); - CyResetPipe (handle, device->inEndpoint); - return CY_ERROR_PIPE_HALTED; - } - else if (rStatus == LIBUSB_ERROR_OVERFLOW){ - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY:Error Buffer Overflow occured ...Function is %s\n", __func__); - return CY_ERROR_BUFFER_OVERFLOW; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected ....Function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else { - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY: Unknown error ....Libusb error is %d Function is %s\n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api sets the hardware flow control - */ -CY_RETURN_STATUS CyUartSetHwFlowControl ( - CY_HANDLE handle, - CY_FLOW_CONTROL_MODES mode - ) - -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (mode < 0 || mode > 3){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_UART_SET_FLOW_CONTROL_CMD; - wValue |= mode; - wIndex = device->interfaceNum; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error in setting uart flow control ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } - device->uartFlowControlMode = mode; - return CY_SUCCESS; -} -/* -Api gets the current flow control mode -*/ -CY_RETURN_STATUS CyUartGetHwFlowControl ( - CY_HANDLE handle, - CY_FLOW_CONTROL_MODES *mode - ) -{ - CY_DEVICE *device; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (mode == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameters..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - (*mode) = device->uartFlowControlMode; - return CY_SUCCESS; -} -/* The API is used to break -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartSetBreak( - CY_HANDLE handle, /*Valid handle to communicate with device*/ - UINT16 timeout /*Break timeout value in milliseconds */ - ) -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_UART_SEND_BREAK_CMD; - wValue = timeout; - wIndex = device->interfaceNum; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in setting break ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } - return CY_SUCCESS; -} -/* - This Api sets the RTS UART pins High - */ -CY_RETURN_STATUS CyUartSetRts ( - CY_HANDLE handle - ) -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SET_LINE_CONTROL_STATE_CMD; - wValue |= (1 << 1) | (device->dtrValue); - wIndex = device->interfaceNum; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == CY_SUCCESS){ - device->rtsValue = 1; - return CY_SUCCESS; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error in setting RTS of UART ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api clears the RTS UART pin and makes it low - */ -CY_RETURN_STATUS CyUartClearRts ( - CY_HANDLE handle - ) -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SET_LINE_CONTROL_STATE_CMD; - wValue = (device->dtrValue); - wIndex = device->interfaceNum; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == CY_SUCCESS){ - device->rtsValue = 0; - return CY_SUCCESS; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error in clearing RTS of UART ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api sets the DTR UART pin High - */ -CY_RETURN_STATUS CyUartSetDtr ( - CY_HANDLE handle - ) - -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SET_LINE_CONTROL_STATE_CMD; - wValue = ((device->rtsValue) << 1) | 1; - wIndex = device->interfaceNum; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == CY_SUCCESS){ - device->dtrValue = 1; - return CY_SUCCESS; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error in setting DTR of UART ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} - -/* - This Api clears the DTR UART pin and makes it low - */ - -CY_RETURN_STATUS CyUartClearDtr ( - CY_HANDLE handle - ) -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SET_LINE_CONTROL_STATE_CMD; - wValue = ((device->rtsValue) << 1); - wIndex = device->interfaceNum; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == CY_SUCCESS){ - device->dtrValue = 0; - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error in function %s... Libusb Error is %d \n",__func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} diff --git a/CyUSBSerial_SDK_Linux/linux/library/cyusb.c b/CyUSBSerial_SDK_Linux/linux/library/cyusb.c deleted file mode 100644 index 204b235..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/cyusb.c +++ /dev/null @@ -1,630 +0,0 @@ -/* - * USB routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" - -static bool glDriverInit = false; -static libusb_device **glDeviceList; -static UINT32 glNumDevices; -/*The API initializes the Libusb library -*/ -pthread_mutex_t criticalSection; -CY_RETURN_STATUS CyLibraryInit () -{ - UINT32 rStatus; - rStatus = libusb_init (NULL); - - if (glDriverInit != true){ - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Driver Init Failed ...\n"); - return CY_ERROR_DRIVER_INIT_FAILED; - } - glNumDevices = libusb_get_device_list (NULL, &glDeviceList); - if (glNumDevices < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Building device list Failed ...\n"); - glNumDevices = -1; - return CY_ERROR_DRIVER_INIT_FAILED; - } - pthread_mutex_init (&criticalSection, NULL); - glDriverInit = true; - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error ... library already initialized \n"); - return CY_ERROR_DRIVER_INIT_FAILED; - } -} -/* - This API needs to be called after Calling CyGetListofDevices. - */ -CY_RETURN_STATUS CyLibraryExit () -{ - if (glDriverInit == true){ - if (glNumDevices >= 0) - libusb_free_device_list (glDeviceList, 1); - //This is to avoid loss of device handle issue with respect to libusb context. - //libusb_exit (NULL); - glDriverInit = false; - pthread_mutex_destroy (&criticalSection); - return CY_SUCCESS; - } - CY_DEBUG_PRINT_ERROR ("CY:Error ... Library not initialized \n"); - return CY_ERROR_REQUEST_FAILED; -} -/* - * This function Gets the number of all the devices currently - * Connected to the host (It includes Cypress Device as well as - * no Cypress Devices connected) - */ -CY_RETURN_STATUS CyGetListofDevices ( - UINT8 *numDevices - ) -{ - // Use this variable to call libusb_close and exit of the application - if (numDevices == NULL) - return CY_ERROR_INVALID_PARAMETER; - if (!glDriverInit){ - CY_DEBUG_PRINT_ERROR ("CY:Error Library not initialised ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - pthread_mutex_lock (&criticalSection); - libusb_free_device_list (glDeviceList, 1); - glNumDevices = (*numDevices) = libusb_get_device_list (NULL, &glDeviceList); - pthread_mutex_unlock (&criticalSection); - if (glNumDevices < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Building device list Failed ...function is %s\n", __func__); - glNumDevices = -1; - (*numDevices) = -1; - return CY_ERROR_REQUEST_FAILED; - } - return CY_SUCCESS; -} -/* This function gets all the neccessary info such as VID,PID, - String Descriptors and if is a cypress serial device you will - get the info on class and device type - */ -CY_RETURN_STATUS CyGetDeviceInfo ( - UINT8 deviceNumber, - CY_DEVICE_INFO *deviceInfo - ) -{ - struct libusb_device_descriptor deviceDesc; - UINT32 rStatus, numInterfaces; - UINT8 iManufacturer, iProduct, iSerial; - libusb_device *usbDevice;; - struct libusb_config_descriptor *configDesc; - libusb_device_handle *devHandle; - - // Get the list of descriptor info for the device - if (glDriverInit == false){ - CY_DEBUG_PRINT_ERROR ("CY:Error Library not initialised ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (deviceInfo == NULL) - return CY_ERROR_INVALID_PARAMETER; - pthread_mutex_lock (&criticalSection); - if (deviceNumber >= glNumDevices){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device number... \n"); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_INVALID_PARAMETER; - } - usbDevice = glDeviceList[deviceNumber]; - rStatus = libusb_get_device_descriptor (usbDevice, &deviceDesc); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... unable to retrieve device descriptor \n"); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - - deviceInfo->vidPid.vid = deviceDesc.idVendor; - deviceInfo->vidPid.pid = deviceDesc.idProduct; - // Get the all the index of the String descriptors so that it can be used - // to retrieve the string descriptor info. - iManufacturer = deviceDesc.iManufacturer; - iProduct = deviceDesc.iProduct; - iSerial = deviceDesc.iSerialNumber; - //Get the Device handle so that we can communicate with the device retreiving - // descriptor info - deviceInfo->manufacturerName[0] = '\0'; - deviceInfo->productName[0] = '\0'; - deviceInfo->serialNum[0] = '\0'; - rStatus = libusb_open (usbDevice, &devHandle); - if (rStatus == LIBUSB_ERROR_ACCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error ...Insufficient permission... Libusb error is %d \n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_ACCESS_DENIED; - } - else if (rStatus != CY_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in opening the device... Libusb error is %d \n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - if (iManufacturer > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iManufacturer, deviceInfo->manufacturerName, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Getting Manufacturer name Error is <%x> \n", rStatus); - } - } - if (iProduct > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iProduct, deviceInfo->productName, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Getting product name Error is <%d> \n", rStatus); - } - } - if (iSerial > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iSerial, deviceInfo->serialNum, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Getting Serial name <%d>\n", rStatus); - } - } - rStatus = libusb_get_config_descriptor (usbDevice, 0, &configDesc); - if (rStatus == LIBUSB_SUCCESS){ - UINT32 index_i = 0; - const struct libusb_interface *interface; - numInterfaces = configDesc->bNumInterfaces; - deviceInfo->numInterfaces = numInterfaces; - interface = configDesc->interface; - while ((numInterfaces) && (index_i < CY_MAX_DEVICE_INTERFACE)){ - deviceInfo->deviceClass[index_i] = (CY_DEVICE_CLASS)interface->altsetting->bInterfaceClass; - if (deviceInfo->deviceClass[index_i] == CY_CLASS_VENDOR){ - deviceInfo->deviceType[index_i] = (CY_DEVICE_CLASS)interface->altsetting->bInterfaceSubClass; - } - else - deviceInfo->deviceType[index_i] = CY_TYPE_DISABLED; - index_i++; - numInterfaces--; - interface++; - } - libusb_free_config_descriptor(configDesc); - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in Getting config descriptor ...Libusb error is %d \n", rStatus); - if (devHandle) - libusb_close (devHandle); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - if (devHandle) - libusb_close (devHandle); - pthread_mutex_unlock (&criticalSection); - return CY_SUCCESS; -} -/* This function gets all the neccessary info such as VID,PID, - String Descriptors and if is a cypress serial device you will - get the info on class and device type - */ -CY_RETURN_STATUS CyGetDeviceInfoVidPid ( - CY_VID_PID vidPid, - UINT8 *deviceNumber, - PCY_DEVICE_INFO deviceInfoList, - UINT8 *deviceCount, - UINT8 infoListLength - ) -{ - struct libusb_device_descriptor deviceDesc; - UINT32 rStatus = CY_ERROR_DRIVER_INIT_FAILED, numInterfaces, index = 0, devNum; - uint8_t iManufacturer, iProduct, iSerial; - libusb_device *usbDevice; - struct libusb_config_descriptor *configDesc; - libusb_device_handle *devHandle = NULL; - PCY_DEVICE_INFO deviceInfo; - - if (glDriverInit == false){ - CY_DEBUG_PRINT_ERROR ("CY:Error Library not initialised ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if ((infoListLength) < 1){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device info list length specified should be > 0 .. function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (deviceNumber == NULL || deviceInfoList == NULL || deviceCount == NULL) - return CY_ERROR_INVALID_PARAMETER; - // Get the list of descriptor info for the device - (*deviceCount) = 0; - pthread_mutex_lock (&criticalSection); - for (devNum = 0; devNum < glNumDevices; devNum++) { - //We are making sure that we do not overrun - //the list. - deviceInfo = &(deviceInfoList [index]); - usbDevice = glDeviceList[devNum]; - rStatus = libusb_get_device_descriptor (usbDevice, &deviceDesc); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in getting device descriptor for device-%d... Libusb Error is %d \n", devNum, rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - if ((deviceDesc.idVendor != vidPid.vid) || (deviceDesc.idProduct != vidPid.pid)){ - continue; - } - (*deviceCount)++; - if (index > infoListLength){ - continue; - } - rStatus = libusb_open (usbDevice, &devHandle); - if (rStatus == LIBUSB_ERROR_ACCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Insufficient permission ... Libusb error is %d \n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_ACCESS_DENIED; - } - else if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Opening the Device ...Error is %d \n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - deviceNumber[index] = devNum; - index++; - deviceInfo->vidPid.vid = deviceDesc.idVendor; - deviceInfo->vidPid.pid = deviceDesc.idProduct; - // Get all the index of the String descriptors so that it can be used - // to retrieve the string descriptor info. - iManufacturer = deviceDesc.iManufacturer; - iProduct = deviceDesc.iProduct; - iSerial = deviceDesc.iSerialNumber; - //Get the Device handle so that we can communicate with the device retreiving - // descriptor info - //Initialise manufacturer, product and serial names - deviceInfo->manufacturerName[0] = '\0'; - deviceInfo->productName[0] = '\0'; - deviceInfo->serialNum[0] = '\0'; - if (iManufacturer > 0) { - rStatus = libusb_get_string_descriptor_ascii (devHandle, iManufacturer, deviceInfo->manufacturerName, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY:Error in Getting Manufacturer name Error is <%d> \n",rStatus); - } - } - if (iProduct > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iProduct, deviceInfo->productName, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY:Error in Getting product name Error is <%d> \n", rStatus); - } - } - if (iSerial > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iSerial, deviceInfo->serialNum, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY:Error in Getting Serial name <%d>\n", rStatus); - } - } - CY_DEBUG_PRINT_INFO ("Manufacturer name <%s> \nProduct Name <%s> \nserial number <%s> \n", - deviceInfo->manufacturerName,deviceInfo->productName,deviceInfo->serialNum); - rStatus = libusb_get_config_descriptor (usbDevice, 0, &configDesc); - if (rStatus == LIBUSB_SUCCESS){ - int index_i = 0; - const struct libusb_interface *interfaceDesc; - numInterfaces = configDesc->bNumInterfaces; - deviceInfo->numInterfaces = numInterfaces; - interfaceDesc = configDesc->interface; - while ((numInterfaces) && (index_i < CY_MAX_DEVICE_INTERFACE)){ - deviceInfo->deviceClass[index_i] = (CY_DEVICE_CLASS)interfaceDesc->altsetting->bInterfaceClass; - if (deviceInfo->deviceClass[index_i] == CY_CLASS_VENDOR) - deviceInfo->deviceType[index_i] = (CY_DEVICE_CLASS)interfaceDesc->altsetting->bInterfaceSubClass; - else - deviceInfo->deviceType[index_i] = CY_TYPE_DISABLED; - - index_i++; - numInterfaces--; - interfaceDesc++; - } - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in Getting config descriptor ... Libusb Error is %d\n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - libusb_free_config_descriptor (configDesc); - libusb_close (devHandle); - } - if ((*deviceCount) == 0) - rStatus = CY_ERROR_DEVICE_NOT_FOUND; - pthread_mutex_unlock (&criticalSection); - return rStatus; -} -/* - This API will claim the interface in the device - To make sure only claimed application speaks to device. - */ -CY_RETURN_STATUS CySelectInterface ( - CY_HANDLE handle, - UINT8 interfaceNum - ) -{ - UINT32 rStatus, numEP; - CY_DEVICE *device; - libusb_device_handle *devHandle; - libusb_device *usbDev; - struct libusb_config_descriptor *configDesc; - const struct libusb_interface *interfaceDesc; - const struct libusb_endpoint_descriptor *epDesc; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - usbDev = libusb_get_device (devHandle); - if (usbDev == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error Invalide handle ..function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - //Get the config descriptor and parse it to get the - //interface and endpoint descriptor - rStatus = libusb_get_config_descriptor (usbDev, 0, &configDesc); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Getting Config Desc ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - interfaceDesc = configDesc->interface; - //Interface Number should be a valid one and should not exceed - // total number of interfaces - if (interfaceNum >= configDesc->bNumInterfaces){ - CY_DEBUG_PRINT_ERROR ("CY:Interface Number not valid... \n"); - libusb_free_config_descriptor (configDesc); - return CY_ERROR_REQUEST_FAILED; - } - if (libusb_kernel_driver_active (devHandle, interfaceNum)){ - CY_DEBUG_PRINT_ERROR ("CY:Kernel driver active on the interface number %d \n", interfaceNum);; - //User can uncomment this section if needed. -#ifdef CY_DETACH_KERNEL_DRIVER - if (!libusb_detach_kernel_driver (devHandle, interfaceNum)){ - CY_DEBUG_PRINT_ERROR ("CY:Kernel driver detach failed %d\n", interfaceNum); - return CY_ERROR_REQUEST_FAILED; - } -#else - return CY_ERROR_REQUEST_FAILED; -#endif - } - rStatus = libusb_claim_interface (devHandle, interfaceNum); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in claiming interface -interface num %d... Libusb error is %d \n", interfaceNum, rStatus); - return CY_ERROR_REQUEST_FAILED; - } - device->interfaceNum = interfaceNum; - while (interfaceNum--) - interfaceDesc++; - - epDesc = interfaceDesc->altsetting->endpoint; - numEP = interfaceDesc->altsetting->bNumEndpoints; - device->numEndpoints = numEP; - // Check the total number of endpoints interface has - // and get all the endpoint add - CY_DEBUG_PRINT_INFO ("CY:Info The total number of endpoints are %d \n", numEP); - while (numEP){ - if (epDesc->bmAttributes == 0x2){ //Bulk EP checking - if (epDesc->bEndpointAddress & 0x80) - device->inEndpoint = epDesc->bEndpointAddress; - else - device->outEndpoint = epDesc->bEndpointAddress; - } - else if (epDesc->bmAttributes == 0x3) //Interrupt EP checking (We have only one interrupt EP) - device->interruptEndpoint = epDesc->bEndpointAddress; - epDesc++; - numEP--; - } - CY_DEBUG_PRINT_INFO ("CY:Info The Endpoints are in %d and out %d and interrup %d\n", - device->inEndpoint, device->outEndpoint, device->interruptEndpoint); - libusb_free_config_descriptor (configDesc); - return CY_SUCCESS; -} -/* - * This API selects the type of the device - */ -void CySelectDeviceType (CY_DEVICE *device, libusb_device *libUsbdev, unsigned char interfaceNum) -{ - int rStatus, numInterfaces; - struct libusb_config_descriptor *configDesc; - int index = 0; - const struct libusb_interface *interfaceDesc; - device->deviceType = CY_TYPE_DISABLED; - - rStatus = libusb_get_config_descriptor (libUsbdev, 0, &configDesc); - if (0 == rStatus){ - interfaceDesc = configDesc->interface; - numInterfaces = configDesc->bNumInterfaces; - if (interfaceNum >= numInterfaces) - return; - while (index != interfaceNum) { - index++; - interfaceDesc++; - } - if (interfaceDesc->altsetting->bInterfaceClass == CY_CLASS_VENDOR) - device->deviceType = (CY_DEVICE_CLASS)interfaceDesc->altsetting->bInterfaceSubClass; - libusb_free_config_descriptor (configDesc); - } - CY_DEBUG_PRINT_INFO ("CY:Info The device type is %d \n", device->deviceType); -} -/* - The Api Gets the handle for the specified device number - (refer to usage guide and example for usage) - and this handle should be called for further communication - with the device - */ -CY_RETURN_STATUS CyOpen ( - unsigned char deviceNumber, - unsigned char interfaceNum, - CY_HANDLE *handle - ) -{ - libusb_device_handle *devHandle; - libusb_device *dev; - CY_DEVICE *device; - UINT32 rStatus; - - if (glDriverInit == false){ - CY_DEBUG_PRINT_ERROR ("CY:Error Library not initialised ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - pthread_mutex_lock (&criticalSection); - if (glDriverInit == true){ - if (deviceNumber >= glNumDevices){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Invalid device number ... \n"); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_INVALID_PARAMETER; - } - dev = glDeviceList [deviceNumber]; - rStatus = libusb_open (dev, &devHandle); - if (rStatus == LIBUSB_ERROR_ACCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in opening the device ..Access denied \n"); - handle = NULL; - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_ACCESS_DENIED; - } - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Opening the Device ...Error is %d \n", rStatus); - handle = NULL; - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - device = (CY_DEVICE *)malloc(sizeof (CY_DEVICE)); - if (device == NULL){ - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_ALLOCATION_FAILED; - } - device->devHandle = devHandle; - (*handle) = device; - rStatus = CySelectInterface (device, interfaceNum); - if (rStatus != CY_SUCCESS){ - libusb_close (devHandle); - free (device); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - CySelectDeviceType (device, dev, interfaceNum); - if (device->deviceType == CY_TYPE_UART) { - CyUartSetRts (*handle); - CyUartSetDtr (*handle); - if (!CyUartSetHwFlowControl (*handle, CY_UART_FLOW_CONTROL_DISABLE)) - device->uartFlowControlMode = CY_UART_FLOW_CONTROL_DISABLE; - } - //initialising structure elements - device->spiThreadId = (pthread_t)0; - device->uartThreadId = (pthread_t)0; - device->spiCancelEvent = false; - device->uartCancelEvent = false; - device->spiTransfer = NULL; - device->uartTransfer = NULL; - if (pthread_mutex_init (&device->readLock, NULL)){ - CY_DEBUG_PRINT_ERROR ("CY:Error initializing the read mutex .. Function is %s \n", __func__); - libusb_close (devHandle); - free (device); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - if (pthread_mutex_init (&device->writeLock, NULL)){ - CY_DEBUG_PRINT_ERROR ("CY:Error initializing the write mutex .. Function is %s \n", __func__); - libusb_close (devHandle); - free (device); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - if (pthread_mutex_init (&device->notificationLock, NULL)){ - CY_DEBUG_PRINT_ERROR ("CY:Error initializing the write mutex .. Function is %s \n", __func__); - libusb_close (devHandle); - free (device); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - pthread_mutex_unlock (&criticalSection); - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error iniitalise library by calling CyLibraryInit()....function is %s\n", __func__); - return CY_ERROR_DRIVER_OPEN_FAILED; - } -} -/* - The Api Closes the handle and needs to be called only if CyGetNumDevices - or CyOpen is called - */ -CY_RETURN_STATUS CyClose ( - CY_HANDLE handle - ) -{ - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType == CY_TYPE_UART) { - CyUartClearRts (handle); - CyUartClearDtr (handle); - CyUartSetHwFlowControl (handle, CY_UART_FLOW_CONTROL_DISABLE); - } - if (glDriverInit == true){ - if (device->deviceType == CY_TYPE_SPI || device->deviceType == CY_TYPE_UART){ - if (device->spiThreadId != 0 || device->uartThreadId != 0){ - CyAbortEventNotification(handle); - } - } - if (pthread_mutex_destroy (&device->readLock)){ - CY_DEBUG_PRINT_ERROR ("CY:Error de initializing the read mutex .. Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (pthread_mutex_destroy (&device->writeLock)){ - CY_DEBUG_PRINT_ERROR ("CY:Error de initializing the write mutex .. Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (pthread_mutex_destroy (&device->notificationLock)){ - CY_DEBUG_PRINT_ERROR ("CY:Error de initializing the write mutex .. Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - libusb_close ((libusb_device_handle*)devHandle); - free (device); - } - return CY_SUCCESS; -} -/* - This Api will reset the pipe and clears the endpoint - */ -CY_RETURN_STATUS CyResetPipe ( - CY_HANDLE handle, - UINT8 endPointAddress - ) -{ - UINT32 rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - rStatus = libusb_clear_halt ((libusb_device_handle *)devHandle, endPointAddress); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in resetting the pipe ... \n"); - return CY_ERROR_REQUEST_FAILED; - } - return CY_SUCCESS; -} -/* - This Api will get the library version,patch - and build number - */ -CY_RETURN_STATUS CyGetLibraryVersion ( - CY_HANDLE handle, - PCY_LIBRARY_VERSION version - ) -{ - version->majorVersion = CY_US_VERSION_MAJOR; - version->minorVersion = CY_US_VERSION_MINOR; - version->patch = CY_US_VERSION_PATCH; - version->buildNumber = CY_US_VERSION_BUILD; - return CY_SUCCESS; -} diff --git a/CyUSBSerial_SDK_Linux/linux/library/libcyusbserial.so b/CyUSBSerial_SDK_Linux/linux/library/libcyusbserial.so deleted file mode 100644 index 09240c7..0000000 --- a/CyUSBSerial_SDK_Linux/linux/library/libcyusbserial.so +++ /dev/null @@ -1 +0,0 @@ -libcyusbserial.so.1 \ No newline at end of file diff --git a/CyUSBSerial_SDK_Linux/linux/library/libcyusbserial.so.1 b/CyUSBSerial_SDK_Linux/linux/library/libcyusbserial.so.1 deleted file mode 100755 index 1356196efb53734b1c2f7c0c9833a6d0c6d928b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98840 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 YJn8X+%tN{Mjg%^XJ^X>r%iI3{2Ud9~V*mgE diff --git a/CyUSBSerial_SDK_Linux/linux/testUtility/90-cyusb.rules b/CyUSBSerial_SDK_Linux/linux/testUtility/90-cyusb.rules deleted file mode 100644 index 4494809..0000000 --- a/CyUSBSerial_SDK_Linux/linux/testUtility/90-cyusb.rules +++ /dev/null @@ -1,5 +0,0 @@ -# Cypress USB driver for FX2 and FX3 (C) Cypress Semiconductor Corporation / ATR-LABS -# Rules written by V. Radhakrishnan ( rk@atr-labs.com ) -# Cypress USB vendor ID = 0x04b4 -KERNEL=="*", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ACTION=="add", ATTR{idVendor}=="04b4", MODE="666", TAG="cyusb_dev", RUN+="/usr/bin/CyUSBSerial.sh A" -KERNEL=="*", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ACTION=="remove", TAG=="cyusb_dev", RUN+="/usr/bin/CyUSBSerial.sh R" diff --git a/CyUSBSerial_SDK_Linux/linux/testUtility/CyUSBSerial.sh b/CyUSBSerial_SDK_Linux/linux/testUtility/CyUSBSerial.sh deleted file mode 100644 index b2a4265..0000000 --- a/CyUSBSerial_SDK_Linux/linux/testUtility/CyUSBSerial.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -pid=`pidof CyUSBSerialTestUtility` - -if [ "$pid" ]; then - kill -s SIGUSR1 $pid -fi - diff --git a/CyUSBSerial_SDK_Linux/linux/testUtility/CyUSBSerialTestUtility b/CyUSBSerial_SDK_Linux/linux/testUtility/CyUSBSerialTestUtility deleted file mode 100755 index c6c7ef4bf24f608ba49bca9581d547a7ccd929be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27904 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 Source file of the command line test utility -2. 90-cyusb.rules ==> udev rules for changing the mode of usb device node. -3. CyUSBSerial.sh ==> Script file for implementing hotplug feature in linux. -4. Makefile ==> make file for compiling and installing the application. -================================================================================ - - -Pre-requisites: -================================================================================ -1. libusb-1.0.9 is required for compilation and functioning of the APIs in the - USB Serial library. -2. The CyUSBSerial library (libcyusbserial.so) should be compiled and installed - on the test machine. -3. GNU Make and the GCC tool-chain are used for the build process. -================================================================================ - -Installation steps: -================================================================================ -1. Change to the folder where the utility source files are extracted. -2. Invoke 'make' to build compile the utility, and to install the configuration - files at the appropriate locations. This should be done from a super-user - (sudo) shell, because the configuration files need to be copied into system - folders (/usr/local/bin). -3. Use the CyUSBSerial command to start the test utility. - -Note: -The udev daemon needs to be restarted to reflect the udev rule changes that -are installed as part of the make command. -================================================================================ - -Using the test utility: -================================================================================ -1. On starting the utility, the Cypress USB Serial devices that are connected - are listed along with their device numbers, interface numbers and - functionalities (SPI or I2C). - - $ CyUSBSerial - ---------------------------------------------------------------------- - Device Number | VID | PID | INTERFACE NUMBER | FUNCTIONALITY - ---------------------------------------------------------------------- - 0 |4b4 |a | 0 | VENDOR_I2C - 0 |4b4 |a | 1 | VENDOR_SPI - 0 |4b4 |a | 2 | NA - ---------------------------------------------------------------------- - -2. A menu providing the various operations is also printed: - ---------------------------------------------------------------------- - 1: Print list of devices - 2: Select device...No device selected !! - 3: Enter I2C/SPI Flash page address and length to write/read. - 4: Verify data - 5: Exit - ---------------------------------------------------------------------- - -3. On selecting option 2, the utility prompts for the device and interface - number to be selected for testing. - - ----------------------------------- - Enter Device number to select: - 0 - Enter interface number: - 1 - ----------------------------------- - - Once the selections are made, the menu will be updated with the details. - ---------------------------------------------------------------------- - 1: Print list of devices - 2: Change device selection--selected device: [Device number 0] : [Interface No 1] : SPI - 3: Enter I2C/SPI Flash page address and length to write/read. - 4: Verify data - 5: Exit - ---------------------------------------------------------------------- - -4. Option 3 can be selected now to do data read/write to the I2C/SPI flash - device. The utility prompts for the page address to be written as well as - the length of data to be written. - - ------------------------------------------------ - Enter Page address ... (less than 65536) - 1234 - Enter length to read/write ... (less than 256) - 32 - ------------------------------------------------ - - Length needs to be less than or equal to 256 bytes in the case of SPI access, - and less than or equal to 64 bytes in the case of I2C access. Page address - needs to be less than 65536 in case of SPI and 256 in case of I2C. - - Once the values are selected, the menu is updated with the details as below: - ------------------------------------------------------------------- - 1: Print list of devices - 2: Change device selection--selected device: [Device number 0] : [Interface No 1] : SPI - 3: Change Flash page address and length ...Entered is page address 1234 and length 123 - 4: Verify data - 5: Exit - ------------------------------------------------------------------- - -5. Selecting option 4 causes the utility to write a randomly generated data - sequence to the flash device, read it back, and verify the data read back. - - The data pattern written and read back will be displayed as shown below: - -------------------------------------------------------------------- - 67 c6 69 73 51 ff 4a ec 29 cd ba ab f2 fb e3 46 7c c2 54 f8 1b e8 e7 8d 76 5a 2e 63 33 9f c9 9a - -------------------------------------------------------------------- - Data Read back is: - --------------------------------------------------------------------- - 67 c6 69 73 51 ff 4a ec 29 cd ba ab f2 fb e3 46 7c c2 54 f8 1b e8 e7 8d 76 5a 2e 63 33 9f c9 9a - --------------------------------------------------------------------- - Data verified successfully - ------------------------------------------------------------------- - -6. The utility runs through these menu options until the user selects the - exit option (5). - -7. If a new Cypress USB Serial device is attached or an existing device is - removed while the utility is running, a notification is printed on the - console. - - --------------------------------------- - Device of interest Removed/Added - --------------------------------------- -================================================================================ - -EOF diff --git a/CyUSBSerial_SDK_Linux/linux/testUtility/Test_Utility.c b/CyUSBSerial_SDK_Linux/linux/testUtility/Test_Utility.c deleted file mode 100644 index ae29923..0000000 --- a/CyUSBSerial_SDK_Linux/linux/testUtility/Test_Utility.c +++ /dev/null @@ -1,605 +0,0 @@ -/* - * Test utility - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "../../common/header/CyUSBSerial.h" -#define CY_MAX_DEVICES 30 -#define CY_MAX_INTERFACES 4 - -typedef struct _CY_DEVICE_STRUCT { - int deviceNumber; - int interfaceFunctionality[CY_MAX_INTERFACES]; - bool isI2c; - bool isSpi; - int numInterface; -}CY_DEVICE_STRUCT; - -CY_DEVICE_STRUCT *glDevice; -int i2cDeviceIndex[CY_MAX_DEVICES][CY_MAX_INTERFACES]; -unsigned char *deviceNumber = NULL; -int cyDevices, i2cDevices = 0, numDevices = 0; -int selectedDeviceNum = -1, selectedInterfaceNum = -1; -bool exitApp = false; -unsigned short pageAddress = -1; -short readWriteLength = -1; -bool deviceAddedRemoved = false; -int getUserInput() -{ - char userInput[6], x; - int output,i = 0; - bool isDigit = true; - x = getchar(); - while (x != '\n'){ - if (i < 5){ - userInput[i] = x; - i++; - } - if (!isdigit(x)) - isDigit = false; - - x = getchar(); - } - userInput[i] = '\0'; - if (isDigit == false) - return -1; - output = atoi(userInput); - return output; -} -void deviceHotPlug () { - - CY_RETURN_STATUS rStatus; - deviceAddedRemoved = true; - selectedDeviceNum = -1; - selectedInterfaceNum = -1; - printf ("Device of interest Removed/Added \n"); - rStatus = CyGetListofDevices (&numDevices); - if (rStatus != CY_SUCCESS) { - printf ("CY:Error in Getting List of Devices: Error NO:<%d> \n", rStatus); - return rStatus; - } - printListOfDevices (false); -} - -int main (int argc, char **agrv) -{ - int index = 0, i, j, userInput; - int tempSelectedDeviceNum, tempSelectedInterfaceNum, tempPageAddress, tempLength; - CY_RETURN_STATUS rStatus; - signal (SIGUSR1, deviceHotPlug); - glDevice = (CY_DEVICE_STRUCT *)malloc (CY_MAX_DEVICES *sizeof (CY_DEVICE_STRUCT)); - if (glDevice == NULL){ - printf ("Memory allocation failed ...!! \n"); - return -1; - } - rStatus = CyLibraryInit (); - if (rStatus != CY_SUCCESS) { - printf ("CY:Error in Doing library init Error NO:<%d> \n", rStatus); - return rStatus; - } - rStatus = CyGetListofDevices (&numDevices); - if (rStatus != CY_SUCCESS) { - printf ("CY:Error in Getting List of Devices: Error NO:<%d> \n", rStatus); - return rStatus; - } - printListOfDevices(true); - do { - - printf ("-------------------------------------------------------------------\n"); - printf ("1: Print list of devices \n"); - if (selectedDeviceNum != -1 && selectedInterfaceNum != -1){ - printf ("2: Change device selection--selected device: [Device number %d] : [Interface No %d]",\ - selectedDeviceNum, selectedInterfaceNum); - if (glDevice[selectedDeviceNum].interfaceFunctionality[selectedInterfaceNum] == CY_TYPE_I2C) - printf (" : I2C\n"); - else if (glDevice[selectedDeviceNum].interfaceFunctionality[selectedInterfaceNum] == CY_TYPE_SPI) - printf (" : SPI\n"); - else - printf (" : NA\n"); - - } - else - printf ("2: Select device...No device selected !!\n"); - - if (readWriteLength != -1 && pageAddress != -1){ - printf ("3: Change Flash page address and length ...Entered is page address %d and length %d\n", pageAddress, readWriteLength); - printf ("4: Verify data\n5: Exit\n"); - } - else - printf ("3: Enter I2C/SPI Flash page address and length to write/read.\n4: Verify data\n5: Exit\n"); - printf ("-------------------------------------------------------------------\n"); - - userInput = getUserInput(); - if (userInput < 1 || userInput > 5){ - printf ("Wrong selection code ... Enter again \n"); - continue; - } - - switch (userInput){ - - case 1: - printListOfDevices(true); - break; - case 2: - if (cyDevices == 0) { - printf ("No device of interest connected ...!!\n"); - continue; - } - printf ("Enter Device number to be selected.. \n"); - tempSelectedDeviceNum = getUserInput(); - //printf ("Selected device number is %d \n",tempSelectedDeviceNum); - if (tempSelectedDeviceNum >= cyDevices || tempSelectedDeviceNum == -1){ - printf ("Wrong device selection \n"); - continue; - } - printf ("Enter interface number..\n"); - tempSelectedInterfaceNum = getUserInput(); - //printf ("Selected device number is %d %d\n",tempSelectedInterfaceNum, glDevice[tempSelectedDeviceNum].numInterface); - - if (tempSelectedInterfaceNum >= glDevice[tempSelectedDeviceNum].numInterface || - tempSelectedInterfaceNum == -1) { - printf ("Wrong interface Selection selection \n"); - continue; - } - if ((glDevice[tempSelectedDeviceNum].interfaceFunctionality[tempSelectedInterfaceNum] == -1)){ - printf ("Selected device does not have I2C or SPI !!! \n"); - continue; - } - if (deviceAddedRemoved == true) { - printf ("Device of interest was added/removed .... Print and select from new list\n"); - continue; - } - selectedDeviceNum = tempSelectedDeviceNum; - selectedInterfaceNum = tempSelectedInterfaceNum; - //pageAddress = -1; - //readWriteLength = -1; - break; - case 3: - if (selectedDeviceNum == -1) { - printf ("Select proper device!!! \n"); - continue; - } - if (selectedDeviceNum >= cyDevices){ - printf ("Select proper device!!! \n"); - continue; - } - if (glDevice[selectedDeviceNum].interfaceFunctionality[selectedInterfaceNum] == CY_TYPE_I2C){ - printf ("Enter Page address... (less than 256)\n"); - tempPageAddress = getUserInput(); - printf ("Enter length to read/write...(less than 64)\n"); - tempLength = getUserInput(); - if (deviceAddedRemoved == true) { - printf ("Device of interest was added/removed .... Print and select from new list\n"); - continue; - } - if (tempPageAddress > 256){ - printf ("Invalid page address ..Enter page address less than 256 (1 bytes len)\n"); - continue; - } - if (tempLength < 0 || tempLength > 64){ - printf ("Invalid Length ..Enter length less than 64 bytes\n"); - continue; - } - pageAddress = tempPageAddress; - readWriteLength = tempLength; - break; - } - if (glDevice[selectedDeviceNum].interfaceFunctionality[selectedInterfaceNum] == CY_TYPE_SPI){ - printf ("Enter Page address... (less than 65536)\n"); - tempPageAddress = getUserInput(); - printf ("Enter length to read/write...(less than 256)\n"); - tempLength = getUserInput(); - if (deviceAddedRemoved == true) { - printf ("Device of interest was added/removed .... Print and select from new list\n"); - continue; - } - if (tempPageAddress > 65536){ - printf ("Invalid page address ..Enter page address less than 65536 (1 bytes len)\n"); - continue; - } - if (tempLength < 0 || tempLength > 256){ - printf ("Invalid Length ..Enter length less than 256 bytes\n"); - continue; - } - pageAddress = tempPageAddress; - readWriteLength = tempLength; - break; - } - case 4: - if (selectedDeviceNum == -1) { - printf ("Select proper device!!! \n"); - continue; - } - if (glDevice[selectedDeviceNum].interfaceFunctionality[selectedInterfaceNum] == -1){ - printf ("Selected device does not have I2C or SPI !!! \n"); - continue; - } - if ((pageAddress == -1) || (readWriteLength == -1)){ - printf ("Select proper page address and length !!! \n"); - continue; - } - if (glDevice[selectedDeviceNum].interfaceFunctionality[selectedInterfaceNum] == CY_TYPE_I2C){ - if (pageAddress > 256){ - printf ("Invalid Page address for I2C .. need to be less than 256\n"); - continue; - } - if (readWriteLength > 64){ - printf ("Invalid read write length for I2C .. need to be less than 64\n"); - continue; - } - printf ("Calling I2C \n"); - i2cVerifyData(glDevice[selectedDeviceNum].deviceNumber, selectedInterfaceNum); - } - if (glDevice[selectedDeviceNum].interfaceFunctionality[selectedInterfaceNum] == CY_TYPE_SPI){ - spiVerifyData(glDevice[selectedDeviceNum].deviceNumber, selectedInterfaceNum); - } - break; - - case 5: - exitApp = true; - CyLibraryExit (); - break; - } - }while (exitApp == false); - free (glDevice); -} -int spiWriteEnable (CY_HANDLE handle) -{ - unsigned char wr_data,rd_data; - CY_RETURN_STATUS status = CY_SUCCESS; - CY_DATA_BUFFER writeBuf; - CY_DATA_BUFFER readBuf; - - writeBuf.buffer = &wr_data; - writeBuf.length = 1; - - readBuf.buffer = &rd_data; - readBuf.length = 1; - - wr_data = 0x06; /* Write enable */ - status = CySpiReadWrite (handle, &readBuf, &writeBuf, 5000); - if (status != CY_SUCCESS) - { - return status; - } - return status; -} -//Helper functions for doing data transfer to/from SPI flash -int spiWaitForIdle (CY_HANDLE handle) -{ - char rd_data[2], wr_data[2]; - CY_DATA_BUFFER writeBuf, readBuf; - writeBuf.length = 2; - writeBuf.buffer = (unsigned char *)wr_data; - int timeout = 0xFFFF; - CY_RETURN_STATUS status; - - readBuf.length = 2; - readBuf.buffer = (unsigned char *)rd_data; - do - { - wr_data[0] = 0x05; /* Status */ - status = CySpiReadWrite (handle, &readBuf, &writeBuf, 5000); - if (status != CY_SUCCESS) - { - break; - } - timeout--; - if (timeout == 0) - { - status = CY_ERROR_IO_TIMEOUT; - return status; - } - } while (rd_data[1] & 0x01); - return status; -} - -int spiVerifyData (int deviceNumber, int interfaceNum) -{ - CY_DATA_BUFFER dataBufferWrite,dataBufferRead; - CY_HANDLE handle; - bool isVerify = true; - unsigned char wbuffer[256 + 4], rbuffer[256 + 4]; - int rStatus, length; - - memset (rbuffer, 0x00, 256); - memset (wbuffer, 0x00, 256); - - rStatus = CyOpen (deviceNumber, interfaceNum, &handle); - if (rStatus != CY_SUCCESS){ - printf ("CY_SPI: Open failed \n"); - return rStatus; - } - dataBufferWrite.buffer = wbuffer; - dataBufferRead.buffer = rbuffer; - - rStatus = spiWaitForIdle (handle); - if (rStatus){ - printf("Error in Waiting for EEPOM active state %d \n", rStatus); - CyClose (handle); - - return CY_ERROR_REQUEST_FAILED; - } - printf ("Calling spi write enable \n"); - rStatus = spiWriteEnable (handle); - if (rStatus){ - printf("Error in setting Write Enable %d \n", rStatus); - CyClose (handle); - return CY_ERROR_REQUEST_FAILED; - } - //Write SPI write command - wbuffer[0] = 0x02; - //SPI flash address - wbuffer[1] = (pageAddress >> 8); - wbuffer[2] = (pageAddress) & 0x00FF; - wbuffer[3] = 0; - - printf ("The Data written is ...\n"); - printf ("\n--------------------------------------------------------------------\n"); - for (rStatus = 4; rStatus < (readWriteLength + 4); rStatus++){ - wbuffer[rStatus] = rand() % 256; - printf ("%x ",wbuffer[rStatus]); - } - printf ("\n--------------------------------------------------------------------\n"); - - dataBufferRead.length = (4 + readWriteLength); - dataBufferWrite.length = (4 + readWriteLength); - - rStatus = CySpiReadWrite (handle , &dataBufferRead, &dataBufferWrite, 5000); - if (rStatus != CY_SUCCESS){ - CyClose (handle); - printf ("Error in doing SPI data write data Write is %d data read is %d\n" , dataBufferWrite.transferCount,dataBufferRead.transferCount); - return CY_ERROR_REQUEST_FAILED; - } - - spiWaitForIdle (handle); - //Write SPI read command - wbuffer[0] = 0x03; - dataBufferRead.length = (4 + readWriteLength); - dataBufferWrite.length = (4 + readWriteLength); - - rStatus = CySpiReadWrite (handle, &dataBufferRead, &dataBufferWrite, 5000); - if (rStatus != CY_SUCCESS){ - CyClose (handle); - printf ("The Error is %d \n", rStatus); - printf ("Error in doing SPI data write data Write is %d data read is %d\n" , dataBufferWrite.transferCount,dataBufferRead.transferCount); - return CY_ERROR_REQUEST_FAILED; - } - printf ("Data Read back is \n"); - printf ("\n---------------------------------------------------------------------\n"); - for (rStatus = 4; rStatus < (readWriteLength + 4); rStatus++){ - printf ("%x ",rbuffer[rStatus]); - if (rbuffer[rStatus] != wbuffer[rStatus]){ - isVerify = false; - } - } - printf ("\n---------------------------------------------------------------------\n"); - if (isVerify) - printf ("Data verified successfully \n"); - else - printf ("Data corruption occured!!\n"); - - CyClose (handle); - return CY_SUCCESS; -} - -int i2cVerifyData (int deviceNumber, int interfaceNum) -{ - CY_DATA_BUFFER dataBufferWrite, dataBufferRead; - CY_HANDLE handle; - int length = 0; - bool isVerify = true; - int loopCount = 100, i; - CY_RETURN_STATUS rStatus; - unsigned char bytesPending = 0, address[2], wbuffer[66], rbuffer[66]; - CY_I2C_DATA_CONFIG i2cDataConfig; - - memset (wbuffer, 0, 66); - memset (rbuffer, 0, 66); - - i2cDataConfig.isStopBit = true; - i2cDataConfig.slaveAddress = 0x51; - - rStatus = CyOpen (deviceNumber, interfaceNum, &handle); - if (rStatus != CY_SUCCESS){ - printf("CY_I2C: Open failed \n"); - return rStatus; - } - loopCount = 100; - length = readWriteLength; - wbuffer[0]= pageAddress; - wbuffer[1] = 0; - dataBufferWrite.buffer = wbuffer; - i2cDataConfig.isStopBit = true; - dataBufferWrite.length = (length + 2); - printf ("\n Data that is written on to i2c ...\n"); - printf ("\n-----------------------------------------------------------------\n"); - for (i = 2; i < (length +2); i++){ - wbuffer[i] = rand() % 256; - printf ("%x ", wbuffer[i]); - } - printf ("\n-----------------------------------------------------------------\n"); - rStatus = CyI2cWrite (handle, &i2cDataConfig, &dataBufferWrite, 5000); - if (rStatus != CY_SUCCESS){ - printf ("Error in doing i2c write \n"); - CyClose (handle); - return -1; - } - //We encountered a error in I2C read repeat the procedure again - //Loop here untill Read vendor command passes - i2cDataConfig.isStopBit = false; - dataBufferWrite.length = 2; - - do { - rStatus = CyI2cWrite (handle, &i2cDataConfig, &dataBufferWrite, 5000); - loopCount--; - }while (rStatus != CY_SUCCESS && loopCount != 0); - - if (loopCount == 0 && rStatus != CY_SUCCESS){ - printf ("Error in sending read command \n"); - CyClose (handle); - return -1; - } - - dataBufferRead.buffer = rbuffer; - rbuffer[0]= address[0]; - rbuffer[1] = 0; - i2cDataConfig.isStopBit = true; - i2cDataConfig.isNakBit = true; - dataBufferRead.length = length; - dataBufferRead.buffer = rbuffer; - - memset (rbuffer, 0, 64); - - rStatus = CyI2cRead (handle, &i2cDataConfig, &dataBufferRead, 5000); - if (rStatus != CY_SUCCESS){ - printf ("Error in doing i2c read ... Error is %d \n", rStatus); - CyClose (handle); - return -1; - } - - printf ("\n Data that is read from i2c ...\n"); - printf ("\n-----------------------------------------------------------------\n"); - for (rStatus = 0; rStatus < length; rStatus++){ - printf ("%x ", rbuffer[rStatus]); - if (rbuffer[rStatus] != wbuffer[rStatus + 2]){ - isVerify = false; - } - } - printf ("\n-----------------------------------------------------------------\n"); - if (!isVerify) - printf ("Data corruption occured ..!!!\n"); - else - printf ("Data verified successfully \n"); - - CyClose (handle); -} -bool isCypressDevice (int deviceNum) { - CY_HANDLE handle; - unsigned char interfaceNum = 0; - unsigned char sig[6]; - CY_RETURN_STATUS rStatus; - rStatus = CyOpen (deviceNum, interfaceNum, &handle); - if (rStatus == CY_SUCCESS){ - rStatus = CyGetSignature (handle, sig); - if (rStatus == CY_SUCCESS){ - CyClose (handle); - return true; - } - else { - CyClose (handle); - return false; - } - } - else - return false; -} -void printListOfDevices (bool isPrint) -{ - int index_i = 0, index_j = 0, i, j, countOfDevice = 0, devNum; - int length, index = 0, numInterfaces, interfaceNum; - bool set1 = false; - - unsigned char deviceID[CY_MAX_DEVICES]; - unsigned char functionality[64]; - CY_DEVICE_INFO deviceInfo; - CY_DEVICE_CLASS deviceClass[CY_MAX_INTERFACES]; - CY_DEVICE_TYPE deviceType[CY_MAX_INTERFACES]; - CY_RETURN_STATUS rStatus; - - deviceAddedRemoved = false; - CyGetListofDevices (&numDevices); - //printf ("The number of devices is %d \n", numDevices); - for (i = 0; i < numDevices; i++){ - for (j = 0; j< CY_MAX_INTERFACES; j++) - glDevice[i].interfaceFunctionality[j] = -1; - } - if (isPrint){ - printf ("\n\n---------------------------------------------------------------------------------\n"); - printf ("Device Number | VID | PID | INTERFACE NUMBER | FUNCTIONALITY \n"); - printf ("---------------------------------------------------------------------------------\n"); - } - cyDevices = 0; - for (devNum = 0; devNum < numDevices; devNum++){ - rStatus = CyGetDeviceInfo (devNum, &deviceInfo); - interfaceNum = 0; - if (!rStatus) - { - if (!isCypressDevice (devNum)){ - continue; - } - strcpy (functionality, "NA"); - numInterfaces = deviceInfo.numInterfaces; - glDevice[index].numInterface = numInterfaces; - cyDevices++; - - while (numInterfaces){ - if (deviceInfo.deviceClass[interfaceNum] == CY_CLASS_VENDOR) - { - glDevice[index].deviceNumber = devNum; - switch (deviceInfo.deviceType[interfaceNum]){ - case CY_TYPE_I2C: - glDevice[index].interfaceFunctionality[interfaceNum] = CY_TYPE_I2C; - strcpy (functionality, "VENDOR_I2C"); - glDevice[index].isI2c = true; - break; - case CY_TYPE_SPI: - glDevice[index].interfaceFunctionality[interfaceNum] = CY_TYPE_SPI; - strcpy (functionality, "VENDOR_SPI"); - glDevice[index].isSpi = true; - break; - default: - strcpy (functionality, "NA"); - break; - } - } - else if (deviceInfo.deviceClass[interfaceNum] == CY_CLASS_CDC){ - strcpy (functionality, "NA"); - } - if (isPrint) { - printf ("%d |%x |%x | %d | %s\n", \ - index, \ - deviceInfo.vidPid.vid, \ - deviceInfo.vidPid.pid, \ - interfaceNum, \ - functionality \ - ); - } - interfaceNum++; - numInterfaces--; - } - index++; - } - } - if (isPrint){ - printf ("---------------------------------------------------------------------------------\n\n"); - } -} - diff --git a/release/autobuilder b/autobuilder similarity index 100% rename from release/autobuilder rename to autobuilder diff --git a/release/cylib/CMakeLists.txt b/cylib/CMakeLists.txt similarity index 100% rename from release/cylib/CMakeLists.txt rename to cylib/CMakeLists.txt diff --git a/libcyusbserial-master/COPYING.LESSER.txt b/cylib/COPYING.LESSER.txt similarity index 100% rename from libcyusbserial-master/COPYING.LESSER.txt rename to cylib/COPYING.LESSER.txt diff --git a/libcyusbserial-master/Doxyfile b/cylib/Doxyfile similarity index 100% rename from libcyusbserial-master/Doxyfile rename to cylib/Doxyfile diff --git a/libcyusbserial-master/README.md b/cylib/README.md similarity index 100% rename from libcyusbserial-master/README.md rename to cylib/README.md diff --git a/release/cylib/appveyor.yml b/cylib/appveyor.yml similarity index 100% rename from release/cylib/appveyor.yml rename to cylib/appveyor.yml diff --git a/release/cylib/build/CMakeCache.txt b/cylib/build/CMakeCache.txt similarity index 100% rename from release/cylib/build/CMakeCache.txt rename to cylib/build/CMakeCache.txt diff --git a/release/cylib/build/CMakeFiles/3.7.2/CMakeCCompiler.cmake b/cylib/build/CMakeFiles/3.7.2/CMakeCCompiler.cmake similarity index 100% rename from release/cylib/build/CMakeFiles/3.7.2/CMakeCCompiler.cmake rename to cylib/build/CMakeFiles/3.7.2/CMakeCCompiler.cmake diff --git a/release/cylib/build/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin b/cylib/build/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin similarity index 100% rename from release/cylib/build/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin rename to cylib/build/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin diff --git a/release/cylib/build/CMakeFiles/3.7.2/CMakeSystem.cmake b/cylib/build/CMakeFiles/3.7.2/CMakeSystem.cmake similarity index 100% rename from release/cylib/build/CMakeFiles/3.7.2/CMakeSystem.cmake rename to cylib/build/CMakeFiles/3.7.2/CMakeSystem.cmake diff --git a/release/cylib/build/CMakeFiles/3.7.2/CompilerIdC/CMakeCCompilerId.c b/cylib/build/CMakeFiles/3.7.2/CompilerIdC/CMakeCCompilerId.c similarity index 100% rename from release/cylib/build/CMakeFiles/3.7.2/CompilerIdC/CMakeCCompilerId.c rename to cylib/build/CMakeFiles/3.7.2/CompilerIdC/CMakeCCompilerId.c diff --git a/release/cylib/build/CMakeFiles/3.7.2/CompilerIdC/a.out b/cylib/build/CMakeFiles/3.7.2/CompilerIdC/a.out similarity index 100% rename from release/cylib/build/CMakeFiles/3.7.2/CompilerIdC/a.out rename to cylib/build/CMakeFiles/3.7.2/CompilerIdC/a.out diff --git a/release/cylib/build/CMakeFiles/CMakeDirectoryInformation.cmake b/cylib/build/CMakeFiles/CMakeDirectoryInformation.cmake similarity index 100% rename from release/cylib/build/CMakeFiles/CMakeDirectoryInformation.cmake rename to cylib/build/CMakeFiles/CMakeDirectoryInformation.cmake diff --git a/release/cylib/build/CMakeFiles/CMakeError.log b/cylib/build/CMakeFiles/CMakeError.log similarity index 100% rename from release/cylib/build/CMakeFiles/CMakeError.log rename to cylib/build/CMakeFiles/CMakeError.log diff --git a/release/cylib/build/CMakeFiles/CMakeOutput.log b/cylib/build/CMakeFiles/CMakeOutput.log similarity index 100% rename from release/cylib/build/CMakeFiles/CMakeOutput.log rename to cylib/build/CMakeFiles/CMakeOutput.log diff --git a/release/cylib/build/CMakeFiles/Makefile.cmake b/cylib/build/CMakeFiles/Makefile.cmake similarity index 100% rename from release/cylib/build/CMakeFiles/Makefile.cmake rename to cylib/build/CMakeFiles/Makefile.cmake diff --git a/release/cylib/build/CMakeFiles/Makefile2 b/cylib/build/CMakeFiles/Makefile2 similarity index 100% rename from release/cylib/build/CMakeFiles/Makefile2 rename to cylib/build/CMakeFiles/Makefile2 diff --git a/release/cylib/build/CMakeFiles/TargetDirectories.txt b/cylib/build/CMakeFiles/TargetDirectories.txt similarity index 100% rename from release/cylib/build/CMakeFiles/TargetDirectories.txt rename to cylib/build/CMakeFiles/TargetDirectories.txt diff --git a/release/cylib/build/CMakeFiles/cmake.check_cache b/cylib/build/CMakeFiles/cmake.check_cache similarity index 100% rename from release/cylib/build/CMakeFiles/cmake.check_cache rename to cylib/build/CMakeFiles/cmake.check_cache diff --git a/release/cylib/build/CMakeFiles/feature_tests.bin b/cylib/build/CMakeFiles/feature_tests.bin similarity index 100% rename from release/cylib/build/CMakeFiles/feature_tests.bin rename to cylib/build/CMakeFiles/feature_tests.bin diff --git a/release/cylib/build/CMakeFiles/feature_tests.c b/cylib/build/CMakeFiles/feature_tests.c similarity index 100% rename from release/cylib/build/CMakeFiles/feature_tests.c rename to cylib/build/CMakeFiles/feature_tests.c diff --git a/release/cylib/build/CMakeFiles/progress.marks b/cylib/build/CMakeFiles/progress.marks similarity index 100% rename from release/cylib/build/CMakeFiles/progress.marks rename to cylib/build/CMakeFiles/progress.marks diff --git a/release/cylib/build/Makefile b/cylib/build/Makefile similarity index 100% rename from release/cylib/build/Makefile rename to cylib/build/Makefile diff --git a/release/cylib/build/cmake_install.cmake b/cylib/build/cmake_install.cmake similarity index 100% rename from release/cylib/build/cmake_install.cmake rename to cylib/build/cmake_install.cmake diff --git a/release/cylib/build/include/CMakeFiles/CMakeDirectoryInformation.cmake b/cylib/build/include/CMakeFiles/CMakeDirectoryInformation.cmake similarity index 100% rename from release/cylib/build/include/CMakeFiles/CMakeDirectoryInformation.cmake rename to cylib/build/include/CMakeFiles/CMakeDirectoryInformation.cmake diff --git a/release/cylib/build/include/CMakeFiles/progress.marks b/cylib/build/include/CMakeFiles/progress.marks similarity index 100% rename from release/cylib/build/include/CMakeFiles/progress.marks rename to cylib/build/include/CMakeFiles/progress.marks diff --git a/release/cylib/build/include/Makefile b/cylib/build/include/Makefile similarity index 100% rename from release/cylib/build/include/Makefile rename to cylib/build/include/Makefile diff --git a/release/cylib/build/include/cmake_install.cmake b/cylib/build/include/cmake_install.cmake similarity index 100% rename from release/cylib/build/include/cmake_install.cmake rename to cylib/build/include/cmake_install.cmake diff --git a/release/cylib/build/install_manifest.txt b/cylib/build/install_manifest.txt similarity index 100% rename from release/cylib/build/install_manifest.txt rename to cylib/build/install_manifest.txt diff --git a/release/cylib/build/lib/CMakeFiles/CMakeDirectoryInformation.cmake b/cylib/build/lib/CMakeFiles/CMakeDirectoryInformation.cmake similarity index 100% rename from release/cylib/build/lib/CMakeFiles/CMakeDirectoryInformation.cmake rename to cylib/build/lib/CMakeFiles/CMakeDirectoryInformation.cmake diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/C.includecache b/cylib/build/lib/CMakeFiles/cyusbserial.dir/C.includecache similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/C.includecache rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/C.includecache diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/DependInfo.cmake b/cylib/build/lib/CMakeFiles/cyusbserial.dir/DependInfo.cmake similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/DependInfo.cmake rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/DependInfo.cmake diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/build.make b/cylib/build/lib/CMakeFiles/cyusbserial.dir/build.make similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/build.make rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/build.make diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cmake_clean.cmake b/cylib/build/lib/CMakeFiles/cyusbserial.dir/cmake_clean.cmake similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cmake_clean.cmake rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/cmake_clean.cmake diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyi2c.c.o b/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyi2c.c.o similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyi2c.c.o rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/cyi2c.c.o diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyjtag.c.o b/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyjtag.c.o similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyjtag.c.o rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/cyjtag.c.o diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cymisc.c.o b/cylib/build/lib/CMakeFiles/cyusbserial.dir/cymisc.c.o similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cymisc.c.o rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/cymisc.c.o diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyphdc.c.o b/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyphdc.c.o similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyphdc.c.o rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/cyphdc.c.o diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyspi.c.o b/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyspi.c.o similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyspi.c.o rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/cyspi.c.o diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyuart.c.o b/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyuart.c.o similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyuart.c.o rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/cyuart.c.o diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyusb.c.o b/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyusb.c.o similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/cyusb.c.o rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/cyusb.c.o diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/depend.internal b/cylib/build/lib/CMakeFiles/cyusbserial.dir/depend.internal similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/depend.internal rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/depend.internal diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/depend.make b/cylib/build/lib/CMakeFiles/cyusbserial.dir/depend.make similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/depend.make rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/depend.make diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/flags.make b/cylib/build/lib/CMakeFiles/cyusbserial.dir/flags.make similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/flags.make rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/flags.make diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/link.txt b/cylib/build/lib/CMakeFiles/cyusbserial.dir/link.txt similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/link.txt rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/link.txt diff --git a/release/cylib/build/lib/CMakeFiles/cyusbserial.dir/progress.make b/cylib/build/lib/CMakeFiles/cyusbserial.dir/progress.make similarity index 100% rename from release/cylib/build/lib/CMakeFiles/cyusbserial.dir/progress.make rename to cylib/build/lib/CMakeFiles/cyusbserial.dir/progress.make diff --git a/release/cylib/build/lib/CMakeFiles/progress.marks b/cylib/build/lib/CMakeFiles/progress.marks similarity index 100% rename from release/cylib/build/lib/CMakeFiles/progress.marks rename to cylib/build/lib/CMakeFiles/progress.marks diff --git a/release/cylib/build/lib/Makefile b/cylib/build/lib/Makefile similarity index 100% rename from release/cylib/build/lib/Makefile rename to cylib/build/lib/Makefile diff --git a/release/cylib/build/lib/cmake_install.cmake b/cylib/build/lib/cmake_install.cmake similarity index 100% rename from release/cylib/build/lib/cmake_install.cmake rename to cylib/build/lib/cmake_install.cmake diff --git a/release/cylib/build/lib/libcyusbserial.so b/cylib/build/lib/libcyusbserial.so similarity index 100% rename from release/cylib/build/lib/libcyusbserial.so rename to cylib/build/lib/libcyusbserial.so diff --git a/release/cylib/build/lib/libcyusbserial.so.1 b/cylib/build/lib/libcyusbserial.so.1 similarity index 100% rename from release/cylib/build/lib/libcyusbserial.so.1 rename to cylib/build/lib/libcyusbserial.so.1 diff --git a/release/cylib/build/tools/CMakeFiles/CMakeDirectoryInformation.cmake b/cylib/build/tools/CMakeFiles/CMakeDirectoryInformation.cmake similarity index 100% rename from release/cylib/build/tools/CMakeFiles/CMakeDirectoryInformation.cmake rename to cylib/build/tools/CMakeFiles/CMakeDirectoryInformation.cmake diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/C.includecache b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/C.includecache similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/C.includecache rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/C.includecache diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/DependInfo.cmake b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/DependInfo.cmake similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/DependInfo.cmake rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/DependInfo.cmake diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/build.make b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/build.make similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/build.make rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/build.make diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/cmake_clean.cmake b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/cmake_clean.cmake similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/cmake_clean.cmake rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/cmake_clean.cmake diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/cyusbserialtest.c.o b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/cyusbserialtest.c.o similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/cyusbserialtest.c.o rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/cyusbserialtest.c.o diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/depend.internal b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/depend.internal similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/depend.internal rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/depend.internal diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/depend.make b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/depend.make similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/depend.make rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/depend.make diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/flags.make b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/flags.make similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/flags.make rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/flags.make diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/link.txt b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/link.txt similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/link.txt rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/link.txt diff --git a/release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/progress.make b/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/progress.make similarity index 100% rename from release/cylib/build/tools/CMakeFiles/cyusbserialtest.dir/progress.make rename to cylib/build/tools/CMakeFiles/cyusbserialtest.dir/progress.make diff --git a/release/cylib/build/tools/CMakeFiles/progress.marks b/cylib/build/tools/CMakeFiles/progress.marks similarity index 100% rename from release/cylib/build/tools/CMakeFiles/progress.marks rename to cylib/build/tools/CMakeFiles/progress.marks diff --git a/release/cylib/build/tools/Makefile b/cylib/build/tools/Makefile similarity index 100% rename from release/cylib/build/tools/Makefile rename to cylib/build/tools/Makefile diff --git a/release/cylib/build/tools/cmake_install.cmake b/cylib/build/tools/cmake_install.cmake similarity index 100% rename from release/cylib/build/tools/cmake_install.cmake rename to cylib/build/tools/cmake_install.cmake diff --git a/release/cylib/build/tools/cyusbserialtest b/cylib/build/tools/cyusbserialtest similarity index 100% rename from release/cylib/build/tools/cyusbserialtest rename to cylib/build/tools/cyusbserialtest diff --git a/libcyusbserial-master/cmake/helpers/libusb_version.c b/cylib/cmake/helpers/libusb_version.c similarity index 100% rename from libcyusbserial-master/cmake/helpers/libusb_version.c rename to cylib/cmake/helpers/libusb_version.c diff --git a/libcyusbserial-master/cmake/modules/FindLibPThreadsWin32.cmake b/cylib/cmake/modules/FindLibPThreadsWin32.cmake similarity index 100% rename from libcyusbserial-master/cmake/modules/FindLibPThreadsWin32.cmake rename to cylib/cmake/modules/FindLibPThreadsWin32.cmake diff --git a/libcyusbserial-master/cmake/modules/FindLibUSB.cmake b/cylib/cmake/modules/FindLibUSB.cmake similarity index 100% rename from libcyusbserial-master/cmake/modules/FindLibUSB.cmake rename to cylib/cmake/modules/FindLibUSB.cmake diff --git a/libcyusbserial-master/include/CMakeLists.txt b/cylib/include/CMakeLists.txt similarity index 100% rename from libcyusbserial-master/include/CMakeLists.txt rename to cylib/include/CMakeLists.txt diff --git a/libcyusbserial-master/include/CyUSBSerial.h b/cylib/include/CyUSBSerial.h similarity index 100% rename from libcyusbserial-master/include/CyUSBSerial.h rename to cylib/include/CyUSBSerial.h diff --git a/release/cylib/lib/CMakeLists.txt b/cylib/lib/CMakeLists.txt similarity index 100% rename from release/cylib/lib/CMakeLists.txt rename to cylib/lib/CMakeLists.txt diff --git a/release/cylib/lib/CyUSBCommon.h b/cylib/lib/CyUSBCommon.h similarity index 100% rename from release/cylib/lib/CyUSBCommon.h rename to cylib/lib/CyUSBCommon.h diff --git a/libcyusbserial-master/lib/cyi2c.c b/cylib/lib/cyi2c.c similarity index 100% rename from libcyusbserial-master/lib/cyi2c.c rename to cylib/lib/cyi2c.c diff --git a/libcyusbserial-master/lib/cyjtag.c b/cylib/lib/cyjtag.c similarity index 100% rename from libcyusbserial-master/lib/cyjtag.c rename to cylib/lib/cyjtag.c diff --git a/release/cylib/lib/cymisc.c b/cylib/lib/cymisc.c similarity index 100% rename from release/cylib/lib/cymisc.c rename to cylib/lib/cymisc.c diff --git a/libcyusbserial-master/lib/cyphdc.c b/cylib/lib/cyphdc.c similarity index 100% rename from libcyusbserial-master/lib/cyphdc.c rename to cylib/lib/cyphdc.c diff --git a/release/cylib/lib/cyspi.c b/cylib/lib/cyspi.c similarity index 100% rename from release/cylib/lib/cyspi.c rename to cylib/lib/cyspi.c diff --git a/release/cylib/lib/cyuart.c b/cylib/lib/cyuart.c similarity index 100% rename from release/cylib/lib/cyuart.c rename to cylib/lib/cyuart.c diff --git a/release/cylib/lib/cyusb.c b/cylib/lib/cyusb.c similarity index 100% rename from release/cylib/lib/cyusb.c rename to cylib/lib/cyusb.c diff --git a/libcyusbserial-master/.gitignore b/cylib/libcyusbserial-master/.gitignore similarity index 100% rename from libcyusbserial-master/.gitignore rename to cylib/libcyusbserial-master/.gitignore diff --git a/libcyusbserial-master/.travis.yml b/cylib/libcyusbserial-master/.travis.yml similarity index 100% rename from libcyusbserial-master/.travis.yml rename to cylib/libcyusbserial-master/.travis.yml diff --git a/libcyusbserial-master/tools/CMakeLists.txt b/cylib/tools/CMakeLists.txt similarity index 100% rename from libcyusbserial-master/tools/CMakeLists.txt rename to cylib/tools/CMakeLists.txt diff --git a/libcyusbserial-master/tools/README.txt b/cylib/tools/README.txt similarity index 100% rename from libcyusbserial-master/tools/README.txt rename to cylib/tools/README.txt diff --git a/libcyusbserial-master/tools/cyusbserialtest.c b/cylib/tools/cyusbserialtest.c similarity index 100% rename from libcyusbserial-master/tools/cyusbserialtest.c rename to cylib/tools/cyusbserialtest.c diff --git a/release/cylib/windows/gettimeofday.c b/cylib/windows/gettimeofday.c similarity index 100% rename from release/cylib/windows/gettimeofday.c rename to cylib/windows/gettimeofday.c diff --git a/release/cylib/windows/include/c99/inttypes.h b/cylib/windows/include/c99/inttypes.h similarity index 100% rename from release/cylib/windows/include/c99/inttypes.h rename to cylib/windows/include/c99/inttypes.h diff --git a/release/cylib/windows/include/c99/stdbool.h b/cylib/windows/include/c99/stdbool.h similarity index 100% rename from release/cylib/windows/include/c99/stdbool.h rename to cylib/windows/include/c99/stdbool.h diff --git a/release/cylib/windows/include/sys/time.h b/cylib/windows/include/sys/time.h similarity index 100% rename from release/cylib/windows/include/sys/time.h rename to cylib/windows/include/sys/time.h diff --git a/release/cylib/windows/usleep.c b/cylib/windows/usleep.c similarity index 100% rename from release/cylib/windows/usleep.c rename to cylib/windows/usleep.c diff --git a/CyUSBSerial API Documentation.pdf b/docs/CyUSBSerial API Documentation.pdf similarity index 100% rename from CyUSBSerial API Documentation.pdf rename to docs/CyUSBSerial API Documentation.pdf diff --git a/release/manual.md b/docs/manual.md similarity index 100% rename from release/manual.md rename to docs/manual.md diff --git a/files for command line utility.zip b/files for command line utility.zip deleted file mode 100644 index bf40ffcfdb64e1315e5c174a50a6ed5c56e0a7ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252453 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 z 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 z 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

TG-siq^*h<=&SoXY_{HD<963>h1*% zOYLl{b;fu<*+N!ow3d<;Bpr&5K)2(o=P+PO!Mr)G$Orktp3pO>MPhVgLY`iTIHZ!+ z&+5%zhoEBkk6&~+yb5%2G(k#@1z(V3QnfJof}7+UAzQQ;oj`>@?Z}izh}`b#_2nyE zH(*zfONF+-wH&TV?I}T~lJ*A_RO@k!C_V6E>Qp6jy;7CL=&##ru|s+@KF0GXDX97- zNJ)p+GW4@?0w~6#xXcZ*p{r^a9eJKzvqlsATu)<>f=I*OkD>@*aPJg&gDj=Su;31HrXkE`r0g)_dBD5 zc0qurp5l$x#Fp-m-2_r6#O6>CL|qQ-b+NVrC30=O`|T1UN1gg02BWx@4S-lN-FKR; zJg*;;c<}>edxq>x9ced-c2iL2SZS$iMW%|WPiQN=E>iM2PASS(df4-6BVlt$l|eJ+ zk`wI11(%tv5uf%+9>6GG&-hGD%G06E8yBkRi1kY=5g`la;1Y=2+W<@H*p)*{n-N}i zchP`de3pZmuM}S@B=NT2Ee?NGaCz?sT9%Sb63w$%H9XuEYt@PVU2NX)tECCjMn?`s z$#_Jt65+hquo&8>jINynLO|mUKMHko#ma6xESL4J4Sakvd?BR^B7)2@|E7itzvo@< zaDO;o^nUZ=)BdfDR|{)IG3f6IkeT)y1=;6ngLYY50CNZ75#QL?`VvI=aFWL5r2L*+ zacEOsnW7DE+IEA4VcaH+W8ZPshspAft0ZrHdLFIl&WzY{ehj8`>OC{zj)a%b9(}l0 zpFC?Zr77{gV{62qOxZ^aH=_~+l+BEIhak(XJ1Tva7ejwma7KjFp)-~vsI6lWu_5C0 zwREhjP#$S==&;7*Hd`G(HPdcu5KIB5?VW?IOPCoR^XKt;s|ZTmJO- zZ3AM4DT0|2X-{>9lwrAVGW4|rDYpG;-3)=0aY#{Z@^^s+<1sm@8MAK|5EF_?z+De= zK#2?jyu^qc`vP7-o)@17zCqHoHnVeR#-N%)BK0p!&u{7B`!s1oboikYhu%$)a{o=v zy6yBB8J3|RuX}|C#?1$dl~(`m z?=~a;2i@ObPT^<*t_@~4g6hk@gDDQI`089R@`Rhatk`7k!?ShrHF^w*Nb2eKyJJwy z++l#H7pjkRLq?#vvO#k}ZeM97Sowt*?SVjr>lSQ(!4WR3#Q44-qEsGYgj5|%7j)q*|k_2-i`GZ_if&ZM&qf?R`DSq1Tep9J8UFP z)Oo1|0z5BaoUinG0f73gn!GD0-C$EC`WSCn18OfU)bm6)oIt@o<-8mdG57glyVZP_ ziL|6_LM-ZcreYl{xTl}@jgT5~p6%%?7jd8`Gj;DpOdj_3#Uf)#xa8C%2gNbq#<{a| z$1?fO4NLlj941V`cAYlo|4?v`q{-q7%*UW#r(A zC2fZmNP`k2kMtZH5ZqahuXFVmUC`%Ra`5N1q9M!K{_NhNi@k2jp-ggEQX1BdeTDq;|)L4ZSF6E!8 ziVa!B^rOLdB*W>7L2*ixNHp^^cJ)1{UyE=+x~FUUzUw0n~h{Q4X-O_%EXOONc_0 zX0Z7_q$yNR$zSp-2Od)*E*uIQ*|>bOs8LJIz@!(03E0NH(a$PN^YkTr5z>Ei94lHQ z^5ix}2TUr7a6?-zyMIWl3ZMv=XMyj(odOkT*{>!6&&)k}JRGb}`VGPltOGNv;Om!n z`sKqnqte07-1=EE(#rZbwm4C|@7B_Mj^^-qv}SHq{dyaOHSkYo)jF>fb+p?U;V&K7 z1Ga0M#^h(*O_J1t(NO#Du(VBtzmDtaCNabknN&iogd+h0{(I>}YO#Q7#0vV8SOw zj)^082Eg~q>27}A(-f5MNmtYo^NfwT{8$`-4`Qv{9m6 z7MSWz!R7TUu7$JNhjAzPox29IT}(mC1`DpNB2pljzBgaM;57qXRP^JmyX>SSf-nwp*xo?~HTXS`@D}cmsBZz0~qP zp4o75!6Q@hnXR-oVtJ?yz|Z$M-kv#U9v@LNuTKQ<5IXxbDGB*j+J8Ep0jIkEku&B`M%M4>m8#I4;(=(+NgyH&fb_w04A?#FPlY)j;;Q<#xeOGF0w-#_uxKv;}Gpw|J7^Z#c zK(*wZfi**VIf+H}x#Jw-1(Z0ow)W)^y1IgMtWf#O_l&A1+#mPvkLkw4BsPQrhFPYW_ zMcRs%GpyN}(_B$QgrEMt&{3d&0hFstPmxY=jJF^6a3A@y4ab!5arK)C^^fFED;(7~ej zzx?_^03iMK8`3W|FgDY-AvCbGCe*bwH`lh%BQ!I%&?mIBH8wN0b)tm<5Z?bo5CA4% z*+#oYL2eA>LB%tLLVrB}`+&W_4M_cHKu+NQ_1_GrYiVI%Z1_*ZM@>nk{uu5-wY7gf z|98W)KN>#pe>(iXhWXa5bPw~O4^aOOhVK!~%6|s)W40_U9?j1*wZc8qgX-eS-#`C5 zQ_}|lf%^&l^+V_p6EDdBaDE;e^ovQ)Quh%Tz+%|AhG-Zh=KW8e2mL$O?{Opgh%5V# za2e@q>*-rRLKEj!ytn8cav6MN9yI>R)JtKoj9W|Ab|~ z(DEO-Ku_0`~%dFiT<%R{IcAxA%QuP!x#XN`U{E>2o>~apnk#8*gD!in%rM& z*BQK_61xze9SwY*n@X0Fs%p zjy)OFGUCKnpre?rWs(YQx^ z(BBa)MJ~vpfL(>PEdU_%2vOVWk0Kh=>;5z0T;@;02mPIJI1z`W9ufeEA^Y9LY2QCe zXkx2v_|J%NSa0r4e9+$!y{E{hK@ot#sQf$PUC19rG&i>S7cNRw|3rMy-w_3FQN1m| z0RUFy-w~}6|0trBk>0;R^n9*)@8X00jwqAb=z$Fk#W4NfLs2sAk0RPw8UOP{|CGKIrd=h4N3t&YuDR)ds(t=-K{f z5rK*EA2SYl`A@u{wRz4t^8lI(!6{`JLXn;D?0}AvN`jo9kpJ0E^6^duxW@%{I}fdeq_(O4k8SBA#9x#D&|*C310ry)|G$Pz@-IVw zG-O3ae*n=|-^Nz)ANJxyolW=7J?KM|_JH@$STvsr?UDc;oB%%5{=y>!;$ay7VZ8so z3ldZ4Etlf0}pm+{_^&p6I482$vy9b{?5zq z8i08M0{|E?{?4oH{HJ;U?auI5tX@AUz2|+T|3JdsZH{J9CrydEoXElH1Z?E5< z=2ZdiWaa4@n1LdoB(ABauWRjOWvj18bDzWX9xXMlY13PhVGytDs(btg{X71TY=Ent zP;LUm*9JZw$1+yHpT_@T_pi;Z&EsA8FRv$Bs_$VR^zX25eS<`^50%W~fQ=|6utza? zH1_#{Dp{v#0b3f?cxkKH9MCF>651W6*i2WmOjFLZWvYx(y zww;-+Ccg>`KQj~kO9pBNdI^QsqW?Zv%8rO2fv-d5{O9X<(7(TqAHm{`>OT(rBvC*- zuqr>^`Wcn};n!iJW32CJ1?$e02kx|aOd*)a7}jgp9i(F z{8yac-RkZ+AM|(5y>KGuMtT5XtLJx4kGen4X=7{mFS^F_-iCY52mL$eu1k=pKFk%| zDKLP)0V|&3qW~`1`NN$5*f$*Q(SrfwlU1+r9`ix}j`<@#Yd8>AY$WC0W{|NNoW4+9kyWbi-=mQoo{r~`&$LC(? z|HAsw9d_XUw^#x{Yo@WK1>rxnfN<%ci$9LfJ*a@wMBd*|#{lCWu&c7p2QHAy0UYeU z>I?tHKnVQnQ@sBT1OMaF{Fy}{ax@ph+N@Qb6(C%b|=&6KQ&1uU74A5je;~V z2o%8o8|U2`;{T`kzX=Th62QjN$k@}>*~r<{$HU_{@1LQCo93z4hV0V4|` zNWjEW!VB$yE0feh`o`ddTK>UgcG6Exi3speVBiOphRyjC| z+%QDHnt7d#8cT?gT}zmTlMSsVpn@Q3d*W>1P4$CNdu)N(y}Irt>+d?7%_^VrGKB<{ zrO&9B*8RsV(lxXHax)a;bj&naWM!(_Xv4d0?{319@tW4%$a#q}Lc4**zvDTF>!?~j z0slAia@6(E3}66&IdA{~!vD_P#mUgk(wWZF*5-ex&!}w09daP}&Z%ouu);6pI#^1R|N`SIu^+&kp?gcXunbnf2XQP;2HxUpivVvUc6k6Z<*{=>J1?r z%>lhMC4bd>?*Qx%9!EO~y3)`ZD9ol<9~UhpKsS*&jAuDye6Y;;2Mn?Sn>^Pw#VPlNPgnAUD*@qTAuJs z?w*=JNfkX;Y{pFeF;J`;Wcf99=GgfSIP8(SrcM}VSb`pl!EA=M)_6&iEnSr zeOtz%N(-MO1dIehDO8DdHc93oP!N&+I<97(f{s_E)7RF*{+3(n4cOO2eOK^1D`c>7 z0jgNCZ@10hgULmVnPL~421l1w-3eRPkZ8TO)?%&SxzHX>T5NI; zN2bGo8mis;k?ltVQ{Ed<_kt&*-CSqxo4N;$c9Sq>&zZSc{s;=9uRb-bM)gv->8BOQ zNgO}f&km4vc&EiSiofE|lwkx(pGUWY%J0FrJD(p|$UKw^!l&YC>Ad4=W^&S1{kwQZ z86JK2N8t+4%d_(-3FXf>kO8L;aIUlHhj9+4x7H;{mgY6?VUjgZ+|Y=z&G~Im>qW`> zHu}X@VJFim>TlL@SLo3q4szpVU74OY!{nT{{R9Wqow_462j*SNsBvld=NJ_g&Dq06 ztbAYF_Q1olPSyFx@6kM^fU&$;#>|^br!ARo_jbL90p7E1(`w$!==lq%cKxb*v8T6r zicIc|ye^hwgS*D#^C%>?hc&GF2e0NKOR{zOFbqkYZ4lC;QVg%n2)jJIdsu zx#Q(JD19!}BjL%{M5wUf|9P()`F6t6Bx?CDD1Sfk+O5psa( zgC$JnYRVlVum?=LM08IC!|6DvNiV8b=1K+=N*Ya4t!yZ7l4#TsweDdt(b6OGTb^AA zI{gMEIOt7!s6ubLKp>Kc)lS&S@no(G(7Kd5E~tcN-BGEkGttP=7l#P7ZoAZsNg8Im zG&iNmQ7h@(nQyt@C)dPD|di$zqjAZTTu1Nmu<9hB>UG!H5c9h4Y7_?p5P(;zQ^X!4^9P`Rb+ zse~)j)Jl)fwIJRv1l1=B2Nt~WQh5D${W;-vXE{)L71S;fm_0Ib`VCZe+bW&jH4sDq zLn*FjuBOb76%fGo^9uY1nl*4uj$BSDKeG9~okd-Iv%oalcz{j$(53XCJyC?SB3dKL zwK+;PD@wX7IFw>HoSQ(8dr9m+**?Tk!cuVU*(JW5LbWpW!@J;GC*>h-P|hv??{cOf zeC=tUBg?PjHV_2AtC2iHQ}-AWn#)(*{A~f0ph_lWRbZ`px!Xiim5TD2o1@hi)$5!Hk7-m7t;;vFmc50yue%@K z62{N8PWtTnpT^3ZwD-rq&|+A80y*l1k7P6xe{`O@UAPKWH(CataRI_QFNvX5oD zrE2;`cV%vAgR_=*w0>DFQ>(^?m$1Is#o$S5)0EMIjjkNZyhqnM$p_cW8e0vcuii4- zMC0KGZTRT-88BbT-wL+5x~1kyt4pRdmDaB$=ExGa_fgek>g&(X%={)KS*3t}@|uVc z5wpsSk>F6&qW^Gt%B*z#dv7Lk=(Bj46T+!Kb3JxCea->>xBQbCclpVAO4y&NTrTOK zvwo)u_Z*HG?>x+8*ko-)9Bspn+VA%L-JzOtgWWaL$=k> zQRLG!KUZc}>yMp0_v{r@WkiRc|DEpbB+1fGCUzeWnZ(oPiL|DTY*5;KJ}$kPzD5ir zq)MNcsBmjRvy}zL(}sP7T-=yZwM&(VsVO#BnH9yhMXAv|=P=yFO(IE`t{Bk>3#ztx zRjzgk%bi|FngGqvVVB7Rsb*Ic#P;1HX#CWBz4Et$NPo^E&aS;6al~WUE{dsXK07FF zvqU-^$~<4lRetm+O_GkkKp&MzWBx!QE22VhF;#B~rH96D}`d zULd(>hm14Cxnr%zO$N8pxbNt*H@&xal(OD9`Lgs7-{5|!3OzYt!5|xa#S3}`K^LM{MzB_56R7|I}9ImY^ z!DoX2X$v4Q`$TetI!RXI4x+QOKpC(404-trwDKW_kK zbsG=MG`W>ji2Y7u*JLAsr(>#drdG8SYDT$Rv{rLQuIPw(YF9*4DexYe(;*La4TF3- z83PIsJXlvwO?+yp2_M=_(7#Lc57oeADnm&rOmma%1X{fn{kUnF)WnoVa7WWz1Z<1p zIKRxe8}>Qw&5RENcvaeS0TQ;Nsiv4)D0hx z4{KAoP{>0If;b1K#!MJ6Q5e*z3uh_4o~BFz`p8jaP5LZ=>w+Ehr#%9yY8K?`&7G+L zG#g1{sqrr(&d;aSXY|I2C>jJeP;CM(1T$D;iB?Ncq5wE9eeBi(;!i_@#!ZyD?tmzq znU0zeB%(uUx<1(+o9I%fv0*)p#P!b(57iYr^EQ`?kw?r^1>OA%fqoFbV3CwoaB+M`|)FI#zv0#m5i`~18lO_)_nG5S$X^Te*L`~m~ zMUNNKB|r%?^pH@gh6Drva)_wWG=~%KE+zayu+ciPZ!(+VNrZfuNY3Q6q|A)FjRBy? zj($-vdsq+cd#cTowUs0I z{N*K@8Rl}&^Bpu+gemP}=T_BKttU@8+`{u^G-)$JU=4l=|GuGVfYQcagE1(VyAyQ- zdw_&hS)06t*K1yhu73-N0g*x;!jxlYUK2tQ{Ep|nA5yk(`3P}~Xfei~liv}5?pqVr z3>-kLQ(Vl>Xr~P+3bi63U!N)WC9&k`7#DihWfK!w(ST*(Iu-nLlOjz~gpi2a1H{3{ z2dojMhBsdbTGLU~mN=&&=E5L@XaTA&0s*ENVo#`MxTA)H{tyu`1X@7REPKbZNL!&O zZ3MRfikc}RXgF0XY@y@f>TAW(hl~}H3;Bm+pI{x9x+)>e#Z(f#FtYyM$VgeqQHhEH z%kCq6fJ2Zs2<2QK@Mrt$u+e~_ExE?vG>jNu0bu&rNcza|q>LYl{8t9hX`7{kJRYh( z&^J@Frh&yZ1ffBNku_yOw{j&+>TSf0n@BF7RQgNMahUqMLH?1*_IoISXo4B<6nzWD zkbtFMC=UkJ;DaYGY}SQGl#|QNt?J#TN~0F_$?mHrA`=<`!se=Kxk2h50DpH;T*yqZ zJhUebYeAlmQkAuJ>$^ZhH6F*i5#d-D6kWB-?olRa(10k2I0XutH-2tZ78u;3MGh02 zX(mt@a7f2=V%S^vR%@}y!hKaVX8~Kj9JCxpO1&+N>`05B)~pZY8M*=&i!rtN5KT!L zW`<%l>AJ9LI8v13@g$MM=&O=Z@*Yc71q~&Oc|NuXL>}2PdDVo?BjHDx7d2gnL zXSk0bx&f$qVrWdpuy!(m6Tw~h9s~d;TXjLgwU$fmmT7%9jnKa7*{}`l=AvS=p4=>) z)Lq;Kqe+*vH8k}4EWmv%(WO$4fmF0V0pr4DsHg7z_`3y|UqZ~B8ZqNjv?Tq=2Kw?N zo5k+GexI9omr+w3)2-ID>+^%+aBDNV9M(cN$YAw3tKA5Q5-<|W7hO!<>QThK`w-cy zLiXw>6WM58oGENiLdpWpE`h|DHBLg7DoZ!MHa7*AvC)$(qw$Pi#|q< zM5)rxKkOFx{8xVcHRSQ>XeQpK{`z?PYW2v_(UrS#)kXR9@cVT9`qQr`YX-kG(Ix&J z1@70~m8Bz3C;ko?cN<tfvJ&Buq+s6l};KR z;8vWV3cxpGd`M#Y$!|Ad7Lg|Nnx&>Lz7$p@z4fjWD}|GZHi|)Sz28ByGC@9%V(!}f z)D&HaNgh-8KKHL?!by`04(lRejzW$PIknAPu(_4)V1`b@ZfDSVw7*6**?LhT_{>y^ ze3+@tcv}-SXM>(bTIToI38Wox~%HM$!)0dPWC9qySN7$x( z&@)VDKZ$v*AXr1TTMH=fY+5Aoj%H#F){w|(=mWeF8{{Ry4l9IG07%m*68GgkQQO?4 zpl>#Ke5)xVujv33?%8Jb)O(Hv?DPiO+M02B+)X;7`{gtToY1&(qV87D5H6 z#U56ATavWV_3AR}B|XmE!nIs5qfmRj;V}Y<@S^i@!?YFKWVyn&5|baxQ*C0#PW_@= zk+FOxJT@l_jgus{V=qMw=a{)RDC?#8&)^v)qMUi{gU4{r(&tHJPEbaxN0k9ubD zV6IB;CDgyr)$&%mOtz41mSe3}ReT0_@q$i^Dw%PD;Qu@nkc8y;HwHviv9I%<%A{%{ z#YFX#bE|I65=k%A2nyvhdt3B#wg#RPBtUsn=2+?tp$QDAoPJ_pKn+Nrq?SU~vn|VS z85t3ce0_PQQ&3&@@!m5qsKSU3oYIzwg_7LcHq<2+DwrY+pG!G4t@|76*EEr4($KkA ztgfk#<9Mghx-Nd_i_o$Og|DC*T2mxe~={tP@ydJ zbHIcwm{91nEpzsQ0fj$2{1(zeNUVnt!PiU%V;E*!n0#o42{I5+rSgK8oNdm10u$t| zF=bDL(@9x`M3luTaifb}B(~ANI0v+$p3@SFx)UHps1BM*%~he$LP2m2{Ar%01|NY` zX_2l>0=f2gy|4Sh=minSp%P^0A<7J6!bk)5Qg*8hMP_F~Ju8G&*0V%1L2{J2z#5dL zsqzYRoYAA}qIrmmvHXXU3%p7Fse1dTmN6RcQ2vm*=%9j-AX9c~B;GqV5k_i&GsUi+ z<#DuJD$gX)@nYR8BA5>)rxFFj`I0bIR7j}SXxNk>=KG_5K#`1n0vu{&z^q7QCrpzT zZ8;SH4G1T+Su^tvJjuxsapAdJDX4+b2eiJthipMa1(%S~&|;yWJ@v^owKfTqVCygz z9YhQ7luw@01b48;{}CS1Ja-F{KE8#KyC^Ly7se}kx}Cs(zxU{#c$hx0S+z?0ZxmX+42GV{Q* z2FX{a3+xLpGazEUmZhG}H&?%T^z3)j@}u_-_h0ZyB3kB@0CG@H<6GP=7QczY>6sPG z78pWL)IpS(Ex-}OW=)&Wv>&m@iIo+Qp zod7PHzQxi-@dyplu5~C3=*m?ng3M)_jHCE*vxwL3HQUlGWT02_uR>ZK=DMg0>IF4O z-{z725Jq|sgfRrVEAG|Pn1@E3!DZG$@btGz3Hs7!KPG!G7NxZwgtn*~;epy6d+QI+ z*DmO2kEcWjUECpb-|v1iq=2O@%3$QCw*gvea+Lx30Si(ukrG$gpE{G9W|^XdB$uyt zCW#>8@VO>yNM&>q>bBU@t&EeMe1i$5tYW{*!KQKBPmm6Ex)?bgCFGE{sIwrnEdf6H z`*B*`Qu`SR-~MCSnPi_2FfhX}>+aa!Zga8uh#O`jok&dP#64AcWleq>b!v8|S=Y2k zhvGsGE`$pFE}|%vjK^kfr64%HMg4d$-4A7(UHhdt%H5cXJW~c4JjHA=ht8^8Co{c_ z4!w7`O=m>XRiqHMT4(=c-0Eg2E(ar|56|AlxCI@wpqE{~8L;$F9lA$#SXEA9OuCTi zm)e!w^~@Qj2qG{3`?qA3Y6V6HWP5MzdynXhZWsV-+Qczwg>1Q%dqm?al8|4LtskK| zwEZ-fo)U9OvL~T23(LSv0wZ z8>e36gO)RWAJgP6#wDd>;h%V68d1>vqvNsmBq1)3%O#=K?1btRPtQF&udwgUqgVD8 zfNM5DY8b~zeDlh7rV%c~K&iMU&cV!^=LdIcRFENMylE`*x!IHUX5>_Ip|jykWXsL6 z>+&=H0a>1qo7z@afYb5{O|x10O!W6oz7^ta&9n#7MpzvZhLS{f#EFjm0f!ZD8$4Gk z2_%lqGCj4pxHM)rsZ3&Lu{m9%XCZisrfBOO4(K(QS>65mP_(Sakrl-XWEwlmR`S8= zlc>gbm*Ub@2E&C#odRcT5t{xSQ7-=Z(t$CvMny6y7A*RB9a~*8_SEjJ5f|8W#2L7p z^ppTm+j`6;C1Odjy^zQr-FXmK!MiN^*x^Mfu8gpfR*f@JL{oJRZYc-jP*yXSORUg8 z$5FMf06N1!r@xjRjlkiibS+eG7!(Nk*bXrd?|Iw}a_~OeqVcuf5AYJJU3s%Q0U$uM zahN47kK5Cca;pY;YiR4$`zKy0zY|CzL}xe8e~Ugn*nj5z#dlJ&-IqZ9<7gpf^0ZS) z8_olWR6fSW#E{q2Tm%-cw5j-^mxQcS5azv4E>Z$o^eZ7JC3`%0b9fsTK*myuowVbG zAF~D39sFT#+vGN1SgnC8)BS~<=H?Iqlq!u^<4Goc>Z4o|9c<#_jj^b)e)D;*N(kD< zXmSYGcc@86E_uhBz_kcyZ4}av(K=?g`|ks9*AS_PmN!Hi{)eWyzKXWr<#D7lkl?B^ z4f`Pb>a|sR+9LnRu#uZ?^f{8ni|OT>#{%v1w2nn z>$C?aC52~i2(C3$WOwJcLgY}sSAnAF7TCp3PKl7O0rX-E{+R~4v3)kAF=QLqN*ak6 z{(P(H9qQj1y?)Ru_?C@!i|^=qI?(&;7&8;;Z#^*TrmrIt-#%qrI4HV~D0j0zZaqm^ zi1|hJ{XPUV9NRV)Xx>pj!+qrFsd5)47X@$U`o4MM7S94`g2wiS;l~$iVlJelb{^@b zX&rg7KJh__2(4e7htz6;hLs_)UAV9v{r1X6du!E9CDR_ef+eD)Tw?i!2c57u~7{a3_NB-6f-%$6Yr8v-r0U%a(R{C}=utd-ZjTV8f;aM=>ow&i_XD2l{E z9r0u`OMc+?xz(Nd7kvp}Gv(T@hMCSgdi1B|t_{CP|ok`ge^=e+eOF6Ca5qADovgD1Ul zP2TAM(nXx>dviw>+AuV3MGHY`az|T~ik|0VCi{#bEJw51F4n6YU-nVTtcGL3C*j+d}FM`(2jKTXwdu|I$%a5Cb*EU!^N_tg+|D zeYea2WaYM#xo_u9&dnAQN4Z>tMyonXwfj?|)rnij?6uxD6K73@{OVsaD*le9w@k4^ z0d#ai=gZcgWqX!yM)Bw-bkrquoC%B1iFBwzN~+G?a0@?LL^2l|I|LuNFydOSOeT-h z14%;cdlAzZ6E1XE#CKyfiE;$$!Pqx16nUD};dzy07a0Y=wZd+cL;{m^=kUwVJV*}r zmQO+)yKb>QVN3Q@$%W@|eW)rK zM;N`8Y-L3NYzLXiHs2f)VD-`PRQb{M1y>6-d7%?3c3p1r*OlUUF=laWt%=(9EWPcg zSo8jDK8E7Hdq(Z2o4j$BV-vQ>O5VzWyNbJ(a}V4Uqp5wHxAQ7NUWkNQdm7e(}?MLLhZhKky#8Qm-O+652<^f=t_Dmh{Ap8)@bfp~LPj2`6JBJAT|NC=YyZFtCIa-+smZcumt zm1IM_M$jWTTcjNd;o@J&JC*c)ka+m0oS^ye^?2DwL74@hF^p@4oO4;GTyw$)aNk-t z^F|@w>6I*c+&oVZd}*nJmrghYGCq8&J>u5Oa>-vMsKDAQSzu2c_;td{JoOy=X%KQn zKI`Q_b+~EfxqzZ4NfF2j3zW_Mj(-Pu?~Dcu?0@QZ<@s?1C8!}||wI}u6v#U!kT779Z=`d#` zN5d-8$978@Ec%4rk9`PI^XffBdI7%UG(X|OGeUe80an@{RYeCzmLyq^OiQOhM=W;C ziOs!9q3Y8S4-U!F`42&veGd|A!TPnyov&%QGmUMZ1zJqey-Y3D$ zdZ=uXc|8N)N*Q8a>WAdJaDn*p-zB06a%G9(vi(Ue>$R0`j59@@;M}rHz2kZcSQ*Ke+c?e>6dDya}fvc-YSDXU|RcJcL~ZuErgRU zoLQAzRQehNoEr=n{1Qh8ZFigP2ZYyFF>McP#zg!R&PN>}r7WP$>XNq1w@ zmC~iEG((Kq7NhSNrk&jUtbS|RqpGlXJ1BzQTn`8FEf_ksPNxtEbVOcdWxjGVFp~d*arPsZ~wVU&2bj zIIK?%d=O2TEzeaKIT6d%+1*dloPub;ku@~|Y)b(r6v=)OjEL|9`T?bMpv)!9L4hJU zG!069&@`zLy(oqfk9(09w)5cpU?V9vd_L5?$W!VCCpORPGB1|AYeo7#tg#vZ0%%j9 z{`@OEAVJmxgJE_I2(_kZCSQL?(Jipd3|p)8xf$U9XFBf>%5~D&cQO_&vH0Et)RQ?Q z9rD&x!k&GcNZkw5v8B@2>PzO6o2%+{XFlFP3C_!|fx3e*~>SWuPTw~AmzTxxG|MRO9rv6d$fJu1UvXYxo(`71&GODl4l z?cBlvU*$|(ir?c08S1QacaR?kl3{Oj0}3Tr9%7f7&Fd3v@S-h_d&)3_lj)k4-%`s4 zSEUB&4gu*|^*lQ1O$t^A3qM$0AnDsw8agTXDhL{jT5;g9@(BtSYY)rwJEGTK86+v! z?lYdu5)WCkok--F!u8Qxd%Letj?||Stvc!BDy00kqo*lfZ0X|s^?-S+y$|N5>*3_w zk*yUTfArPt(T*$2uQfT-pZI7}PkzkU+ufF)Kc?(%3^*n`j`8qy_PyhMB*p>=%XQ2j z@9)Ua=gZ)3Y$-lD96al0$DF&fuY5xM&d%cfd}%)B&ylm&zdoNY#{LG^?2m=e$qb%2 zCVzWVeraOp_?34qT%EHl`3)cMI=m~p`XMF%_Wjq+>Rs5IKZ{Rhl-ZlV=gZY;WoK!_ zLQExpLq0hi-aQ^Z5Pp5@{I%(0>-g2mU<^6W;yeC}G7qk!vAJPFoXA6_FK1hCmq+iR zn&8eNY^w`AE0;}d2=6w7S#0ccLl9=>&yk1pb%!rzSJsZKnIsRfBadf$5ox+JQNi!S zgE=efYwY4@$0jBQoS^vVtl7yDo`g(GvVu&~p`wt4yqkBY~hUNDzzB!*bD1cM!PIA3p=5zVo`H!V= z>q1buf$kDuHgAY!dks(TrhoOnEfUZAu^CbF2JI zX&$_rSbH5YygsSi*Pva1{~Kn=M|%By6dk(dDHXZpu{L-6+0vWxd&J8ZQA@h(()c8^ zu8J*JeVfP0m}7j-*{N_@A#&d@rvG68cq=}N^B6~A*8_W zJxNdRWWNRTSP9%|g-ZUoba9}vXi*(+x9k3HD-7GjFA)&0T&g*2Td2*UwED@VzMESj zp+HJ4Vl04oa7~*(pdDS&`e6HhD%0na&dYn{zF5$k)=)X-pv$CFp6yY zm+2*E*vS+!nq;w-=I;053%BoHXQz+)uRuW*;d=1$+jL2LbRv3qRs$s7Z4d0Mx0g|X^5PFSPY+jN`^`5+ zVA}%}i+Wm%jE?)`e215l_GD_5Zzb}>K`BmvYQ(9Jhp;?*-nsW$#i@<9al}L@oWSdY z63@KfJrkz)zaLpLFx=({zZXegS?3cs;@tpksuM&>C=xxVYx^rG96BWajObwFIlHN$4DkHB0IcpUjd`XTQH(`k(^Vo|%(o`<0wf zxb61nxi-B)3BP%ECgkN2cg)Hhbb@=${P&+E^ruUr=eq@@KR~SO6bvn!n{bndkyIK_|5Q1) zZ8$PLOBSJsbnrkVS=0C36!1i<^RrX~@44^J~ooBz*De9~j>y``4K@SfWTWc<>VxQJrP zEh)dbGz&+&fYwE-NUPM!eB}NdKte)91PBH|%J?+<`&x6=0kALHnv=KjvV<#1;y|bB zdb!-=7F7If=!q*|yf1n+wi%$tf)9V0sEZ@HbkLu zyug7$cTw%gr8Qkt0ujw28|0ITz5pYJHMGyJh;+TXx7T(Yua>oQ4Z3ED7Bavi?f;*# zMRfx(d|UZaK?GhDK{p-Iw_6TfSbcSAKH~at6s7a~q+EyJ=oiK=7{@TXB-CCjgcIVe z4cehe-92!|hpPj+9J=ED-E%Q!vsTR?tbPwDgv?R*cy@iO1sHOuB!ZlCkS#~P_yk6o z&VH0j34bldCGT%2N06sshbRUx+$lf|&p7#o5!WaoDA!O$dprPXAKfBQ@7~Wd&HJ-W z9jM2if2V(anX{N}g6L9xfTyAE+QSTyF_h%lJF)+!WU5Q_Jyc0U0p!URKD=niNX16HrJ|A9j^ z26}S8V~Dw!PsM#85p;6S+5*%k;=Hrsv_3A*K4rHgng( z$S^XxveqjNs6m!{kf#SQ2WcGW7;k&rZ7|C2_`6Rn;QfWt9E!k3aQ@F*7KCBPc(`ZE z$U!sE?bH%`E;JB_6SnE0fI$7g_`x_}073NaAz(avB1@d*X;`bd%`54P+f zHwdfHwB2erE)Rx2xF^(pXRt6h{(^;MVySWmGfLbon&*sLG`-fGwu`*(DOWMy*J;s~ zr}UO|azrb{R|hZ)aDV7oi1Mc$7P(i?!kEwx8h{A-c$lyOyy3tZRW7kuF@gl}gMNia<(oaTuw*(=?rIp z$Eui%xnZjbOqhoXpcm$YAFyV|wF4wNK2G%1Z}tzLq8P*U;RCFk2RiTuuds(-M06zh zZ1Qeb9=Pmjl{CN-OOGUC;XR=fJeYb+j0=ly|3Sz>NVykFzmE$V-*D3iO@_$B%<%Ri zONjupWHf;nhNyrr|95~mvtLA+j}4T0z?TP%bZzg`4A>^1@V!!L1V|7`Aapb{Fx~7q zM+1TqBJc+`Z~^UJ=RWQ)_eaq0e{XmVOUmhx4t6!@8AKkB1Gx-8W{n#WddP{u=o!cB-6zpIOINT4hR{VV}=Wu zA#X$?Rwv3N5dd01i%ihM7CF^0o?}u_5~g)QudZl&VFV>?!ER_l-;w-=6OI`y!R(sv z+B~KD@Iyp7i}c9tbx#$Lz>{@f!8AByKE*?Cno!WCEZ6QoJ-JGI@`BeJ+BN5k z=oc~Lk#%Sub-+L%jU@6X=)c0JU@X8J*7M8U4`}~DyaM%4gCc%;8F;@<>&NXL(0Q2K zFe|FsA-dQ1#uNp~IkkMFOx9kD7|(|9@jQnO1xPq_bKMl;y16c&;n^GU6O9xkq6C8C z6@Ev8O-q|}WWY#b=iiF_i&q0blNUfU@(;npml)=#&z#xg%^y%QF#jFb9q2;r-4?Er z=|KNM2M}+-!Jk^K_p<@et;|5_>|2AAq31g9@5J?Y!{HF{6mbUWktDp=3(R6ep(qS? z=#dbAZZEixDIx;ljP_2$9_0k?zCx+9hImtP+yd!$^Kf6{PNIE+bX=ApOv9O*=SDA_ z7)o-!Qi$5=i7b&qz&j^})l8V7((n>=B(?P~YG51T;3!6EUDri3#J>qvMeoaO7c{GA zqC*4u_*uWfS7nDs6OB~c zfTXV>u@Q{cd#`w$cRXvU05?OSO!cTsVDo_B?wA?yw~OCYI`9t|$7$PD&1MouGrLuk zX`Sw~XW$z|90Lj1fDQf`n4uuHsLlPAEBk1ifyps)FNMH*~ly_4dvKrEXQzmHx-GGn( z8c1ggXu*A2T3JZtbXWR z&#!;f&kRD-X%isvn!8U@XIM01qR5p0XC>!OO>G+|mqwfPSUMpgg=pWtlZKdu;cRjK zO5<##oAjS=Di&bE^Yi1v2lSm2&=oxXg{3+>>_A%AbzHU z_i%s+a+wq<4ptFm-fr(3A;KJV3Z_yCe;SZIgK0uN_aijmNjh{z@VIoL+0LsDfK_b6 z7FT4zDpF7_FzQMA879?>;oKEE!Bjeof5kN;wLZrZN+Mr2h^&WWi%*y5RGC6Ci%A8I z@rw&Mo`)K=p%ffLQcOtluDD-2`(9YP?-k4yip!AL*Z6OAVA_oW&cw55#gPtGH0z*1 zWZEP)c#Hv)^LeJK9UMkJ%Gxq|1=FnNfai-8^1TBC3eW)y!In_oM!<_Ky`uM^;=CGY z7BjLcW^nPZhR)cx!0yqreT%;LYp-8yR%|y@g7%?@s>W|3qC~;fg$j=8JmJTE>$(7h z^0@wo9JH?)exk|SbJ3)UiS0E{s$4o7Dq>eJqX>A6kb%74jRmCJhk@;y1&^O^M)?{k z%-VR@Xvv~oZh(J1YJ zmjIzF0QAAw2PeSW-Mxsbt^r{Wmx4c*q!swU7VsgeSYzz+^zvZ3NilG9b9J4*W8DPi zOQD`pM&W?ofv>(!xibc@9{C2o?_>N-@X+O8WkZ%+ov?04YRiMZ^ZEck!NLB6PhJiV z2K$ZR_u@S*aKFQh&!-qwi9zmi3GquYqyZ$I?mU0vCCa)so|V5yL))m=JsT6Q`Q`oR{zpZb7rg80TbT+f2P zm&%Vare3ebgvx=bbEHs$^g;4&C{S%5>R)epuqF>`HAsxGvu*;T7MiDU_KgmFhQM1P zH}UOu_PKLf19L^a`-^;}dlzXfJrzMSDbPl9hK7C%zoWcJ?Z>ftM0zg6#yuNaDVtZ&2z1w6gEh}xQa1m5`170c%qXMTXqw=S6Q?ZvwQgXxi(#-KCh6k z!9zSq{LNBbn7JJBW#d&NNU0~QWsGFnq)x3Vp32V(B9eC3omO=*&}=m)?f8)l$Z`K# zso9n%XAb8EJE2Bb3G-%9(3p^s8Yz+7@H0y8&DcCI-Z2`I4@QJ_Is}lZYou;4v0S+` zI2N|vkF9wXkwTCYxZ%i2ii0%eln29Y1jKH$2t1`bvT(X3V$=oS&Pybx1OKL^fIzvf zS%QbiE>UOpD=>5L^Vx%U5iG&_8{qdC@GYr6z`E8RfRzF41o?bNm_U9%(faIyu2C-d z9BDsuJfV6=IX1UQdgQJ0nvMc1vLpzgv@FF6b#$YIqNWDN6G5@;0D>%vlcsEC1d2e9 zN|RF6L*-d8*&S~w&1VB)qfT_rZR#de^gFfGEHZ02Fd=<`e$Fkv2WpW|U>V9aV7eo; z*Ir|V?wnk{~RW0g}h1j!`mvcky7j(9M0ZF~}Y(ZQ^YLK`}RRgh2BaJ~+;E zUb=dks+V3rI$&?yT#A=oNA}{p@Mi_^IQhZRDy6wb0cG97RQk+p{DC&mcU$c(}E+88c_m3_jS8yf#=x(|T z>VJtNAqk0@DluGs4NQgGXYYn=WXiPHzZmjHLGea7=FqQ*rZu5!3+hWi{RL2{_--1K zn&5~&YD6xh2QvdJ80C?R1gk5Kyf!|>)YQa93|+=DpQym4KgUJB9LARzIW(&}j4Q!v zgD`fxqQ{_{aT1-tA{Yo$2L7PVXCsmMl_N;}4++?pTqI5%RQN^)gI?>BZ~rqja4mPq zt_8O^sj1Qgj0BqV^>;AxNwV3WjDDzAzwWSl#CJcAH^j7wzwL080)OQrkuN_AUx&T; zUN8l1ZW=p<&JY%rf9@ayNFl?Q(Fp@lK6?S98f##Tg$nj_s?2Q1e^%(HTi;EY+Ofz* z^FS>CrJA-wvk6+vA+`Tfgs#8|-*z>qf1_tWA%mxRymTM%|6R+&cwK)DjmcjoYb9C; z72s0+e*i{6xxYG{hQpK>h--^cU7ZQZ#>rhez4MVltVLsp*t?9WJ8o-c;ec%(*EHlEF4Whh*`1VbU) zNovjMu+c(-G}KnWnT4oPZL+F4Fsw16qkQ1fK^IjAl05NN#^~Cch@JiTJKjWa9dN9= z7)QqO2sVKH3wRc$q9jBx`0EVhuXLQ-JePTt6-%;3Tl=w3Qv^ReMhzRe;u_~B7#?5f zBxZ);(wU$>4@509Gy~mX0LWVjcrgRvu3=9o!Q99yVe!h2F<}f(B=RT_1Y0bGu*8TA zktEF!gUjG0JV3}HjRW7CCt2QyOFCs7AhF_{ZD#g>v8(fo-g)O@@Uw$ym)VQy_9jag z8oc17j+KnP8gqBlMNjLS%R%Sr-9_*69F5e%n>SgVvq)`9HQ_hbw`DBuj8G805!;Ht)Nltke6)?E7piYu& zAn%ygfUBLbQ4{K87V7_D;`xmuE-)Dl@-) zLr}wHejE6weZ+-=Zm>qKR%IMm8!cw1iVM+f(KN^JKme z>6w#o5PcN2`C{;PudJ~W3a&vBUrx|kiMz0KEJqTq? z^t-3$pd15>xjY=yB0}KrV8p`&scLkS3GI)=0u4pcbj+-S?kXa3Sh0R#g02OJSroJ)vtAy9-W--7rA{WL8@tj1G$w?G|3*SItwbbLg z#Pj$!8+p2%4O8}=z?mC`qeGl2w_w`}>@VG(<WD$vpsJu4~Gt`WM zVlg}wb%`*Sstl2VA0Z@GU{ST2m{cIxR`@D-`5(J4{`AKR686{`0Qir`K?X{A#PZwo zR_o7A&l-&%HcO@|k~N*_0U9s=$`lK|eQovODYh9qUAu_ZkW$QCv(B`&in)Hq&Ej@@S z_~Bg`Pmx)-f^)V=sJYbWR73*!3i~lC&hJSK`bnbYQ24~^w$3lQ??ISChB9Yw5->{r zvOj1Kx`#H8#SPR}H-^>R$9W3kyjo1qF^5Kt+1&D>eQ^dN zbR|-JEqivcwmJy641^l|h7_vBmY|wk7Th@7n~glZ+QhMOwYrWCt8E|t&B+EYuhwF} zn5a9S%B>`%`rvX|sxvjKo?_*)ru8eg^i;QSAz=^7M9;EN(n-F2sj`R-OFiiwwokTD z#e!WveIx&^#*26on3>1%u2P&B$=gDP7Ol~VF6W&xP&8%L~j{L~~UxSJzT5~$SvhMN^{o}Q4z==jibYO6#CkP$xO=&gX4KS{OUJWmG zo?635w}P=kvYMfUb;(fR(5iiOEl*1xto{#KCiXn{Y)!m5MRz$4+^4yV>vvSU@9x>vo8HmS zD-s53_na&%A~z*r07X0=K?%kbvZ7hi$~BA5#mXMYUQ_&Z-Ez#X>xppACU`t{|dbQ2!g(4B9hDW&2k#~uT5 zli6XPOj1+wp5_$^W&zaTKSE4Ook!?JF^rh4IFyyh4u2BQ%2$QNMMyO(%4epKTRM1b zA0w3_R7%+}PUfDGT6mP;!7b zD(I+18qt0Kuy_6lq>R{&@UAR|;0iuui5G58!Mi*6fA+r-&(t#gQ_0cAf1S>b7kEy2#r6YW2)xNx-ZuIw0sg~^I!-{(rvUZ_m6f~yXMt3Qr`Af<}uP2|IUuQ|IIfnCM>z7flFD8 zWTzp&pB6URK$Pw>>YU6FUiutX?9C`Ts!+36JwSd5Arr9{T zo^kxJTdCKKck+c1Y+_Un?nFy4k@T{6_69rXiqmF_knyJ2a$hxCytN{%Q?Buuy z74Ip^$sR~OM->8a-*RLxLjiGS@V$XY*?qe^T77cf{OpL6btSeB;J7;A|~>d+((wc@Ws0* zTRJLIMV_wsfvO_`W~Q+!PFlRi?19%OAG^p$v;DSA&qGQb>IN5Ga_RI2y{psq;P4pZ zz$#&e%+G{uuQ9!Zb0Z{VR$?01-@h;^{~YZMAT6w?LX(p`@Z)$)*@&4mSV@O>WJF`h(>?$j98FSGZz&&!!go>E z;-DxgWJ#-LyD+&F@w0lE`iH)dvpE_?^UCf^`!4MnT{R0@X}-=S!bDKJ6wgxgu5;F* zK(#^dsCUwp8?Vx9f!w9LK*|*Jr2f<0vmU2t6zMosx?~z>(KweP=wmmRZ*O&$=_M0KluEeMN&s+yPaW`x+mJ1u6oVR-dw)>?2Qc5|uN z>!@>n(K&?Qjy`91!aT-UYjZ?9*>aQ48=FdDY`a^3C*E#5XYDsq+;Y(Eo%PpjbA(|! zVmMjhOv#&+-^V-p1l;d0^2OB@?v3eB*mx=Ug!#`boPNSF%MZbD`WSu9)@1ZnmDeiR zGi8+8A3?e64!Z4=?!SSEhT2}m>`N+wgzVS~7E}2yR0*1Lu3)1KQ{wRG=it=A3`Q7b zX>cH73;~Qxlh@49i?ky0RxN03+@)#a-!PWiNdTg}DYK}=sm3Tx4V)eoVq^*~sbZd4 z@N--R8Tp+_a;KoP27K{KL(@ztvST>8fVz9O6Vm>30{|ylPP(VybuDqyXnb_{2_X7} z>+<(5mi2mFKZ|a{Y)m0J+V4q{S+;u7~4Z2)QGcTT42VpK)PNhi!@G&A|+OsTdn*mbs5XHJt_gKXV_Tm zAI(L|TQBoW4@4WFBdc(Nvft8r=Tv<|0ysq?o27S=^9U?g%YWjBf2TG<-DDg+5Uk7> zZz`#$w4`dK)plO8BNU z&XLAfw(1vI(spftG(td*m_F;b$l5EF1<|=!!l&iIr4>CyBg(7{cJE@8wCA8&B)fZi zYU=0WLWW(zwY|?~EROteT!bDc72MPVt{M1)>DwCkPUdWCx`SV8)&Xjkw#-2A0U&B3 zvvo(G1X{{+3nhS#4ndCjywS!SHhvdXD-H+N41=zQMV!YNt_Z2}k?}by)g?(bGjON=ZH%47dx)^B}AS`#{H8#TZNpZ~u z_aR=EskTxo{K*^A@z5!&F6$%*Hytx9Uhf4dOC-?#RMcEk(yOs!8m?i_1p^>kVA?j& zNTmY-R&M5^O-kY?w7k~CZ0b0iU3|Ma70zDD8AsxFb=NNO(YC;`Q)^e2X+otct0`CR zrZi-bW&Az^j_&MIP{ZVHQZe9YHZQQ_m`h_W!&VwR?4rQmedAnCE69*)&qzItVLTM- zu=^AKV*Pwha=x%|P1H0#x1eQ4VzR}*8%|9gN{aNhZ{j5^US)KrOf;>q0QO&`DI%HE z1SzEufzM?-$d)Y$j&@Z{i{53Yjt>*u1FK;EZZcBf_b;Y^qj( zkB8GZr8;#>g=AUkgAqCgevE=eYd4T*~it;l95MLWu-Hk8|ngn5L9 zNhvXIcK2x%7b17V(gVs+HYe3!3e|@a9k_Jzl;Q9@SYE#xb8jN@VRaJhtqJKj)MHQ^ z5`BfGhSog4%VWpb7e~-9a8RS%+sBCUVbNGzSjE;_F z<_d{NUvDrY@z9ljt{KV1zi+WqMM7oA=uUR_Y@H6`XM@hsR=xuT z7Tz?vYCMm1fu97aQutqaa1-dOSC`KnshnZHA!5+(yt1X$JIBz%&c#LVV*7II?uJQN zEKnB%;e%+U-biJ`OVG5gUs2f+Ox?1^YBEDmKW_s@H7`>}q5G<1;wBOsr^z>1C5tYh z%rIrN&R|lVsgsnY$<4Y70zM!ugvv?*K#Lwa>s?{W@hR3A@H;u0QdTV7d!%A3;D}yO zPW!^^P-oZ@*)?6q;l`#CjP&`%{2>-i#GN3@m{u3Uq5i-+ z&L7Yu#oEdrICd($scna$P1Bb~xuBOQT0^XEPA3m{v1u0HU=};ckLqyIFQxmHm5-fG z&q5=L27eGe#x1+cj=1vDR9AFrFOtF>7q(w>I>bTY9o7hIbe`2E;0bWA2yU+!W{POR zqQ{Y+RUd!mq5h=zZnG|>aZ9pyN7x{))ngGKV7OX zkw2wuvxTI^HddqQeHGcNdv<KnQ-6Q*h@`f*WX^UOL{i=^uo1$=6U%rLEy^;&CttVy8Wnn$LfeCdU?<`B^uwbL!Y zU2^L+L*2oSYX7D{&cB{9=g|K2~u4DBhHAM3u66{D32fxz;l0Sec9{hdi5J-A~85W++qav30sVTnFP3O7wFqnwr7L zyL3>#r9;FqPv5pCRC@=Ij3l5}JEMNz>mKd4v)-!4C>Cx^mH4HzCI^Vr6e4Zxc%?|I z#Y7cJP9fn!n;JRnhs%>TcB%zRcN%p)w`_Yz10^aJLFJZS0jQb?FaGbtLz98mB*=}h z^zOHwFlvzYM=$%u!W;a^&Wlzyl8XY@IMgx*@>f3N@ioPN-MuyW+Ltztxj-A%?k z82myXEJpOyuQ~k)*?j{5$kjw@sM4W+SpPasg}~kL{lmkC2Y{N_Kk&ytu73bgxc-Sa z-thgVMaG*J8E;x75YdJQ#v2|OZ+alz^uT1p*PFiI1f|I)C`~p&X|%T6C%|C+*KndX zKJfj4-XIA081iPv=hqe??8 zi;890`iesAtva1hbrbJn-|MEPaG zMb#O6rGKwW;Jxbqe2PV+>-|2|rJ+m}stuJ?DPs`lGDPu+ifCg|i{LVeAH1|eac}I= z^NJf7&tQirYGZPKX$L+HJ&nw)lYE}ojKN_Kns+pcGBUm}{A8<0DQo0oGVaK*Ob^^; zb{vE^xctIMuuNTEn^vj|&*htyfU(^N20yxpyLOriEljHg+ClK`0X}~4t%Y_;Qmdn< zH@%as-H1{YjMQ}uMX|BtP627oTimpIGhph&MRvD{;R%#!%hQ z*8IV|_-Ov{bXs*uJ>{YoHFbPEz<9?v_|_|2#1Hv0Lyaq{Bp}#=4lBh2cEd~aEx8UA zg%tTXPSIh*f2$h?9X*+w6IFvjZ><||j`IF0(nt5S{qE_>JD&NzV+~4JQ~knFdIKvh z;QKC}JIk!S<=M3Km=HA2SZ5?Y8+ay^Y2wT*a#zQX$vZLyhbsAjWVK;ruZSi7h2Q=u z_=^ny`-#5ch%)niO-NZ~|LmJ_N0QeXJN40Ib-l8bZMv

^9K|xGB1f4lJ+Aoa;gJeAUo%8D{I1 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%0ASYm~u&6 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 diff --git a/libcyusbserial-master/CMakeLists.txt b/libcyusbserial-master/CMakeLists.txt deleted file mode 100644 index 09a749b..0000000 --- a/libcyusbserial-master/CMakeLists.txt +++ /dev/null @@ -1,59 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -project(libcyusbserial C) - -set(CMAKE_HELPERS_BINARY_DIR ${PROJECT_SOURCE_DIR}/cmake/helpers) -set(CMAKE_HELPERS_SOURCE_DIR ${PROJECT_SOURCE_DIR}/cmake/helpers) -list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules) - -include(FindLibUSB) -if(WIN32) - include(FindLibPThreadsWin32) -endif() - -################################################################################ -# System configuration -################################################################################ - -# OSX -if(APPLE) - set(CMAKE_MACOSX_RPATH ON) - set(CMAKE_SKIP_BUILD_RPATH FALSE) - set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) - set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) - list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) - if(${isSystemDir} STREQUAL "-1") - set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") - endif() -endif() - -################################################################################ -# GCC and Clang -################################################################################ -if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR - CMAKE_C_COMPILER_ID STREQUAL "Clang") - - add_definitions(-Wall) - add_definitions(-Wextra) - add_definitions(-Wno-unused-parameter) - - if(TREAT_WARNINGS_AS_ERRORS) - add_definitions(-Werror) - endif() - - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - add_definitions(-DDEBUG=1) - add_definitions(-O0) - endif(CMAKE_BUILD_TYPE STREQUAL "Debug") - -endif(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR - CMAKE_C_COMPILER_ID STREQUAL "Clang") - -################################################################################ -# Process subdirectories -################################################################################ -include_directories(${PROJECT_SOURCE_DIR}/include) -add_subdirectory(include) -add_subdirectory(lib) -add_subdirectory(tools) diff --git a/libcyusbserial-master/appveyor.yml b/libcyusbserial-master/appveyor.yml deleted file mode 100644 index 11535a2..0000000 --- a/libcyusbserial-master/appveyor.yml +++ /dev/null @@ -1,18 +0,0 @@ -platform: - - x86 - - x64 - -install: - - ps: (new-object System.Net.WebClient).Downloadfile("https://downloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.19/libusb-1.0.19-rc1-win.7z", "$($env:APPVEYOR_BUILD_FOLDER)\\libusb-1.0.19-rc1-win.7z") - - cmd: 7z x -y "%APPVEYOR_BUILD_FOLDER%\libusb-1.0.19-rc1-win.7z" -o"C:\Program Files\libusb-1.0.19" - - ps: (new-object System.Net.WebClient).Downloadfile("ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip", "$($env:APPVEYOR_BUILD_FOLDER)\\pthreads-w32-2-9-1-release.zip") - - cmd: 7z x -y "%APPVEYOR_BUILD_FOLDER%\pthreads-w32-2-9-1-release.zip" -o"%APPVEYOR_BUILD_FOLDER%\pthreads-w32-2-9-1-release" - - cmd: mv "%APPVEYOR_BUILD_FOLDER%\pthreads-w32-2-9-1-release\Pre-built.2" "C:\Program Files\pthreads-win32" - -before_build: - - cmd: mkdir build - - cmd: chdir build - -build_script: - - cmd: cmake .. - - cmd: cmake --build . diff --git a/libcyusbserial-master/lib/CMakeLists.txt b/libcyusbserial-master/lib/CMakeLists.txt deleted file mode 100644 index f515e47..0000000 --- a/libcyusbserial-master/lib/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -set(VERSION_INFO_MAJOR 1) -set(VERSION_INFO_MINOR 0) -set(VERSION_INFO_PATCH 0) - -include(GNUInstallDirs) - -set(LIBCYUSBSERIAL_SOURCE cyusb.c cyuart.c cyi2c.c cyspi.c cyphdc.c cyjtag.c cymisc.c) - -# Fall back to just "lib" if the item provided by GNUInstallDirs doesn't exist -# For example, on Ubuntu 13.10 with CMake 2.8.11.2, -# /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} doesn't exist. -if (NOT EXISTS "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") - message(STATUS "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} does not exist. Defaulting libcyusbserial install location to ${CMAKE_INSTALL_PREFIX}/lib.") - set(CMAKE_INSTALL_LIBDIR lib) -endif() - -add_library(cyusbserial SHARED ${LIBCYUSBSERIAL_SOURCE}) - -target_link_libraries(cyusbserial ${LIBUSB_LIBRARIES}) - -set_target_properties(cyusbserial PROPERTIES SOVERSION ${VERSION_INFO_MAJOR}) - -################################################################################ -# Library installation information -################################################################################ -install(TARGETS cyusbserial - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # .so/.dylib - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} # .a/.lib - RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} # .dll -) diff --git a/libcyusbserial-master/lib/CyUSBCommon.h b/libcyusbserial-master/lib/CyUSBCommon.h deleted file mode 100644 index 4e8a3c2..0000000 --- a/libcyusbserial-master/lib/CyUSBCommon.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Common header file of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** \file CyUSBCommon.h - * \brief Common header file of Cypress USB Serial - */ - -#include - -#ifdef _WIN32 - #include -#else - #include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include "CyUSBSerial.h" - -typedef struct CY_DEVICE { -#pragma pack(1) - unsigned char inEndpoint; - unsigned char outEndpoint; - unsigned char interruptEndpoint; - unsigned char interfaceNum; - bool i2cCancelEvent; - bool spiCancelEvent; - bool uartCancelEvent; - bool rtsValue; - bool dtrValue; - unsigned short numEndpoints; - CY_FLOW_CONTROL_MODES uartFlowControlMode; - struct libusb_transfer *spiTransfer; - struct libusb_transfer *uartTransfer; - libusb_device_handle *devHandle; - pthread_t spiThreadId; - pthread_t uartThreadId; -#pragma pack() - pthread_mutex_t readLock; - pthread_mutex_t writeLock; - pthread_mutex_t notificationLock; -#pragma pack(1) - CY_DEVICE_TYPE deviceType; -#pragma pack() - -}CY_DEVICE,*PCY_DEVICE; - -CY_RETURN_STATUS CyResetPipe (CY_HANDLE handl, UINT8); - -#define CY_DEBUG_PRINT_INFO(...) //User need to enable this -#define CY_DEBUG_PRINT_ERROR(...) //printf - -#define DUMP_DATA 1 -#ifdef DUMP_DATA -#define CY_DUMP_DATA(INPUT,LEN)\ -{\ - int i = 0, len = LEN;\ - while ((len)) {\ - printf ("%x ", (INPUT)[i++]);\ - len--;\ - }\ - printf ("\n");\ -} -#else -#define CY_DUMP_DATA (INPUT, LEN) do { }while (0); -#endif - -#define CY_USB_SERIAL_TIMEOUT 5000 -#define CY_EVENT_NOTIFICATION_TIMEOUT 0 //This will make the transfer infinite - -#define CY_VENDOR_REQUEST_DEVICE_TO_HOST 0xC0 -#define CY_VENDOR_REQUEST_HOST_TO_DEVICE 0x40 - -#define CY_CLASS_INTERFACE_REQUEST_DEVICE_TO_HOST 0XA1 -#define CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE 0x21 - -//I2C related macros -#define CY_SCB_INDEX_POS 15 -#define CY_I2C_CONFIG_LENGTH 16 -#define CY_I2C_WRITE_COMMAND_POS 3 -#define CY_I2C_WRITE_COMMAND_LEN_POS 4 -#define CY_I2C_GET_STATUS_LEN 3 -#define CY_I2C_MODE_WRITE 1 -#define CY_I2C_MODE_READ 0 -#define CY_I2C_ERROR_BIT (1) -#define CY_I2C_ARBITRATION_ERROR_BIT (1 << 1) -#define CY_I2C_NAK_ERROR_BIT (1 << 2) -#define CY_I2C_BUS_ERROR_BIT (1 << 3) -#define CY_I2C_STOP_BIT_ERROR (1 << 4) -#define CY_I2C_BUS_BUSY_ERROR (1 << 5) -#define CY_I2C_ENABLE_PRECISE_TIMING 1 -#define CY_I2C_EVENT_NOTIFICATION_LEN 3 - -//SPI related Macros -#define CY_SPI_CONFIG_LEN 16 -#define CY_SPI_EVENT_NOTIFICATION_LEN 2 -#define CY_SPI_READ_BIT (1) -#define CY_SPI_WRITE_BIT (1 << 1) -#define CY_SPI_SCB_INDEX_BIT (1 << 15) -#define CY_SPI_GET_STATUS_LEN 4 -#define CY_SPI_UNDERFLOW_ERROR (1) -#define CY_SPI_BUS_ERROR (1 << 1) - -//Vendor UART related macros -#define CY_UART_SET_FLOW_CONTROL_CMD 0x60 -#define CY_UART_SEND_BREAK_CMD 0x17 -#define CY_UART_CONFIG_LEN 16 -#define CY_SET_LINE_CONTROL_STATE_CMD 0x22 -#define CY_UART_EVENT_NOTIFICATION_LEN 10 -#define CY_UART_SERIAL_STATE_CARRIER_DETECT 1 -#define CY_UART_SERIAL_STATE_TRANSMISSION_CARRIER (1 << 1) -#define CY_UART_SERIAL_STATE_BREAK_DETECTION (1<< 2) -#define CY_UART_SERIAL_STATE_RING_SIGNAL_DETECTION (1 << 3) -#define CY_UART_SERIAL_STATE_FRAMING_ERROR (1 << 4) -#define CY_UART_SERIAL_STATE_PARITY_ERROR (1 << 5) -#define CY_UART_SERIAL_STATUE_OVERRUN (1 << 6) - -//Bootloader related macros -#define CY_BOOT_CONFIG_SIZE 64 -#define CY_DEVICE_CONFIG_SIZE 512 -#define CY_FIRMWARE_BREAKUP_SIZE 4096 -#define CY_GET_SILICON_ID_LEN 4 -#define CY_GET_FIRMWARE_VERSION_LEN 8 -#define CY_GET_SIGNATURE_LEN 4 - -//JTAG related Macros -#define CY_JTAG_OUT_EP 0x04 -#define CY_JTAG_IN_EP 0x85 - -//GPIO related Macros -#define CY_GPIO_GET_LEN 2 -#define CY_GPIO_SET_LEN 1 - -//PHDC related macros -#define CY_PHDC_SET_FEATURE 0X03 -#define CY_PHDC_SET_FEATURE_WVALUE 0x0101 -#define CY_PHDC_CLR_FEATURE 0X01 -#define CY_PHDC_CLR_FEATURE_WVALUE 0x1 -#define CY_PHDC_GET_DATA_STATUS 0x00 -#define CY_PHDC_GET_STATUS_LEN 2 - -typedef enum CY_VENDOR_CMDS -{ - CY_GET_VERSION_CMD = 0xB0, /**< Get the version of the boot-loader. - * value = 0, index = 0, length = 4; - * data_in = 32 bit version. - */ - CY_GET_SIGNATURE_CMD = 0xBD, /**< Get the signature of the firmware - * It is suppose to be 'CYUS' for normal firmware - * and 'CYBL' for Bootloader. - */ - CY_UART_GET_CONFIG_CMD = 0xC0, /**< Retreive the 16 byte UART configuration information. - * MS bit of value indicates the SCB index. - * length = 16, data_in = 16 byte configuration. - */ - CY_UART_SET_CONFIG_CMD, /**< Update the 16 byte UART configuration information. - * MS bit of value indicates the SCB index. - * length = 16, data_out = 16 byte configuration information. - */ - CY_SPI_GET_CONFIG_CMD, /**< Retreive the 16 byte SPI configuration information. - * MS bit of value indicates the SCB index. - * length = 16, data_in = 16 byte configuration. - */ - CY_SPI_SET_CONFIG_CMD, /**< Update the 16 byte SPI configuration information. - * MS bit of value indicates the SCB index. - * length = 16, data_out = 16 byte configuration information. - */ - CY_I2C_GET_CONFIG_CMD, /**< Retreive the 16 byte I2C configuration information. - * MS bit of value indicates the SCB index. - * length = 16, data_in = 16 byte configuration. - */ - CY_I2C_SET_CONFIG_CMD = 0xC5, /**< Update the 16 byte I2C configuration information. - * MS bit of value indicates the SCB index. - * length = 16, data_out = 16 byte configuration information. - */ - CY_I2C_WRITE_CMD, /**< Perform I2C write operation. - * value = bit0 - start, bit1 - stop, bit3 - start on idle, - * bits[14:8] - slave address, bit15 - scbIndex. length = 0. The - * data is provided over the bulk endpoints. - */ - CY_I2C_READ_CMD, /**< Perform I2C read operation. - * value = bit0 - start, bit1 - stop, bit2 - Nak last byte, - * bit3 - start on idle, bits[14:8] - slave address, bit15 - scbIndex, - * length = 0. The data is provided over the bulk endpoints. - */ - CY_I2C_GET_STATUS_CMD, /**< Retreive the I2C bus status. - * value = bit0 - 0: TX 1: RX, bit15 - scbIndex, length = 3, - * data_in = byte0: bit0 - flag, bit1 - bus_state, bit2 - SDA state, - * bit3 - TX underflow, bit4 - arbitration error, bit5 - NAK - * bit6 - bus error, - * byte[2:1] Data count remaining. - */ - CY_I2C_RESET_CMD, /**< The command cleans up the I2C state machine and frees the bus. - * value = bit0 - 0: TX path, 1: RX path; bit15 - scbIndex, - * length = 0. - */ - CY_SPI_READ_WRITE_CMD = 0xCA, /**< The command starts a read / write operation at SPI. - * value = bit 0 - RX enable, bit 1 - TX enable, bit 15 - scbIndex; - * index = length of transfer. - */ - CY_SPI_RESET_CMD, /**< The command resets the SPI pipes and allows it to receive new - * request. - * value = bit 15 - scbIndex - */ - CY_SPI_GET_STATUS_CMD, /**< The command returns the current transfer status. The count will match - * the TX pipe status at SPI end. For completion of read, read all data - * at the USB end signifies the end of transfer. - * value = bit 15 - scbIndex - */ - CY_JTAG_ENABLE_CMD = 0xD0, /**< Enable JTAG module */ - CY_JTAG_DISABLE_CMD, /**< Disable JTAG module */ - CY_JTAG_READ_CMD, /**< JTAG read vendor command */ - CY_JTAG_WRITE_CMD, /**< JTAG write vendor command */ - CY_GPIO_GET_CONFIG_CMD = 0xD8, /**< Get the GPIO configuration */ - CY_GPIO_SET_CONFIG_CMD, /**< Set the GPIO configuration */ - CY_GPIO_GET_VALUE_CMD, /**< Get GPIO value */ - CY_GPIO_SET_VALUE_CMD, /**< Set the GPIO value */ - CY_PROG_USER_FLASH_CMD = 0xE0, /**< Program user flash area. The total space available is 512 bytes. - * This can be accessed by the user from USB. The flash area - * address offset is from 0x0000 to 0x00200 and can be written to - * page wise (128 byte). - */ - CY_READ_USER_FLASH_CMD, /**< Read user flash area. The total space available is 512 bytes. - * This can be accessed by the user from USB. The flash area - * address offset is from 0x0000 to 0x00200 and can be written to - * page wise (128 byte). - */ - CY_DEVICE_RESET_CMD = 0xE3, /**< Performs a device reset from firmware */ - -} CY_VENDOR_CMDS; - -extern libusb_context *glContext; diff --git a/libcyusbserial-master/lib/cymisc.c b/libcyusbserial-master/lib/cymisc.c deleted file mode 100644 index 52b2846..0000000 --- a/libcyusbserial-master/lib/cymisc.c +++ /dev/null @@ -1,586 +0,0 @@ -/* - * Miscellaneous routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" - -typedef struct NOTIFICATION_CB_PARAM{ - - CY_HANDLE handle; - CY_EVENT_NOTIFICATION_CB_FN notificationCbFn; - -}NOTIFICATION_CB_PARAM; -/* - This API is used to Read the Bootloder version - */ -CY_RETURN_STATUS CyGetFirmwareVersion( - CY_HANDLE handle, - CY_FIRMWARE_VERSION *firmwareVersion - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_GET_VERSION_CMD; - wValue = 0x00; - wIndex = 0x00; - wLength = CY_GET_FIRMWARE_VERSION_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)firmwareVersion, wLength, ioTimeout); - - if (rStatus > 0){ - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* -The API resets the device -*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyResetDevice ( - CY_HANDLE handle /*Valid device handle*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle \n"); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_DEVICE_RESET_CMD; - wValue = 0xA6B6; - wIndex = 0xADBA; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - //return buffer will tell the status of the command - if (rStatus == LIBUSB_SUCCESS) - return CY_SUCCESS; - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} - -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CySetGpioValue ( - CY_HANDLE handle, /*Valid device handle*/ - UINT8 gpioNumber, /*GPIO configuration value*/ - UINT8 value /*Value that needs to be set*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest, buffer[CY_GPIO_SET_LEN]; - int rStatus; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (value) - value = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_GPIO_SET_VALUE_CMD; - wValue = gpioNumber; - wIndex = value; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, buffer, wLength, ioTimeout); - if (rStatus >= 0){ - CY_DEBUG_PRINT_INFO ("CY: Get Configuration of GPIO succedded...size is %d \n", rStatus); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} - -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyGetGpioValue ( - CY_HANDLE handle, /*Valid device handle*/ - UINT8 gpioNumber, /*GPIO configuration value*/ - UINT8 *value /*Value that needs to be set*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest, buffer[CY_GPIO_GET_LEN]; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_GPIO_GET_VALUE_CMD; - wValue = gpioNumber; - wIndex = 0x00; - wLength = CY_GPIO_GET_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, buffer, wLength, ioTimeout); - if (rStatus == CY_GPIO_GET_LEN){ - CY_DEBUG_PRINT_INFO ("CY: Get GPIO Configuration succedded...size is %d \n", rStatus); - //return buffer will tell the status of the command - if (buffer[0] == 0){ - (*value) = buffer[1]; - return CY_SUCCESS; - } - else - return CY_ERROR_REQUEST_FAILED; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -static void LIBUSB_CALL uart_notification_cb(struct libusb_transfer *transfer) -{ - UINT32 *completed = transfer->user_data; - *completed = 1; -} - -void* uartSetEventNotifcation (void *inputParameters) -{ - int rStatus, transferCompleted = 0, length = CY_UART_EVENT_NOTIFICATION_LEN; - CY_DEVICE *device; - libusb_device_handle *devHandle; - struct libusb_transfer *transfer; - UINT16 errorStatus = 0; - UCHAR uartStatus[CY_UART_EVENT_NOTIFICATION_LEN]; - struct timeval time; - CY_EVENT_NOTIFICATION_CB_FN callbackFn; - NOTIFICATION_CB_PARAM *cbParameters = (NOTIFICATION_CB_PARAM*)inputParameters; - callbackFn = cbParameters->notificationCbFn; - - device = (CY_DEVICE *)cbParameters->handle; - devHandle = device->devHandle; - callbackFn = cbParameters->notificationCbFn; - device->uartTransfer = transfer = libusb_alloc_transfer(0); - if (transfer == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error in allocating trasnfer \n"); - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - callbackFn(errorStatus); - goto END; - } - while (device->uartCancelEvent == false){ - libusb_fill_interrupt_transfer (transfer, devHandle, device->interruptEndpoint, uartStatus, length, - uart_notification_cb, &transferCompleted, CY_EVENT_NOTIFICATION_TIMEOUT); - rStatus = libusb_submit_transfer (transfer); - if (rStatus){ - CY_DEBUG_PRINT_ERROR ("CY:Error submitting uart interrupt token ... Libusb error is %d\n", rStatus); - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - callbackFn(errorStatus); - break; - } - time.tv_sec = 0; - time.tv_usec = 50;//polling timeout. - while (transferCompleted == 0){ - libusb_handle_events_timeout (glContext, &time); - } - transferCompleted = 0; - if (transfer->status == LIBUSB_TRANSFER_COMPLETED){ - CY_DEBUG_PRINT_INFO ("Successfully read and recieved data %d \n", transfer->actual_length); - memcpy (&errorStatus, &uartStatus[8], 2); - printf ("%x %x ", uartStatus[8], uartStatus[9]); - callbackFn (errorStatus); - errorStatus = 0; - } - else{ - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - if (device->uartCancelEvent == false){ - CY_DEBUG_PRINT_ERROR ("CY:Error uart interrupt thread encountered error... Libusb transmission error is %d \n", transfer->status); - device->uartThreadId = 0; - callbackFn(errorStatus); - } - break; - } - } - CY_DEBUG_PRINT_INFO ("Exiting notification thread \n"); - libusb_free_transfer (transfer); -END: - free (inputParameters); - return NULL; -} - -static void LIBUSB_CALL spi_notification_cb(struct libusb_transfer *transfer) -{ - UINT32 *completed = transfer->user_data; - *completed = 1; -} - -void* spiSetEventNotifcation (void *inputParameters) -{ - int transferCompleted = 0, length = CY_SPI_EVENT_NOTIFICATION_LEN; - CY_DEVICE *device; - libusb_device_handle *devHandle; - struct libusb_transfer *transfer; - UINT16 spiStatus = 0; - UINT16 errorStatus = 0; - struct timeval time; - CY_EVENT_NOTIFICATION_CB_FN callbackFn; - NOTIFICATION_CB_PARAM *cbParameters = (NOTIFICATION_CB_PARAM*)inputParameters; - - callbackFn = cbParameters->notificationCbFn; - device = (CY_DEVICE *)cbParameters->handle; - devHandle = device->devHandle; - callbackFn = cbParameters->notificationCbFn; - device->spiTransfer = transfer = libusb_alloc_transfer(0); - if (transfer == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error in allocating trasnfer \n"); - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - callbackFn (errorStatus); - goto END; - } - libusb_fill_interrupt_transfer (transfer, devHandle, device->interruptEndpoint, &spiStatus, length, - spi_notification_cb, &transferCompleted, CY_EVENT_NOTIFICATION_TIMEOUT); - while (device->spiCancelEvent == false){ - if (libusb_submit_transfer (transfer)){ - CY_DEBUG_PRINT_ERROR ("CY:Error submitting spi interrupt token ... \n"); - errorStatus |= CY_ERROR_EVENT_FAILED_BIT; - callbackFn(errorStatus); - break; - } - time.tv_sec = 0; - time.tv_usec = 50;//polling timeout. - while (transferCompleted == 0){ - libusb_handle_events_timeout (glContext, &time); - } - transferCompleted = 0; - if (transfer->status == LIBUSB_TRANSFER_COMPLETED){ - CY_DEBUG_PRINT_INFO ("Successfully read and recieved data %d \n", transfer->actual_length); - if (spiStatus & CY_SPI_UNDERFLOW_ERROR){ - errorStatus |= (CY_SPI_TX_UNDERFLOW_BIT); - } - if (spiStatus & CY_SPI_BUS_ERROR){ - errorStatus |= (CY_SPI_BUS_ERROR_BIT); - } - callbackFn (errorStatus); - errorStatus = 0; - } - else{ - spiStatus |= CY_ERROR_EVENT_FAILED_BIT; - if (device->spiCancelEvent == false){ - device->spiThreadId = 0; - CY_DEBUG_PRINT_ERROR ("CY:Error spi interrupt thread was cancelled... Libusb transmission error is %d \n", transfer->status); - callbackFn (spiStatus); - } - break; - } - } - libusb_free_transfer (transfer); -END: - free (inputParameters); - pthread_exit (NULL); - return NULL; -} - -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CySetEventNotification( - CY_HANDLE handle, /*Valid handle to communicate with device*/ - CY_EVENT_NOTIFICATION_CB_FN notificationCbFn /*Call back function in case on error during Uart data transfers*/ - ) -{ - CY_DEVICE *device; - NOTIFICATION_CB_PARAM *args = NULL; - int ret; - pthread_t threadID; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (notificationCbFn == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE*)handle; - pthread_mutex_lock (&device->notificationLock); - args = (NOTIFICATION_CB_PARAM *)malloc (sizeof (NOTIFICATION_CB_PARAM)); - args->handle = handle; - args->notificationCbFn = notificationCbFn; - if (device->deviceType == CY_TYPE_SPI){ - if (device->spiThreadId != 0) { - CY_DEBUG_PRINT_ERROR ("CY:Error already notification thread exists ... Function is %s \n", __func__); - free (args); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_STATUS_MONITOR_EXIST; - } - ret = pthread_create (&threadID, NULL, spiSetEventNotifcation, (void *) args); - if (ret == 0){ - device->spiThreadId = threadID; - pthread_mutex_unlock (&device->notificationLock); - return CY_SUCCESS; - } - else { - device->spiThreadId = 0; - free (args); - pthread_mutex_unlock (&device->notificationLock); - CY_DEBUG_PRINT_ERROR ("CY:Error creating spi notification thread ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - } - else if (device->deviceType == CY_TYPE_UART){ - if (device->uartThreadId != 0) { - CY_DEBUG_PRINT_ERROR ("CY:Error already notification thread exists ... Function is %s \n", __func__); - free (args); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_STATUS_MONITOR_EXIST; - } - ret = pthread_create (&threadID, NULL, uartSetEventNotifcation, (void *) args); - if (ret == 0){ - device->uartThreadId = threadID; - pthread_mutex_unlock (&device->notificationLock); - return CY_SUCCESS; - } - else { - device->uartThreadId = 0; - free (args); - pthread_mutex_unlock (&device->notificationLock); - CY_DEBUG_PRINT_ERROR ("CY:Error creating uart notification thread ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error unknown device type ....Function is %s \n", __func__); - free (args); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_REQUEST_FAILED; - } -} -/*The API is used to cancel the uart Event notification*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyAbortEventNotification( - CY_HANDLE handle /*Valid handle to communicate with device*/ - ) -{ - CY_DEVICE *device; - device = (CY_DEVICE*)handle; - pthread_mutex_lock (&device->notificationLock); - if (device->deviceType == CY_TYPE_UART){ - if (device->uartThreadId == 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error uart event notification not created ....function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_REQUEST_FAILED; - } - device->uartCancelEvent = true; - libusb_cancel_transfer (device->uartTransfer); - pthread_join (device->uartThreadId, NULL); - device->uartThreadId = 0; - device->uartCancelEvent = false; - pthread_mutex_unlock (&device->notificationLock); - return CY_SUCCESS; - } - else if (device->deviceType == CY_TYPE_SPI){ - if (device->spiThreadId == 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error spi event notification not created ....function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_REQUEST_FAILED; - } - device->spiCancelEvent = true; - libusb_cancel_transfer (device->spiTransfer); - pthread_join (device->spiThreadId, NULL); - device->spiThreadId = 0; - device->spiCancelEvent = false; - pthread_mutex_unlock (&device->notificationLock); - return CY_SUCCESS; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error.. unknown device type ....function is %s \n", __func__); - pthread_mutex_unlock (&device->notificationLock); - return CY_ERROR_REQUEST_FAILED; - } -} -/* -The API is used to programme user flash area -*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyProgUserFlash ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER *progBuffer, /*data buffer containing buffer address, length to write*/ - UINT32 flashAddress, /*Address to the data is written*/ - UINT32 ioTimeout /*Timeout value of the API*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - if ((progBuffer == NULL) || (progBuffer->buffer == NULL)) - return CY_ERROR_INVALID_PARAMETER; - - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_PROG_USER_FLASH_CMD; - wValue = 0; - wIndex = flashAddress; - wLength = progBuffer->length; - - CY_DEBUG_PRINT_INFO ("CY:The Length is %d , Value is %d and index is %d\n", wLength, wValue, wIndex); - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, progBuffer->buffer, wLength, ioTimeout); - if (rStatus > 0){ - (progBuffer->transferCount) = rStatus; - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - (progBuffer->transferCount) = 0; - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - (progBuffer->transferCount) = 0; - return CY_ERROR_REQUEST_FAILED; - } -} -/* -The API is used to programme user flash area -*/ -CYWINEXPORT CY_RETURN_STATUS WINCALLCONVEN CyReadUserFlash ( - CY_HANDLE handle, /*Valid device handle*/ - CY_DATA_BUFFER *readBuffer, /*data buffer containing buffer address, length to write*/ - UINT32 flashAddress, /*Address to the data is written*/ - UINT32 ioTimeout /*Timeout value of the API*/ - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - if (readBuffer == NULL) - return CY_ERROR_INVALID_PARAMETER; - - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_READ_USER_FLASH_CMD; - wValue = 0; - wIndex = flashAddress; - wLength = readBuffer->length; - - CY_DEBUG_PRINT_INFO ("CY:The Length is %d , Value is %d and index is %d\n", wLength, wValue, wIndex); - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, readBuffer->buffer, wLength, ioTimeout); - if (rStatus > 0){ - (readBuffer->transferCount) = rStatus; - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - (readBuffer->transferCount) = 0; - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - (readBuffer->transferCount) = 0; - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API is used to get the signature of the device. It would be CYUS when we are in actual device mode - and CYBL when we are bootloader mode - */ -CY_RETURN_STATUS CyGetSignature ( - CY_HANDLE handle, - UCHAR *signature - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_GET_SIGNATURE_CMD; - wValue = 0x00; - wIndex = 0x00; - wLength = CY_GET_SIGNATURE_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)signature, wLength, ioTimeout); - if (rStatus > 0){ - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} diff --git a/libcyusbserial-master/lib/cyspi.c b/libcyusbserial-master/lib/cyspi.c deleted file mode 100644 index 0e65677..0000000 --- a/libcyusbserial-master/lib/cyspi.c +++ /dev/null @@ -1,644 +0,0 @@ -/* - * SPI routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" -#include -#include -#pragma pack (1) -typedef struct args { - CY_HANDLE handle; - UCHAR *readBuffer; - UINT32 length; - UINT32 ioTimeout; - CY_RETURN_STATUS rStatus; - UINT32 transferCount; -}args; - -typedef struct -{ - UINT32 frequency; - UINT8 dataWidth; - UCHAR mode; - UCHAR xferMode; - BOOL isMsbFirst; - BOOL isMaster; - BOOL isContinuous; - BOOL isSelectPrecede; - BOOL cpha; - BOOL cpol; - BOOL isLoopback; - UCHAR reserved[2]; -} CyUsSpiConfig_t; -#pragma pack() - -struct timeval startSpiTimeWrite, endSpiTimeWrite, startSpiTimeRead, endSpiTimeRead; -//Timer helper functions for proper timing -void startSpiTick (bool isWrite) { - if (isWrite) - gettimeofday (&startSpiTimeWrite, NULL); - else - gettimeofday (&startSpiTimeRead, NULL); -} - -UINT32 getSpiLapsedTime (bool isWrite){ - - signed int currentTime_sec, currentTime_usec, currentTime; - if (isWrite){ - gettimeofday (&endSpiTimeWrite, NULL); - currentTime_sec = (endSpiTimeWrite.tv_sec - startSpiTimeWrite.tv_sec) * 1000; - currentTime_usec = ((endSpiTimeWrite.tv_usec - startSpiTimeWrite.tv_usec)) / 1000; - currentTime = currentTime_sec + currentTime_usec; - return (unsigned int)currentTime; - } - else{ - gettimeofday (&endSpiTimeRead, NULL); - currentTime_sec = (endSpiTimeRead.tv_sec - startSpiTimeRead.tv_sec) * 1000; - currentTime_usec = ((endSpiTimeRead.tv_usec - startSpiTimeRead.tv_usec)) / 1000; - currentTime = currentTime_sec + currentTime_usec; - return (unsigned int)currentTime; - } -} -/* - This API gets the current SPI config - for the particluar interface of the device - */ -CY_RETURN_STATUS CyGetSpiConfig ( - CY_HANDLE handle, - CY_SPI_CONFIG *spiConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT16 bmRequestType, bmRequest; - CyUsSpiConfig_t localSpiConfig; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - UINT8 scbIndex = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (spiConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not spi ..Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (device->interfaceNum > 0) - scbIndex = 1; - - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_SPI_GET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0; - wLength = CY_SPI_CONFIG_LEN; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localSpiConfig, wLength, ioTimeout); - if (rStatus == CY_SPI_CONFIG_LEN){ - //CY_DUMP_DATA ((unsigned char*)&localSpiConfig, wLength); - CY_DEBUG_PRINT_INFO ("CY: Read SPI config successfully %d\n", rStatus); - spiConfig->frequency = localSpiConfig.frequency; - spiConfig->dataWidth = localSpiConfig.dataWidth; - spiConfig->protocol = localSpiConfig.mode; - spiConfig->isMsbFirst = localSpiConfig.isMsbFirst; - spiConfig->isMaster = localSpiConfig.isMaster; - spiConfig->isContinuousMode = localSpiConfig.isContinuous; - spiConfig->isSelectPrecede = localSpiConfig.isSelectPrecede; - spiConfig->isCpha = localSpiConfig.cpha; - spiConfig->isCpol = localSpiConfig.cpol; - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ... Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s...libusb error is %d !\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API sets SPI config of the device for that - interface - */ -CY_RETURN_STATUS CySetSpiConfig ( - CY_HANDLE handle, - CY_SPI_CONFIG *spiConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - CyUsSpiConfig_t localSpiConfig; - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - UINT8 scbIndex = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (spiConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not spi ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (spiConfig->frequency < 1000 || spiConfig->frequency > 3000000){ - CY_DEBUG_PRINT_ERROR ("CY:Error frequency trying to set in out of range ... Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (spiConfig->protocol == CY_SPI_TI){ - if (!(spiConfig->isCpol == false && spiConfig->isCpha == true && spiConfig->isContinuousMode == false)){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Wrong configuration for SPI TI mode \n"); - return CY_ERROR_REQUEST_FAILED; - } - } - if (spiConfig->protocol == CY_SPI_NS){ - if (!(spiConfig->isCpol == false && spiConfig->isCpha == false && spiConfig->isSelectPrecede == false)){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Wrong configuration for SPI ti mode \n"); - return CY_ERROR_REQUEST_FAILED; - } - } - else{ - if (spiConfig->isSelectPrecede != false){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Wrong configuration for SPI motorola mode \n"); - return CY_ERROR_REQUEST_FAILED; - } - } - if (device->interfaceNum > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SPI_SET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0; - wLength = CY_SPI_CONFIG_LEN; - //We will not expose all the spi config structure elements to user. - //Fill in rest of the values. - - memset (&localSpiConfig, 0, CY_SPI_CONFIG_LEN); - localSpiConfig.frequency = spiConfig->frequency; - localSpiConfig.dataWidth = spiConfig->dataWidth; - localSpiConfig.mode = spiConfig->protocol; - localSpiConfig.isMsbFirst = spiConfig->isMsbFirst; - localSpiConfig.isMaster = spiConfig->isMaster; - localSpiConfig.isContinuous = spiConfig->isContinuousMode; - localSpiConfig.isSelectPrecede = spiConfig->isSelectPrecede; - localSpiConfig.cpha = spiConfig->isCpha; - localSpiConfig.cpol = spiConfig->isCpol; - //CY_DUMP_DATA ((unsigned char*)&localSpiConfig, wLength); - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localSpiConfig, wLength, ioTimeout); - if (rStatus == CY_SPI_CONFIG_LEN){ - CY_DEBUG_PRINT_INFO ("CY: Setting SPI config success ...\n"); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Time out error ..Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ... !libusb error is %d\n", __func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/*Api will reset the spi module*/ -CY_RETURN_STATUS CySpiReset (CY_HANDLE handle) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue, wIndex, wLength, bmRequestType, bmRequest;; - UINT16 scbIndex = 0; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not spi ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - scbIndex = device->interfaceNum; - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_SPI_RESET_CMD; - wValue = ((scbIndex << CY_SCB_INDEX_POS)); - wIndex = 0; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error in sending spi reset command...Libusb error is %d\n", rStatus); - return rStatus; - } - return CY_SUCCESS; -} -/* - This API reads SPI data from the specified interface of the device - interface - */ - -static void LIBUSB_CALL spi_read_cb(struct libusb_transfer *transfer) -{ - UINT32 *completed = transfer->user_data; - *completed = 1; -} -//We adopted for async method here because there are 2 thread polling same fd -// i.e both read and write are polling same fd when one event triggers and other one is -//not completed then another thread will wait for more than 60sec. -CY_RETURN_STATUS CySpiRead ( - CY_HANDLE handle, - CY_DATA_BUFFER *readBuffer, - UINT32 ioTimeout - ) -{ - struct libusb_transfer *readTransfer; - CY_DEVICE *device; - libusb_device_handle *devHandle; - int readCompleted = 0; - struct timeval time; - int r; - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - readBuffer->transferCount = 0; - readTransfer = libusb_alloc_transfer(0); - if (readTransfer == NULL){ - CY_DEBUG_PRINT_ERROR("CY:Error in allocating transfers \n"); - return CY_ERROR_ALLOCATION_FAILED; - } - libusb_fill_bulk_transfer(readTransfer, devHandle, device->inEndpoint, readBuffer->buffer, readBuffer->length, - spi_read_cb, &readCompleted, ioTimeout); - libusb_submit_transfer (readTransfer); - time.tv_sec = (ioTimeout / 1000); - time.tv_usec = ((ioTimeout % 1000) * 1000);//polling timeout. - while (readCompleted == 0){ - r = libusb_handle_events_timeout_completed(glContext, &time, &readCompleted); - if (r < 0) { - if (r == LIBUSB_ERROR_INTERRUPTED) - continue; - libusb_cancel_transfer(readTransfer); - while (!readCompleted) - if (libusb_handle_events_completed(glContext, &readCompleted) < 0) - break; - readBuffer->transferCount = readTransfer->actual_length; - libusb_free_transfer(readTransfer); - return r; - } - } - if (readTransfer->status == LIBUSB_TRANSFER_COMPLETED){ - readBuffer->transferCount = readTransfer->actual_length; - libusb_free_transfer (readTransfer); - return CY_SUCCESS; - } - else{ - if (readTransfer->status == LIBUSB_TRANSFER_TIMED_OUT){ - //We should not be hitting this case.. As the time out is infinite!! - CY_DEBUG_PRINT_ERROR ("CY:Timeout error in doing SPI read/write .... %d Libusb errors %d\n", - readTransfer->actual_length,readTransfer->status); - readBuffer->transferCount = readTransfer->actual_length; - CySpiReset (handle); - libusb_free_transfer (readTransfer); - return CY_ERROR_IO_TIMEOUT; - } - if (readTransfer->status == LIBUSB_TRANSFER_OVERFLOW){ - //Need to handle this properly! - CY_DEBUG_PRINT_ERROR ("CY:OverFlow error in doing SPI read/write .... Libusb errors %d %d \n", - readTransfer->status, readTransfer->actual_length); - readBuffer->transferCount = readTransfer->actual_length; - CySpiReset (handle); - libusb_free_transfer (readTransfer); - return CY_ERROR_BUFFER_OVERFLOW; - } - if (readTransfer->status != LIBUSB_TRANSFER_COMPLETED){ - CY_DEBUG_PRINT_ERROR ("CY:Error in doing SPI read/write .... Libusb errors are %d %d\n", - readTransfer->status, readTransfer->actual_length); - readBuffer->transferCount = readTransfer->actual_length; - CySpiReset (handle); - libusb_free_transfer (readTransfer); - //If timer is not completed then it implies we have timeout error - return CY_ERROR_REQUEST_FAILED; - } - } - return CY_ERROR_REQUEST_FAILED; -} -/*Internal SPI get status API for Write operation*/ -CY_RETURN_STATUS CyGetSpiStatus (CY_HANDLE handle, - int *spiStatus - ) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT16 wValue, wIndex, wLength, bmRequestType, bmRequest;; - UINT16 scbIndex = 0; - UINT32 ioTimeout = 0; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not spi ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - scbIndex = device->interfaceNum; - if (scbIndex > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_SPI_GET_STATUS_CMD; - wValue = ((scbIndex << CY_SCB_INDEX_POS)); - wIndex = 0; - wLength = CY_SPI_GET_STATUS_LEN; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,wValue, wIndex, (UCHAR*)spiStatus, wLength, ioTimeout); - if (rStatus < CY_SPI_GET_STATUS_LEN){ - CY_DEBUG_PRINT_INFO ("CY:Error in sending spi Get Status command...Libusb error is %d\n", rStatus); - return rStatus; - } - return CY_SUCCESS; -} -/* Function to write on to SPI alone*/ -CY_RETURN_STATUS CySpiWrite ( - CY_HANDLE handle, - CY_DATA_BUFFER *writeBuffer, - UINT32 ioTimeout - ) -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - int spiStatus = 1; - UINT32 newIoTimeout = ioTimeout, elapsedTime = 0, loopCount = 1; - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error device type is not spi ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - startSpiTick (true); - rStatus = libusb_bulk_transfer (devHandle, device->outEndpoint, writeBuffer->buffer, writeBuffer->length, - (int*)&(writeBuffer->transferCount), newIoTimeout); - elapsedTime = getSpiLapsedTime(true); - newIoTimeout = ioTimeout - elapsedTime; - //because we have a sleep of 1 msec after every getstatus - if (newIoTimeout) - loopCount = (newIoTimeout); - if (rStatus == LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY: Successfully written SPI data.. %d bytes Read ...\n", writeBuffer->transferCount); - while (loopCount){ - usleep (1000); - rStatus = CyGetSpiStatus (handle, &spiStatus); - if (rStatus == CY_SUCCESS){ - if (spiStatus == 0){ - return CY_SUCCESS; - } - } - else { - //Should never hit this case - CY_DEBUG_PRINT_ERROR ("CY:Error in getting spi status \n"); - return CY_ERROR_REQUEST_FAILED; - } - if (ioTimeout) - loopCount--; - } - if (loopCount == 0 && spiStatus > 0){ - writeBuffer->length = 0; - CySpiReset (handle); - return CY_ERROR_IO_TIMEOUT; - } - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:Error TimeOut ...function is %s\n", __func__); - CySpiReset (handle); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - CY_DEBUG_PRINT_ERROR ("CY:Error Pipe error..function is %s\n", __func__); - CySpiReset (handle); - CyResetPipe (handle, device->outEndpoint); - return CY_ERROR_PIPE_HALTED; - } - else if (rStatus == LIBUSB_ERROR_OVERFLOW){ - CY_DEBUG_PRINT_ERROR ("CY:Error Buffer Overflow...function is %s\n", __func__); - return CY_ERROR_BUFFER_OVERFLOW; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY:Error Device Disconnected ...function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error in writing SPI data ...Libusb Error is %d and bytes read is %d!\n", rStatus, writeBuffer->transferCount); - return CY_ERROR_REQUEST_FAILED; - } - return CY_ERROR_REQUEST_FAILED; -}/* - API to wrap up the data - */ -void spiCollectData (void *inputParameters) { - - UINT32 readLength = 0, length; - CY_DATA_BUFFER readBuffer; - args *inputData = (args *) inputParameters; - UCHAR *buffer; - CY_RETURN_STATUS rStatus = CY_SUCCESS; - buffer = readBuffer.buffer = inputData->readBuffer; - length = readBuffer.length = inputData->length; - CY_HANDLE handle = inputData->handle; - int newTimeout = inputData->ioTimeout, elapsedTime; - while (readLength != length && newTimeout >= 0 && rStatus == CY_SUCCESS){ - //Get current time - //Buffer is pointing to next address where we are suppose to fill the data - readBuffer.buffer = &buffer[readLength]; - //Updated length which total length minus the total length of data read - readBuffer.length = length - readLength; - //Libusb fix for mac os!! - //ISSUE:when api times out in MAC it comes back and say read length = 0!! -#ifdef __APPLE__ - if (readBuffer.length > 64) - readBuffer.length = 64; -#endif - startSpiTick (false); - rStatus = CySpiRead (handle, &readBuffer, newTimeout); - elapsedTime = getSpiLapsedTime (false); - //Do this only when newTimeout is non zero - if (newTimeout){ - newTimeout = newTimeout - elapsedTime; - //If timeout is 0 then libusb considers that as infinite - //So forcefully make the loop to comeout - if (newTimeout <= 0) - rStatus = CY_ERROR_IO_TIMEOUT; - } - if (rStatus != CY_SUCCESS){ - readLength += readBuffer.transferCount; - break; - } - readLength += readBuffer.transferCount; - } - if (readLength != length && rStatus == CY_ERROR_IO_TIMEOUT){ - CySpiReset (handle); - } - inputData->transferCount = readLength; - inputData->rStatus = rStatus; -} -/* - * Api used to do read as well as write on spi - */ -CY_RETURN_STATUS CySpiReadWrite (CY_HANDLE handle, - CY_DATA_BUFFER *readBuffer, - CY_DATA_BUFFER *writeBuffer, - UINT32 ioTimeout) -{ - struct args threadParameter; - UINT32 ret; - pthread_t readThreadID = (pthread_t)0; - CY_DEVICE *device; - libusb_device_handle *devHandle; - CY_RETURN_STATUS rStatus; - unsigned short spiTransferMode = 0, scbIndex = 0; - UINT16 wValue, wIndex = 0, wLength; - UINT16 bmRequestType, bmRequest; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle.. Function is %s \n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (readBuffer == NULL && writeBuffer == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_SPI) { - CY_DEBUG_PRINT_ERROR ("CY:Error opened device is not spi .. \n"); - return CY_ERROR_REQUEST_FAILED; - } - //Set both the bits and change it accordingly based on parameters parameters - spiTransferMode |= ((CY_SPI_READ_BIT) | (CY_SPI_WRITE_BIT)); - if ((readBuffer == NULL || readBuffer->length == 0 || readBuffer->buffer == NULL)) - spiTransferMode &= ~(CY_SPI_READ_BIT); - if ((writeBuffer == NULL || writeBuffer->length == 0 || writeBuffer->buffer == NULL)) - spiTransferMode &= ~(CY_SPI_WRITE_BIT); - //if none of the bit is set it implies parameters sent is wrong - if (spiTransferMode == 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter.. Function is %s \n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (device->interfaceNum > 0) - scbIndex = 1; - //In read only case we take length to be equal to readBuffer length. - //But in write or in write/read case we take length = writeBuffer length. - if (spiTransferMode == 0x1) - wIndex = readBuffer->length; - else - wIndex = writeBuffer->length; - spiTransferMode |= (scbIndex << 15); - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SPI_READ_WRITE_CMD; - wValue = (spiTransferMode); - wLength = 0; - if (pthread_mutex_trylock (&device->writeLock) == 0){ - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, 5000); - if (rStatus){ - CY_DEBUG_PRINT_ERROR ("CY:Error Sending spi read write vendor command failed ... Libusb error is %d\n", rStatus); - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_REQUEST_FAILED; - } - //Read Bit is not set then write Only - if (!(spiTransferMode & CY_SPI_READ_BIT)) { - writeBuffer->transferCount = 0; - if (readBuffer) - readBuffer->transferCount = 0; - rStatus = CySpiWrite (handle, writeBuffer, ioTimeout); - pthread_mutex_unlock (&device->writeLock); - return rStatus; - } - //Write Bit is not set then read only - if (!(spiTransferMode & CY_SPI_WRITE_BIT)) { - // We are starting a thread so that we can collect all the data - // FIX for short length packet issue on SPI. - readBuffer->transferCount = 0; - if (writeBuffer) - writeBuffer->transferCount = 0; - threadParameter.handle = handle; - threadParameter.readBuffer = readBuffer->buffer; - threadParameter.length = readBuffer->length; - threadParameter.ioTimeout = ioTimeout; - ret = pthread_create (&readThreadID, NULL, (void *)spiCollectData, (void *)&threadParameter); - if (ret){ - CY_DEBUG_PRINT_ERROR ("CY:Error in creating read thread ... Reading failed \n"); - pthread_mutex_unlock (&device->writeLock); - readBuffer->transferCount = 0; - return CY_ERROR_REQUEST_FAILED; - } - pthread_join (readThreadID, NULL); - readBuffer->transferCount = threadParameter.transferCount; - pthread_mutex_unlock (&device->writeLock); - return threadParameter.rStatus; - } - writeBuffer->transferCount = 0; - readBuffer->transferCount = 0; - threadParameter.handle = handle; - threadParameter.readBuffer = readBuffer->buffer; - threadParameter.length = readBuffer->length; - threadParameter.ioTimeout = ioTimeout; - ret = pthread_create (&readThreadID, NULL, (void *)spiCollectData, (void *)&threadParameter); - if (ret){ - CY_DEBUG_PRINT_ERROR ("CY:Error in creating read thread ... Reading failed \n"); - readBuffer->transferCount = 0; - pthread_mutex_unlock (&device->writeLock); - return CY_ERROR_REQUEST_FAILED; - } - rStatus = CySpiWrite (handle, writeBuffer, ioTimeout); - if (rStatus == CY_SUCCESS) { - pthread_join (readThreadID, NULL); - rStatus = threadParameter.rStatus; - readBuffer->transferCount = threadParameter.transferCount; - } - else { - pthread_join (readThreadID, NULL); - readBuffer->transferCount = threadParameter.transferCount; - } - pthread_mutex_unlock (&device->writeLock); - return rStatus; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error API busy in service previous request ... Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - return rStatus; -} diff --git a/libcyusbserial-master/lib/cyuart.c b/libcyusbserial-master/lib/cyuart.c deleted file mode 100644 index 66a00d8..0000000 --- a/libcyusbserial-master/lib/cyuart.c +++ /dev/null @@ -1,588 +0,0 @@ -/* - * UART routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" -#pragma pack(1) -typedef struct { - CY_UART_BAUD_RATE baudRate; - UINT8 pinType; - UINT8 dataWidth; - UINT8 stopBits; - UINT8 mode; - UINT8 parity; - UINT8 isMsbFirst; - UINT8 txRetry;; - UINT8 rxInvertPolarity; - UINT8 rxIgnoreError; - UINT8 isFlowControl; - UINT8 isLoopBack; - UINT8 flags; -}CyUsUartConfig_t; -#pragma pack() -//Timer helper functions for proper timing -UINT32 getUartLapsedTime (struct timeval startTime){ - signed int currentTime_sec, currentTime_usec, currentTime; - struct timeval endTime; - gettimeofday (&endTime, NULL); - currentTime_sec = (endTime.tv_sec - startTime.tv_sec) * 1000; - currentTime_usec = ((endTime.tv_usec - startTime.tv_usec)) / 1000; - currentTime = currentTime_sec + currentTime_usec; - return (unsigned int)currentTime; -} -/* - This API gets the current UART configuration of the - device.Such as GPIO's assigned, flowcontrol, BaudRate - etc. - */ -CY_RETURN_STATUS CyGetUartConfig ( - CY_HANDLE handle, - PCY_UART_CONFIG uartConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CY_DEVICE *device; - CyUsUartConfig_t localUartConfig; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - UINT8 scbIndex = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (uartConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (device->interfaceNum > 0) - scbIndex = 1; - bmRequestType = CY_VENDOR_REQUEST_DEVICE_TO_HOST; - bmRequest = CY_UART_GET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0; - wLength = CY_UART_CONFIG_LEN; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localUartConfig, wLength, ioTimeout); - //Since we are not exposing all the configuration elements - //parse and fill only relevant elements. - if (rStatus == CY_UART_CONFIG_LEN){ - uartConfig->dataWidth = localUartConfig.dataWidth; - uartConfig->baudRate = localUartConfig.baudRate; - uartConfig->stopBits = localUartConfig.stopBits; - uartConfig->parityMode = (CY_UART_PARITY_MODE)localUartConfig.parity;; - uartConfig->isDropOnRxErrors = localUartConfig.rxIgnoreError; - //We are currently ignoring rest of the bits - CY_DEBUG_PRINT_INFO ("CY:Successfully read UART Config\n"); - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error in reading UART config ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This API sets the current UART configuration of the - device.Such as GPIO's assigned, flowcontrol, BaudRate - etc. - */ -CY_RETURN_STATUS CySetUartConfig ( - CY_HANDLE handle, - CY_UART_CONFIG *uartConfig - ) -{ - UINT16 wValue, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - CyUsUartConfig_t localUartConfig; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - UINT8 scbIndex = 0; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (uartConfig == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (uartConfig->dataWidth < 7 || uartConfig->dataWidth > 8){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (uartConfig->stopBits < 1 || uartConfig->stopBits > 2){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->interfaceNum > 0) - scbIndex = 1; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_VENDOR_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_UART_SET_CONFIG_CMD; - wValue = (scbIndex << CY_SCB_INDEX_POS); - wIndex = 0; - wLength = CY_UART_CONFIG_LEN; - - memset (&localUartConfig, 0, CY_UART_CONFIG_LEN); - //Fill in rest of the UART config structure elements - //that are not exposed in API with default values - localUartConfig.baudRate = uartConfig->baudRate; - localUartConfig.dataWidth = uartConfig->dataWidth; - localUartConfig.stopBits = uartConfig->stopBits; - localUartConfig.parity = (UCHAR) uartConfig->parityMode; - localUartConfig.rxIgnoreError = uartConfig->isDropOnRxErrors; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, (unsigned char*)&localUartConfig, wLength, ioTimeout); - if (rStatus == CY_UART_CONFIG_LEN){ - CY_DEBUG_PRINT_INFO ("CY:Successfully Set UART Config \n"); - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error in Setting UART config ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api writes the Data to UART block of the - device. - */ -CY_RETURN_STATUS CyUartWrite ( - CY_HANDLE handle, - CY_DATA_BUFFER* writeBuffer, - unsigned int ioTimeOut - ) - -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if ((writeBuffer == NULL) || (writeBuffer->buffer == NULL) || (writeBuffer->length == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameters..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - writeBuffer->transferCount = 0; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - rStatus = libusb_bulk_transfer (devHandle, device->outEndpoint, writeBuffer->buffer, writeBuffer->length, - (int *)&((writeBuffer->transferCount)), ioTimeOut); - if (rStatus == CY_SUCCESS) { - CY_DEBUG_PRINT_INFO ("CY: SuccessFull in Wrting Data,%d bytes were transfered \n", (writeBuffer->transferCount)); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - CY_DEBUG_PRINT_ERROR ("CY:TimeOut error ...Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - CY_DEBUG_PRINT_ERROR ("CY:Pipe error endpoint Halted ...Function is %s\n", __func__); - CyResetPipe (handle, device->outEndpoint); - return CY_ERROR_PIPE_HALTED; - } - else if (rStatus == LIBUSB_ERROR_OVERFLOW){ - CY_DEBUG_PRINT_ERROR ("CY:Error Buffer Overflow occured ...Function is %s\n", __func__); - return CY_ERROR_BUFFER_OVERFLOW; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected .... Function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Unknown error ....Libusb error is %d Function is %s\n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api Reads the Data from UART block of the - device. - */ -CY_RETURN_STATUS CyUartRead ( - CY_HANDLE handle, - CY_DATA_BUFFER* readBuffer, - unsigned int ioTimeOut - ) - -{ - int rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - UINT32 length, totalRead = 0, newIoTimeout = ioTimeOut, elapsedTime; - int transferCount; - UCHAR *buffer; - struct timeval startTime; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if ((readBuffer == NULL) || (readBuffer->buffer == NULL) || (readBuffer->length == 0)){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameters..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - length = readBuffer->length; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - readBuffer->transferCount = 0; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - //Collect all the data in low baud rate for uart. As we get data in short packet - do { - // buffer will be pointing to new pointer - buffer = &(readBuffer->buffer[totalRead]); - //Start the tick - gettimeofday(&startTime, NULL); - rStatus = libusb_bulk_transfer (devHandle, device->inEndpoint, buffer, length, - &transferCount, newIoTimeout); - elapsedTime = getUartLapsedTime(startTime); - //Get the new timeout. - newIoTimeout = newIoTimeout - elapsedTime; - //Initialise totalRead to initially read + bytes returned now - totalRead += transferCount; - //length will initial length - transferCount - length = (length - transferCount); - - }while ((rStatus == CY_SUCCESS) && (totalRead != readBuffer->length) && (newIoTimeout > 0)); - if (newIoTimeout <= 0 && totalRead != readBuffer->length) - rStatus = LIBUSB_ERROR_TIMEOUT; - if (rStatus == CY_SUCCESS){ - //CY_DUMP_DATA (readBuffer->buffer, readBuffer->transferCount); - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_INFO ("CY: SuccessFull in Reading Data,%d bytes were transfered \n", (readBuffer->transferCount)); - return CY_SUCCESS; - } - else if (rStatus == LIBUSB_ERROR_TIMEOUT){ - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY:TimeOut error... Function is %s\n", __func__); - return CY_ERROR_IO_TIMEOUT; - } - else if (rStatus == LIBUSB_ERROR_PIPE){ - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY:Pipe error endpoint Halted ...Function is %s\n", __func__); - CyResetPipe (handle, device->inEndpoint); - return CY_ERROR_PIPE_HALTED; - } - else if (rStatus == LIBUSB_ERROR_OVERFLOW){ - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY:Error Buffer Overflow occured ...Function is %s\n", __func__); - return CY_ERROR_BUFFER_OVERFLOW; - } - else if (rStatus == LIBUSB_ERROR_NO_DEVICE) { - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY: Device Disconnected ....Function is %s\n", __func__); - return CY_ERROR_DEVICE_NOT_FOUND; - } - else { - readBuffer->transferCount = totalRead; - CY_DEBUG_PRINT_ERROR ("CY: Unknown error ....Libusb error is %d Function is %s\n", rStatus, __func__); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api sets the hardware flow control - */ -CY_RETURN_STATUS CyUartSetHwFlowControl ( - CY_HANDLE handle, - CY_FLOW_CONTROL_MODES mode - ) - -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (mode > 3){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid parameter..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_UART_SET_FLOW_CONTROL_CMD; - wValue |= mode; - wIndex = device->interfaceNum; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Error in setting uart flow control ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } - device->uartFlowControlMode = mode; - return CY_SUCCESS; -} -/* -Api gets the current flow control mode -*/ -CY_RETURN_STATUS CyUartGetHwFlowControl ( - CY_HANDLE handle, - CY_FLOW_CONTROL_MODES *mode - ) -{ - CY_DEVICE *device; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - if (mode == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid input parameters..Function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - device = (CY_DEVICE *)handle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - (*mode) = device->uartFlowControlMode; - return CY_SUCCESS; -} -/* The API is used to break -*/ -CYWINEXPORT CY_RETURN_STATUS CyUartSetBreak( - CY_HANDLE handle, /*Valid handle to communicate with device*/ - UINT16 timeout /*Break timeout value in milliseconds */ - ) -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_UART_SEND_BREAK_CMD; - wValue = timeout; - wIndex = device->interfaceNum; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in setting break ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } - return CY_SUCCESS; -} -/* - This Api sets the RTS UART pins High - */ -CY_RETURN_STATUS CyUartSetRts ( - CY_HANDLE handle - ) -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus; - UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SET_LINE_CONTROL_STATE_CMD; - wValue |= (1 << 1) | (device->dtrValue); - wIndex = device->interfaceNum; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == CY_SUCCESS){ - device->rtsValue = 1; - return CY_SUCCESS; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error in setting RTS of UART ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api clears the RTS UART pin and makes it low - */ -CY_RETURN_STATUS CyUartClearRts ( - CY_HANDLE handle - ) -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SET_LINE_CONTROL_STATE_CMD; - wValue = (device->dtrValue); - wIndex = device->interfaceNum; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == CY_SUCCESS){ - device->rtsValue = 0; - return CY_SUCCESS; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error in clearing RTS of UART ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} -/* - This Api sets the DTR UART pin High - */ -CY_RETURN_STATUS CyUartSetDtr ( - CY_HANDLE handle - ) - -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SET_LINE_CONTROL_STATE_CMD; - wValue = ((device->rtsValue) << 1) | 1; - wIndex = device->interfaceNum; - wLength = 0; - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == CY_SUCCESS){ - device->dtrValue = 1; - return CY_SUCCESS; - } - else { - CY_DEBUG_PRINT_ERROR ("CY:Error in setting DTR of UART ... Libusb Error is %d \n", rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} - -/* - This Api clears the DTR UART pin and makes it low - */ - -CY_RETURN_STATUS CyUartClearDtr ( - CY_HANDLE handle - ) -{ - UINT16 wValue = 0, wIndex, wLength; - UINT8 bmRequestType, bmRequest; - int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid handle..Function is %s\n", __func__); - return CY_ERROR_INVALID_HANDLE; - } - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - if (device->deviceType != CY_TYPE_UART){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device type needs to be uart..Function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - - bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE; - bmRequest = CY_SET_LINE_CONTROL_STATE_CMD; - wValue = ((device->rtsValue) << 1); - wIndex = device->interfaceNum; - wLength = 0; - - rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest, - wValue, wIndex, NULL, wLength, ioTimeout); - if (rStatus == CY_SUCCESS){ - device->dtrValue = 0; - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error in function %s... Libusb Error is %d \n",__func__, rStatus); - return CY_ERROR_REQUEST_FAILED; - } -} diff --git a/libcyusbserial-master/lib/cyusb.c b/libcyusbserial-master/lib/cyusb.c deleted file mode 100644 index 92a480a..0000000 --- a/libcyusbserial-master/lib/cyusb.c +++ /dev/null @@ -1,638 +0,0 @@ -/* - * USB routines of Cypress USB Serial - * Copyright (C) 2013 Cypress Semiconductor - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "CyUSBCommon.h" - -libusb_context *glContext = NULL; -static bool glDriverInit = false; -static libusb_device **glDeviceList; -static int glNumDevices; -/*The API initializes the Libusb library -*/ -pthread_mutex_t criticalSection; -CY_RETURN_STATUS CyLibraryInit () -{ - int rStatus = LIBUSB_SUCCESS; - - if (!glContext) - rStatus = libusb_init (&glContext); - - if (glDriverInit != true){ - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Driver Init Failed ...\n"); - return CY_ERROR_DRIVER_INIT_FAILED; - } - glNumDevices = libusb_get_device_list (glContext, &glDeviceList); - if (glNumDevices < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Building device list Failed ...\n"); - glNumDevices = -1; - return CY_ERROR_DRIVER_INIT_FAILED; - } - pthread_mutex_init (&criticalSection, NULL); - glDriverInit = true; - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error ... library already initialized \n"); - return CY_ERROR_DRIVER_INIT_FAILED; - } -} -/* - This API needs to be called after Calling CyGetListofDevices. - */ -CY_RETURN_STATUS CyLibraryExit () -{ - if (glDriverInit == true){ - if (glNumDevices >= 0) - libusb_free_device_list (glDeviceList, 1); - if (glContext) { - libusb_exit (glContext); - glContext = NULL; - } - glDriverInit = false; - pthread_mutex_destroy (&criticalSection); - return CY_SUCCESS; - } - CY_DEBUG_PRINT_ERROR ("CY:Error ... Library not initialized \n"); - return CY_ERROR_REQUEST_FAILED; -} -/* - * This function Gets the number of all the devices currently - * Connected to the host (It includes Cypress Device as well as - * no Cypress Devices connected) - */ -CY_RETURN_STATUS CyGetListofDevices ( - UINT8 *numDevices - ) -{ - // Use this variable to call libusb_close and exit of the application - if (numDevices == NULL) - return CY_ERROR_INVALID_PARAMETER; - if (!glDriverInit){ - CY_DEBUG_PRINT_ERROR ("CY:Error Library not initialised ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - pthread_mutex_lock (&criticalSection); - libusb_free_device_list (glDeviceList, 1); - glNumDevices = (*numDevices) = libusb_get_device_list (glContext, &glDeviceList); - pthread_mutex_unlock (&criticalSection); - if (glNumDevices < 0){ - CY_DEBUG_PRINT_ERROR ("CY:Building device list Failed ...function is %s\n", __func__); - glNumDevices = -1; - (*numDevices) = -1; - return CY_ERROR_REQUEST_FAILED; - } - return CY_SUCCESS; -} -/* This function gets all the neccessary info such as VID,PID, - String Descriptors and if is a cypress serial device you will - get the info on class and device type - */ -CY_RETURN_STATUS CyGetDeviceInfo ( - UINT8 deviceNumber, - CY_DEVICE_INFO *deviceInfo - ) -{ - struct libusb_device_descriptor deviceDesc; - int rStatus; - UINT32 numInterfaces; - UINT8 iManufacturer, iProduct, iSerial; - libusb_device *usbDevice;; - struct libusb_config_descriptor *configDesc; - libusb_device_handle *devHandle; - - // Get the list of descriptor info for the device - if (glDriverInit == false){ - CY_DEBUG_PRINT_ERROR ("CY:Error Library not initialised ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (deviceInfo == NULL) - return CY_ERROR_INVALID_PARAMETER; - pthread_mutex_lock (&criticalSection); - if (deviceNumber >= glNumDevices){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device number... \n"); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_INVALID_PARAMETER; - } - usbDevice = glDeviceList[deviceNumber]; - rStatus = libusb_get_device_descriptor (usbDevice, &deviceDesc); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... unable to retrieve device descriptor \n"); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - - deviceInfo->vidPid.vid = deviceDesc.idVendor; - deviceInfo->vidPid.pid = deviceDesc.idProduct; - // Get the all the index of the String descriptors so that it can be used - // to retrieve the string descriptor info. - iManufacturer = deviceDesc.iManufacturer; - iProduct = deviceDesc.iProduct; - iSerial = deviceDesc.iSerialNumber; - //Get the Device handle so that we can communicate with the device retreiving - // descriptor info - deviceInfo->manufacturerName[0] = '\0'; - deviceInfo->productName[0] = '\0'; - deviceInfo->serialNum[0] = '\0'; - rStatus = libusb_open (usbDevice, &devHandle); - if (rStatus == LIBUSB_ERROR_ACCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error ...Insufficient permission... Libusb error is %d \n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_ACCESS_DENIED; - } - else if (rStatus != CY_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in opening the device... Libusb error is %d \n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - if (iManufacturer > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iManufacturer, deviceInfo->manufacturerName, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Getting Manufacturer name Error is <%x> \n", rStatus); - } - } - if (iProduct > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iProduct, deviceInfo->productName, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Getting product name Error is <%d> \n", rStatus); - } - } - if (iSerial > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iSerial, deviceInfo->serialNum, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Getting Serial name <%d>\n", rStatus); - } - } - rStatus = libusb_get_config_descriptor (usbDevice, 0, &configDesc); - if (rStatus == LIBUSB_SUCCESS){ - UINT32 index_i = 0; - const struct libusb_interface *interface; - numInterfaces = configDesc->bNumInterfaces; - deviceInfo->numInterfaces = numInterfaces; - interface = configDesc->interface; - while ((numInterfaces) && (index_i < CY_MAX_DEVICE_INTERFACE)){ - deviceInfo->deviceClass[index_i] = (CY_DEVICE_CLASS)interface->altsetting->bInterfaceClass; - if (deviceInfo->deviceClass[index_i] == CY_CLASS_VENDOR){ - deviceInfo->deviceType[index_i] = (CY_DEVICE_TYPE)interface->altsetting->bInterfaceSubClass; - } - else - deviceInfo->deviceType[index_i] = CY_TYPE_DISABLED; - index_i++; - numInterfaces--; - interface++; - } - libusb_free_config_descriptor(configDesc); - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in Getting config descriptor ...Libusb error is %d \n", rStatus); - if (devHandle) - libusb_close (devHandle); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - if (devHandle) - libusb_close (devHandle); - pthread_mutex_unlock (&criticalSection); - return CY_SUCCESS; -} -/* This function gets all the neccessary info such as VID,PID, - String Descriptors and if is a cypress serial device you will - get the info on class and device type - */ -CY_RETURN_STATUS CyGetDeviceInfoVidPid ( - CY_VID_PID vidPid, - UINT8 *deviceNumber, - PCY_DEVICE_INFO deviceInfoList, - UINT8 *deviceCount, - UINT8 infoListLength - ) -{ - struct libusb_device_descriptor deviceDesc; - int rStatus = CY_ERROR_DRIVER_INIT_FAILED; - UINT32 numInterfaces, index = 0; - int devNum; - UINT8 iManufacturer, iProduct, iSerial; - libusb_device *usbDevice; - struct libusb_config_descriptor *configDesc; - libusb_device_handle *devHandle = NULL; - PCY_DEVICE_INFO deviceInfo; - - if (glDriverInit == false){ - CY_DEBUG_PRINT_ERROR ("CY:Error Library not initialised ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if ((infoListLength) < 1){ - CY_DEBUG_PRINT_ERROR ("CY:Error invalid device info list length specified should be > 0 .. function is %s\n", __func__); - return CY_ERROR_INVALID_PARAMETER; - } - if (deviceNumber == NULL || deviceInfoList == NULL || deviceCount == NULL) - return CY_ERROR_INVALID_PARAMETER; - // Get the list of descriptor info for the device - (*deviceCount) = 0; - pthread_mutex_lock (&criticalSection); - for (devNum = 0; devNum < glNumDevices; devNum++) { - //We are making sure that we do not overrun - //the list. - deviceInfo = &(deviceInfoList [index]); - usbDevice = glDeviceList[devNum]; - rStatus = libusb_get_device_descriptor (usbDevice, &deviceDesc); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in getting device descriptor for device-%d... Libusb Error is %d \n", devNum, rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - if ((deviceDesc.idVendor != vidPid.vid) || (deviceDesc.idProduct != vidPid.pid)){ - continue; - } - (*deviceCount)++; - if (index > infoListLength){ - continue; - } - rStatus = libusb_open (usbDevice, &devHandle); - if (rStatus == LIBUSB_ERROR_ACCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Insufficient permission ... Libusb error is %d \n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_ACCESS_DENIED; - } - else if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Opening the Device ...Error is %d \n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - deviceNumber[index] = devNum; - index++; - deviceInfo->vidPid.vid = deviceDesc.idVendor; - deviceInfo->vidPid.pid = deviceDesc.idProduct; - // Get all the index of the String descriptors so that it can be used - // to retrieve the string descriptor info. - iManufacturer = deviceDesc.iManufacturer; - iProduct = deviceDesc.iProduct; - iSerial = deviceDesc.iSerialNumber; - //Get the Device handle so that we can communicate with the device retreiving - // descriptor info - //Initialise manufacturer, product and serial names - deviceInfo->manufacturerName[0] = '\0'; - deviceInfo->productName[0] = '\0'; - deviceInfo->serialNum[0] = '\0'; - if (iManufacturer > 0) { - rStatus = libusb_get_string_descriptor_ascii (devHandle, iManufacturer, deviceInfo->manufacturerName, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY:Error in Getting Manufacturer name Error is <%d> \n",rStatus); - } - } - if (iProduct > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iProduct, deviceInfo->productName, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY:Error in Getting product name Error is <%d> \n", rStatus); - } - } - if (iSerial > 0){ - rStatus = libusb_get_string_descriptor_ascii (devHandle, iSerial, deviceInfo->serialNum, 256); - if (rStatus <= LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_INFO ("CY:Error in Getting Serial name <%d>\n", rStatus); - } - } - CY_DEBUG_PRINT_INFO ("Manufacturer name <%s> \nProduct Name <%s> \nserial number <%s> \n", - deviceInfo->manufacturerName,deviceInfo->productName,deviceInfo->serialNum); - rStatus = libusb_get_config_descriptor (usbDevice, 0, &configDesc); - if (rStatus == LIBUSB_SUCCESS){ - int index_i = 0; - const struct libusb_interface *interfaceDesc; - numInterfaces = configDesc->bNumInterfaces; - deviceInfo->numInterfaces = numInterfaces; - interfaceDesc = configDesc->interface; - while ((numInterfaces) && (index_i < CY_MAX_DEVICE_INTERFACE)){ - deviceInfo->deviceClass[index_i] = (CY_DEVICE_CLASS)interfaceDesc->altsetting->bInterfaceClass; - if (deviceInfo->deviceClass[index_i] == CY_CLASS_VENDOR) - deviceInfo->deviceType[index_i] = (CY_DEVICE_TYPE)interfaceDesc->altsetting->bInterfaceSubClass; - else - deviceInfo->deviceType[index_i] = CY_TYPE_DISABLED; - - index_i++; - numInterfaces--; - interfaceDesc++; - } - } - else { - CY_DEBUG_PRINT_ERROR ("CY: Error in Getting config descriptor ... Libusb Error is %d\n", rStatus); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DEVICE_INFO_FETCH_FAILED; - } - libusb_free_config_descriptor (configDesc); - libusb_close (devHandle); - } - if ((*deviceCount) == 0) - rStatus = CY_ERROR_DEVICE_NOT_FOUND; - pthread_mutex_unlock (&criticalSection); - return rStatus; -} -/* - This API will claim the interface in the device - To make sure only claimed application speaks to device. - */ -CY_RETURN_STATUS CySelectInterface ( - CY_HANDLE handle, - UINT8 interfaceNum - ) -{ - UINT32 rStatus, numEP; - CY_DEVICE *device; - libusb_device_handle *devHandle; - libusb_device *usbDev; - struct libusb_config_descriptor *configDesc; - const struct libusb_interface *interfaceDesc; - const struct libusb_endpoint_descriptor *epDesc; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - usbDev = libusb_get_device (devHandle); - if (usbDev == NULL){ - CY_DEBUG_PRINT_ERROR ("CY:Error Invalide handle ..function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - //Get the config descriptor and parse it to get the - //interface and endpoint descriptor - rStatus = libusb_get_config_descriptor (usbDev, 0, &configDesc); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Getting Config Desc ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - interfaceDesc = configDesc->interface; - //Interface Number should be a valid one and should not exceed - // total number of interfaces - if (interfaceNum >= configDesc->bNumInterfaces){ - CY_DEBUG_PRINT_ERROR ("CY:Interface Number not valid... \n"); - libusb_free_config_descriptor (configDesc); - return CY_ERROR_REQUEST_FAILED; - } - if (libusb_kernel_driver_active (devHandle, interfaceNum)){ - CY_DEBUG_PRINT_ERROR ("CY:Kernel driver active on the interface number %d \n", interfaceNum);; - //User can uncomment this section if needed. -#ifdef CY_DETACH_KERNEL_DRIVER - if (!libusb_detach_kernel_driver (devHandle, interfaceNum)){ - CY_DEBUG_PRINT_ERROR ("CY:Kernel driver detach failed %d\n", interfaceNum); - return CY_ERROR_REQUEST_FAILED; - } -#else - return CY_ERROR_REQUEST_FAILED; -#endif - } - rStatus = libusb_claim_interface (devHandle, interfaceNum); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in claiming interface -interface num %d... Libusb error is %d \n", interfaceNum, rStatus); - return CY_ERROR_REQUEST_FAILED; - } - device->interfaceNum = interfaceNum; - while (interfaceNum--) - interfaceDesc++; - - epDesc = interfaceDesc->altsetting->endpoint; - numEP = interfaceDesc->altsetting->bNumEndpoints; - device->numEndpoints = numEP; - // Check the total number of endpoints interface has - // and get all the endpoint add - CY_DEBUG_PRINT_INFO ("CY:Info The total number of endpoints are %d \n", numEP); - while (numEP){ - if (epDesc->bmAttributes == 0x2){ //Bulk EP checking - if (epDesc->bEndpointAddress & 0x80) - device->inEndpoint = epDesc->bEndpointAddress; - else - device->outEndpoint = epDesc->bEndpointAddress; - } - else if (epDesc->bmAttributes == 0x3) //Interrupt EP checking (We have only one interrupt EP) - device->interruptEndpoint = epDesc->bEndpointAddress; - epDesc++; - numEP--; - } - CY_DEBUG_PRINT_INFO ("CY:Info The Endpoints are in %d and out %d and interrup %d\n", - device->inEndpoint, device->outEndpoint, device->interruptEndpoint); - libusb_free_config_descriptor (configDesc); - return CY_SUCCESS; -} -/* - * This API selects the type of the device - */ -void CySelectDeviceType (CY_DEVICE *device, libusb_device *libUsbdev, unsigned char interfaceNum) -{ - int rStatus, numInterfaces; - struct libusb_config_descriptor *configDesc; - int index = 0; - const struct libusb_interface *interfaceDesc; - device->deviceType = CY_TYPE_DISABLED; - - rStatus = libusb_get_config_descriptor (libUsbdev, 0, &configDesc); - if (0 == rStatus){ - interfaceDesc = configDesc->interface; - numInterfaces = configDesc->bNumInterfaces; - if (interfaceNum >= numInterfaces) - return; - while (index != interfaceNum) { - index++; - interfaceDesc++; - } - if (interfaceDesc->altsetting->bInterfaceClass == CY_CLASS_VENDOR) - device->deviceType = (CY_DEVICE_TYPE)interfaceDesc->altsetting->bInterfaceSubClass; - libusb_free_config_descriptor (configDesc); - } - CY_DEBUG_PRINT_INFO ("CY:Info The device type is %d \n", device->deviceType); -} -/* - The Api Gets the handle for the specified device number - (refer to usage guide and example for usage) - and this handle should be called for further communication - with the device - */ -CY_RETURN_STATUS CyOpen ( - unsigned char deviceNumber, - unsigned char interfaceNum, - CY_HANDLE *handle - ) -{ - libusb_device_handle *devHandle; - libusb_device *dev; - CY_DEVICE *device; - int rStatus; - - if (glDriverInit == false){ - CY_DEBUG_PRINT_ERROR ("CY:Error Library not initialised ...function is %s\n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - pthread_mutex_lock (&criticalSection); - if (glDriverInit == true){ - if (deviceNumber >= glNumDevices){ - CY_DEBUG_PRINT_ERROR ("CY:Error ... Invalid device number ... \n"); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_INVALID_PARAMETER; - } - dev = glDeviceList [deviceNumber]; - rStatus = libusb_open (dev, &devHandle); - if (rStatus == LIBUSB_ERROR_ACCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in opening the device ..Access denied \n"); - handle = NULL; - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_ACCESS_DENIED; - } - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in Opening the Device ...Error is %d \n", rStatus); - handle = NULL; - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - device = (CY_DEVICE *)malloc(sizeof (CY_DEVICE)); - if (device == NULL){ - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_ALLOCATION_FAILED; - } - device->devHandle = devHandle; - (*handle) = device; - rStatus = CySelectInterface (device, interfaceNum); - if (rStatus != CY_SUCCESS){ - libusb_close (devHandle); - free (device); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - CySelectDeviceType (device, dev, interfaceNum); - if (device->deviceType == CY_TYPE_UART) { - CyUartSetRts (*handle); - CyUartSetDtr (*handle); - if (!CyUartSetHwFlowControl (*handle, CY_UART_FLOW_CONTROL_DISABLE)) - device->uartFlowControlMode = CY_UART_FLOW_CONTROL_DISABLE; - } - //initialising structure elements - device->spiThreadId = (pthread_t)0; - device->uartThreadId = (pthread_t)0; - device->spiCancelEvent = false; - device->uartCancelEvent = false; - device->spiTransfer = NULL; - device->uartTransfer = NULL; - if (pthread_mutex_init (&device->readLock, NULL)){ - CY_DEBUG_PRINT_ERROR ("CY:Error initializing the read mutex .. Function is %s \n", __func__); - libusb_close (devHandle); - free (device); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - if (pthread_mutex_init (&device->writeLock, NULL)){ - CY_DEBUG_PRINT_ERROR ("CY:Error initializing the write mutex .. Function is %s \n", __func__); - libusb_close (devHandle); - free (device); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - if (pthread_mutex_init (&device->notificationLock, NULL)){ - CY_DEBUG_PRINT_ERROR ("CY:Error initializing the write mutex .. Function is %s \n", __func__); - libusb_close (devHandle); - free (device); - pthread_mutex_unlock (&criticalSection); - return CY_ERROR_DRIVER_OPEN_FAILED; - } - pthread_mutex_unlock (&criticalSection); - return CY_SUCCESS; - } - else{ - CY_DEBUG_PRINT_ERROR ("CY:Error iniitalise library by calling CyLibraryInit()....function is %s\n", __func__); - return CY_ERROR_DRIVER_OPEN_FAILED; - } -} -/* - The Api Closes the handle and needs to be called only if CyGetNumDevices - or CyOpen is called - */ -CY_RETURN_STATUS CyClose ( - CY_HANDLE handle - ) -{ - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - if (device->deviceType == CY_TYPE_UART) { - CyUartClearRts (handle); - CyUartClearDtr (handle); - CyUartSetHwFlowControl (handle, CY_UART_FLOW_CONTROL_DISABLE); - } - if (glDriverInit == true){ - if (device->deviceType == CY_TYPE_SPI || device->deviceType == CY_TYPE_UART){ - if (device->spiThreadId != 0 || device->uartThreadId != 0){ - CyAbortEventNotification(handle); - } - } - if (pthread_mutex_destroy (&device->readLock)){ - CY_DEBUG_PRINT_ERROR ("CY:Error de initializing the read mutex .. Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (pthread_mutex_destroy (&device->writeLock)){ - CY_DEBUG_PRINT_ERROR ("CY:Error de initializing the write mutex .. Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - if (pthread_mutex_destroy (&device->notificationLock)){ - CY_DEBUG_PRINT_ERROR ("CY:Error de initializing the write mutex .. Function is %s \n", __func__); - return CY_ERROR_REQUEST_FAILED; - } - libusb_close ((libusb_device_handle*)devHandle); - free (device); - } - return CY_SUCCESS; -} -/* - This Api will reset the pipe and clears the endpoint - */ -CY_RETURN_STATUS CyResetPipe ( - CY_HANDLE handle, - UINT8 endPointAddress - ) -{ - UINT32 rStatus; - CY_DEVICE *device; - libusb_device_handle *devHandle; - - if (handle == NULL) - return CY_ERROR_INVALID_HANDLE; - device = (CY_DEVICE *)handle; - devHandle = device->devHandle; - - rStatus = libusb_clear_halt ((libusb_device_handle *)devHandle, endPointAddress); - if (rStatus != LIBUSB_SUCCESS){ - CY_DEBUG_PRINT_ERROR ("CY:Error in resetting the pipe ... \n"); - return CY_ERROR_REQUEST_FAILED; - } - return CY_SUCCESS; -} -/* - This Api will get the library version,patch - and build number - */ -CY_RETURN_STATUS CyGetLibraryVersion ( - CY_HANDLE handle, - PCY_LIBRARY_VERSION version - ) -{ - version->majorVersion = CY_US_VERSION_MAJOR; - version->minorVersion = CY_US_VERSION_MINOR; - version->patch = CY_US_VERSION_PATCH; - version->buildNumber = CY_US_VERSION_BUILD; - return CY_SUCCESS; -} diff --git a/package.zip b/package.zip new file mode 100644 index 0000000000000000000000000000000000000000..5ecb2970e69e97124e7dbbaa61316f5ec1f4b8c9 GIT binary patch literal 180542 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%0AooAJ^oX(rQn+s=S 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

QfbJ6ignK!s-DVzjU5ZRX`WRO0DWFmq_({iCoh% zBA1#iw7L*x5F%>XCm1<1F-|~>MnlXMq;Hh$_o^@sTb{kq4{t~4T>G9WXv4XM)SjKl z))HAyq5hh@n4D#z2r)K$Vto zZASLpCS(;krD@4cIlanOQU<&;Op{)9=tpU+0~mDmT$Mb>Iw&dp6km_xc7+uhAi;6erL{0#g7cFOqC(dCzvL zt>#O@bI5jg`E803UeJm=Yo^&**Fh1#;;sYmE5&un@#Zi?#w?OP1;_*^M(hBYE@<wyKR7C}<&L-ojQRm7OXWMdG*JBMX)+-yL3J zkc=#54vtNj3JsC73tI!JBT|mqzuau7AOC;u4RC+l{_|?T{p|nwB;UjBKY#o7Pv`@G zy!{WF?Stp`e~Rz%_J_F`Pwrr0_);2=*#BO?Zts=v|7*T(KCk~z@xd}|T0_=-d&ekB z*!OI-ZK*b=P1~6_k3ux5u@7FH!Y0c~QpXD`Q25BkJs|Ai0L!jvblKZCZ{NO~blb4H zFPCUDbD0y_P_%kx-?M`{8u?z;*!f9oe|OMowf6xFA}R(@9a%l*dviC4=~+tAA3-Mx z95;H0`5E&;H9(IO$`$YS&8{)9j0O~KEaUl1)A{Mezdi+A~It7N&ZEp#lL#*2i zGYOy`V*4sj5k6= zdD3epNgzA-ZB%9&il6p6KR`Dp8p#h-*h%NEjwQv4VC{=o5{EM)(l2%f=8FYJI5AAF_67i++Di- z1O+bzf_XQB&IRQG*D_2L&X_^h1U=W`r+WqKw!$P$)$+U(3VYZMh0!{@Ur^SjXnBRd zl`Zk;W8O;m_rG^60Ka%a=0miB8W*E6+9?4jjGKt>Vaw>}nMD!LBbHIES(ITFq@mX6 zHMkudu{~-ECzOMa(gL0{f9I^;h)G$)jSB-^R>vPV8^c-kVF@5UJdB-=$$H8y(nr?B zoJ=PMI~fjpBwfoGe}E~?Iz)3inT@9wY+ibuNrz|)`}!fG!%9splf;C3u<>|0LOX1Y zoes}I3czUxO7}>fWFV$i9*)T#j=~^u6Km(E27tyWMX26n+#zp($=K{paygOYWH_GW zD$54ON#8s%23-T7#13@zvpE~%T`k}>o5uoXE zc4l>FC{AGMZcF{ zk%RWcyE3iW=}eFn_Te&=%4K+d!cBFv^6e_Jua-72HFpKMoCSV6P8?V$8`s+v6!YuG z8}xHuQW&c8(#LrWqgrv|qZL(|a>X$#9ST5}rF}O`*#D$qa#%=-+$C&$nFqfd?`DRF z1Dsf+#m;OL5vdvc2wF~JK%Cd;8(v?hI-AW`ej4MyHTKVcvMk-2^t$MDf7Y4I&N|)k z(5jKFXortWMVJIQr?%d_LW}GQO}4GKZz@XhfcY{=F!EP1BU}hX#reG{O7x?#>AVs4 z>uqN{pYEx2uaNHajgB>Wvz}k2m+~L;r#;%M8_0@*UID|8pa6Y zTA3WA%-mjEvS9ADOT`K>9fO!bQ?3BhFiChdF^ewALruhL8S)etM;SLr4ED!qhXrC$^qAB`CDcxrwPnC+N5eBu}!KLlG~(eDFJF!EhR#Ys-=XeQMHs9 zHL8{rq)ye6qSUEcQkXhbONvvgY9YZ5sut4QplTtx4XPGWTT`_jSuDc*dJvW-_%shp zOTfE4@U8^B$OA7vW0}eL@HcbeZ|1?@%mIxS-QtuxxzrrLiRBBA_}c7P_<{1p>x#T{ z;$-L6bCT=w$)YUOXwlk-M~3!g=1QuXO9E!_pM(8exwb0jcsE%&zL=sZF%~8{SUz(H zoRGO%%RE-e)}l^t(QV(mY0QEDG;k1=7qIWntPkDBz?gjZ>pV(+jidRmlu7m)e45Ja z&P?c3J@W(aJvEa!~>37xC}OEXyN6?))4k-DA7Ia2g%1F0-SK@k#yl|_yD>%!Iht^9O@#F#a>?k9&(U0=lR(IWxM3p4 zdHfO`9_RvI8FS4o^reV!X2)?j_vk*WQdBryb&Z$rB7$v86xyy4DaW;a8HXZ4%JvSk zP7-+{1d$IQ;DlnwMGoIvdV&sOh`0dsLG3V;V*OU>rSHYp6oZ?^xYzNmcBXKPI4^B)ro>Pq5vp!_XH=TkU*eHZ@+LvoBUPY%RtV(Kx11cnh(ZW*LkGxV;%*A z9$+5qn1kanP$D~hV?DlJ*0MVseH@!7rxSKM?Dvc@Mq87s0fvqDcF|R0Vo?k=RAFps z91zHNfq0Wn1OOoOdEVxpGtGD4pDsPMh*9v$PERIzE-+<$&m!=T$HTL_w7Up?cm1*odV3=_jIaPN}r?t>bJ zEAxm>0Lt*uaM(wKyj;ceX<5e1 znw@QH7B;E+tf^9xD8&TUQYp9^W6JCZ{@`KrP;=!~ATFDxFjl%=T3%6|fV8L#kIAN( zbX40oTBj;K2WqIkDK~;2S?f)+N%r<%NePqrp#mp^X?Hfm+neSo!5ASFAdKzEg|J~kiKKp+^#rJso^ZPlzhQ?#@U#-1%S^wYL-+R{o zpW^f6o7`UzPJ8%3pxEK_6#M_;D~^9uWI?lQ^g%l|#$S8yr~Dos{|9>q`{nWfs`Y&T z`_p`E?E_tn@%CpY#=sbN`milJ>YH6AA}lKFW$2TaKDQgKIy-hRBYqPS=z*0=KKi0t z!$iCx2|(-^cl2uGd5j0FB36PQ7QAXf7CZRlgZ64AkU0V5-XghX$9{-6P9KGFg4xeH zpfzB&r51xNOQ*t&8#lVA3l8F3+y%bgf@cGzo8utwCD2}q{X|8b9mq%&c~-!m zjRw6nxDq$Nh#L-U+zsPdM&)nvu$gwrUPR#!G}H>m&Is+haf~-b1HDS z{O}?lsP@r450kLtq^|16uNC)2{VIJ)o=zy}vJg&8-2z0!*aO6f5ykb+j(B7o#2fK_ zQk*{liCliM6K*jvkOLMreEyiEk@bptp%Du#XH8ZT){=JYI9YrbP zD|`OQzH(z=@P37_d_z8;8r#D}-UTX~Mh?}N2f5g3a*a_Zx7T=hHK)5g^r6Nbi zC8!^O0fr$+;p$#-81SP#8+P$?x*C0MqbM(B#96{G!13+CPO=M$sC~}yVR@{@%C$e? zkSVk~-SdPpgQ~buL?;fR>Nb!Y&*LgMo>vjD3W6G@o0>LW>-zZ)WhWIBpxTD#x@K

<>}wJAtr!0vdw<@a#+5A$qvvma_k4$n-QAHKga!{u z>^S$q2-$Qbp$25fZ<0rE2})AMK+zOfQg`Qm_PfSC)BtF(JAF=cPR9~d?P2Y;*F0RT zzhIpo|DHzuD5h@jHW>`918~aNv@D*P7b(wg=Ddo}$er}Af+oJfBKx#V8U+YRbjb^* z<}l$XeIe!@8IP|i2K7e+f0jW4_!4o}#Q0pURD$Eo(7Z^un60C9R9cLSJEmJRtC%`q zhSPXZF#tt`Cu8lHs87ICiM2JM0(N2gfxk-dq^1$2|Iu?5ey&CoFU?K|WF{SA4_o9Q z(Uj8bu)q&|8K1_(cos8tq*E6_7albAbQbcB&HMOKHvZz>M2MhOC%OtplVMa{b+D=_ z{C1B0%+d;{Rbc;jENe=Wpr`FT7L3FiJTMM*hLy&jYL`aXVgV&UUfd7U3oWka;y5)W zt1|ge{IfVG$b{%vL3BhW$D6^zY(l6APfh-v*^F7QMKyxmCv1skdp$B7Z!c7{ z$t;al0^Ap;gTF_W>_l9+4R=MBY`OzxRPzkrHq1a~HZ<%L1+Bw}W|8Sda!C^i%3)!% zlve_a_%P;gW5sQzR8bMyGblo=|GJURq6wydUL=F(!P@pZmvB>Q3K@X`7cOyahn`5z zfV2tvyS$1@H`4K^d0+Y zkEX)-Zg7TZwup7i%wiDsfc}dd<)N7Qw!$3uORP^anTxZB3K8Nsr?4J4m%j8-kpg3K z)wD7iR=DCcS$c@>2jI&82PpzhF}$w2lEREOf_1Y1U#R{mf%^iZEEI*KD>xFA1d(_n zQ+3I9jgS!eNS=GqkfRB{0(S_uP>E>$fIc7rC~c%UNH{`j6ndl6796*np{E~>JjuZp zq3k8NNQMI{X4yl$06buR9RrCaDFiTv2a<`M6f>Tr9wK7Nm74UJw7-2C=YragaG<^|{3$eA5!&X(V zMV?4yAHLizRYZ}V;p`P8YJhWtk3d;5a}=*J(Zy(npvdE?3Xi}E&0A?DoT|tbrd%Od z8oDl3lt|wOqGxXiOz|eU#1hP&`l*06+q2W-^^-fP+Go&@r~UZ|IYvK9^D-waavE}x z%8*LFR;8Nj2=sd7Wq}SP5<1{xAB31tG>A)F!VGy6NXJ9oE-?t7He6d)8Y6Ya2Dkt% zIEIb0u#X}-EN~D`2Q`v4K*WfnkDPH`%>&=ic(KK(I_V-P$PtX*@aEs=Nbpd#WPOyF z9*(GDRX}J+LM&E%_%%62qYUm1?jhB0Fl%s+r^O7T!b+==aX?3yaWmm_guv-FM}=th zTUXpsrLRxZHX{9)^Q@OJQ#`l}!`1c`zM zt4Nn;HuvN4{3VN*+M zmV9+wE>#^C2FW_(*VHJ;Ra{lsA&Z5r)k1;*XcI7GHON-esko(aB$5aa<0!nQn%aOu zSiEE=NWpbkSU~BM(daTlNucro8L)2^5)^*Gv0ec`LA#u%a+mcHrqva)QcTGP3D+`Z z#+E6(;w#xm#rZ>A=9I`zJoj4t1p1#qgco7I$yhqk1Id zzo}w5lwPOx>X-t1@Ikjb10LNLm+UtvS~q=79N7^sl_5Tkxq`@v5(QBy4d_A*=%G$A zD(yNdD+~BAPQ^7+#{a;ANI-^Q%J5pu>cVKODk>GAST-Y!1JXh=#^M{e#zuAE2{6Qi znX~f;>$OTVB>9T|rrRpj*0H*A8ax0!`2k;fOx6OX4GT|5sRHra{57rY`>=Fs zEA89aa4C*xO{35Z6^l{B@bbA5M6&6HXbj z1ZVKTUC)EsIv(hQuC@0*5FMDd&!C+#p+;*rtH>iI=kyR-EXDZc?-h1IX0AON(2zf4 zh4V^|;Y<}ZBD&wG4`oC(^O4gUYJqJg<|!SrjmfQ0`PVb-%s}B>u?@|Y=V=DeOD61< z5sx0)O@8W+Drcy_S%$D0k5D*RFWn9aH5ZSoVEaIv5mbkoNTN24` zQcIomIT$?>Weg--q+wbPKg=*<7iYy9r6v@NhbC9gd^VZ0&R(HQ>uJZjGF2P3A{m*D z$X*oB$i^4g3tACAsuQopW9@W1QxJ+U@2w9N^BD#hB0^#DF(%{dHB#FZxO_`7tdR$$ z4ijp4GlQWRMCWI|@gyI^$ld4ZJhy9Xr$#Yixsx}uhcDAgA##VQ=UqW+A^xdRG>GS; zOz$tU|08fGAXF#wbjZs9f<8?qQ$+INwZ?Yi?#XT{tF1Us6$j8d_3p5xfS62Q1RtVk zf}{sf%G^VKO%xlV04z*7te-=}>FMw^6*D33tzw7H05SAq>&-}5R^A9c6<1U=M?&r_ z_D2{a@8se-MH7u&1}2Q^n&Y{ugbUX)N+{OyWFog3_hoFyDrPg?jIP9~MP#S~^Rnc% zWAQ``+cYF^Y+8&S%8-O{RD^NNF6Jcbj(EL!fpp)s&?{C}9Dvfj^=Yqg+5&+m=*sT4 zD->p(Z9GTLHAH0Z zX^)Rcd@^Q4B+VhV%)!EjAQ_Jpms1*p%yUHO)Imt6HE@Pf)n$M;f>BeRl6CY8*TH(9 z%ja0$517Fnb@XZhT8Dk~170h~HegT;a)d0K zZb+Dk!;p+d`G_FD$$HZ{N#w*_&<>TC3N1o>LTy`b93$qUydw zgHYAgkI4t*GBbSQ+H?Me!FiGlu#X8`_UP;^;X3Y)-dg2h#83Z`R11Igr0F6@qaBLG z>A=K7r0T5?a0Wdptd)xu8%+pQgq8RO^(MmuMAk~nKpzRW7r|c!;q%RvBawbZh@Ur!ayff#E?G<{M=uQeMYaTC52e4Tl>Vp`Pcd{JI5@?*r-1 zfjIMecF+^~_c;uz7OU}f_T>$OHZGPiev!zeqKf&NG+4UUkr38!_*{K$i_R?;g9(F! zhCq<`Bg>%`feuC3o_O17S0naE)8N9Hd;*1t%=eqT$(0zP2;bB01WIyK(WytTNGq(u5(`bad_ov1HDvrgW7b^Y>Y_~MShN<2Rg`sHhak@wdtcnH3 zk%pDD(imcPRgRZY&aL}7Q5Qp+8WWM|Nuq$mg}I_mP<-_2 zkZGx1bJtHvo_GW*H_%88!aJqpY+)TlOmSV6oG>-xG+?&l3G+`DYt7k<9|p#D zHm&%cZz(2XPs={9I>SliPj`Znp34*%}Il8TF#Cnl@=&FeTh=R$V5Y^j3VDp zrW~Y4ff*xoAdaIAZ28IZg4OdSKB}V3Y_Z|FY=KDgDniftFj6uKr?ENLvw-D?(Hxmd1(pATzvNL-Q8OSs%k8NiyC5bjdyAoytih zMbKdI>nu*sVzIzDLL2h6tnlGNmpVEcx0$PDSwq@r5|NeOS&(VC;Mo^k&=B;V)`Gf^ z>c%NCPBQTsjux+^%?LUe0v)GbP%rcNEDJnE?*u2mQ}XQqZ-Z;WCp%H9eurXDlv=@o z40p+TSK)|~7;k?vlw=5VX|uL)pYw1;&&))SV5iE|>*H9?I88u-#&|4VZw?%lK3Ddk z_Mi54E6pj2kTE31iTW^Sruo~Mhu5njQ;AMnv`F>ci+j&q4hNkJcuLH+wThCiXJns< zL}aJSo4uf5XR0r#P(cC$`KPpIwCIz*J-pLNJS^>pIbvk0Y4+Hf>ad@hKa`Kvx{}3 zIC>^_UT}pLj55L4bpm8n9zHLYa5Qqwy?sPrQ0i-1to8k5D1bP)MLw6zbyRZ6(XFi9 zQ(s)4_djF*R2!EBl1o(09`^#WP*r9XLTRgcDNvxK(wYL9E$0^rHSWoGHR9(uu+WeC$ao=HZX=P2BK(p|PEO+3 zdz94C9B>YRU@?a1adbLAr#!s85#72TOwvQv3eBLh4j9i~EE_Pm9*esXdGpL>ySRW> z8xJkpV=bb5X!F8oU6!HJhj~i?j`3^Qn;HP zj1tzo{rISm^-oGDWK>rLor04DiA%P?ar+1qV|4{k_Qxe!O7yVJDkS=%R6mfWqD5-KI(gCZ^v@HPn3T{c*(+Qv06}iU zmMG8|Il@3E>XJ{b9py^tPGWMWSzXv{G7J>=G7 zq0X2fM5m56r8%`$kHoj+k~fpoG(^-v-yB>+w1OJR1Ie!#>!%tn$)1p-^;ie9pQb%LrCz48x>)SFw$8EJ-SSMKLFw^L3)&Ito#i#Nc4f z&m*my2`uhJo7S=G)Xh$D+(Xa8s>%=?2_)`KP=YZ;R&O zNInl;(Y}jHZ(Y+HLX1MZjP_5gUIY7$kXo&H_$RuT%l{|`0I8|7KH}?Y0jP|zzZd1a zJFl%_hz1AV2@?WfIjtkt?Ts9Tzmnf$1U#Pz{hAg%s|FvU={OpS9){Azx>21nLErG5 zL@#Dw0pv18(3}!G@evp#zEaS)i$r>7?*4*fz(}j7J7={6HIki?1Cqj&_qdRz_WNm`ghejltUHJ5mX({O*B+e9uH38fA!rraBM&VDC-|R^9 z8dtQls~qHO$TkS+b-7|!xJ%g?W*1qxQmt(9Eb9p`jN+oo6C}g3I710O7;hcRl`;1b zFQEewdZ#E%(=}NL@8b@o!I$;bqlKa9rIz==s6VDmb7rB0mRA4AxqTy2NH$WwT zxUk{g>~gDOfjzpNzjZMh~VDEs!8C*9XOw?d=+9IU)vQ@E3XV`(>x8LB^#K6EC> z%REsMfY)&Cl;gn!K`I)+^_@rQdbN`20MD=_yg*c1Q)~3;wXBMg%V6OqlS?zKkc_XZ zM61G|noM+x%$*^0yOz6M0bYV~Ar*sC9jp9ZTj51yN>`xL#3%M4qf|GV58>KI9460U z-N0bZB@EhM32p1vx_M?>tG+eMWRI9 zaGHy)Au_dgKo8R)C`jFOJ}JpR!@1g)dN43gJ*T5x(U` z2x>fUL5Lt6&0H8Z{l(W_wk6icsiVt9nBU0OcZx35f>aV($mSu`<0S)wL=ArOg+ICG z_olczXN8*lAZ664z0OodB%#+Yb>N<{=*JojT8R<$k&;Nc8V-80H3m>R=#wyiz)ct^ z^O^(~Gz3-7Fc3o<~Y7lbk>91^?t>b04*>iR4(l0|afvB@YE zGAP`T2{Ad#C?wUtH7=G?=o>B+XBleIq)Q14I0Z07AGz?tX_V(y%vsY}jy#iWvQtyP zQZ~bFlggyzv%69!^94arJhi%g#h-lo?TJWmbsAEqWY(KN#dey0S-eZd)sgbc8>~)$= z>WuTI-g(`u;&a@D=&)Te-G=tKzl{!1)doV%AA8v1=cw5^X!WqM(5v@B9eejQsAtc9 z{avln{IStI>S0HoL)&SGdiBBct;675r`5xjJB96mq$^N`+v!mMp{D7No{)pM1`y(q zglqOdw3*d(^csFMoIcG@0^3-IB4B+Q2(8||yJP$FN+P|J1gIMc_*QfOkm zRD>4SuJBmx)>`qZxT)ku;vkjhq*$2|X6;EKk$9G25TuVqT92Pg^7=JqHL06zh+HTd z4MwNeDs>|-$=FqL)n?F^TIE!$ambZQt7T55C589awZ5&%Ak#^zSez;pAF>tQOiGtm zI+*JYf=G~tXQ+>%9AVxb>BHEEf^;>CMHF8+1^kjFAKr6nuU4pN(6zX*LC4T28NXx$ z4Mk%}rCSbIn3<@PsPe$bDGw+nS#;M)LW&x<2aKe0A$d5&yM~#=D47U4e}{)k@4L|} zL#?V2jM3A@L!Sa#o&_L_gdDESb^oY-$M-ar-z(xfjEealW}qQZ93g4!d!ARyqZ$>} z!?_nG@61Crmd-aN!Q2$xEWi6c99%FrppZ%~B97P>VQTO+83WL`0``RJo5xt{ zzyTA5mSc@}!mtRAG`WTc*EAE;}A2#@|`+q&% zdGqYU=wK18r$INVqUdvs?J?9qKlV2^GrfbstCE`dF|9|7#q9px`a{GvW` z+~HXQo4-qEgE*;OeD8cTAHz`({LkP6ShW8c2wQ+f+2_zmn)wVxiXndH4~RXFSD4xK zZFN7LP*;%5qkU=y?alL`aedr<)g=Z{yLezaE;rtv9Mpe2*=@dUHJaVv@mBVm)?u&N z*{kE1Pb#L-vosGqfrt3jlWwnb+~@`W)GQ3NOu(rhl1t%*`P8@y_av<(MEdkoZn9ta z73zx}r>&j7_jh*^+absEQA9d2j3tV6mK2`YdQmxs0l&f3d!OPxfP2eoZI|n|{FWQoy)sm@?HS%^UnYexN(!rNJnT>(>z>bYcE==K())*na-qp9kOL(yF>D z@0^P+9G@v22wnh+cBVTPPS5*Qp=po8^XW&uLHMOPU3+yfu)LdveAWBd1v-CoWa$xq z!1U+E3P`{#G+67lULSWmKoUJvl6@<2hr?ORlm2x~tx5XymCO1brSU%^fN$=Vb>|4} z&`jjl3l8r9P=?YlVHW9w5Kn;{;oZV*c-%q(AeyNp+mPI4~g7+6tulN3_dD7Zxtml?#zykY%2YlG$ z4`pe5swH)gT8ozi4-_wH;ai7weyKpZ$i3_01(R|)e4t{7iH{?I7+-vm8Jg~SM!+=K z=}M#vk@B%Y%DrKjUeJpsUJR|^Tww=EYm->^fQu_RPyKn|KKSPW(T9o4f-=j@K-H|} z$#cy&#thw`$4`OsfWYma!zvJkP0?Zzu{Pl(m+TGQb-21sQuKZvue6T)Csbx=BL=W! z=}6l?b+XTW7iSz_CCoos;41(|IXgE|(q-rFhOlsc-?d=+EY+nZ4_C99=+6_ZhEn;T#2H zBD9Ow^ZiS!og;ddth#_aQ2pPrazRrP(X}Pd(SYsh* zf2p~a8<)bAot?K0IKG>V4<}q2kXQ~XI{am~lTY8COV=R4eWQXWZE^Ph@;#m63fpQ)rl+Txh^pm( z=pjh3wjG>aW8xDW<${yC>z?G4zYDfhev?nWM+~{a{`OUi^bpX+H{Q?vZ^fs~nS&}G zC{L)fHq`7-0nsjA(WkU$+?DV=d;0Y8?|}3yr+hsT3qq+t_&nAqj?1YI`O z>45$%33y12L*1EHp2SqjlUK)kd(95tt5@^0!Y}dW(RcKvK3Y4SQ~8CL!Cz!8FZ}O^ z%FwsvO&P~|(ObNJoqGUNK&-z{hR2YqtF31*g3U((0W63ZVvjcIF}v66?j-Igxe3-7 zj8&M9XQ<+ed6CuN>DJbke?qBv^?$2uZoY|z$X0CKYU(IJfe+k)RXPy^?b##&7}@0+ zy5P*whVg7KnYIRtj+RbTfbrALFIC+#{J!wGs`hM(LBI2& z%xzum!Oubr%baj_{@lsuruQ&mz+HDOy-{#%{lZA_l#oCoKjirD1qEpHC?XaGm6#`d zLRd&4@JArHvEh$x0E^zbk}=(T+w64Oos(Akq}MuVwvT&0jmjXczlz^9qEK;b`xRsbmVjlRr@y{jX@~yO7N!=G%3DmmwIQYAY;@|sMCBEJb{}t z&3s}J+Jx)SCnM~{3M5~iuOd{osw7&y@E*7skX>&6fZx7b;;a4@$9D>F2^y%S9HZ|=Hq$q90>B@r)$ ztrP`lW_k5(_MJ-X8IvX%=_b3q`DQmac{1cqyhqH&$MQk=tzIIfu0pgoHw`mW?ZJC| z8z1*IlkbCXG?H1bVfLYQCO})tQ1rpazi`O3e>hmHiinUYaD`SI$4hOV{CRv2(J4+G z9b)C0J@_Xt3>JKs*JXgvteXeE`pP+d-JX1hn*@C3Wra+I@(Q3pUS{k3=>FgJ1e_A2DG{32Pyt=>@<@euz9 zihU9P%IoBq1^R&WQu-SJ8B}usQ4z6$)!#BK(EswrSDVG&MWooh__WYP_x^DqFE9uC z*|Ff?gak-)1QF5&booCOX}q-)ZN))@)38r1T0R+Ry?@&3lgw!`$ux+OCB$F6%n|2| zg~O3QB@;%!`R&tDV+Tx}Ji}{P&+nSf?jwGSNuKGPy5V36mTTt_y~t7jRqT&8m->SJ z{(Kq@yujPyn^I`SxMddCYDz<}y4FCE?n-(5^s53*f}T#230)&JH=uYQm#Dd(WbNx9 zA{(*ZE*SOfnWKupA7<3nPJ?&bXdmviUQ;3;?5~lG&*JlpYGO5yYVa(pmQ1r>@}At` zYH`|~C6iZ~yfgoqbQpegd^THGPq#m-dPCX`K;?GYP3HXgD}w?VQsN7oTfe+?{Z;;# z+rL;0T1|sm1@h%wa;UU!Cr^A?0M=%|re7G>m)_}rI(axluw%041ek8@7Qf_gsU2CVGl{dUoya#ckOh~|UWBI_x^rgz4pWFrF9jdETSeOzP!XVO# z&@n+`#x$Bl(t~I+P5RLQ3(-*QyNt09mx#*b0AZs(y(AEPjK%{hoJ#^DT$L0%o-9Un zhfS8^`i|-viDUD+$7Auxg4*8HU|)D%m_=d<$rosrQ*sJN=a3lq2A{q8p{EfwA@xM? z+n@Yu78`oip>@ipwtn%yb4lIJ*+-lnh9Ao5oUcI)9WuO{#i@|nJtInE3N$WZrbmbx2wTSnoC;xY2Tf4?B^ z3*lcZlfv_&bbwhjU#ujDFB0KzDv67?9;O^P&l!J#pNYoc`WA+-nOCw#H}4 zGIU`Uv7m4WgL0K5aVG%@EjzYEzveIBT~Y}eogH5SK0x{1KX3lfJM;|E*){mB!=cz=K6I&1 zAz{_y{X(S%^J#`3GEd4-d7iN-V6HgO$&ai_XVd=VI#}~=ay58xSkJ~bc_aZAZ#U>A z$z|d_EwUqV$>h_$3>Lg;4h(DAc;ARn@4Z{FeH#}|i{xJ$Lr`dbiVNbM8vFHb_vCH! zaJSvbXU^w`FWOzEhLcNRvpjXVLlXU(Q-?uPX;>f_{DoM zdn!RD1}eV4C@!yXg;=+%G>psrDG3iQ1QdGJKP8}G{5t^(-oH7Zx|8@m05yot!ufEv z7(T00jT_9K5BbY~VoGM*_+mG9%K~k0wwdDCOXbYVV#z_`aDV;<$`bzv{t4tu_$4K= zq`2~lnHCRz*+UMPKE{Kic!2-h{G|!Lv~)eLB)|As57bMZUF{5<$=%v#`s48mH!>?f z9KkhTKW!x`>=Q^at{n5*C$9Qze~Rk=cAE9wgJx}Zbx#Fv7uWyY-g>(II8*=k>GqSy zf7Ji|96vAb`KRQD7Zwi=8q(Jb2t?6)RE9L*I;6qw+aH3NQ>Iw612BlGa__s~wv0Lz z{+e>@c3Okv1yKCdC`>U6YlNj|d}=2RoOSC?QB~XwwSJ7u6yz+Rn(sO=2WF`fE1iH4~$LQy`m$oDMLRBBre81C4|-*LYt9^8@>d8 zat{kXxE~siBi%)%zTcH>d3Wt!Pfnk}e?$6RzJt{nd4Aa&+x{DPDVMylBX1nm?{Qz1 zomx;2M$veVzAzAK6z@KU(->RPViuWnmc~vK*#Cl zQBs_W$E8!>vX5n{27SN1>TLL28{6-47iuZ!!>uNo|e=D3wF=D7U}7ajc1!QLl;y^OGrsZW86bz|#a z0F37v_z|YTWdyhp(%DeI90m>^8uy%i%`(Fj_zBRc@b zSnvQf4^l*=3fILo1+Xi&y9SsT7wLQqBiDR#@i83EBPJD!d=9yw?&Zal0x{+^8YY+b z#lil)^y02HJP}vjN8#_!K}af3L z{hi?Hli=)|U>iRCCWyWcz8M5xKMS6Q!A=xBdmKD|9DI8g^uGNrH zyP{iZw)Z}p$?jf%itK-lgYZLye)sf#Y=DdHe_Pv6pJw}iJ=@uO_J{rNbNm3;Jc+KN z{(OdMifftHZ$YjV+|fukB8N zS=#xpT8Cv{9o2h{Hy|N>8c^)V;}6nw0lPQf`wW2X=h5tB2-BRHX>#Yj-#Yx^peB{ABxC z*8j8hbmtHH|2cm8BRKJsQ9O=E^U=u^bdDI5DkXTqPVJl86F~pTH2D=|sx?3o2lIo* zI#bogLH&p3$(!c>5xjQ-*kA9wr%Uvwe;#$(e{D8;C*AgOr_rR_ut}3{UQq3obiH5% z`|xTbppv>)KRRk2?gl*4L3{UjzlpT^&B7r@$zTrJySI=1=Ic6!6TE-@4(>7h@9_>Y zf{OIVTic7rgZ=pQxclnU(8KO^I*Uf=`8bQu=hIKc4j%^X?vF?w0dV_GO9%yk^#*)> z(jf@853^r)e`p<@ygF{}@5&>4_5E&c5PksLSsHS<;A#Jn2Y>pf|M5`=NcfMxZ2}HH zSorG6aTgAeI2aDp>m18egeJfS6iJTu>%F~p=isDua0HyL)#JASJpftSomR8Ecoo=P zkj`p1o~}#Sz}lbw>3sTI(CuNGZhb#^u(AEXhMV1C*UFO&Z+aNK1B^^AQ#?#Y*E;MG zxgL+z=(M}tM*HBX1^au=qnyDjClkhX@*%zo?DQSS`~1axWO zlfCxw;jX_8yd<6DL#$qN(&{x2x^UrgpZTE|W|uI22Wdt7xOa5iGmwA(+onFz*n5pp zwsd8OF|`IwH>Hzhx^aoC-E6dv-owUfFdFi$2lp|TO!2m{QyUD20D3bhip+gr8_DQI zQhnCE33>d_x<@$M13YpwApiYau+gN(t0(c<2_VZ^G>yiyoU0vHnmcFs;6$eU?LpBS zpLK7|Lx3kXB}UVl|8gLMqM1w@3=V*WVSK@LtyZ&ReYO+KV9q@qRM8^+}N&d zWy#P(GLiB3$^Zfp=WVIia59NP@^@-?-!PE%0Sg#LHD|nTjOONe_GKFEzdqXkxKrD% z2A9#7aAefI84YYGAbt#o5qSor88oJ-CG)8>l73~*_j40Z|0HVr&2G2Z`2=)RUOVn| z0O39Ha@o}Pk8cZi>D@;`n%^De%pm){vpA#_Of$`&g;a9UI__|8E1inYdQ&RtP(dRb z-;e~}13Eg&VJTY50vDmu{ZWBc7IZiCx)T-n%sb5Do2Sd?-X#XH5D%3PGiy1~2hgHe ztaM*8pW2i+REb$dY55eI_UlH2{GW|sI6nU*rbpS!32&s?Ice=WD&gzH;|D>zgFsyT zAT98Lb8`mK8Fu7F_t)CSyKp#MFZn9EnoYy9FUQHoe2k&38Q+kAEW`sMb5N7`HN zv@1+jai3h_fL1@Fd&i@P0g&#uaf;C@-PwE)C!YjY54vv~>#Lu>HDNSP_V(+q9b<`n z@LRC??#BlO=dU~Nlsn(XBv?} zo6aYbWQrXnWu$iz_cOqdKKO2Ujk0KvT#jqH72MZ}S~QWo1>4_jZTTCaXJB3+v5o!X z-DWpfMAkE8Y_tFEw?(!Y2I!~2ha)WXlBTfZQ-|n&0<2h>vKxwyH`7_x^;-Eiz=6no z)gHsCozCOofTPmU3yl%)`|)^wr4AhC5$(LjTX>?XS0=?PUBvPqucR{^9@m96t{OJ@a6@_DyYj3-2Q(ztCrcDD6+j8Ns2+yc}GrT>=+Q}Cf__p@&;X20p^?}>R11W}uibEuAsxS_481^wDa14W;O_MPN zF5>EX_173IhmQbhhz1lwUN|MD#@Hzr-@%cEJB12-642LjKh}c7#`6b7820zh1 zRSaJI1-{w?2%tv-b5#IZDTN+WMgok9cAN14rkvx7bfm9JhI-4fqm(p*#Q>0rrW4BF zPcM==&{Y^xpmQ3{E+aUSzt0nlcwPJXLGbefjEZ`A520Hogo{`d9xa-rD6Y|SXKCox z{Z6W=I}5SgchtApP*_8aazRWUSBO@v3y^yIGZZs4@Rt@zxDSI7JkOHhFuCM_G|8Dp ztT^uNZG3|j3i=l&lcanm#4#A~G=dK}-1jV=Vqh&+6Pi+(C!s1YzDAc4?+wL{0%gXe zxsSn`M32*7I2^D{s=1kvGPiER%c+7auLFZp0iS2H$@9%kyoKlEIo`m{G&!4HhSO+M zhsR4J?`zQSBuUd4ub}QKRU}tPFggORGe7{1cH2L`-vjCRq#pr@L`_O(X`1#0H~tHJFbn82dVzQz$iE z9|GrP{Eu)tSm#5PTLIU4Jd>zd7)q!Sfq_ppPugIeCRVq`=r#t;$>az!A|dj`vmq^e zlmIYod@lwor;_sm8$63Hg9P4~^8H)@;Dc+uQvhWTe)i{OMyt<(n-j|r;F9P-iv|RW z#!LVe1^|L-^f9KeENLE2yM+P!N>Q-H5hr4X)BZ*LQIoBlU}g_?n22~5qzQoQBS(DE zXye&584Ax(IJ#TpHQOzsg^c)=O=Q$(Uv*l|J=$I}j%bUV28KySLUTZe!taLhSlQcz z9qc|!k_<#LpTlv@L^7S=iAG^xL({Q8BID9Iwl??}N0$gj813)#7z2d|5eDyKKM>0M zm`^838Yy2=_80sRMH7kXH!H${r|wzv<{Usgs7s{SHJ>1L8o&@(qWuQ4FqxBSxgnXB zr_*>~Lip1M>_(Q%0-bTc{krWzld0-8fN7YVCwQRnAyN-hwN9k{0SqTJ)x!a%qoeQ& z<4r)xi_b3%m!=^FnyBhUSAA^z_4FxT&G;%B^0k>c16;-fSaSZIovkf-#nMt@*J#Tl z$}ZDMaDC3gWuZ1zDyA1oL50Jw5felNL5Q8E$#6c4)-e?Sg5ZQ10fyd` z-5wP;H1j8DonZ!nj*No^bU!1`j6ku%yks7e4G)vPj7o(;RZhcZpp>tR#I1D(gAJpz zS#UZG#~+wM61#FBWfR%>*5<&X$O@Z5(6#ui8)#l=o^+32!INEu9oB+`1-=LM8y*_l zWzo@1BkUXUWb4~!sQ03b;i#op1uxiv<$i=iUk{K$Obd_JTwwV^#5GI~e#jFIfct^a zJD)|F^FXlx6w{A9vg6-^`D@(ig9#EHgM^%0I(s%BBDlvu^GO6X+Y5t>ITDi*l_5=# zM9!!Ei07;F5#b$}b7K({D6)%^yOts=a?XbC1+kaQIE^G31&4~Jv~T3BK!kv9jBIim zN&ZZZ%em2E8xA{jik31Rww<%C@9($Yog5#wKptok$0|7Rs(;ua3SDrc#~bx-qt!w_ zVTCn#L;RYuZREfy0xkmo_brCm0Zm*vhv^4no>=>cS8jM=C?w1h?lw{cIY4 z2ti1#2K8wO@+bZaOOC^FHFz}*{}B)A*G4!ChxE$@@ar_H!hrJYMsFGpV&>@Z{WO7v z(v$y)`WMw;Hyp<){yU%HpG^=fW7O&3zz`HzfGtYbalB@VIpIKqtHB=d`Z!oSLg6GF zufqrNn1|UzAszmG9pSBkf2UFOp&GoIkI%y?&P#F31K^V>t)d0%reFRVPC{C_`E3LB zVf}-%`E+%F#VLx1w5}gORlpJWUwVswEqf=}4`&}~(tUVf9*$*Q2dMWY4BNwGdKsP5 zud>Tvjdl&MA0k)_@^Yb|^x|57}oS-vLQyCB>h*SDZe%WYTPXTxE6uZOZWB7sp z1$=>DCUOwnOCWmqOK(2?fWP3K`7i}l6&Hbw{cRl0=q5+yw@7wv8I8FohW5xK4gn&; z>Exh^a^%Twv)fooel%DDgrw*Us}zI$ixQOqik-QlmmH1<_O7U>{3Y z32Wk8@{20Qw>!`H})uQag9J{AL9%@U;VzPV)#2{8nII z1da*T7#GotK;pv!DQ_rHKnX`HY`FR^C#zCos3UX3IESFOJ;zm@0-p-rw16%iAMUmr zvV|@|F25^jz@}G z?BC~M8gF1F0k{+AC@tmI1w!B{s#oERcrJ;~FrE^5q`Oj}<%(#lmajm>A~if{q6mX> z3YMrIv*`f8t)hx`h6*x_7p9Ux9&#ZJ98HAn+>)vWR5&WIS1CTN%fR6T1ps&et*YFB z3Hu^c6}!AhhLJ8s_?E0A9D|6CoCqaw7_t_$RWzvdJ;<(f z)u(Y63!lXvLgnA;))zfvO>+w#QeZ85#)5ItQ{lod$BVv2{Bq^kclGyOAU{27xOCEO za`Zr!lrjPmIm;+CjzydnAMe2;luu>APlphjXAY3i91u!W>lQlg8M1r=PqF-}L?7(zPXRS~VhI7u2W5-x%E z10;VJ1Rs(^sQP%XBqB)WU8EeI!h##`&yhs5O zdP#OAOj;w80i6Km!lZUcnqxkW|2~gAm1haN%p zz#Oz>ZBUR0nN6pLcj3D6fV#w}hy%*?Kmi=F2>+3XmD&u1TLSuopb|vN8qa1M7p(l} zrl18EEfA63GrXj^6R9y8WXva4H7DN6N}HpTP3Pk*)8s=+@Z4~_H6t|f$)Ta!v&@Ng zNtT7gqZ*uohDII=f6-N5fZ9D=Gm&BajxoWr6vft1akO za2ff9Q8q7qxPuBCRN;#0pACF6=5i}Z5$>}^)QBI~o>xa#$rxgkmN6>(C>>ENpn+Nn zQE-NpOi4V|b!> zNmVM27~j+ulNV^}nzK?0j30lAgGnG!Ky?J!fHaIhAozmaHY^LY<|-;Pjol5{+!B7^ zZqfP4@PohB-_}vHsUP>+C5l&p-IGd^0c)74xJ#Zx@?Wgk$`}0UAepT*{)#5Kkryr!Hw|p0d8Jj3hN?3 z!+6D@{<##?HvzN4fjER0rWRFzrg#txw&cJvW`{M9u{tvDTZ>6Q#DfX z&I$5yGGz&199=q|e}700OS;1kOp@`axS3o3!FYVAIJYd;bVLqj6mpI zLib7zJf~Wan0x})wA9rD=rJEFA2vFKDix{FKA%yOkb*1CzsEKe+|q`%%`7wbcgQsQI;y`e;%o&(1+?SA94lTTPLVWn95v zwVX2}g>I6put}Va+`(>i5Xh^uWh||5m)>>n)nA=-TmMh9P!c>M{POc)yK4Ny`pL7Zzs={t6D+{2 z>-T?N22VWWUUp~32X6O<#{SflE$$QD7jm0&JX(P#yguglFxrfd4J0rO^};iIN$ad| zn3(#a!U5Xx;KK(PkrthufoT5n|G?P?U5s&P(g*4DpT`eWre{AI5*1kaM4}K(heA6F zh1>ie`}evHWbsz55-|ltUrAIoDFz|hr|vzdq|%B#Ce-2JJ-U6^`Q^8+bh_9 zSMFi^sMk6GT-OYvy>{oMk>@>A6aPYCkLir;B@OXNlUo}Ak?|Q4p)-=Zcmy>dWJDeS zV1XDTNyM%}@F9y4`Vg_4A;km<@nTurs3mk>wk)BfVAUl1l{FeRKpB&fJe-Ws!8xb~ z(X79O*cC&^QvNb1qVTyY5K)>AXx~TIvkQ#xVVK?xq7{wWgYS&nmGI9(*YE%f8!?=+ znL)}xki8m9qKdhspG@?PVUm2Xz`qSd2~w7QfTwhqtPOkp8&K|(e~!fpVO6xz%t zFC8BvcBaU9h$_#}#7e7Ddxl2c_AZ?0ZG7^j-Y5ye3CJCX6OvKEET<~rLpC5Ibxn}G zrPSswIguF8gVyeTm52lXmz4wxba+?|8dcOQs=;nGIC^tb4ce!OGXRba_=f37Rna$C zJBzOv18@uS>2sDL@Yg;3x(c#Wr2E9R=yT>N_!{GAKa8>JYyLSq9*C-A2}D6F4b?Vw z5ryKiFmhy$h8ut&+NgxN4G2iIU}P%O?5gmIDxXc9ddit|VT0NAMDT3A%2=OaEhSoJ zEgts;KLLMqH2z@CiSh=RQ!EBD;@X*gqv1Uz@52%RWuK#c?WGy=WuxY}xsfjOASf7N zRH(f*imizDzm3N)knW3PEgg%A(wM@Kfa+tG~<>YX2U+wTrR9yvM!5~*qt2d55v zod}rFhIo&0-l0+PNonu*$?bElhRB0(`e9&EvT8$~u<`{0ff%FO2eXo^7YIKH(MWO@ zPoqS9>8F30hIBSz1sgyp&~7lbJ1=rN`F`s8IeiF(Awfyq4+YKQYZ2W?EN&BPA74i&KE_P zvlg5?!i*OD4v$dJ(_SmN>sVM)BK1Y#oPww^NyY;%qpylOu9ux}WMy?k6h7{F>b%Oq zlKx?$eK_Rl7@RECd}OI6#$uv__+vc4q}e_xXK)ZEgfjSZKs+ZN`A10?{ z4oBrvEG%gMq7q>SyA$H3ivgN@D{odnq`-UM?d=<%BpbNW+2Hwe_FPr@kB{V!VHs?l z_}n0&3ws%or_=F6tc7&{h*<&dth4z7=1|cSeXe5wN|i4rE<=K;(_#aa3^nCWRa{(umj6FuuEwfP5| zlmsts#+bgaUaTgm>P(^ru5QF8a&}^oEf#MEtJgsGMiRCv$BFQs%uk1LUyZ74Je$DE zP`GvxhC;T-i8ZIgMrRVFp|%3fEJTfJnN`h!VSy1H~Hx1V6k+6&tzY z8s{!BJbtE=m>Ev5oe7HbK-4lrGY}60Kz@*b7c&s<8v8T?ML(BSCR0O>F<}gEB+@7l z1ZymWu*8T2ktEF!gUjG0yg*1HjRW7CXMBAbUehh(0Ev=&ww&0*iJcsE+DFY!@4a)< zF0mKW?fEpBYw&`TI+ii^YRuhk3q7r`j(g3M*PZt95gMt5HZQX}Pb0M{6@=ed-D*a;lmW;A5Vx1+T6ZDk#1o;<#}@Jm3hOS*MX}vDbSAw|nv3DFT5{ zN>S$u2Lnnaq);F{c(#^d&Va0eL2A#{il@Q`k$I5Ne+|MjMe_0(h*8i3nnedR zKQ#{{+m%Z!eBb8p9PvPVMz)XuIf;>uoiJ$;|H!$2s@JO))Q8ycgyLF;*P>I3F__|o zFk^wYYXTf#h@Z!aGm1*&%dWo*)*=@Y3C}YdZbuK}L1FLW;`j(7CNu7FY}C+qs zP5oJ7N>g_(ugMC5kFJH3a&n#mnYOEVwJvHis(lIGB}%_VQ~pdER?%UjqC!hJK(jq% z9xzR2j!4h!hrQ@WQJXuxz4ffdN=I-8iuio$)GA~KfDWF~X*|}XH;RBObVjWfqnCxS zUWDvPbg>99{L||kH+qE!A@Fxj#5)O6)rgY`?o+#+vp5lY^ITF#JM z$;BQcbN|pVTX4GSePP9c!jZ+9M4ADx+mp~h;i{wtGu@=D~Hi|KJp<% zeUh?I@^jfBbNXGT03wzM<--Yuz4YMEE@(6KOHU&6{gk(ilwet&Vj@jO@7H+mhW9wr zdn3~zn#FM@M$SA6Nhn)g1QS`Z;xRru;0-uYSumZ1-k(P7@5Kl$at4VlaBR(oQa}M~ z5^$g%EWJ48Vmi!LUN? z@m=C+{0|#>dObQ#*mnYVt{?U)u8%DOf8okCoQa>XN)X^QJ3 z3$03;AEIc2_`|CvRVvz$6%TaDH8m5Oz0DGk#z&gA=m@Q+Q6GJRDaaxc6Onswh^MV;zbOxBrJ6f#F-=`yo&bPW2r(IcP4Y~;cU1qCq^Te+BtZ*w6NTW|$(kW%?(>)s2< zyrP0&pSOIBpjq?BUZ>vZoz(aDmuD(l>jI?>k)d^*wLUY0Hr%3W(mTdU=0Qxs4?l+S z5Q%jS3*~)eh2G13U=+Yt*pHEOeqY3(pNzE}3g1}W)={VR7KAAzC=>Q30io0{yS;j^ z)v$RiZlJchF|6iJb~c-y7{T(VV~U#Kq89}*UDmgcti=Q!b7<6n%`IAYFdHepkUYDm zRvv_#1wz63h7_vBmY{-M7Th@7n~gkOZsJ(FT3yGI)z%w7IN9LY)!NgaU8p-hkiPGr z`rvX|sxvjK?qlV$ro}6__*ArTL17QdgwL{2(n;>VR9VE5rS7*I_5Br8v0#mFA4$OL zDtDv*H(?mX` zM3pUuN+$Ugvj9x?jU(1MerggF+|3av2~=u-!_A5}&(UKv=1Jo>rM8?X2x#8Ljp|dT zr7RPcn}C{EueQJ?1Fnd147G!1?@fERo545-ZZ1gJAZahcI2m7$FzYuTzr(Q*RKJ2{ z-KENbjRQp#C2alD%y449{U;*TZ(nM>gL@SVvSulV&QD(9R2VPR6hAK5jAtn;_+E?~ z%*a+H{fF(tlfy1hCW;2k-1CCu@@3rpf@((*y)R^CVsvr7(fgW|rr`PcjU}W(Grlo) z1!cChDj4q{E)sUR5CxUV#K4J0Ms#3sq$da+E~m7b?-CdnK(Bz7I!`Siq$|N#A(_um z!n$NAaA?&&V#^mX?0wq5xXv3Z2$IAOt`&DxP=fFu zN2DFE(XRi+%<5lcnOOJSvjy?y6y4=GaPNl~7w@QW->t)wSMA;RB?$wCdmdlsL~csL zNVyn-YaKmJ2G=5Kh*7x^1}Nh32#PSKD5tjMme;>boh*<15>|nWw_^_A#U_nLS2~0>$cryQ z0}%{E#o2FyH2%)Z1h_`M3)*P&uv=VSN;l!54e@*vO(_*WIrbQko6HUyWRe<^_cYB( zFmu2L{}Ccm>O4X(iXp^o#i6W3cKDNcmSq(Z7a`TGD4&@^Zt3E&eT+`+ESK1*j{cON zO3}!}dAv@Jq;`pWDCYY<*9zoS4}hk+nHwv+J!JtL4oVL2O71uc4~_7?+h`x%;Lyl% z>nb}eb;MK7mzP2UusbX6NEq`nF;FG2oTjvr{E^#BKE%gtS!v%%r@7bcG!GkDtqyjs z(S_@I7~t^{9iqen$>^fWE@XB>OFGaasy+FDyI3{jZkz^YW`LI#_y4 zJxwSb;X7sf@`Ae2^Q#$PFdq45Y#JL@*Ax|SyB0P<>&eG|%t(`{xm4e(xPZ6?etRsLj zvM#-;+1)Mx3YQbRF-(fm(^G|plVE2NY&o)V>{ zOBNA<36PYOa~{N1r+Wgi>2144zp)p$OuDT#F8`}AnJhtL(;G4Da<1$XZsVm zcjbmN5hz9BDVuB=2IX<12!kY=sknB?qN{4G0Tl}D7a{)yk@$MUCiKxhs={Dnt$IRs#UlEX z8J#^IGCnCMr&^B-$Ek`jR>z)6yaN+NOyteDk1T@Wiyx!uwWA{CaoHFH{Ny2vHMNKm*G&roDXMEbNHgFTm9LrAmRr|7&zq4kycl(`1 zQb%XCone)_d)k? z_Gu?8Zqj*USt*QFckA!O+iml({z{5l_FC=3?t*RhF-%7cCne65v`YDXyrZ9i`h6!~ zoD6|)48O<5OTo|7SB{9v&p2lGAs9{{qp#VTjNYp3TIKXi8KwGJ)U=fG=KY zXqqWSb_^#MPCME?yKy{PT7!)+wueBd z5of2#3^R@e(#1Miq;X0VDN$l>weqXfWz5?4s06IuVPmnsF%`*fJxen^5G{d@tilP( z-lO$SsQQKkaEe4WNG0AS7D3f3 z?u}(j1%W7uiJ}y!P8J|FyQn;>jm5?vlMfN&tAuY#;~Z&xWvhOXC2h?HNFxN~is`d{ zi>&obSrDCzC45>QFsQiQAu=X)VNqYjS#dvLfT}}O5T*#0sVA~sP#^T5i$3^H- zQaPJqz*Pf(FnwDC-^rX!O?U81%{oBM(v}$r-T_2SWVY@Io0V{iBc>V+FuPqlkND+s z#gQkV<4QOb_{_za(x{MfREjp_vgG~x`!?1Eg2xtP$S}N4bc0T*tW&9qk=-ng?Y<&M z&3oY#bRnOZDx>*!N{vw$lP*Tu1qjQXc#VxPeNtR=!DWcdGSOB_Gk@}mbUbv*s>?db z!A;i;i`RQW$`T2*F%&h|l=P}RG!56V=Yj!{Eii2xXe82s04q0h(I!RleOg}aYBY2l z&hB};ITg-cvKdF>c6HY-@zJ)xu~TbTmT5wza;wQ!?xr+kkY)Tn1CH+OVo=58ZBjAd zXf&B&$1xYjT!O7Q*l3}^-+JXRrxG-z+A~rQ<1{`M?6CV2`eOZjPIA7Ga81-SKDVG| zMq;$Zzbj5n9!iSzwr}Dk?77P5PMK(0;S9(>Hfydtlr%v~DMa9N*$%R0O9DAuo6Gn^ zJc$NzNS!S4ugzESDdq~9G9cKzs8->OYEC1aG=%S*Z_3*av;% zM}m8|_kO=g7f8D#nItwuE-JJlo1ql#Xgai^+*Tw^BQ#7(iE*>LpZoDl(Hxc=;ItljHg!FUjF{llRK0$9+kQa_y%|aCxP64yc zHj^{WAm>$B_pp^=rJB0WM_j55aw<=hH8-Om65!3kvT*Y~eE8T&YmYXjZK-_c7+ToublRQO%dNW`CSh@gx)=x_ge%2HDjQycrgi;_ z%8p>_mNizB8G`zG8!)PQnKBC9R~-{Kq1Yf9e~DGHhzU&%QAX9Gb!f7CCEg?NkhR>d+M%3GOwc%;1&6jWD-^&58n80BT z#e;gU$gm}{YqE&K4NN5%>GO;ELoAwzJ3*8&tuBN^{fTv)KcPvAwUs|{>{NJO*bYOR zre7Q7f?lF%4Y9g8ojlydCe!#Fv)D;~RELXxDc!HEeC%v`6dF-9_><@{ZrNRS#ATPJ zx}sBikrd{5X8ScKr#L9Q!x~|M&Qo3jo&fip;P#whrUxyj=uzYc`Nto4N59{Gy>)1~?n`F+YZD@a;wV>O!ICy}jM zheyXILZhhPs3aVX2b<(0u)TNPd=JOwiHW~X8WgLBh~C_6+{UJI?WWN+X>R?=gp=&u z8R&t{c{<%pr~S>*wdtJQ)!G7fftkfgn5a6sjlk{KLPV^})i-owCQQ{*^y8w&=9zV@ z7D?{&cB{9=g|K2~s$+E{ zHAM3uIa@l_6?3bKosZ|F51Jxk`l_A5#*a?4Ev>G8f%BKPsfT&eJZ!Xg-TE#s`2j}| zbFF30wK5q|4tiF-x}T19&0wb3V~ccqUBCA<&n?>?(m;udMNqk==K!iI!i)cVbya2HRS9x^EWP`v_A3?VeN>BM`Y%5e z!$bHFKN63J^v{6)8Sp;||8v2EU0l!~{PqREeZg<{Q+f;kGr5?^KTqV}r~L11#50Wh zJlqKX(juhvJH0=m&jBR#);0e3?AtB+hyH_=BOldfeH!fJ#efHcU+9B*pPu@AO80m#se-WiZ;4b<8>T1aYfX#~^`0A_058x3lej<*Se7|gw@v=q6%N7Yp zwB&)ok_QIM9!QowaIxg;W#2D@(#0|;T`YrAe_^*zfWhLg;YKZe;K|Y_o-TU=uIsYH zUUDl&OTN~kz>A++0*%pcu{uxf4)|r}~v$)kK$}e*+s?Olc{JhM7_oVy& z0E$y|GTu>)F6~=5z?7mL}(C zcHraC{m9HZ$?e2u3=X@}yrX_JCF2XjPqvDfvOqp2pb`U(;#K$)uS!ib@wIY0a)!tv(jVMLINL|NJ z6dOD4lmIm5PpwYw-|zhGHV$mD+u2EUO(BP|2Ywhk7U{#n%Va)|H7dcJ>m#*bRJqV7 z+XHJslc5KQSvMgm)u2wrv-WvE{fVaV@iW%^)VyfJ;aKdm~W zo^sKPf;v7PV7zM_Jn{+`@k74MP~eKn2ne>IL#cScZg^?FCG1d-kRl%k2|8@}Z*{|< zqi5>oL=~K%x7MYcBfGzx^wBz~zrKI;jz_-lSc4K4RKGBoUcpKW_`Zwh&N2(RJe!to z5`yL#>x{%_1J49AO`MrM-17J_c}J$;P$fT*tT2r1Ig!Ng`0ek5?`#0r_w)@%l$q}f zLdtUcXWxuFlDt-VSR74O)GJHLrrRpZZWE1w%c9HZ!t$!@O>||&s<8_@ZX?N#WFnu`Irm)0eQ7Yr z;S4WF*C+7L34gcF7Hkhr>>=jE4^4P|5jc$>f<>UQZ8%0w zUXg4$70QEC)nAoGH8%2j6BY1dd8FGu#+3Pz3Jz7@V?|Be<1<_L7Kd{dvF@ZSJ18P= zW}IJ^EYoumu|WP`jVtl0?;-J?CYNa>m9gon$nsxx+V8py1iScUm8OdzkYP*yBdc5k zyJSKEy$JR!YeC)MHM{$@tsU)HdSXy_H17~?69*Pugt{Q8jT6L)^!C=FBZf-x`eq4w zjE`#AC=a+_VtSeZl9?b%x(cqN$_f1wnuwnkfi#ozSt)_3i<`&Y=E=b>S*q*ZlY=_o zm{!fC5IXHHWqFA0<7Fz>RjAaj_MSD!R}ErmRYan$3F~FzC}|5LlpZh=9%%!H-d@$v z6u9ox!sfHj)&dGm{~S{iLYgYPj%RP?rxHY<9ZYOb59*Qws85uH3ar!7sxw6;1mS0u zN(qSm4L)tbG`gFFOZPc{#mT4kZhC3m4yE=*l{?)~I%Gw*d5M<%Rdm2~qIAQS88^~% z8aahGjbpjTK}2wkHOE(`*Q)3q=X6IGC*E%?P)2#1eeLgp> ze`$iV2c@i`&-Mti4HM`Mqez){L2k`2EwyG11C@tfY7iF4Ppt!yoWeQLdd0&3vYtgt z#|+-1lSZ2h6=5J<(fXyNz0>f>sWC@{Ff^?SO_e#cXxM{tPto=&hePM~RMgc|=&`nn z)ZPGjK!(4E$_g*TYrHN*QKaDE(wvuq?FIQbK~tJ(7gO3h&HXy2A(q_?qd|Dh`%Hc~ z;%q@+pDnddEskuKAJ^PiYIZJMVa8-=p6cFa6K1KEhuKY-Tg?dooAXoytF>pOCaN-w!ov;ZtwS6M_sqz!rIIZEj86HP<&!B#Q?{N z(Rc2ztvnY}lEN&Wh$+t&U~|QJjfypO2axD-AseS~kj4>yFfxfv!jJ+He#1-C(Lps$ z)83GpsgU?WEfKis+b{_=)Q3J*GgEL1myz2lXumV+kvy6C`F=LJVad@fmF*UZ+LrT} zV>9I2Ct4`Cyy?|nm)3#7hismNBVd?Aq_CgZR!}3jS(+`8louEay0*PeXYF=GQhuP# zrY)MVdNE}klHQk>tr+?G@c7HrWOVUs@ZdScsgkn=CC1dYs4a|W;`ikrl`Ju;j@5Mx zuaQ7d80|^zo7ywf4lm;K3vC-L$ty8+4fVofut(!Y(Bi}!j+P3^677VR^2GFDlauK) zhl`kJPfANmktC?<%tmnFNH6N^p@T73fqZg)kQ#dI=+(ewtUvk*#AM4QGynmoj|U5aV@i&@iM@2@@XLKm@I-<)jf-eUNEaY_bxbg5_P zEFQtmC)Wx09h zB~0iKCnfQuP6t}{34v0VNW5pZi(XZGm1&oZvv7r;2nE~ncon|eXzzEio-;k`?0rFm zuC3qEPlof+SPG@sq=Et{`DMQ*!+2IuLSj2tLSiRhKjP^MG@xMPSvpX(Z-UKJ!V4{6 z>~!I!q#!*sU^~;9$W=sL6KW8D7GG7pmuw2eg!{{gfsk5P2{jN(oQE27=+^7QcBgrA z1TtmoN3q>6@VDR^D1_PC2>3&6S(ou}i|L;aZ)j^Ki2lh($E!^52kic4JWKq2UhNg> z42e|Cem)gxG1Y)*u9Y*~yp^q1ZirrS7@Bj*@vD>eac@D!1be*0(a?-Ygk&vlB36el%PG_k1v9(ar^c$Mtb^ z4@zWeG|}G6NFgzD8v*W?MmDk$Ey(tglvsr40Sd&`fJ3NjVLDl0$FJQV5HkBCAk=bD zU`b%HYZuG0Z)ibDnlK~XV4MibHwB=`*6(+s49X=cmsElpissqjDs5?s#8nltM20{`J!>luJ#U9C@78HH-?p0X zKpkq4e*<-%;WeBpo7Dy;1==u~%0q(}vN?5W=xR4E37cWnmnQ-t^YeOzo*CXrQPS2f4{Tx$9QA|BLsKWfcOm8rB>5Zk&qBJX zRHz?k>K4_sj5Nj25#rBOz!5tkqMC$m3tO^=92n%3a3{~hmmF{N$@w(2Z4zPg@QtHl znpAYE+~QhHDi2lYH-0NB(k9*T$Pg>}WF=)@?&G@4MJ{rBGdXCtm&S19FFK>s5^{I* zJMLyT3dRz4xjXSnW-P#`(CO|j%O#H#2|$ifobs{Vtvjt(+%-r}PzjFT6vKJs9KF$w zL32~x^Uma+&$smasYpooO|!U6MF|doXx!&ZL39Mcf}|wSRxWCQChG6v!z?=ij<+$J zk0p67Nj}(q362PqjYKQM9|f;N)Lq5+uBTV9+tQ(+9Fcs!@7FWjUS=@JHYMziRCP|R6>A&TX8xd_p$ zjoQUH(s(?a6OJ9^LpW`nCL=Foc)U~o(~$4ul$9P^pjj#gbKJrlgGVLMnnw#MY|!3P zG@g<@7iD35N9r(UL6nkVoD7=M`%rS@)s$bb=)jgXn{s%ShX@k5E2li4U9*6WHnX5oO%+I za?okSb()j0+tV3eTwk?l+I^sU4wVa0{YC|^7?KjfNis8~k!Jk*B!ODJ9nLZ?)MA~( zqoY#}!ybLVy{A72HAgHN>Da_2{|VGTRQ&$0$TE6_E{B%H8JGPSG($I!v07`xL1zdD zv|RdP?qt(S7|a-JsMe93kKJI!%ERLQh3Q6|zTmqf>A05hQ%zYB%1jsIdqfqt=9P~s zjrM-KL)$%hbKEq+;ij5iKN%+Gx_PW{*HjXbmOQ`CC2XJGF_GL^0&*JmKVXXhsw&O} zp!$8d)hygrq+$|{Q48M8BR|WCvTNc0&#@xen2cWVAjrtku!>g>-d|Yp3{&fg{>^z}APGO*G@OWzr zeQERQWGGcs9`is`O?z0WobBVM`6lB#J6rdIE*W$nwHyX7Lz!;9mq!`cVLZDg+h2;V zP=fEeX`n*LQF-WIS%Xuoy|_h;Ek7VE!+Qvt&^0jOp>!>POIUem-`RQkRH_SdZ5tY5 zl%Piriy6!OD?u8D%0YU2>;56#yO(2RHO1za5@p zcs9J9eFK$TB6n_Gegsn)fN2BcJ0p?zKcifjom~Q~Rds3=H_| z-eBj!o!SmxM4V6sA(YHmWj6pWz?LTk=<+1*CHUt4v4t@Ku;rUAw@Ds8)oUFzyS@6s z(IRiZXrZwE0;^bsD-x@yW=lX(I|`EZV~iQs!T90Oi{-=ixA%q>)Y%46ZQ@n+pW^Xd3=9$^iC&brjF8CbKROIy{Cbwej+X?(PIy|q-cq;G&wR0qz79ZG+s_?5@x zd_U(G2Z(dY1jz>-^v8Ibj48<0tMw$00nbG)8r47=*ra%!%_|&pbG>SU;wAnXMr(I} zgiY6;25b9KG6|=Hb+;0Bn4w#+^D;jo`VBCE$?Y#%qUCkwW3F3>GDA+1Lx&)#?8azm zymW|YQ}<;lhin6sHAKrDRc>GkHWLTIyl0k?9nx$Eu@|LUTtM?2;HXhVqr z_XkwRnk@_AbT*%`xppb=36!v6UQ&v1S7Q))!yXoEE1#04XYo42^vu|q>XU9waRKmI zgz`W=TeA}b?xc)8_f-ynXn;mP3?(vw?F^$i28|B08KVd$Elq)@En5?xQp+@sG~{%* zF=cu&24Tq$pi%33&7^H?IWU#(+gpkoy9s~=gjo>t$0vKu=C0|AMj(DrJmmuq@XAhz zFmusPH=trZj{iQ7FfRaogz7ZQ_w1PkrvUDuwx6(Ooe*|~z9oDK1L-&DXhn~w`Kp1q z6#>Sz(X~Ljc5uy?B*QVK^KwnF!bv772R$h4HN6N&Qnv8k;Qs3Pa2F)$)~Wq%j^B0U2qxK9n0PKR zS{E3LQ!m{xroXldJ!4Jb1aYz5V!`^?>NnJ6KzCncCRj{CsYR zB4RtNdTN)AH7ld(jKbdhu%)8-VCiS797KjwzcSSUuJtdlZA`=cs^S)&zzAZutA=bL z`1TvtbeUaOT?yE@Sb~Hq59lk-^DyznaIzjqmXJOHZ_e<6)c2&MH5T zAY(3GMv#eu#+!qs?P)T0f4j&qbf=_A^oF#tQkSLG9gpE5x7;lfIPn@QU>i)zSX828`>TOM$T8 z+~_r+U$y8eS|@k=I2mtH#(uT(&{r<7B^Jid%*SOTC0TQep?`{Zv>>#VaIKO|H8avu zspH6f0NVp*0kF*ojW;dofM89%n2QdBNzrD&xY%I01+e|H%QJA8Q z15sFr-eG%59{)W6!rQ1D1?k^Q*1%2SU?*6Vst?17!@VE|!LR_l`2bq1P&GoMb+Pk! zj7}c7w+ob6r+22WT8H({`;%U~kvUPVI)|BM;}9`9OO;EHHIyiif>)@qs+_Gk)LO8| zfU6r}Nnidm4ReJaB*$l;A-RTTc9VR6pDm_%Z!)C8val zt@y8J(TG!6xCyy-w->)+Q~IN6p57NYfXTP z!PmB>pQNbbXK!1b-fgL*gEydhPH13&SEZF?}~ka=$P60Rdck41as`+UJq3znas~{?>T2Ov(`aTqI}w zUHTrfY-0$nXp5(gvfOAWWg|pc-21zAS7LI&~doBF$0wx2? z2PS%AZwXBC+RG+@eG4=-W|`}>rnLgFF|>lZ9gN^sd3Y!QHSO>t=)M+b3n0FUs-X(<5)8p^d1!I88HM5rd?lJQaMOY}U}z@yj|vxQG4OS(YJLOO#XOJ&Lym)fK9c@ikXu{w!% z8kgqL#hTiLqI=crS>b?dLt zeOFc_AlvH|Rt<1Z)&3W(&BD`k9V2vR`wUxNGRokZJ}_ytmB?tUNS8 z@VQ(-DR`4`91RPMA71Bkvqbf>IZIrl$aq>md49&44D1;Ah@=^pmt>RJ2ugIZpsi3U z-ms&Y`-Y{#UxE8|Dc`di?BW>JpwVRm(AktSJ7d#4oGgh{cn3oxM#%uHlFG0!t9qL- zT#lVwAd{T}Vq@ps8OM#DNlFn5D%NnOg|9&AQ_aRtlA=OQg$XR{8V!hYvef!5%*nI2 z2<~X=q}wnz_Y&_anju%{|GNm?*Ny8QeQ}&}henf7ikfp|57}d!8cSpl%#a_og zA||Rh9u=Sfw=gxyzo`sZMgV|psLPHnzBXk=l$>guU!EFDNk(LWM71*MWS@tTo12}x z{7np~dt2W>Zgx+OKm^Acl!c#8^n0iAKj=p7hrQ@W z()H#;@)BsKY^sT1MnW&RsVvqLDJ&YF1K_c5O&W1shu=O;g~a7q=Nvm zLR{C$quK=PuJUS3)jA3M$a>%@aXgtafgc%F%4S03arc`X?mo?9?)Kdg7rRRz@7GWE z+K0Vv>;GvQ#NFPqCl&?z7%=0*qk5-#*wZsKv7OoWSahoiKAw?+iuCKrQjY=bN{ihF z;DC+}Ut{~R%qLDyQriI)qz$YpO2-kjn!&T$7I$kP@058=Vq<*qCD&exxFBImHmTZ0 zhCzh%J&OZ+)e1Z*76BY>nUOMObuT(QGg{m2D}b(c#CUdHIlREBw`3~4NqzTv@6BK9 zKRPHnY-lAcue@fse4M z&1aCw+_Nw6VG>c*EjfJO*EQ|hj5CoU)n>Nu1jl&MCS^1QuC}B$fWtJAjA59M|D$%p{lJm7G5I>(NCylZ8Ym}3N#d9v4Kj^nyH$k)q9beT!@f;N}b6#QhXMl z#>04ay=EC|0%^ zqujE=eCjev!`~RC#j4<7owKBu0Wh!4`au^rp}&jFe?L%kCi9{*^n2`euq^5|bh z4NH`XOi^%K)&y9~iqE!s5E=RKoO1DNz%lw#RSMx&D1=6uE36YIP?=_e+M ztp)<7Uj(Jw#Z+=fmv3w6oknVRCv6MQp3C-&Cz<(z0}w1PGspl3|9$XP(8U9|R5bOzjI}Uis&UV42?FG!Wyyzmih&>u_g$mc+5f&8 zd{^J^eZTn~^Y-uQ=rDW`qp)o$y3Fcm5&iizrE|VS$kAGKPsSN4?=k;N#b{A=c%mtO zCyo!YBw29jBrtmVeGOw)VcXv|$J82eW_mfJy%sw#!;{}dX+NAq^lcx-i=i4^X(?{! zI#V&zM3>@V7zD0YS!PFN#K6LyDnjEFQ34i)3;wQq5ueSz|H_5T_fji}5Ize!+Lc<) zcq6(rYUn8Y%F4COUW`H`B%w z#7N4e&kSQl7+glD@ci^+G<8)<{#?{ie$?utbm~*es6tKcGQp_gk5~i+-gL%u$pntT z7mF%^jn(AW>>SqjWh;aWWRVv;l~SeBeCXil%~9Ye$#yQSPT)q~+EzM|5uItC%sR5* zq#;M`?stuB|lP#|n3pR}NpsA0vWN=oCbZD+(=;&v6P;EWz%A;N$ zqq3T97Cei%@EFU2jnAEa670}eQJ*=3K8HY` zUb9Pn z1#F#XvdCZ!0V;p2I~XTxLf(Z>2nFt+$7(`CXz`ts`$e{KsXgcKYslI9FxHRZBo4>E z+;~Nwk;Eu%L^2rs`@!EVZWg%8b0;POkZD^IW`J{%q~hju$)mwINkXLfh$61Mn49x<7lBZ+FyWr4W9+SN+MhZ#F(%6_>V9dN2A3JbL&gjj2h{noa~@PiHolxJ94 zQ`8$a)5Eo6+$}hRmv{JV3skcyarrb^p7ozz$C58%rR z_>d{hiM%Z3`urG)MJUFT4)4oRT?{WD1cjl)M|BKd>%Bi(7&ABtCny(OPi&a2V?QAY zf_m4LI*-FA!P?IDR&W*UeEW4U8m(7@AsczuzNtNhkGHomdg&rc>6>#96Zi`laQlgV z#htpZqW+u+=i1k`9eNkb>B%GI01a;x^H&T|2U@=CKYZfLWdQac>aSO?70(0^@a_YK z#*&+?@-XWt%a)q(*qdZ9^8i`ZA;55HBzV`9H^I7wlRhNXj)U|XB%iCm6z`xVo2T?f z{5;1<4Vj4vL`}Oj5g=pq@=+k!nOgzeL_i1ttO%vxddaWCOPSCANniX{d8mD3S&wBJ zKb{TaQ9MiSO2bh~oM>{bCPi)MG<6N%h>g3?v7#^{4prz zGuBnQc)^uTDW8n-L>p%%TGZBtni)xj2%U5f=EpNJ2k1q=o{<_c2W?EvcA=?*6+fZ>l)Q2$@ zTZTiW^bquwCIFHzB%8)`GPd0aSf4R9Uq?|$Ne)g&BA(%S@TXZk8&aq4KVdCq#QQ4$ zivRHbq)QciAWR1@wDT85c+(K_2{rw;4-Av@BxC;63?ZK0-Xu!3tk~*!Hu{X7r=qAr z=*2V5I;7b-SyNJO;iaXBSrKzOOWcyeeghx=(@#CUMG=0)1Nh?(@= zn-^t!iTsc45p++OlEZ{TO!?gXe>`2=HhS<4 z1Cn%y@*s*7G%MrgbNi&C0`hUu?73KFD(*KJJy?@i=yYc?IHQ`ygEP{H*O^x1Go}g? zQevUjoIsLEF?8$!>#lR0S_2Sci^kZvn*c{Z{UF#Z7Yhp|lO^_yiV{#h6~&Q|FeMIn zToRXfytg2O5>3X3e$Lz_hvXYpme}2p+AD}N#)6p(ZpL5CNYHc;VYS>fs#}TETd1q6p(2AKc`(_dJa zj-;Ej%$C~P=-6AA9iLUIzDCWsq?da)|}fcpT*+4OkGzocKH8o-7-r(jNp#t!&{{r~R(0 zy2PgitqZiANlh@a^@_!bWhPb@iDqopuxiF>d^(Ji^JzG_xR#>ipmD|HF_u3@B{%{Z z$_V}o8??QOPZ9b^MSkw1V(e)KgfWNrLj8~B2K|G3vgS4i2>J(jFD(qJtt}O1aBzIbfO zNX=&Sk><_~BfYGFTb%^{NTkauZO$>e;Oj@Q&^0oEvcH4|PBqt4$DnP0%0tf_XZFzd zv0W^&J~jrBH6>A2BTCSN*oFoVZji+nC+2an#Sj2 zxinZvo}9s4Zz?ef2aYW>MXTv3=Ad(TO;XBN_(weTVP@kZ@1YsFW3zV6CHK=$zU-*1 z<-f%yu`2mV`DlGt4X!lX^W-XTA;G31@H@lqACBR{? zGb6OY^pCB5lP%`18^WpSXk6c?=)SUhTr3g71UJEN1ZqA=<*-;Hgt1+a8>&J>W;(yw zlvx#aynsrV2AU(Ge(U`(H77NvU`u92+KQL+NF~TzYC*AN#lORVk15w~N<<@)u*X4y zO?1{ZQT#MIkGU(LrlaOIMD$)cM>&$#9^VJN?bHsuYmZ%UcaL8I#udT3ux6;iF0LHv zp^#r($zBPn?S_)XfNq3rmK-ej5W9t4jI_%({#GsTRFgtFH;O1I1CQ+8Lq~@);UgtN zH_@2_?F1cA5*tU%jap#%lnY%Uj?auBpwaSF8xq60sf;g63Ra*1$PXRFUQ5|tpL*l5 zuY=?{VWRq~d6DDxq%r^-p-1M()UJA|o|m~)cS*SSMV)16qj;?crk{t!bk~{c*LkG%pdtwZ1t=ltxq<~uBW1N% zEv@oUQO+6hzPwOnkk5dWAjuaqH&ZsM@6D5 zGlqHd@X_wxs}y#MfiXaw3zw0+((8ZqD{-2__|9$AddK*Q1s znZr3`ee{Mj!*|sQ;kX;wAeWy%S4NfZH8-&t|rkmrdNj2xK``#suDL!78j}VshkU_f2U}A6ium0C5FCz zCLBQ{_Cb612KeEwQmoVYqra83>RJ6VhySULUiV+B<7by!oXCGdU7F_%gIsTGd;dHzegz7bVl2D(srzaqN#8+J$&FWN*)@nFt4>R|1kc_`Xcw>Yvr&W;g zhR*%V)Nb)Uq3mz!-<8>nCQz;+gO>OET!6j(%|q%m02>7{{Xvc$kqtoUdt6jHmXX!4kCb$$TIvs-C zZL;3H^-6(5n8P6_Wc9-qG-?dw_S9PIK`UGV8$_Cj=GX(8fu>BI#Qs6TO$|bA!-I7x zE-|j+TAgGSOclevu_x`r{r3n35*6>G?@J+I^R_`Bti@cUV2KFaf-^~NA&!iPQY<2) z45%<61ry_3hZ(9#+0NcX)oJS1VRKh%zsS1k-4p#Bm+(2@RsfL#xM>ZE!^ZycZc$KZ zRjl&PeX$t`^4ba2S5@}KbtsTZqr(1BUybED-j!9YwE66|irAI6_!Uzc)HV>?jv*RH z>0#XpsquK>sK=^kuS!bsL*F~K3+Bw~CBZE*5d~1I0DdVA; zC3E-u6$&{h&hSx5G4@6MO1WxaLP(TPR?0Mj{>NG~%RNg$|a& zc}Rcq>Hu-((-heL@LE_a)pca}J%5QszqlV}rn{2;=DrZcL4a)NV19fviE5L@uRRG54sG zi)pw@I3zkUrehvQRSM~=P>D|*YCZv!rbq}*jAkb`@uFxv(BOwO8pZu&h{|kt?$$@< z*(y@e)Ko?`HDpc`pxV<7j#5L=^9&kRdZxFIv{g!V<(@2_NB>hx07XaiZ*vcs+F$mN z?_HxpkoM}YZ;Vt`635$lAXBhk zioQqmrs`z^Q{#rh%J8RDr<+|;RJ-H2vv2F%R-9T6`|+6b%aRf>J}6FF4^LHWny2b% zH78fm;OC~C9s_xV_8}>|AVuVem9JTM8~sgzQHSlG3b3LD;bxevI|mo1l48*hop2S$ zVWx3Gs^}7zn$E}EaFCY70m4rH4|(!Leu0^2B3vRiOVh&&@|=`vFG>MQ+DPn5g`90} zyUg)G84a96oGA9dY*9I$S1{BS;NuzD59NRhj<)jf_J>PRnBL)5vU@0yChGh9S`@HQ zgA2*pAWNbEO2fNRNT8FHW9M(BG+}|!fuRA%L;A2kXykV5=7E=3*u909T8K@-!`Gem z@zL@fQrpJt7Oh={jjqc!3Bn|aC$?$5KkN!y%+#@z)n`@F>?V&)*`!5#^gZO+Q&i3) z-I8y(Q9E|!p&fnYeIEIBdt8+p?VGHL`Yp#j5*nC#Yg+!mx%74Ty@lt^j*j<8)!j1 za1BUQ!-;VSzqf`5@ua#MWyMK8;)1$JAJ7i%tgy_GrZzx>l%r5{!{MXAIim~+-1Fca z@rmGD8OX}mg|IDvYz5mn*KYw>oh-m2($i}L)yl&RTxn;EKw1J&v#bK)&hjeJqgCjj zsyf^paX19YNr)t0H%8}+c;G!=c_>$xGZ)!Ql4@hP8TR(!f{tS+5}VCzDC`PBTXvPH z*ue4OZo7dE$Lc-ll;yH{gt-=!R1&1t)#5BEhN(yIS)?|VYOH^spem}fVEF{^Ah5*O z2%V4dKZ-8&xqQb}?Xf{UeG+_(Q!Fm>k5EdGB*PD}L=)6|f9WwX2b>%uPkt2*v0T`x zB$~2MTp3p^U7b}_CY=N;2~tN><1{z5HArC+Ic2fgI&u#=_?*toF_uh1x_1&(~ z5G3=#v;rTHnf{|_lc}S?@Qu-$ZFniM<#aej_xw;=rpS7?{L?!PwcV(w5oS6v^NS_O zDLZ70TGt?OjcSIh;P3$a=xQ>I`!R;!&Jyh_j&dlXuv9JI3ZzPm`18n+MuVP)L%KYt z(d;sUB{q(ZL6Hjwbds_fcJ~2{3OfzwyJSD!$#oiDrO~iCw|qpNe_G~1w~WSTOo@&S z5deZ&|6F@z>=475>y5GH-fbR7wjw8+yPmfPhsu|1zZka|C#@??lC z*%S&Kttwiv>vYBDPIDG+n0%uaYAT~yqs!EB#nOPV99#`i&S?BGo+e`{Ldby#{7S`i z4>Id#7La6Uy|}M*bX;yZse2O*KSr~-AKvwl6`tO$HKV(i*R-21vS34o_#MY0TDKgr?s&Xe19&|bP{r*Ss#nVV<7y0+2Bo@5qL1e~#(yUdg}7iK+S z$nHISRlZ}~0@m_QBjj=1ZPe=+gG4I8)$}Qq3HiJ2M9grx4;U4BDm|qHgyo|*d5xri ze>z$Tb2ZK(B{QeP>{(;Mgkik~(&&O^EcwHgK#UlH8@5V{Y+TkuOEBHsi!>_Yad$O` zmjcv<)FcSvTr6>yQHDtK=TTy4e{N>4D(*~S?3hyvFQ?5j$$@M(5D z@Dz^!!~|t2DX2U&b}v&6CcDO^fk1aSi2@K8oCH~j`0LfmbCuvXTdJx>Ko=vH3*Aq) zYi~Q{_;-A;f3kn0M3#&$K#Hxa4H)%{BAcX!gzqSCAH4oD4UWf5IS-OSBrTKo!}0n2 z?&*%DKry>5mRU<+A}xbB2!hL=aCMt#c99I+f(KqRNyhoHMv%=+3Ct0;X_ax%CauFz z!JP3my}}|gG8p>2aVX3;wk1)!#T2bLG2QxW>9q12N{mT zZk}%a*$uUz0XRG%8WZ&%z+?$m`Eyk`J1DGR8-(LI6&c!os({70!pQ`bUM#9Y_N6md z58y?l@J3aP6BMvM0@az+HW^0F)r~@f;aDD7Dxq(0ZQZjdQ+UQ!lo15(H4l#VsRD*k zhD!)qfpVX_(5`x)QpK1HSCvoU3^-v5-%aWI|!2mb;oz5v8zKbS*;5X@viiwcNR~>EAn0scr%HbZAJaH#i?(>YN zBdazYn2a$VU*fG=gFN{mxCXKvQxsk_`1L7;DNZk#X<-9})TT{wDTklY^l1kFROHS% z@C6bKKGp2p9x?GO4!;yd=<60dd-A5$>>wR3 zNdGFr6kIySq@g7{2BewxFRtmFhBgwxYu`PKu4Y&aC>h^5Q)+>>liy7NximTHH@F%q z@?_QG(6QrPgid`kH%y&$AOkW??ohvwbGxi8MJ*__K9EU?GEw{mLf3_6c$zFPH;VgH zfjbMwtSq4R!`4Clb@ODe-8rcD7TFM~O@R$qv!A6Ex8(`-rkHWG9JRRxfphG|$GHRH znni~(&CWG1QywUC+?irb>hoD!-Gj4kWjSTsDy_7z zS=s~}?fg1{|D4BXRa|)$KYM;Y(0|RZ{V<*;s9u>r{IBEz@9TInoToYx{UJ(+^NIeu zpg8pS&el#3Hx++jTp<^^N9-5`l9@(=D?ih&XAUi)Xf)FD+0LPbXz#x7#7xq8w08~X5U5$W_&Jv)GG#3J9)&S-gtYq2o22wJj>7&udE7e}-4_&5DVwS*0P*qJ7(a73}+<+qlnt zkJA2a_YJS+_FeIoS9ENx`n?`o9Nzla;xNB_Z+V&JlkZvD>A;nk%|}BiOt4=+?4eEU zub8i`H_(PR7F@#0L-!i~8h#9|M~!ZeOi=qZoJv*TMb{CzD86ybMY51E(WIymg_O`c zm`_=Cuo);+185daa-m0#8g>~@$uE4#1rC9a^wBg)osxo|DFqEyX_O0%^Ps#FW~ioz zh%Jg}q#uzK$x@H8mN_`C0DSBF3?w7~!Gu1q6t>0v7uShj6lS3=Ed~1R?8FraB9r<4D z^Ej9r5<-VUtSIA8nSoZ@*IFbrf(9zYsfqv5j%i94t;`X6YBgx-Qxaid=d)?t7X<((wM*D-9`)X=YKt$h#y`DtU_llXBpN*3vc+F> z%UuOSK|4gN$8imx+n9Xr-@85~_=>sq4PCEw{E&SDOYqYe7H9~tRXITA%hau{b**emwHqd3IVu>S!) z+|-X*3c+ZEHz6!$D^@KwK_YSu(N0C0+G#idBm)iRWBWlRRd zwR&eSFn)|iL(;jRANbvLlI&?^bQ1Sa503YHt&?88^SasVW{#CrO$l+bMc-kipnlr| zXV$)ivLOax^2W`B8wqKL8$ANbRLa4p9l>K zSJb&mP1f4XS#Aaf-(a&+xFO<+4X0=jaKkd)`t2*FO5DLNo7r@U(-0xp*l*SkkB^oH zqDayldu14Yy0unkGK9SczVCfDE^tFLKy`A zg)-Zs=azl{ANo^#{*CM7?yGJzjl*H>;?8s60mIoApa0I**H0dQojLz!J6n(cE7-b+ z{Vo0ZUw;0Zk1D~VpmB{_b{fE`2Yl?oetbH`{3|Y)BpIw8UaZrb$>e&9m7L+r^JX=xE*n$y z$|jA027feaVI25)Ac-c(5RK>g_2F@_j}@+_!E0``7aYw&4DRFG`*A-Sr({Q%;D_qF z#uxW+DP37gu!k}|=~^#>C`RoF-`956JGE_{Pllupp=-b*VGEjxgx%oKk}$JEU9AKT zcDu%sc#%xBIDj?NaO`6hhd|l!U90z|ecTJ`hwp=T^$tkKz4tFnwF@k7Bp$-akmB`0 zE&^E}UDr6mL9^3%1FzIywf0-R_qc<-R`0Oc?FM`84(Qn+Y4=)<}VzMNk#x&|j@kcD9fKAk|Z+4i&1Z{>~5zm74 zg_MD*23$l_;&8oV#$oJ9SA*8LU#kXBx8bR9`~f8Rpo?uAVT`@_46A+(lLW-}S4ld< z#}Dek*3S0!)&|h9ZMZ^p7;m#u*?jaU_?fPacWZF6;OEn69G$Ir?RdC{@fj7JIx+E4 zjrTZgv(rM~|4HScWb2kbfJ4v-Cw+7=;{Pfrmg$R)$pix^8tuck%|l7~4<0lgR33sR z7?nQ?--G^nhC4ReFI5^L1y*(3`cVt_A!~ToI()ptL-GgiTAM!}wL86TMdd~_>w9>O zzYH>~JvkXf{UI7$*9OBOPraTS0A6>No&9#db$I+^=6k#KvV|;K2i&-OTL*!dmJ@6u z){o~`T51yEy3+D0ix;tQ0fK(7+UalgrBJ|H1+Se! zjgxM#(>i>8vfJ!7I<2E#yK_R>VLMNs1^FKU#&<~lxGg6a!@!6#v>^J!lCiD%w$;Gi z=e=fUuij_|PYZ@L!ye>(5~S6hVP!uuZeK0WX@N5e?S!2gaA)v{H#}gDpx< zd)wOOCKB*3uy#Z*#w+i9y7>N_2EezNYGhswotLwlH4?{O+rhrq(TuM~3xt8U@!%*P zcwpdF2cRIGz+5Ld&p#`47iIGw5uW%>Sz_$}{F7QA~@^ls(1z%Ha3 zJUX&}-5BZxQjkt)sHzKpJ5t6iKaFNcjM;0j`k)5>!f{3HD1-if>s6=Td2gf*=M=sH zyL>Rl&MZ6yJ+mL@@v{jBso~*VY#XcVN(pgG_f39{IKNp0S%Rf; zDp%>Qqpi+tZoq^h*g4^%3`=D*1PzgmOWBStW{~b;&`P!7bPgqE)%b)_d-j3=h@xnxO+8g&6zSFXuYfB%s9h$%z0Z4xdhd^#fxScc z=b|gbh}Rl}1P?oR4wLHexz`DUv$B|M5uD~hX+C$Q{CRXhi#aiy`fy5oKRYHU2W3O9 zG-j8L?(UGSoyMJpg!i*U{;A92LPS zN@S(Tp(M0A*PdZZ=E;mA)lk&7y*ByFk8%#z>6l$6=C0F7{tyA95gj~&8W54dqlzqG z>g-z6X0mjHE5)ksF!jf-*>FQPvz)@8DVOwfp9^5~7dD7H!dA!eH1Z_3ZlcKm=$3=; z;bpBphdxIR=k`XOC0dP63O`#5giQdYIBluopGNLk(6pA~Os2`lSZl>hG?|b6N5QN8 zcH@VjJ&{UTF8#(4l})H^ihI#4Cv*Nt&g+iAi;HIKFCyR z@skk8QtBw~H3CoNpLE?AOJCs$opc+own~Ylpff$G(%_a}+RP~1MZ}P-U)=a&U z%#Vri zR$@FMgZSx6BeL>PF>W#_;re~`SXh%Kb z*9rz?mIE7GaX6o%2&Q`@GXCxXkr)q#*Q>0QMigW|llOS3&kYMEw6-FTE57oCrz_CT+ngw5jJkBqvWSsP_yH!x93YUniHW@63ECzjqsk)}sfP{;f<+|#n6i@CBX9%Y z0zCm_#d^*dz|8`gRt%FQ5>r{%7_~PSDCfYQ9tKTwm zO_l6I&IdO(S(4y&I>&0Vp0hu1pqzW}qYq5NDOh&1P8VW{8gZwVSFC@}jch5SMFPlZ z3X$VPx(tF>T*hxMIZ?JGveX!t)v)t(nwok6NA^ZIc( zopoSInUCI?_3>w|oqpyi_$2#KcM{`6*^mD^3(t!_lL3p_UA@5onRBzqjiC|gl9U;_97j-rdB&UBibCDv1{TFDQaUmK z$LK*`9J=7y1AI0|h-;WD2HBFkHLW?^rrGHLYp&BYKy?mV&E5P=JOg``1ut+ua=eaX z$*m;y-|?Ym=h*GE-Zncx(ptTfy?SduGZ6~~O6U37r_w?$jD16`3}|WO$zHS9c;gT2 zN*S&Ie-@$fzidoiWc#RjSh~nPeid#akhw9Xc&cTzz`13HZXLd@@1tm2@6->Pz`K1o z3xl-<7LfIgBFgF~ZYDP$0e=}HF=qKcJ58tgx8r8F5X5Gh4)&=@XJ*_y8!rP-``zJw zyS`g8I)g`jA0Q`;sgZ%!wqH23@q{Rxx~T0A7KlpTnV)1wXR3VChI_KN z-+ot!18um)dze6q41hUEb`rw~qT*@vyf_@D7>{?=cBtVuWtXD94VW?O55Jjv~BZ4u}4YrfM^GMB!+#o23iF(H4(T1e5FtaasCX;f?ovYJXGNE`OQ*p%=ZnN_+7d|;?1FM2Rn?JU?z3e2w74b6y>6jK;hEwQp>0|HT+`{jwDt?Pb7l9C@#LxWOKP4rPaNr~a!ogL?zLV!VGbbZo=v%<+jXIki_7YhjnzCCZ2$1)A9ylPwzlv$ zFU}zyh99H)V1RIYksq!*q^7X^y^4xnS$j zM!?SmRp80P6#gz6r-2*9^qx$Bk2{WhExVwGEcDXW~zf!$__V`)*uz%m=GFp5k+XxZpj2>MUB&061((6cl8SQ=K=pcJ5 zgsgF$>+GDtJFXq1hHI^>lDhatBd!sKdA>rN#DRO2NGVd%HCs?OnQAlzS-EJa!|+2; z{#fSb7O34;H!r=gq$Bb%iL*vboVjaOaJ{&q4xzuaN6&=&`nRA9yM7hVGI5JoOoKpX z_=}>0|26=_dpYyA!?Uo17P%aer&B2!UNv=1o)SQo{nS|pBZ%Y8;WJH?iW47l5#Ir$ z1SMrYT~Pr?S31b3v!tI4mjry^qj~<6atjP!;norJgKd-#CVmU}M)AYr65UB$#3kI1 z3siI*?Woi4wHt7zj*1Q+AHb)b_I_RTbkQaBO!49f@kSCvR}-rpk#`6$>sq(D-)!{w z#&PLSxMo@PP!Bei%}iT>2_|#Qx`bCv`Ix1Pe)Q-OhPTS47Jm8HQ7g<**fqmko*+gsN99eeMn3)$P^M>de@|$Y!JB2v{$FsHgGHFJ_1Q3E z@pHmFU50QwIZ-r5t68lcR<07GulubkKW1kx;+(p*?B^sIP=zrx10A$?n|I)@j!5Tl z>lKx-><>#-u&azxb`#HB1|JX?4=_)>e%O0XO0-q=0PnHqw=0%7AdS=8&x)1))=-nA z_T7)U8qC_`1Nh*UgKoO+CcL@t;z6k!$o{aE4KMm7K933kNV(EYm`!c=4zf4u3DszP zRx@*EMJFR8E^f>y zA5qbstVw8*J;PCNA1Q!ZGfqTBG?&hk+f|unzi3x5Ti0+J!$6+jbq_G?f#nir+{}vM z;sY<7C-W2=`Yl+wu_=Ij#LMLosY;-R8DnMwT{z%%x4&b9Xu}L-yVqPM)5WsO;z7mO zP`LDPco|-&X7zWw$f}mo6h~MVW+7Z9Jjw|e8wWiiRg3xYf`tT%0%BUkY6~m}PIx)2 zV>1RL#knI?3npR<1!caH%5LYn?WQtlJGlr~4;Ir^lEEy1S9yh7FBDFhFScv>`I6zS z=Tn)8ru1iYzLH6Q^Y|?rz3ksBDEx4`Wad5%=YxP-cKiA{ez}@h<9p$UWEl6#RhCRa zd2=|8V-}4$%b7-&@G8M^PrSir@|FP*QZPy+C%nAQd|qH1paEaik9SY7qNP})yw8D& zgIxJ|%k|@P`j~EyN;Ge6xz2g}`ZId{*^<|vmA$^bL+|51)$-Tz>*Du!p3wXF&w}^y z>*DvHd_(W!KMUT+uZ!RRmiPbdvxV<}TfYA%yaD>RTDt!yr5o7(Rv`H8&Y}UnErsCY zZ+HdtZ|MN^ZSeq4VRJYD{aZQ!eOofX*9=7Zw|s!F%YnH4RDeLgR7+q$UzVWJ<1IlX z`lVz9{;~v-o^1&#(Jv(<@Rud1w6iV9M8A}bz+aZYf#q@Pth&Xe$@&|OLGI`Ec-5+2{ZXn)R|9tv^Jb~#1 z<1yV4KMzGes&`tw_oU-G7GF|;W3)+9?V$Tf8bY44WBT(t*-;E2a4eif@! z6vswjt&YX-9@INO6u*0bfS)XSw|j)utBT(3x@Tnq{IcM@4elBzi>REpL*Gw|FdCiU zU<-ZTK5W|WfNoS>h+)u|*;|HM^xn1Yi&;?jE)(-&nt`>xv>Kq#FjfbH0;Zss-;Fp( z?yr}BrlQ=^X%?Rv1@XcWy}88Lq6UwX`TBMK>w?3=z$HBWUZ=fJ_}I;!nD<1%E$2JV z_d3{f_mw$8f1qwIdWJ76dr0AH)}yh>_^M-edfk&ouUjn{6TS}M>zj{T-`_7LEdIDi zpK;yUai#1*4$zA-%Q)gT7tV4s*0j*8UTO@@@uUnfu<2sXXB5Wb){?iTU3^@lS!g^n ziNC#~0R7w2BFC8Okhd&m8~K4Ws}9H-1+ger4#^qZGJ|*#F3T;88H?g`--`G(x+uQM zqNO2#DSP3w8C;o&b4wB(yWuwXjLD4bGI(ZLzJZEHrc-l-j}nl$WBKm?-Dxsuk2_Zs zVOW%YM$^2zh&Zh{5pPa#258I0y@JbVIHYpSybO-x79^vRz$S>&;Q_98?|iVLKi@CD zg&~|A*_TW;xJ?RhSz)YMsL1PM`PK_u1uQr2z{a@b7LmUsxuRsnBtKL2D|;(|lnHa* zy4ott&vlLp>E0wB`xVv-xHr&6J7~U~h(Bm|CSt!h)Y6n&hfd*$rjqeQ@y^5B8*Tf^ z6a(lI$!mXG+j$~mg1+*M@Tt??*m=C8pTZ9E8ce5I|H1C-$->G8W>=@vDEvSjj5+9X z6!kB{ah#5dYlZ1#ltf6O;QK5C(VX8D%dKWIBI~jRJLSTO_An}6L!4!A+XYz{9Q|qT zCgUzOdG1rL@}Pvq_#^M+N0x!z8*azV4@=TG24Q!O56!SoN`~!d-Eg83IO-|3h{hQ8 za5|uZdz9Cme1v)D$d&G36*eHgwGr0aXJgknkMcB_3LwIDQ8;OOVJb{75b;vb-X7K8w#1m@P6RQKViK*b+kuloX;)Vb9^op(q~^D6OY6EHJn_U-G4jlo)3$<@rs zQty-%u^{^_TOUo&U_N1bnNB%^ZKwk2oObSTGm9!d-CU*6+Z?f<{pTNV`KdI9NgCx( z3Bi1aQzFDzcuJ}ur%nkKTZAz6OTKWk7q6B~ZWw&V>1w-d7>aV!iW6rb&<&}jO1277 zY7#H)Omv3D(-}1rTC389ItAwbgDm45Ks(vw@K^TNXCRXvsG#)w6_1EFlL{+&G;j zXS=esHESVygm|H!FZjurbarz$S>(XgsEdO(nW9yNrLzl0$jc{TPCBu5sot3YCFZz^y*{Evi=uQ^&50vs z>|v5%MfPbjKffRWE_YdJ4tv?M)w=GLT{%b{=Wse$YilByM}F4JZcHxW-j>P2R`-ro zIHUw}vP6~*R#t2P$2>Cy0l2n6{+P=~_3AF*P$3stu$2`~uM3Oftx9U7SZp-#F~`Z3 zUa7=hNe!^Fl3_U#@HuFX9o3;XvTdd$OAK(k9)x^jk#n2!rJAUI*`t9iEmu4~ePwHL znra;@kTOR^H7T;$vUyUBL@zK!#M$G2%h6C;AWiCnwRX+%qa+dr=P|mCojPh&SN0)% zlYI{GfSm$%xI6sF_Gj=O^eW(bxagKqDP6r?5RcE@)%}@03Wxa*OUR;1fEI*W=t(H< zz)DWGD%4m|DOcW4tNT&GF$))}-L)c>45)ha8y)jg%%q{ujO^y(~vDL#nN-e1Q$-vfw+!mmfT~Z zOl!8u+2f?DjnzZN;z`vCq)tCu3vCtG)l3dmE{tbZWQ|bLNd6zuG`VkE(eIcmdZOpVjB`>+XxLw90R%QywOoIE8x3xMl zN?}Gr#ahlViBoP@=%2lzOXjgaT__yP9zDTZhHtUB5{3$ zDa*gP1D5$Yo`d?$vpYo#PvvWm#szjzXND!?x<##0OZ^$DV=C0h;wDXC`f8e)EHwgz zOg=;dr?jWjDZ-h4KC$!&E~x;Kt(9lF7I_QF*)n}!4izp^zA#vvv0-ik0lSg?VBwHL z*H;(ABds~6BPjW0XVFb8AbAOI>E)$cZe=)u+tRyGbSHdmId_8zGjFQtPLfM>;9vKL zk+Iqb7%-H_d@A9ReSSUx9W4q+{09J{~DwJnZ;}R>}Ey0Ylz>`CH_$GKYD;wO2 zG5_Zx@|megXgME}NpW}hXxfQVWk1WY)oaF$xQoYggwbQS#9t>P(x+BFl714m`qFV5 z$!K(g0DzkeeXAeSoZBo5qvyD054ro*MvYb%!)}pKv5NbVD=dIeI=Crus&c=Q25b?gwM}nI zVaV<73}i{nvfKd>bze{76~N_s0ITr8j7`$NwX7-UI=epKzEajGTAjtM__mZhuv}H@qsZ|5L8Yqm}Lo z8|9=4S8AfN;WTJq=ccUYuQ`vYK!(#Eo9a#2&et9bOkKpv_QAHb9nSzo7ezANcv?1P z(QsTW(3?vcGu{MPNG+(l&Az!=c$}tlL@>wVM#FhMzA0|>)OE@HXOn_YbCnA#5XWb} ztYi*=ii>bzVLf&?1jHFV-}*c=dr8xChd9(vLFg{dxmeCobMM`pTC7Sn7VO3YW8-vh z?B9HIU8JL+TKyOD$lL{-kIfY%w;kO$J+ehNceNM)M_rbD7>K|`g0)V$eT>2dsZ$;x zi}Qh&;ASya-%7PyQL$V_#Io(KiyMh76u4G;xd4rFVslZ)@Kr*<-2V2r5DS(9vY@@Y z*>&+?vZibwac#JnDe1rZLEW-R{Cy1cKZ*|gPUPPl_O6KXnTv88oWB9;XIsY`>q$<8N4H$xl3y zhG{h7Bs|9w_2{{wUsH^|z|w9z-|)l|5ZfM$ldbCaYqJkt3(WFz->4X`Y^LpM3!jK)0}gMvRd)!EW!Hx^lGYYHE&F; zJ{hgTCH+CAe&Djb_F=g-k&@o8m@4NItAcSqA*CwRVr^GO zKPnhmEZs43f|KdTt&O>np0W*nk{whaQowl9lK-<`#?$B%%}NTA)bP~B7nnR z-Yin%lZ9$LvUM9|Wfkd6Y>Sj-T3u!8tCguoMe!aI0p*ocBhzU$<3FOv4W~rh;y4YT z9u$;KGg8rwO>DOt><>zF50oa*01gck#7wE!b9e?6SBGbmO_y1%VCO1?%qie^V+-91 zGJ{)s@6p`ORX9`uHZuPuHcoD+71*ya&lL=}ykO#;Mqo*r)A43Hns!+o2hvH(?Y3$P zI)>=3Oy@(4ab;>TOjb^n`{T;}yRKZm{^WAM?;Wn({oT057j7jf7Zq~CRAL!4)(WXf zbeD@?3y!^1|4bDkt8p-+7HvZO(N&r-tMux8;xncAeD`wZ^zDo2raHIiH-$R4r)Gb$ zIQ|>m;atAaWwbouDDRSXrYS<2?1v_sjDN@*Y3rBn?cCX?HzkRhD)JqpU~4muRALf|oo;ARffn;HOgC?s4n z&knExSyX?E8XSi$x@nZNhn)7=1F5NMo8Mhza=*%J>Im z{7{I$$jccU@>Fc|!M4F+ZHSysaR?47v@?%xjcA7xPg_IOXm zGwg>V)w!h$q0>&J)HI+`aUJO>KqdLk<35J!CYQB8aQpX!+l^rqPCK(SkMg^-Y0=yB2nGj=pTk;pnv`^2n)l4jz&pBy~67K2cw>p7kHnhP_dvdFe zt{P+E=6#h#T6kHhxiAa3G{eEt7&Dr{k~xBdB{1fI$y+R^YUL)p&H_ebVk7&$4`2QdL|C96o)xv0V_3q)# zTLjg9I%%NmDMKalKuL_Q9qAqdb?+z;IJM0j2_Pm_Wwc?HpI7bnzJr5-k@b;wx-pci{QPcQb69Ts#{D;LGQpjG#4{(0 zyrp9f-*y~x6L=<>jxyf4i8LFPwuE@Es1o@nchxzoyBAm8s^k4Z6h9|X>~i{@D>}hP zg+7GtB)*ZW&OHAqTnKiN!K2hnR6J7G@su$-T0QtK)gE#vu9s8Md?hJn<>3|zMWC}a zZ|u^e!T)gS{Rdvh*EhV5-T$cTxUz2#*=EM1cmw9RvXya=WU487teA{qo2;EKvN?JR zd@oUc&%}qCSQ%zt1w03}?(lejpITLE7g{Xy2)RP+}59^ik38@oetixyE)W%#fo7=Gt6}-L7G-T>o1}hY_ z{50y>>I46^SAV^#ruoSfOVKBFErkkYCXAaC*O7d{-JxIUZ7X}0))8!v`&{3MUVz)d zLk+5iYzH~zQzjQqL$@b*hh!@=Mv$P{O;(Xg7vq9E3F9FFl>IDLR5eB4*N#h$3Tej2n|zmU+AZNO*&GJz7Gkx13RdX|rG>hneQh*PXKr_J@jpjb@l4#$ zG)*{}47HnCeCERf&qSSANy9~Z^G8pYJugWHqLTSYA2S0|Q&C}Rf~KMl?NG}f5a z2R?eU+xWehk8~{npDr7Y=#%~s&Ht)`;99wdUj9qGoc-Z^K!&HP)Vw&0xbp|);qXi6 z(acnTTV%Px7L!1PbS8H+3=oD9i~ON0zr*zW0C=*nHhE5nlr+a!+WP2TNjj34WiHM_ z&GMeL%8aUbbTQ~-NdbmX<_k1((`l|kW$=Z@a4I7OHu`CqHn~cy(_+87gBWNSy%{Pk zdgBj7x)CDTp1Gim9DNpXAL3JI@EROgWB+)!xqH&Mo=~K>r9LNbPT;lw`k($YjX(rQqs{&` zXc3zto@_P_!Vl4Y3=&Iib~U@}9N0|r*^?*qFZ^Wx-FotD=fAceZ#{!&9&bJQ`oFfe zpFR0{=f8rj``F;JA5c(11PcCZnj{N1y6pS^(4YPYPWogNkK@sNbb_=a20e34o38KF zzFCJ0bI(7Ohe2yhQ4XlPo({u7)Y%IzK(9gPAdsx|{-=z2!nHl1lU+-muHnW@&fyQ$CRASff*8hi*1ik+=z<^}))69W){OhMrOYcAa?%)5N$2(8|D|q^8mgE2Y zFTel(`8QZ_KRKSo=$fzf?`4j~^#94$lPB5pfBN+6Cx6iY&+)VQ=)Y0!lY<9xJdT1n zpFTw|4wB39FbPSj+IuI@POhi%`Nb?)Ype%5TicHV6`#7%D8^EB^ZqQE;=}X;X$C;( zr{VOPdu&G_)hA~&ta<+;xK8He#00(r62~+?ozFluoJo8mjW9|E*aaItoR0^bdlt;1 z>B!V6d3|^s?86G+yVub;nu7LtG(R22eR_Q#rf_iXN@AO)Y~*b!xp$N zP#GF0v#PkWC57KRZyLv*c@@Nxeytij-G;})@dvmKL3ai(z#x0^8BDM@Op<9ec$K6x zeEgsuZ0&4sZ*2hi+6LvJjstG~cjdn;57pB5T{;`YN$ui$_p|vJPJNL15I%vWXFfcS zW`I<=C(&t{{gA5d(ubK*Pm^T0(gLp2O;k8DA5Uf%?PsVz%($lYi*do=5rt}89!wNg9lLz%5#Rt(19&hEo0$s7$*{kEXPw-7#COjeT zt>6TW?d-wm_BzLnUhvQVCfN>66s&kKmPOEmF6w`O9Du?s8JfDIzfsUVD9TC3U*shw-&4%?Wc#nXC zp;PtA1U@?phiT-l5$MDet45qh+8SP79|7`zq@I?*UW0#h&n0Re|O zVW-MZPq%k|kqyE1!+vcotX#3S{@)cr7J6l_U;Om!muhh394$~___!JiWE>ROjn9Fm zzYG8wBl+eE{)B08$hCF(jFbJ>u7WRK24DU>{&HRBr3uc0wK(`Lcy!E952-mNJ%BaqqY~kWV z#J?GqFhn>@;x#j@PA8A^Q}EeuxIX7_@i<;bv&Kc#|InR}*1Rts;el5J?=$wf+oSfr zjH@5R;fsPV`Z9j-a?3yn+20!DK!69vBfr3dSPwQg(MSdO3tWDC2i^YHvxwhwj@1nN z)l2gD0Wd9?JpkyF2m*eW0r4?0mbEv@>}WVY57yRkivL#Eqi@NZvVl!zDZD@q?iSzo z%$G%%9>1Re6Pp1tJlK^uy)&k?XuOo!HfieM=kWt`-eLfJ$;ks~qe{+{5Uu^iQl)hV z-Sj26P1c;d?gHAZrSblGQ3P2@32e}l+X*GK_g1==xp**c!i*nXX(ve6IwhW@zd>Rzj%`k zQE51d2hNAHXf)|&v8(ER?BdmnmC#ul60CJwuaCPO;7i`c(6gh3rqlijTB3g1-rD-b z{URRx^yC+F$4Ai!OB4_t*&EJ^p4w{iEM3}Tp}x1R?`Q{tGi-GM+g^8x}i&nLb>MiBhvFU4Gf zzRk)vX6BveLE{2rtkh-1V*pBTZ0K_PQse=_~a zt-M&6bvK;7l|SXi_@!2&QWOpS3*Kr#!`}O&CRQ?9&o9(K2DS!IWDWp-B490_Y*F2# z){;fR6Q6rg*!Lm7Dzhl+0`@$MtGcSiyE&}OYlY%8?J7XRU-&*CFEcQ8$<}Isf*v9R z_I~k&nZk}^m^zEyj$)FzZuY_Ng6-g6|8m~^KCd^JrM;V?A;nxKkPkpfhxG+b1ac6b zqc~CkG0aqs$3`d=c-TME%NTS7XIbkWv7#X`Hgo%V3EayGpZh~iSF%gPad!&FMKBrd z7V&1wqwj_AvFGH9sx~Ep7-<1~7Qo4YSLw72eV>eRD6pan98t-%g<{kq^wFQqO*4Pj zC#kxGI0eE<%&c&dqCpYp#Vh*$rL{F6!j`PNh%Myc#b}&m4P_9z^TF6Sa0X1Rw!&Ft zbfSAZjz15w2jb3DHB#tLg#iAg<{G7Z3RiZ9-cH~cZ!!a(bn%HSh8Lm1((B52V2`J3 zP~jesq8Knm`Z6ob%a>cA1yjBX4z@X!(P~JJS?r>MvCK&*TzVW`k|=g>cwVI37anTC za3#9`67|jfDFU%8%(o}exInP17S3D^{=!P>qPw;BKqT-~XZiD>SW?#?S66uH=?W!> zZKqO30=w`H97_(RSUOpVTWb$c(OWQwFJ`PU@SY`dI(-Q>)ibzLyo;a5a{TM82Y<0pMv^PIeG^tpbL=5v%5{<`&9nJ%cwI6VY|6FPpvHNIJ^(i5 zY*(LdKdYWivc~Wgw@U-9i+$x&Z1xpJy1Lus479?z+%t!#`sn<|bjSyV$Bl+*V~~Rz z_9$aAUq=8H;)x*9ORnm|W3+blI{w9udLN|Jxt2jAnNE=n$_zm~DBjw=UCcwec|2)r zxA^Ae7?`tSyU^gzTTia4cm*wZ)Qso=tPo;@pSFH^8LTaYD?GG~4>?Z--+v!`vmX2< z*t*)=D}H6C;FaxX`82ueR;4JNDPd_SYx& z*QfT^XZF{x?XTbbvT)X~zIEo^a(;IfvF)s4+gZl8vySbj1vplCWwWl?r`tRK0cYf1 z1w1P6Z#psmlbzfrk8__q$$j!P_sO%e9`KXdf@wMixA>bTRnLlVy;?~wk?4d{^`l)ZPqggTc@lNr_kJs1H z3%N#e5BUMUDNy=wB3CPd$F8=%(Wwf)*(v?z@j{(4_mv97LF1aD+zLfvAx-xo4jWnc zXquc)!_kNWzt!+jF0p?j%~~eX z8L*8}Krb0R{YF+#M1cm)S#HX_gF#Zv&%D4-e#VQZDdb&c-o3{K-aQ*m>IAE~KPGym zdF4j0~{i!-y}ZMOrv3pG7Kd+7_YX3bV&rLq)G_5*SxS}<0M!qmMZpb>sy5n z!S6pk(`eRY^1_V2C{8MGXE#f%dei3Y>YJO%90MXgZFDCxdDHF`6pP z+A4~-DMi^#6i*l9xHzj_vx;G#SuglX7eVe+P;#lnLYKj!thfJGV`?~U7Pt5x8rK1U z|ITj`*jW@tD0oIrB0oxy!vs%a2^6G1es!Y;DIidX;xFLft$)VG$5!2tL)WF3`UoN~ z(wfp}ww((j_OX@GthJjBV=qK)uZrwX&z}5Zky}FLT8DdW9dmq^`H z_fMWb^p8J7hf_sJned3z(J+C#NoZU znUQ5cIwK|DBPrG3!C^foqIkp(Hez?{g*K!w%I*Nt%}f}?%V5!~<^(B$!~aeM5%2XP zSA`=c>pxkVC*_10J>%Mz?mB6NZ! z3uMDZD=wi<84$S>lx)Xrs|2wav^YSibFg%cm{?XW*}6YPGIJ@kx<{=~3oV%7ZqR}O zZUL?CB)%VL4WhGfKAbH9(hW#S@dEI-;^zt!uo9i@cK5xp+bFwRH{4ahvRr1qG!_bE z75C>~f4-9cz(0X}3BRNy(EOYoW-*irG2pGmPdUK*7!Qu(0seD~w8<{6EBNBj%k_}fB>pp={loyNC7}2;^5gBdhhSi!htbccX zhEM(D*Z-jZ*7}plz0R??{>NkZzbBdcA5XTQKK`Tr$LII~DY=J-9&AwL1N?p+v^Lwp z3^aBpQ{NN@^K$tM$^keZu@%Vw42vO*XZg>P+(%prp{Qg*rGksTKnn|&>^K{S=P9>8 zK)vQ{m|T+FKSeXhIK>{ZxU&h{vnz9$fBV_VjB5eHbth%Sew@=&>{pX`Y=l|(oQxV& zGq;zJZT=;x?ow}J50<4LpvTbt8|{Yv-;-!c?S<{9FHnJ@z2SCewB3)P)STu3OxiQm zy`Ypn@eLRTQ2{8VvjCU>%?T!xUcm#XvY${FXS}Ke;;J+Sb+9lhY^b)rGuEYx&{RTU$HpztKXdP6?kLHR`;GCly__ z(ILAgICS{_B%4heuP_ec3q#I!{b~pk>MP3Z3s#cr)OfRgK4cg+FvlO z1yZ>U4Lm!Qe^!{gj!Bo_0Xd7!xokXy1p)i3IAMpC-zr=~VjR!*o(-x$czNu2% zM-nq>635Bf(#M_TO+Xspx3U;7QFLuRn^Z||JVpV`_=IcPj|OPk#puZt#^60n=ChQI zTV8@FhgiyN`cx;P)OswDQZrw9OF^qYEyZAKW=S)c0GmmZ9hb;QlBV$~##zqCV`r;0 zz&~Xe16bLWRN)DEooO`)Pm?K@@(lPObiwT(%qsOHUO0f!9gFh_$XGw3pii;=>1wBu zJv%vSJScApiwkh}WJ8{(;dz8L0nDkU{Miew+D}#Jg?dW`QyRtYWAc zG8;tH&*AQDA(*zGdZWePWixnk<6%|Mf`{y=4-}6c!1y~){Rz_VfN{8M)sDnYO98C> z#Px}|2)q4?==;V;XNuf@Jb-UZGt+T{i`;x)rZN@vM(1OP3niMj;{P-P> zh12n%NLV*gIl|n_-n)1{+FgzrA&0uJ>4)K95VOLA>rU74?cZ1kc+>7SgL()4x4#en zzCJ!^9`*vNj2j%lU9P`wcE7+UUo~I14i(|KZ9;njMB;pn{bF4GiR&vUYBTv%I!CeV z&x2#>xga|;onALKf}g(xh4f1-=%L&GbDvG_`jo>QrBax^hAdp{yovXdHDLj8fQ4)5 z<#5NKA-_JsTME{?4QXbqaq-qWP?#u#CV@Q+z8nc1)7Q97OtW6E)07=-9UHcf+Wm2wS7 zPC}Pwvk4Us8#qe?(_dz30-V^{xc`j8d)D^a8RXaJir+lNl+nVhFq1*FN?4%QeCNeW zYvzdIvLmn)$^T%19Qtf)&7S5cn>I)L#Mu_7Y?&J(e@wSMQe4;B2#H25uZ;s12i=&1 z25dqhOC_5k&Seo|9s*28*YK2%P%{U)(QEBS=U{UDv|(?0`+_n#=2Xh_CLT?tw0AnC zbTkCuX(IG&c=-PD9xI^HJR=x5{LhLxl@Nf~xBQ$TaHV_u?jTZ>F(<^+ zzV#|#5D}ncayz|3vbxLwT<3eG*jc(8KNw_)30yvkwr`M}&n}~Dzy{E>sJaDjR-^pTHf&SY=CK95L2{% z$#nq;rW&|CURIw~!~~lz>L~}dIQEEzUSt}g_IwT;@zz=~F-52ejBX=3Ra!il z7@XmhG-Z{Il}gD=7HfQMQ@yggl+>2R+X?ObGunCAR6aY{KW)8LMFeP7tdWXeA;n|f z3rzPGHoGXZsrV1@ZsJuu2BX^hNG_9N=@8ib2uojIN>O&0{41OohzY=$pV9#yTO`9j zUtU9R8~yCspWd_3^q#+R*BC2fvGRbI1FcH&3MJza7bU()(#b$=rda~%>v^cJ7qpbR z1{1g1kTt+Ac?lYnu=VCDi%@sW(WPQ7h}-%CpZ|`lMwD&Z)-&;P`hH@hl?|k}{ zl2A-RX59(1P~>y`z&x5sa>2=LkXsD0er|F`qqHFy)2m5#qZX?GgI_x;7^`xU zLKuW@5&$b#DIyNK_bp{qK6q`bd`5Z5wR3TTp3N;wMKohXu7K5pj8rk% z-dOG~5zTlyv7T^8btrx^OHGB(L10V_Jx#fDin&S}GDmsh$IL?QlMArasM>zcT@ z9Gi$vY7?JmJN-GGs#gumBRw1>4T%d3*vZmjKpgA zG#hJDNwE$lO;Vp=nb3BcEy)48Jq3Kw;lNL~mA~IT%+dg&-~V35vud5A{ULgZ7iF9$ zFV@yp%z#nMSzbXlh1oSYP^AOl35qsmVtIDWR_%&%%-aUI?rAMB{9lay_<^{wg-2|Y zz*EYKh7xu~;Z+Yd5;lu{SOxS^=Zt`9y7Q7#GC5FMwGS27)@;8$k4&Qwy1*P9O0U6K zh>4{Nda+)T^0&F{kvfnx+xwf`OLag;>-pN-Tp5?O#Uy(d-O1?p1f6$DXRt|0OX4?{ z;VWJS*c|ezm+ottgOSY%x!D)Oo@sa}8yy1%4zY5b768a6wKp0}lAJ7J;-0UmCFc^~ z`sy_r@D|U+;M-M|{+qg3Tk}t}wt}o|+c<@%pt`T>v4Jfx1&j4E%Ld}0uv{TlDw4q~ z^ltr&9meu+y|VJRO$+ph)29joTZE)}ma{uylCt+o?W*)=O9SbTyHww~0%J|@8LfHi zdT^MI63*G&XN}2ZZAQh26a+c+?%P#Y^q$Fygs+W=iD z^h~OqSrV`(WJ*q_)ho(GH7Z+AchTiJNf}#tQ_C$Tw}qDZSFhAs$LheAxQg(3axwVF zwslcbb8b9d=jfg|qHk*=VaWpD3+mZ%PcH679z5DLMnV_+3&I`{b#^;IKD+(-&FEG~#Ou#d?FfM0F$IcHx^L(O>Y6VeA5rKOz9 zrs7VL7RB$h>{c_0Ohnlr&FMpYS&HftMs!9!*)}s_X z7s9{V*j75gk`1oJHpkEsbXyLOO1rVpz#gxSMT{P$=#Yj5GCFf}K?LG^x4}S}`7Dry zjb?%9KZ|{i|1hZI1$&lZkMr3dF~A2g$a!j*m_3y#3&_o3cB2R5oO)Y&WXTc(Utfr; zhd|g|z7XG9-PTBA!_Z5lY84RtT(5m8qJ1Dl6XjUjO1gX-aiSU$6#$5mLV{!=9J1{M zpE4>itdyFTk~T`D_~UnCWj@K6S8Wmz_u-#{1BhPvkF~5a7zOXG?N7dXrHpbnAli(Z z$5Gp)k>jDD`wiEnGa}PpELW-?s10g-ulyxu4ef0b4Vip^=x{^nm@$G%6cfAwZJ`)T zRaoO+q$5ip{7Z9gwa~;~u++$fK7GO-Cxc|dYrhHwmy>Wl)I~2d>pL_oY%f6!< z_5xhT^Tn}^jW1XJi z4g8zf$<4hls(_%E^-1V|K40L|Ljxmb?E2Pzq;mizkMuT|NYt5FSZ`*zkiHh zc>kSies}JplK<~)ef|8|*WUiW+}U}&|M^jVo9k54UBb7}e&=nERCpqnW#+mMs}5eQ z1&hJ&Jf({8;gays;?4!(?^X}~uI1qGry6|8IxJWV{_dsV@1+v_5{2Mp{&y_{e@|85 z@4E;*)_`AG*<4?b{zhcuPz`n#{q1~`CKolyj=}vdy%=E~^RxDG>+s#){@z*ZM+Cdy zZ8s0k-k#|?=%pVZ2!e3d9}j0a{y*7-x`6t4+-e>kwmQe}_m9DR1B4w#U$(wn`5guq zmVXNGM?j7^W5#GY8bTW$Bl&(vM*|GdYM!)l9x{d>+Q-j!7$iTi$GZR5lTP=vr@axT z!aFqMmytKxv$H|cAEFy_bub)q*J}j;(A*lf|Mswb{O+&bdo%U2fmDqHDDK|IK}$@- z!6e0Ceb0U-HTS65!gZ}Ryp`%fR1QGUZ@1Gq)Fa0068MmA!sDCQ?qKOZKnD--+nfs* zuOLi;&*k?Fcex)igg^gT4{C*@Wp$;+5irJ4t{9}^d=l!^1LC(lLl}&O7dc zHR&2nHo)jb0Hg+c6#q#LrLXGn zA~S2`P39dYKkN3|onx5SUqA}lzt!zEftrq%hT1;%p>7G(6ADya3hGJowDmR&^?ebZ zbrqr%WMJ=BR|5;QCNKXL{cR=CCj9dO(VBes9j2AP6Chp&0JQybZH;EHr0O~PD^!3- z`8w{tYai|v*YVS^vb}g3N0~fC=3d#z-oz=%+>uZ{krN z(?HFtD}ZPh5=oIwh{^guGuv&pzCYUsFhx zU@PVtUenlW>`&IZ!)Re&;0lei3_R-S%t~qWzkCiYlmCzotcyLUth{wbC+e95r-}M4 zZO0XDPeN^1ez9^ZHKO$s^Vhu(^*g?|NYl1z~q^EqvOpnCm9;)>c) zw)%(d-EOn{qt-U8UHAr&ACxu$@Y<{<(#Ex;&$(lss{(|y!K$&T1fx~;5C*Ew=b>N`S_l6VrJ@S8L0;rnn?PU1|B4-NuN z<-LSZ_YD-rFng62L?hXBwnM77991kVk!u#S5~UV_OgW3(ed2T@Ie|Boobg=3TQ$C9 z?==*O{XaA429sZ^TY=Ia3}TkEf?h;XWTZh9ML%usm=f2CB7HBtqNO`1zf5s@AD4!x zHiw}hN;_UbLX3Fr5oqw~z}`%Xva-nuV^V!gHV97rpf+D1DYqX5&|pr=u0HG%+xsxV zI4A>I3ucd90s z5*nTD&xk+7>5$^*rAN_fC>xR?nC;W7X`LXsAReS16~#A>rs*VcG`C*X!1G94E|8-m zOy_}sV4((4Hj~`CE>sNUrKkPbWP-8L#si_UJc7`gP#z3ocX?v(1$ApU&Uli6jV8My zxj6yd>HH|#J?yl;k2-w$%;nz*QHcrVo8n9v^VysW$!cyXyn`&^TV&($@RnQ{qipo_ zMixFB(`+zn$ZbANt{;XumU2fqUZdq%;cEtrrMtL8XT8?$Rw*N{9?5(i3vx~Ns)Im(24P)RH!)8-;ZDN!CLE)Y@o zmM>|@mS0Snap)!Xst47EcN{u+Gh5_zajnTLnH*y#&;KqxO8mR!XF0N(MI&tIKm|6A zfkE{E8mK4SEC7&24qk1k2hQavg6R%K#@_>A5~IQJw$4ZiqRPcC?RcoKv7aKx+hZYNhL1g_jo~rA< z@dAqr`~;8{FP~2nlR*#<`H>ZphM}{lP7*vR<1+-RWI%sNs|EYCw}^X_=(50cT=j90 zjyCnV)i0i2(;&Z)^w-OQm2i9{7~r#!FFAE;{x zpRS%X)ZNt&zjT?aGm4!{$8;s?txF01uw9_R42w&(K7ZKy5GlMxBY&<3oNaD zDtS~Jg+BI7rdTBVoFQ?>%Ob#%^sEgVpvlat6nHy9YuO+>C;P{xgFN7-K#7zvHMTsX zfx|5gx_$hzLw&B(TU;ZvB2(3ZETyKvcn> z`+sfsPW^t64T~T+Px`US-`_iFZ_+u1Xb9ICh%yq6TZv0_7(qPGLs3FRwm|$47#LAKn2vq47-yUU0ThD$( znvxq(LqI90Ci%d5hqdG0?j8CZV;tp&qSkMBYAf*W2epE)J_tK34r*wEg|tf8x$O-`c`|IdKm8F#dqW>~Y;*7s2)LH5T)kSbCP3dV>#0 z`BcF@3?;y-FT7>|pBxbp1QdPh3v)C)jrg0W!3imz2H~`Df_S~h3-Gbw$ZJ^)L>)|5 zk>R}}X6|w~K|<;Xt&|*b`W8KMbdaG6VQbWHq0i_CI#$w->s(?+a~t0X;woX7b5@9*SnJ*( zR*IZ-6>l(cPA#kv$k7z!UTaHcVObbDazvR<*#&vj7gN&r zbV{;{Uz2SxT5+Tt-qTERagswe;#Rq9e4EZs)Yqf<3iNba;FOPrIGNrr7CXOQ=0X z!V%_;EQm<+I%OIpVqNX+AMUqKnc`v+Za`?g*5UV*GI2_K3EZG{(mAa3GNS(y`Ze@w zb&IKy&=xU(!FB@eVemRiH$Z3u@`^y_d%UV&@=#}#&$>?E#X0L@3rZL$3*#Eu!|7k6 zgZ4p(PRg&x(_5T)VKu5d-n6&kv|TjV>u*J9)xX;M>i!oUEB<}%s~$a_*E3B4IvCIJ z)+IEhY8vPupF8OF^>qwy6{42&9tuU-#zHVycPksl6O85fz@_BkNiq*85(v`Z{O{f( zt!~#xtK**Y@}AJj!<%`-{x_iIs0uT-J{o3Je<#Az76{AfiDEGt%c_1@xzZS2+pn(v z==U6woN8+RbJ7e>yUpVsx`B>5d;52gu9iw?N$Z+MnEzv~3TEXQWs985dH8_1c!c-F zo5!bIebAVCfcKY)tCmowSZvbqIwEd7@Q6tD1Z4 zU-oift3H(toSz@0lYD-rcn_zm#n})XdOW;|Z*x8RyAiT7OR0+! zObb)Ft`Z()1&ocN(>51DU4FK*QS4g8YzwRhj(Iq_)XYH)MvimGRSk5+9tyhoN+!GM zYuQP8Xgj`&>j#UeQIf+ff~Gvet=DRuycgRW#s0EF0k7KqDV>PAbbGX3NvFR!@|K-m z=IELzoh0b=QMv=)_i-1+T(v3<<0SRxc$y^YLEY^XpgVM?Vo=`?eRYq?eTTE{kJ^- zZ(mln|F(So&v^p$-$v>DpO;Qx`&(JTZ+EHyd|SGL&%WUi(0@w-(AzM87ce;lK>sZT zKyOO`e9enU|1Agbb@?K0zmP?se>6(gfL@lM(X%ZG1Q1b$h9NH4bpmFOQO5cp*Y zD(!3wGSNRuAn?nQbzprQ7lQxQ2(AOaE5Qa0;#mcVXBG%z*)E%@$EH1ZDoX-nipz6s z?-Edro?L)dSNfi_G4}_92IW@3N}7|O=p-;7V?3q}@#ApxlV-Pl`Xkx6mdBS2V0k5X z=iC4-V>QW;19werAf3Ikn5)iU5S=iLa8t}u5sr<(TpiVIkDA@@!)=dn;m1{NdncH^ zD%7@T@0AYl^OtiO+|`FHVsb8rz7L8pDmuZ!7JA+}-Z$@nZ#3)`!=NucH;-GK{?IWE z{iQy=$#lcqTWi&*-a=nstPTbROu#O`8*`Amzs~(LrOM6irh3;Xh!?i#?G45jwHS`~ z`c3h5V6!lA33var+c_kB?D;$9d=a2>rg5nibYRcR+d&sluMj=M#L6e6@S5#tSmTSj zFuSL{v({;^Q34ZQNAP-axXr`EFk^AyB7eql`*0=gL1Ce*ZkBPxZ6TaxG0{|cs$S|0 zEyyH~8JO#0)-wuY(LPqkwTqvtXcmH}J8`EM3eaDc7g^3!i@o`nt@Q`8th%6U1Y%K) z9#U|)c|e>9m-(JW&!hOt^&)0lq`u2%RTGRk9#nC;h8$0^;X>( zv2~e(>9Vq;1B}X7A3-hX6d`iK3qp#JkJ!0mr&pWLZsJ-!9)*fGk^kcU@cxmig=1yW>5M%0~7wJW&kNv$)blkY1-{--76!S5)qR0)V()I;zQgE6^4(iuaKo?N}Hc1K< zifyi;u*CG_!|RWo%oerUwz}>Z>r0n+0eRP-KFfl2%NzUM^hXO>EyebSxozYoY?Bjmau~M1xUBBGE zB#2bW7yk;Ml-o8fJM?+$CJ*JM0o6M&&Lk139-+sF);#xtsEZ zi@i9xWC~#L8v|-C7>aUJ87D44p&L?36+a76t}kAio@ful-Dxw23pNVEP!467+_R0| zk3C6Eun`@g;X`I$p;JmA=Qh0ri!Q5`>H7NijE%5F;@?7u6sHEzdaI8CqQOfElWZ9@k z*#JiID7+1foY{!5foCNzma1nClbFK}B)M@u%`T)=X|!rQMC*tb>UqV_bLs3AC|UHt zdfdfA8!u^9Fm-kSLQy}73)+dvO9hldMQ7Euw##H%ItB{boTmNRFjj=ew|g-M2H6qf zO1B}HzLu`Jwu6q?% z7E-4LoQ_sI>LQrKe%8t;rf}ijq{$l3rnXl&rVHfci7W$FmTUlFUg(4XoLiu{&1F!X zybDwqos%q>%nIkX!K8R~S&bx%O$ILJSa+psrPwRU0alhWtiS?32G222Eq)`@W==B4 z0k`L@kn1e6sHvE$iSn1N4@_#gFnoGta&hWx9W_{)rK0L9vVPh;Nk*awm?GlL_P^(7 zD3u^h@`JVa^!B4B5=WOQ9vfSE)Ec(#L-;219N-393G8ro_{h{}a6WW0;5xWyr%@># zy%`Y0f0rBSt$KDi9NvGJ!xohWXqHeVdJ>L1Fq)Ie3N;c`Dx~*Q+5ITtm{}Lf-BpuI zMpV6wT_1fq9(9izrgKu()YKi&9$kvlJ~G;m#%Sv&VXVby@0-O+rp#5v3EiBH<&3tN zr_nIP0FPxJzHW1pY6oz0GKp_3nC-o<@&czV=iJ2(T&Pkchg2sE`Pgg;jhQlJ%{xuP zZ)`&;!2IltmIObQ(MqDEpz~Z{CEhyk9sZxy+ z8=+=J+x9$Wk4sp4_FQoBajoZa zXmDaYJtE_T$`i`j^v`6H-M6pkGnNX4yj%#4_8iUM*~p|k`zRuykWdH#UMJVt2`(x848`#k4cMq?4+-4 zsak8%x{z)8j{tEQIU`Qw5<=6|5U65teOy!4e+wHd{c}7A)tl$z6qR_Yn0qu0_(826 z=D@X+TIGiO^Qw+0Q6sCH)Pb(6se3Zq2oN&+DH&L)J*`R+R`;{9;YUEEvWV=hyeO2& zt7K>M?0wl(Af#equ+;NmZUO^a$bV1?Quum(H9S!{#}ov`e)+Iy5f4aF!<$RIMCC?@ zlXaU*3n7|tt>pp*6J{=I>5j7-Jix#04-@URk1$}Ui20Pl#s7Xb1{*Djuel96!s)X~ zqD&~qrN${%xLSgSQ*n|*_waS_s;?W|NihF<5&1&rBs7u_*`yqIxM6O;ztCJCav5`ZqhbvIh%qid^at=2D4a*FBshb=s;@}$yRkW}9MT1aKR7Ok*TPKt2lIw~7>g8*BUQt!OxGNl9=R(Wj7H(@GY zJ0dW*5zDWGZE`za0E$*cGA-OKyRrxzCku4?Qi2&N0S2-WHSJ>GTr51z^BE$T<#8i$ zPK|Gh8$Gv=WPaVO;9*EPn1MLGaCIfU0hC;X6APpPDWaX%EHy{&a9!Sd_g@o-^LDJlquspNBoMHEYW zF^uyoT>n^w0#v84XmT#|OW3;HhrsB_q4=Db#uUAVMSZco!!^%LAe_~^sqS!r1c94? zVe?x*Q#v3RGX4v*EV&m?q+l9B9LJZKq8?9f=$|>pUSMjsoo~2f35e~CCUvY{*Sj93pedDTXU4;@%+wRI{*C`AYjg>qHEwfZKQ={9$UihzwDqr{3o- z-D<_JeTMb%`PD>~)m)faJs7XTAw6=b&zws+OsAf%VX?Ib=2D13_s6AF9hRk;l+=F3 zt8zB83c!6pP8GCbO;tuWEJQ2xbFARn?H@_-o=C8cb=%XsQlHG`9_?`XgYz za&6{eel_AL=u`x7_^ZVtH6AQfW8LI!kdduOWnz=0%qw-}m=%MSu+)3jE!u#0UuV2_;U9ym>;0ytEdAl{TpodeH^;_7gZ{OdCH z5_Z;MWL5&dg*|jNbOt;1-ule+6$BN)MwY)M#_1TUhWOR)xd6EN2@~%Gfi-EqjyF}% zRF&0HB$cG>YO6Y-V~od@`D} zkQ1ho$RJoXt|k#Jhnq$3oU8s`79wMDu%H%eLe8Tb)S++ms{Z86l;ZPk;w;$PSIMF_ zx7as9o7*w7A1sc4AsQ~+H@ZpYUpOirN!#)5Ohpdi)S!B$3t?>ZT$;CvxMSln)@#Rx z`P5BdVryB8Tr!fWAV|AZeHjR^>N`Qet|uz9AftAH|D;$0n@XLkV~mLv~#%{eoQX6htMIc@vTQ?eg_4LMj`7lNPsej z`JxU01qvD0)bRtobiz}{#rSsF2`MiF%lPDj599E6)i4MNPW-U--#tI&kniTc@D#$3@FsXb$j^S zu-@nQVGP;VwC?*tnGO2^Y^JgsW=r2ADZiS&_R8(CMvE}mDJZIfPFdiKSpVnbeR-UC6?)x;e2<|V3`Rg9) zFOT=+Ji~e@lAT+s5L)F#N?ijgDy}OP1t=xoW!lG3-Rx%L5w|}l+-?n%c+#EbMU>y0 zPD0=EbAlD0*yGw+*)P>h)K{(7saF-f#E5Td32dn+Z0Ytt^FRvaE`Ex>KMz)7Q zV?`o$5cw`>O!&5U+V#-31YZ@Gg$6FRB7^|jeMHvJ2wBUyZt>v~To=B6Xk-oY+&ai> zH#9uA4i-Q1+|Lb-7v#D8ZGE2m@zEHWDi?KfT_n|LT&Lk9zJ4C~x||DR7q|8vL&Vz0 zr`s>9{dHWjFo06P6tC0aFwK)bRb~1ZF=ILit40s)oz^n3V+-_fr=J9p$tX?AAEe;y zq9XH;QwkHCOLQ5fMb1_@8heuuW#mE*eih279|%3EA30VCWUW;#Y5cBRFIHrj-*EF~gbu8I_sh}|e{und% zn$LA;yMUiiD-hr~6{nizRaR28Hf z(Q)&8o$MB zYp86Ssvx7CmZ1zXAUXf#AB&HGzF0`OXkG@W+1+iQc6nViz?d3iP1kq=G$l+_YJPKV z<0_cCe5|RQc0<`SZ#7(%8Zspd18MD&GMHH#Qq_YhFMrnCC!AH(&p}1WRL%c7#^gh_ z0%m@+xsN3YQL5FBFochn3oxuJ0&Nbtj#R>eFmSt(wjareCE=nsBsHA-301s%tfG!P z3`ygF2dh*Zvk9xfEhddw6x-2^_bQ9+oDsFeaX=L7s!e5AtM%P@b!Gkza=1zi$3O86 zb6W&cCj~Jqsne}XZc>uh+G}L?9x*@4?8j)#NBRFK{~uib*9)U9Jpd?1uK)Q!O-8(7-R&Fy(14sj$p_BfIU&XpTZKLhA2f(bP}>&_ z?+Am={t#_xuw>~f*gEqWe7O;7x2@Z;YEstl(OvfG-DN=3t*-Kz=qHQW2e6&Y5$gPk zTw@+@sPo(HbPg>XjI^$gywi@Mtn>S9j^;4k_QLfy7U|$lKRKC`K`wbPhpnxHxiNf` zO|HGuxv>-*m9m6LSConT!H?>!(cQ~YU0ryOOz~qf#U5Y3vsEW}6g)%djnjpW>h$*y zafDz78Lj8KqcEhNbyCLYXzbv-WP2!}xFSx4=C!n#+TbdcBCy%^7e3M>;EzXozd~|+ zvmiP4epTdH`)m)zrsq;zKseU+G7d5?o021n$tkwU)@hZ`(J|mpGbQht`A`unE$kbB z=U~|MlO{)mw01f$!O0oT8K zy*x*`driKFtEW)n5=8V-tYMg*&+>CvIWB4F@`l;yr%`qjC|EgvqL04Ca^K=yN0QHI zmsN-0W3)6EaUtC`O@%q|8Cbb7Yu@IzyhDN3^IStZpJh}dq2REeKhc)Bp`%FuV zR!g|cZ4Qlfl~`@Qf>ByZY0wrl&8}zp)UFOL=g-N{=~RxNshfB_9;#|)>4m!%xF_lm ziw?;iG5xc|bl$GIh^~0o$Ha6`Zn+^FmDpc1?1Ny`w)u)-A1c>XMXU!34apszUFeQY zl!qVT!7@WddAu8E)o~uhtX7z#U_9XH2^e`12Fi{+a>vh~ zJO1XP*z0jj6??Ee%UmjA`MxT#1fq;BTznXw`7qv?`hZW~?zKJ__mLV4tWS>}NA#pW zMEAckL2#^GL$CM}iL*bP4ao7-kenA630MB0dpO+aGMVb^Z&jWfEHMd8NcChx!vJA` z7&;HF-G=%35y)f_ZStKkDJhOIxAf7yvUFrI^Nu)!mgPNLm7b}1ay95`r84d~R%DsPB+g4Fs;oj78esuxOV8dF6 z@Amfh&RVx)iu5+z=j`nnH2dPW{+lGA0_4f&6ztG!Q`D2q)-5c=ZkA1lSv*K48&`Mg z1B+?CeEyvN3qS9_&vv$7Y<;o)Z0jX_^K9$+*I#UHf4%i`=Zk3Tp5|Ej0|OOQpy-PU z%(m*gdGCLvzs>b0E5G|)RK)*CYQ#rZ38FxBf!9w~2{Gi3-_;s5{X_W=-_tiyD;wWV z(#xx9)}Ml*+sY=O0!VPq&erzMQ}~}}4Q|{V4x=tM&ME480u~~_cz1mA zZuhX=d%M5ahz`LjJ?;Sy>~#)Kv2y%|)jh^e?d>0*wws3$u%qat+d1jB_fMPMAEWm1 zL8p5}*LwKtAKtcGZ=-fEI(@rOU+#BLe~dZ@z|2m%AP6kL?{YbM#{jjIT@IJohXhOb z@fYV@ymbhyZ3G|3my;x+*dU>`fjY#+<_0kQzDq|G3G&BHX{`RcG5vXJzPusVrv8{h z?Esuw=RCWZVs2^vSia&jDMV?o*TL$BEw}|+a(ZQ^R=KU~n@?8YtMp<7f;6(&=#R)Z zI-S$QPIC_|{I_TD70cQ=Up)bJf;5PfE_fzCQ{BBAzBqf@iZ)@fk6A z{XM*Swj%@PZxM<2yMPR5+@$w}1cVx@E$d(?U|x@+FI!(mXJ>iu%!EnDab3?X}k+zMuHwI ze0rW`Lwfbv9|r#y_x8z3Zw5xePO^<>4wV{Bk|yX>r-QP6K3eTaeU zoevGYOXu_nI$#1dU9b(_QoK&kZJOhW@FW`poM|$=-H6mu%7mXr$6>!Pj(Czhm0OnZ z0N^3TVi;nB_Lpj6!Y_B)*;ZwK zue9Ty$4nc*7ZqiNap?+U3f{laost&cB|R6QJ&mHCzDr$I1=~Qy13Lvw-Qaub*A-4C zi7C;ec1~JvA}GXwUIO;WFwdT>a4BXg!;F7mA!q%^dk}{gxB5@~@Q9Wc|00*8`V$`f zcxExa_xs%*Ngbq3MNRC7kIvMmd&)2PzX*WzVJ<7nOaD6Zf1B$~H;D^>sOVoDguI8L z*6tqb#5ZbfBM;EJvth3-K&Lh!bAA6RX5++OZ4ahwTVZr&YSuRDE%Z_Y5MYYBC&Pke z)-RF2u8s8*|IzCL&obP`VKxo}V_i7{;h$HqEM`gQ>&KRi(-x=0brJ}A`?MZzCPS9* zRg4$?|B>lF8_*|^oOvL{-=|>oGTm%=XzfkB8WSC)_0f?A@}9eWZSUBTJwlulF4iH< zNAEgAz>xh3zA-6aUkMR?RhszYGr0g7++U1m0z7BPSgeP9KZjxJO57LgPLn#{(WrNF)o==Wj$ZS@88gS{zFl;yCuDnXlA7`q^JueA%j z?n5&4UyxB{CjVr`d*8oG`ak8f>xQlXAA!<4LXxLxGvf*|q@u6PAhhN~VK#(KFV)p3 zi^F(SR`ka5SeV_T<7So+8!7t8B2q#*%A%jqp}Fz9iOrJ$S5lWKe5aDns<=q|5RJz6 zUNlFTE|z@&Ae)5~4iv3ES@4+8W;OwjmLi%kH(ft348Q_M^2OU%1#j(jJ=Dl~?V|Qx z9h5L%m!bmVG^fSU_g!+eKO3JANeWx3h-hJ?FzB`{GE`!MQlRvz&4)G*5z0`(&(VK{ zAqqAR)QWg4g@LTRgN84mer3FZ@k5#Oawz_n+4cA| zJG!`}%myVmz5rTr6jVSumSYNsUs)^cUR~5#K!b0mXpfUBe31@^4j50$(#5<8)Ps~y zh}aa7RoCo`+w!%ePqnLLFzz`6VFh5Ztwk%;hO)dk+guNw&$z1ly1jDq;q8SslcGoK$2hllUpQBea?uhfM~qHTVoIXrBDz2a5Hlqi#klR1FnUtAEeFG39UNip&D1CT>ag5Z-yg}a!u2FakVd~q{rTSuH8Ko9L}UU&p#g(k^# z9`-9aQilLOL-e=LK$o^8J__s=92(xoaQzdF}z`)KwnLf*WWLHmNIWH+PGXrBm zezX*h7(7v-9;W+}URvVg-YxE{mxB>Hnumh{hgccD)b*`uh0$>#3>4_4=qCYUe5JSs3VLi%9f%t_#^?Lt^XU?N zR6uf9A{w=jj&_F0NsRGI1fR{G%ER!_0hx(t@`v_Nj}Y4}s$NMxFh&S3mu$!?uE0aDtfYgCeJi(I0GA4}vbBE)&BGo6SLy0Pn7V{D zE$SU*W0jZ?LG - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/release/cylib/Doxyfile b/release/cylib/Doxyfile deleted file mode 100644 index 0bd67d5..0000000 --- a/release/cylib/Doxyfile +++ /dev/null @@ -1,2437 +0,0 @@ -# Doxyfile 1.8.10 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = libcyusbserial - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = 1.0.0 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "A library to enable userspace control of Cypress USB-Serial bridge devices" - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = YES - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = . \ - include \ - lib - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, -# *.vhdl, *.ucf, *.qsf, *.as and *.js. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.idl \ - *.ddl \ - *.odl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.cs \ - *.d \ - *.php \ - *.php4 \ - *.php5 \ - *.phtml \ - *.inc \ - *.m \ - *.markdown \ - *.md \ - *.mm \ - *.dox \ - *.py \ - *.f90 \ - *.f \ - *.for \ - *.tcl \ - *.vhd \ - *.vhdl \ - *.ucf \ - *.qsf \ - *.as \ - *.js - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /