diff --git a/3rdparty/android/README b/3rdparty/android/README deleted file mode 100644 index e5ee002933c..00000000000 --- a/3rdparty/android/README +++ /dev/null @@ -1,15 +0,0 @@ -============ -FAQ: -============ - -To compile libusb, - -./libusb-fetch.sh -export SYSROOT=${ANDROID_NDK}/platforms/android-14/arch-arm/ -export CC="${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT" -export PATH=$PATH:${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/ -#FOR NVIDIA NDK: NDKROOT -#export SYSROOT=${NDKROOT}/platforms/android-14/arch-arm/ -#export CC="${NDKROOT}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT" -#export PATH=$PATH:${NDKROOT}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/ -./libusb-build.sh diff --git a/3rdparty/android/boost-build.sh b/3rdparty/android/boost-build.sh deleted file mode 100755 index a34a5e7f54b..00000000000 --- a/3rdparty/android/boost-build.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -(cd src/boost && - ./b2 toolset=gcc-androidarmv7a abi=aapcs variant=release debug-symbols=on \ - threading=multi link=static -s NO_BZIP2=1 -j 4) - -rm -r ndk-modules/boost/include/* ndk-modules/boost/lib/armeabi-v7a/* 2>/dev/null - -cp -a src/boost/boost ndk-modules/boost/include -cp src/boost/stage/lib/*.a ndk-modules/boost/lib/armeabi-v7a -ar cr ndk-modules/boost/lib/armeabi-v7a/dummy.a diff --git a/3rdparty/android/boost-fetch.sh b/3rdparty/android/boost-fetch.sh deleted file mode 100755 index f4b6f653083..00000000000 --- a/3rdparty/android/boost-fetch.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -set -e - -ver=1.52.0 -ver_und=$(echo $ver | tr '.' '_') - -rm -rf src/boost 2> /dev/null -mkdir src/boost -cd src/boost - -wget -vO- \ - "http://downloads.sourceforge.net/project/boost/boost/$ver/boost_$ver_und.tar.bz2?use_mirror=autoselect" \ - | tar -xj --strip-components=1 - -patch -p1 -i ../../patches/boost.patch - -./bootstrap.sh --without-libraries=python,mpi,locale --without-icu diff --git a/3rdparty/android/functions.shinc b/3rdparty/android/functions.shinc deleted file mode 100644 index 93d1deaf67d..00000000000 --- a/3rdparty/android/functions.shinc +++ /dev/null @@ -1,29 +0,0 @@ -will_normalize_eol() { - if type dos2unix > /dev/null; then - DOS2UNIX=dos2unix - elif type fromdos > /dev/null; then - DOS2UNIX=fromdos - else - echo "You will need either dos2unix or fromdos for this to work." - exit 1 - fi -} - -normalize_eol() { - find . -type f '(' \ - -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.java' -o -name '*.py' \ - -o -name '*.sh' -o -name '*.ini' ')' \ - -exec $DOS2UNIX {} ';' -} - -apply_patch_series() { - cat "$1" | while read patchname; do - case "$patchname" in - \#*) - ;; # ignore comments - *) - patch -p1 -i $(dirname "$1")/$patchname - ;; - esac - done -} diff --git a/3rdparty/android/libusb-build.sh b/3rdparty/android/libusb-build.sh deleted file mode 100755 index f55ef430e4a..00000000000 --- a/3rdparty/android/libusb-build.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -type arm-linux-androideabi-gcc > /dev/null || { - cat << EOF -Please create a standalone toolchain first and add it to your PATH. See -STANDALONE-TOOLCHAIN.html in Android NDK documentation. -EOF - exit 1 -} - -(cd src/libusb/android && bash build.sh armeabi-v7a) - -rm -r ndk-modules/libusb-1.0 2>/dev/null -cp -a src/libusb/android/ndk-modules/libusb-1.0 ndk-modules diff --git a/3rdparty/android/libusb-fetch.sh b/3rdparty/android/libusb-fetch.sh deleted file mode 100755 index 0ac88af2549..00000000000 --- a/3rdparty/android/libusb-fetch.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -set -e - -rm -rf src/config src/libusb 2>&1 - -git clone git://git.savannah.gnu.org/config.git src/config -git clone git://git.libusb.org/libusb.git src/libusb - -cd src/libusb -git checkout 1.0.9 -patch -p1 -i ../../patches/libusb.patch - -libtoolize --copy --force && aclocal && autoheader && autoconf && automake -a -c - -cp ../config/config.guess ../config/config.sub . - -(cd android/LibusbSupport && android update lib-project -p . --target android-14) diff --git a/3rdparty/android/ndk-modules/OpenNI/Android.mk b/3rdparty/android/ndk-modules/OpenNI/Android.mk deleted file mode 100644 index a0896284969..00000000000 --- a/3rdparty/android/ndk-modules/OpenNI/Android.mk +++ /dev/null @@ -1,62 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -ifeq ($(NDK_DEBUG),1) -openni_conf := debug -else ifeq ($(NDK_DEBUG),true) -openni_conf := debug -else -openni_conf := release -endif - -# OpenNI ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := OpenNI - -LOCAL_SRC_FILES := lib/$(openni_conf)/$(TARGET_ARCH_ABI)/libOpenNI.so -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include -LOCAL_SHARED_LIBRARIES := libusb-1.0 - -include $(PREBUILT_SHARED_LIBRARY) -#===================================================== - -# OpenNI.jni ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := OpenNI.jni - -LOCAL_SRC_FILES := lib/$(openni_conf)/$(TARGET_ARCH_ABI)/libOpenNI.jni.so -LOCAL_SHARED_LIBRARIES := OpenNI - -include $(PREBUILT_SHARED_LIBRARY) -#========================================================= - -# nimCodecs ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := nimCodecs - -LOCAL_SRC_FILES := lib/$(openni_conf)/$(TARGET_ARCH_ABI)/libnimCodecs.so -LOCAL_SHARED_LIBRARIES := OpenNI - -include $(PREBUILT_SHARED_LIBRARY) -#======================================================== - -# nimMockNodes ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := nimMockNodes - -LOCAL_SRC_FILES := lib/$(openni_conf)/$(TARGET_ARCH_ABI)/libnimMockNodes.so -LOCAL_SHARED_LIBRARIES := OpenNI - -include $(PREBUILT_SHARED_LIBRARY) -#=========================================================== - -# nimRecorder ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := nimRecorder - -LOCAL_SRC_FILES := lib/$(openni_conf)/$(TARGET_ARCH_ABI)/libnimRecorder.so -LOCAL_SHARED_LIBRARIES := OpenNI - -include $(PREBUILT_SHARED_LIBRARY) -#========================================================== - -$(call import-module,libusb-1.0) diff --git a/3rdparty/android/ndk-modules/Sensor/Android.mk b/3rdparty/android/ndk-modules/Sensor/Android.mk deleted file mode 100644 index 7ba8c6bc056..00000000000 --- a/3rdparty/android/ndk-modules/Sensor/Android.mk +++ /dev/null @@ -1,61 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -ifeq ($(NDK_DEBUG),1) -sensor_conf := debug -else ifeq ($(NDK_DEBUG),true) -sensor_conf := debug -else -sensor_conf := release -endif - -# XnCore ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := XnCore - -LOCAL_SRC_FILES := lib/$(sensor_conf)/$(TARGET_ARCH_ABI)/libXnCore.so -LOCAL_SHARED_LIBRARIES := OpenNI - -include $(PREBUILT_SHARED_LIBRARY) -#===================================================== - -# XnDDK ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := XnDDK - -LOCAL_SRC_FILES := lib/$(sensor_conf)/$(TARGET_ARCH_ABI)/libXnDDK.so -LOCAL_SHARED_LIBRARIES := OpenNI XnCore XnFormats - -include $(PREBUILT_SHARED_LIBRARY) -#==================================================== - -# XnDeviceFile ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := XnDeviceFile - -LOCAL_SRC_FILES := lib/$(sensor_conf)/$(TARGET_ARCH_ABI)/libXnDeviceFile.so -LOCAL_SHARED_LIBRARIES := OpenNI XnCore XnFormats XnDDK - -include $(PREBUILT_SHARED_LIBRARY) -#=========================================================== - -# XnDeviceSensorV2 ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := XnDeviceSensorV2 - -LOCAL_SRC_FILES := lib/$(sensor_conf)/$(TARGET_ARCH_ABI)/libXnDeviceSensorV2.so -LOCAL_SHARED_LIBRARIES := OpenNI XnCore XnFormats XnDDK - -include $(PREBUILT_SHARED_LIBRARY) -#=============================================================== - -# XnFormats ============================================= -include $(CLEAR_VARS) -LOCAL_MODULE := XnFormats - -LOCAL_SRC_FILES := lib/$(sensor_conf)/$(TARGET_ARCH_ABI)/libXnFormats.so -LOCAL_SHARED_LIBRARIES := OpenNI XnCore - -include $(PREBUILT_SHARED_LIBRARY) -#=============================================================== - -$(call import-module,OpenNI) diff --git a/3rdparty/android/ndk-modules/boost/Android.mk b/3rdparty/android/ndk-modules/boost/Android.mk deleted file mode 100644 index 092e071e9f7..00000000000 --- a/3rdparty/android/ndk-modules/boost/Android.mk +++ /dev/null @@ -1,32 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -# Header-only Boost libraries =================== -include $(CLEAR_VARS) -LOCAL_MODULE := boost - -LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/dummy.a -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include - -include $(PREBUILT_STATIC_LIBRARY) -#================================================ - -# Boost.Filesystem ============================================ -include $(CLEAR_VARS) -LOCAL_MODULE := boost_filesystem - -LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libboost_filesystem.a -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include -LOCAL_STATIC_LIBRARIES := boost_system - -include $(PREBUILT_STATIC_LIBRARY) -#============================================================== - -# Boost.System ============================================ -include $(CLEAR_VARS) -LOCAL_MODULE := boost_system - -LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libboost_system.a -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include - -include $(PREBUILT_STATIC_LIBRARY) -#========================================================== diff --git a/3rdparty/android/ndk-modules/tbb/Android.mk b/3rdparty/android/ndk-modules/tbb/Android.mk deleted file mode 100644 index 4a6fd0513ae..00000000000 --- a/3rdparty/android/ndk-modules/tbb/Android.mk +++ /dev/null @@ -1,17 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) -LOCAL_MODULE := tbb - -LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libtbb.so -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include - -include $(PREBUILT_SHARED_LIBRARY) - -include $(CLEAR_VARS) -LOCAL_MODULE := tbbmalloc - -LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libtbbmalloc.so -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include - -include $(PREBUILT_SHARED_LIBRARY) diff --git a/3rdparty/android/openni-build.sh b/3rdparty/android/openni-build.sh deleted file mode 100755 index 282f0af6143..00000000000 --- a/3rdparty/android/openni-build.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -NDK_MODULE_PATH=$(cd ndk-modules; pwd) -export NDK_MODULE_PATH - -rm -r "$NDK_MODULE_PATH"/OpenNI/include/* \ - "$NDK_MODULE_PATH"/OpenNI/lib/debug/armeabi-v7a/* \ - "$NDK_MODULE_PATH"/OpenNI/lib/release/armeabi-v7a/* 2>/dev/null - -cp -a src/OpenNI/Include/* "$NDK_MODULE_PATH/OpenNI/include" - -openni_libs="OpenNI OpenNI.jni nimCodecs nimMockNodes nimRecorder" - -rm src/OpenNI/Platform/Android/obj/local/armeabi-v7a/lib*.so 2>/dev/null - -(cd src/OpenNI/Platform/Android; ndk-build -j2) - -for libname in $openni_libs; do - cp src/OpenNI/Platform/Android/obj/local/armeabi-v7a/lib$libname.so \ - "$NDK_MODULE_PATH/OpenNI/lib/release/armeabi-v7a" -done - -rm src/OpenNI/Platform/Android/obj/local/armeabi-v7a/lib*.so - -(cd src/OpenNI/Platform/Android; ndk-build -j2 NDK_DEBUG=1) - -for libname in $openni_libs; do - cp src/OpenNI/Platform/Android/obj/local/armeabi-v7a/lib$libname.so \ - "$NDK_MODULE_PATH/OpenNI/lib/debug/armeabi-v7a" -done - -rm -r "$NDK_MODULE_PATH"/Sensor/lib/debug/armeabi-v7a/* \ - "$NDK_MODULE_PATH"/Sensor/lib/release/armeabi-v7a/* 2>/dev/null - -sensor_libs="XnCore XnDDK XnDeviceFile XnDeviceSensorV2 XnFormats" - -rm src/Sensor/Platform/Android/obj/local/armeabi-v7a/lib*.so 2>/dev/null - -(cd src/Sensor/Platform/Android; ndk-build -j2) - -for libname in $sensor_libs; do - cp src/Sensor/Platform/Android/obj/local/armeabi-v7a/lib$libname.so \ - "$NDK_MODULE_PATH/Sensor/lib/release/armeabi-v7a" -done - -rm src/Sensor/Platform/Android/obj/local/armeabi-v7a/lib*.so - -(cd src/Sensor/Platform/Android; ndk-build -j2 NDK_DEBUG=1) - -for libname in $sensor_libs; do - cp src/Sensor/Platform/Android/obj/local/armeabi-v7a/lib$libname.so \ - "$NDK_MODULE_PATH/Sensor/lib/debug/armeabi-v7a" -done diff --git a/3rdparty/android/openni-fetch.sh b/3rdparty/android/openni-fetch.sh deleted file mode 100755 index 8986530db27..00000000000 --- a/3rdparty/android/openni-fetch.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh - -set -e - -. ./functions.shinc - -will_normalize_eol - -rm -rf src/OpenNI src/Sensor 2> /dev/null - -echo 'Downloading OpenNI...' - -mkdir src/OpenNI -cd src/OpenNI -wget -vO- http://github.com/OpenNI/OpenNI/tarball/Stable-1.5.2.23 | tar -xz --strip-components=1 - -echo 'Normalizing EOL characters to LF...' - -normalize_eol - -echo 'Patching...' - -apply_patch_series ../../patches/openni/series - -rm -rv Wrappers/OpenNI.java/res - -echo 'Updating Android project...' - -android update lib-project -p Wrappers/OpenNI.java --target android-14 - -cd ../.. - -echo 'Downloading Sensor...' - -mkdir src/Sensor -cd src/Sensor -wget -vO- http://github.com/PrimeSense/Sensor/tarball/Unstable-5.1.0.41 | tar -xz --strip-components=1 - -echo 'Normalizing EOL characters to LF...' - -normalize_eol - -echo 'Patching...' - -apply_patch_series ../../patches/sensor/series - -cd ../.. - -echo 'Done.' diff --git a/3rdparty/android/patches/boost.patch b/3rdparty/android/patches/boost.patch deleted file mode 100644 index ea5ceb8d9a2..00000000000 --- a/3rdparty/android/patches/boost.patch +++ /dev/null @@ -1,65 +0,0 @@ -diff --git a/boost/detail/endian.hpp b/boost/detail/endian.hpp -index 98c870c..5ae0b7e 100644 ---- a/boost/detail/endian.hpp -+++ b/boost/detail/endian.hpp -@@ -31,7 +31,7 @@ - // GNU libc offers the helpful header which defines - // __BYTE_ORDER - --#if defined (__GLIBC__) -+#if defined (__GLIBC__) || defined (__ANDROID__) - # include - # if (__BYTE_ORDER == __LITTLE_ENDIAN) - # define BOOST_LITTLE_ENDIAN -diff --git a/boost/thread/pthread/thread_data.hpp b/boost/thread/pthread/thread_data.hpp -index 5f84799..af0aa32 100644 ---- a/boost/thread/pthread/thread_data.hpp -+++ b/boost/thread/pthread/thread_data.hpp -@@ -22,6 +22,12 @@ - #endif - #include - -+// This will no longer be necessary in NDK 9. -+#ifdef __ANDROID__ -+#include -+#endif -+ -+ - namespace boost - { - class thread_attributes { -diff --git a/libs/filesystem/src/operations.cpp b/libs/filesystem/src/operations.cpp -index 16a336f..4f0c0de 100644 ---- a/libs/filesystem/src/operations.cpp -+++ b/libs/filesystem/src/operations.cpp -@@ -73,7 +73,7 @@ using std::wstring; - const fs::path dot_dot_path(".."); - # include - # include --# if !defined(__APPLE__) && !defined(__OpenBSD__) -+# if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__ANDROID__) - # include - # define BOOST_STATVFS statvfs - # define BOOST_STATVFS_F_FRSIZE vfs.f_frsize -@@ -81,6 +81,9 @@ using std::wstring; - # ifdef __OpenBSD__ - # include - # endif -+# ifdef __ANDROID__ -+# include -+# endif - # include - # define BOOST_STATVFS statfs - # define BOOST_STATVFS_F_FRSIZE static_cast(vfs.f_bsize) -diff --git a/tools/build/v2/user-config.jam b/tools/build/v2/user-config.jam -index fbbf13f..f6c07e4 100644 ---- a/tools/build/v2/user-config.jam -+++ b/tools/build/v2/user-config.jam -@@ -44,6 +44,7 @@ - # Configure specific gcc version, giving alternative name to use. - # using gcc : 3.2 : g++-3.2 ; - -+using gcc : androidarmv7a : arm-linux-androideabi-g++ : "-march=armv7-a -mfloat-abi=softfp" "-Wl,--fix-cortex-a8 -Wl,--no-undefined" ; - - # ------------------- - # MSVC configuration. diff --git a/3rdparty/android/patches/libusb.patch b/3rdparty/android/patches/libusb.patch deleted file mode 100644 index 611455a28f0..00000000000 --- a/3rdparty/android/patches/libusb.patch +++ /dev/null @@ -1,722 +0,0 @@ -diff --git a/.gitignore b/.gitignore -index 88ea6d4..96475df 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -37,3 +37,8 @@ doc/html - Debug - Release - *.user -+android/build-* -+android/ndk-modules/libusb-1.0/include -+android/ndk-modules/libusb-1.0/lib -+android/LibusbSupport/gen -+android/LibusbSupport/proguard-project.txt -diff --git a/AUTHORS b/AUTHORS -index b43d995..960d1a7 100644 ---- a/AUTHORS -+++ b/AUTHORS -@@ -34,6 +34,7 @@ Orin Eman - Pekka Nikander - Peter Stuge - Rob Walker -+Roman Donchenko - Sean McBride - Sebastian Pipping - Stephan Meyer -diff --git a/README.android b/README.android -new file mode 100644 -index 0000000..786b1ff ---- /dev/null -+++ b/README.android -@@ -0,0 +1,64 @@ -+Overview -+======== -+ -+This version of libusb has been modified to work on Android. Besides some build -+changes, the buggest addition is that libusb now tries to use Android's Java -+USB host API to open the the devices, which means it will be able to -+successfully open them, even if the application is running as non-root (which -+they usually do). -+ -+This modification is not perfect, read the Caveats section before using it. -+ -+Building and using -+================== -+ -+To build libusb for Android, you use the usual configure/make machinery, -+however, there's a build script in the 'android' directory, which simplifies -+the job. To use it, prepare an Android standalone toolchain (see -+STANDALONE-TOOLCHAIN.html in Android NDK documentation for how to do this). -+ -+Then, make sure arm-linux-androideabi-gcc is in your PATH, and do the following: -+ -+ cd android -+ ./build.sh armeabi -+ ./build.sh armeabi-v7a -+ -+This will build the libraries and place them into -+'android/ndk-modules/libusb-1.0'. -+ -+If you're using ndk-build as your build system, you can use libusb by adding -+the 'android/ndk-modules' directory to your NDK_MODULE_PATH environment -+variable, and then appending: -+ -+ $(call import-module,libusb-1.0) -+ -+to your Android.mk file. -+ -+Caveats -+======= -+ -+For this version of libusb to work, several other requirements must be -+fulfilled: -+ -+1) Include the org.libusb.UsbHelper class from the 'android/LibusbSupport' -+ directory in your application. The directory is also usable as an Android -+ library project. -+ -+2) Have an application class (see -+ ). -+ In that class's onCreate(), put the following line: -+ -+ UsbHelper.useContext(getApplicationContext()); -+ -+3) You must load libusb into the JVM before using it (for example, in the -+ application class): -+ -+ System.loadLibrary("usb-1.0") -+ -+4) Beware: libusb will open a USB device if the application's user has given -+ permission to do so; however, it will not ask for that permission! It is -+ impossible for it to do so, since libusb_open is synchronous, and -+ android.hardware.usb.UsbManager.requestPermission is not. You must request -+ this permission yourself; see -+ -+ for details. -diff --git a/android/LibusbSupport/AndroidManifest.xml b/android/LibusbSupport/AndroidManifest.xml -new file mode 100644 -index 0000000..b4f950c ---- /dev/null -+++ b/android/LibusbSupport/AndroidManifest.xml -@@ -0,0 +1,6 @@ -+ -+ -+ -+ -+ -diff --git a/android/LibusbSupport/project.properties b/android/LibusbSupport/project.properties -new file mode 100644 -index 0000000..b2ed0b0 ---- /dev/null -+++ b/android/LibusbSupport/project.properties -@@ -0,0 +1,15 @@ -+# This file is automatically generated by Android Tools. -+# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -+# -+# This file must be checked in Version Control Systems. -+# -+# To customize properties used by the Ant build system edit -+# "ant.properties", and override values to adapt the script to your -+# project structure. -+# -+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt -+ -+android.library=true -+# Project target. -+target=android-16 -diff --git a/android/LibusbSupport/src/org/libusb/UsbHelper.java b/android/LibusbSupport/src/org/libusb/UsbHelper.java -new file mode 100644 -index 0000000..1f78044 ---- /dev/null -+++ b/android/LibusbSupport/src/org/libusb/UsbHelper.java -@@ -0,0 +1,26 @@ -+package org.libusb; -+ -+import android.app.Service; -+import android.content.Context; -+import android.hardware.usb.UsbDevice; -+import android.hardware.usb.UsbDeviceConnection; -+import android.hardware.usb.UsbManager; -+ -+public class UsbHelper { -+ private static UsbManager manager; -+ -+ public static UsbManager getManager() { -+ return manager; -+ } -+ -+ public static void useContext(Context context) { -+ manager = (UsbManager) context.getSystemService(Service.USB_SERVICE); -+ } -+ -+ @SuppressWarnings("UnusedDeclaration") -+ public static UsbDeviceConnection openDevice(String path) { -+ UsbDevice device = manager.getDeviceList().get(path); -+ if (device == null) return null; -+ return manager.openDevice(device); -+ } -+} -diff --git a/android/build.sh b/android/build.sh -new file mode 100755 -index 0000000..0e1cf7a ---- /dev/null -+++ b/android/build.sh -@@ -0,0 +1,42 @@ -+#!/bin/bash -+ -+set -e -+dir=$(dirname "$0") -+ -+if [ $# -ne 1 ]; then -+ echo "Usage: $0 (armeabi | armeabi-v7a)" -+ exit 1 -+fi -+ -+build=$(sh $dir/../config.guess) -+ -+echo "Guessed the build system as ${build}." -+ -+cflags="-O2 -g" -+ -+arch=$1 -+ -+case $arch in -+armeabi) -+ host=arm-linux-androideabi -+ cflags="$cflags -mthumb" -+ ldflags="-Wl,--fix-cortex-a8 -Wl,--no-undefined" -+ ;; -+armeabi-v7a) -+ host=arm-linux-androideabi -+ cflags="$cflags -mthumb -march=armv7-a -mfloat-abi=softfp" -+ ldflags="-Wl,--fix-cortex-a8 -Wl,--no-undefined" -+ ;; -+*) -+ echo "Unsupported architecture: $arch" -+ exit 1 -+esac -+ -+mkdir -p $dir/build-$arch -+(cd $dir/build-$arch && ../../configure --host=$host --build=$build CFLAGS="$cflags" LDFLAGS="$ldflags" && make) -+ -+echo "Copying headers and libraries..." -+mkdir -p $dir/ndk-modules/libusb-1.0/{include/libusb-1.0,lib/$arch} -+cp $dir/../libusb/libusb.h $dir/ndk-modules/libusb-1.0/include/libusb-1.0 -+cp $dir/build-$arch/libusb/.libs/libusb-1.0.so $dir/ndk-modules/libusb-1.0/lib/$arch -+ -diff --git a/android/ndk-modules/libusb-1.0/Android.mk b/android/ndk-modules/libusb-1.0/Android.mk -new file mode 100644 -index 0000000..57cd8f2 ---- /dev/null -+++ b/android/ndk-modules/libusb-1.0/Android.mk -@@ -0,0 +1,10 @@ -+LOCAL_PATH := $(call my-dir) -+ -+include $(CLEAR_VARS) -+LOCAL_MODULE := libusb-1.0 -+ -+LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libusb-1.0.so -+LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/libusb-1.0 -+LOCAL_EXPORT_LDLIBS := -llog -+ -+include $(PREBUILT_SHARED_LIBRARY) -diff --git a/configure.ac b/configure.ac -index f9e648e..0bb2aa4 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -17,15 +17,6 @@ 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 - -@@ -42,13 +33,13 @@ 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" -+ -+ AC_CHECK_DECL(__ANDROID__, android=true, android=false) - ;; - *-darwin*) - AC_MSG_RESULT([Darwin/Mac OS X]) -@@ -74,14 +65,30 @@ case $host in - *) - AC_MSG_ERROR([unsupported operating system]) - esac -+ -+if $android; then -+LTLDFLAGS="-avoid-version" -+else -+# 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}" -+fi -+ -+LTLDFLAGS="${LTLDFLAGS} -no-undefined" -+ - 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") -+ AC_CHECK_LIB(pthread, pthread_create, [PC_LIBS_PRIVATE="${PC_LIBS_PRIVATE} -pthread"; THREAD_CFLAGS="-pthread"], THREAD_CFLAGS="") - 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]) - ;; -@@ -126,6 +133,7 @@ AM_CONDITIONAL(THREADS_POSIX, test "x$threads" = xposix) - if test "$threads" = posix; then - AC_DEFINE(THREADS_POSIX, 1, [Use POSIX Threads]) - fi -+AM_CONDITIONAL(ANDROID, $android) - - # timerfd - AC_CHECK_HEADER([sys/timerfd.h], [timerfd_h=1], [timerfd_h=0]) -@@ -157,6 +165,10 @@ fi - - AC_CHECK_TYPES(struct timespec) - -+if $android; then -+ AC_SEARCH_LIBS([__android_log_vprint], [log]) -+fi -+ - # Message logging - AC_ARG_ENABLE([log], [AS_HELP_STRING([--disable-log], [disable all logging])], - [log_enabled=$enableval], -diff --git a/libusb/Makefile.am b/libusb/Makefile.am -index 3316ebc..9363e2d 100644 ---- a/libusb/Makefile.am -+++ b/libusb/Makefile.am -@@ -37,12 +37,18 @@ else - THREADS_SRC = os/threads_windows.h os/threads_windows.c - endif - -+if ANDROID -+ANDROID_JAVA_SRC = os/android_java.c -+else -+ANDROID_JAVA_SRC = -+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) \ -+ $(THREADS_SRC) $(ANDROID_JAVA_SRC) \ - os/poll_posix.h os/poll_windows.h - - hdrdir = $(includedir)/libusb-1.0 -diff --git a/libusb/core.c b/libusb/core.c -index 767dcbf..64e4a40 100644 ---- a/libusb/core.c -+++ b/libusb/core.c -@@ -31,6 +31,10 @@ - #include - #endif - -+#ifdef __ANDROID__ -+#include -+#endif -+ - #include "libusbi.h" - - #if defined(OS_LINUX) -@@ -1768,6 +1772,34 @@ void usbi_log_v(struct libusb_context *ctx, enum usbi_log_level level, - return; - #endif - -+#ifdef __ANDROID__ -+ android_LogPriority android_level; -+ -+ switch (level) { -+ case LOG_LEVEL_INFO: -+ android_level = ANDROID_LOG_INFO; -+ break; -+ case LOG_LEVEL_WARNING: -+ android_level = ANDROID_LOG_WARN; -+ break; -+ case LOG_LEVEL_ERROR: -+ android_level = ANDROID_LOG_ERROR; -+ break; -+ case LOG_LEVEL_DEBUG: -+ android_level = ANDROID_LOG_DEBUG; -+ break; -+ default: -+ android_level = ANDROID_LOG_UNKNOWN; -+ break; -+ } -+ -+ char android_tag[256]; /* ought to be enough */ -+ -+ snprintf(android_tag, sizeof android_tag, "libusb(%s)", function); -+ -+ __android_log_vprint(android_level, android_tag, format, args); -+#endif -+ - usbi_gettimeofday(&now, NULL); - if (!first.tv_sec) { - first.tv_sec = now.tv_sec; -diff --git a/libusb/io.c b/libusb/io.c -index e9bd312..9529b67 100644 ---- a/libusb/io.c -+++ b/libusb/io.c -@@ -34,6 +34,13 @@ - #include - #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 -+ - #include "libusbi.h" - - /** -diff --git a/libusb/os/android_java.c b/libusb/os/android_java.c -new file mode 100644 -index 0000000..78becd0 ---- /dev/null -+++ b/libusb/os/android_java.c -@@ -0,0 +1,215 @@ -+/* -+* Android interop for libusb -+* Copyright (c) 2012 Roman Donchenko -+* -+* 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 "android_java.h" -+#include "libusbi.h" -+ -+static JavaVM *java_vm = NULL; -+ -+static jclass java_lang_Throwable = NULL; -+static jmethodID java_lang_Throwable_toString; -+ -+static jclass android_hardware_usb_UsbDeviceConnection = NULL; -+static jmethodID android_hardware_usb_UsbDeviceConnection_getFileDescriptor; -+static jmethodID android_hardware_usb_UsbDeviceConnection_close; -+ -+static jclass org_libusb_UsbHelper = NULL; -+static jmethodID org_libusb_UsbHelper_openDevice; -+ -+static void log_exception(JNIEnv * env, jthrowable exception, struct libusb_context *ctx, const char * function) -+{ -+ jstring exc_string = (*env)->CallObjectMethod(env, exception, java_lang_Throwable_toString); -+ -+ if ((*env)->ExceptionCheck(env)) { -+ (*env)->ExceptionClear(env); -+ usbi_log(ctx, LOG_LEVEL_ERROR, function, "a Java exception occurred, but toString() failed"); -+ } else if (!exc_string) { -+ usbi_log(ctx, LOG_LEVEL_ERROR, function, "a Java exception occurred, but toString() is null"); -+ } else { -+ const char * exc_string_chars = (*env)->GetStringUTFChars(env, exc_string, NULL); -+ usbi_log(ctx, LOG_LEVEL_ERROR, function, "a Java exception occurred: %s", exc_string_chars); -+ (*env)->ReleaseStringUTFChars(env, exc_string, exc_string_chars); -+ } -+} -+ -+JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void * reserved) -+{ -+ java_vm = vm; -+ usbi_dbg("loaded into JVM"); -+ -+ JNIEnv * env; -+ void * void_env; -+ (*java_vm)->GetEnv(java_vm, &void_env, JNI_VERSION_1_6); -+ -+ env = void_env; -+ -+ jclass clazz; -+ -+ clazz = (*env)->FindClass(env, "java/lang/Throwable"); -+ if (!clazz) (*env)->FatalError(env, "Couldn't find java.lang.Throwable!"); -+ java_lang_Throwable = (*env)->NewGlobalRef(env, clazz); -+ -+ java_lang_Throwable_toString = (*env)->GetMethodID(env, java_lang_Throwable, -+ "toString", "()Ljava/lang/String;"); -+ if (!java_lang_Throwable_toString) (*env)->FatalError(env, "Couldn't find java.lang.Throwable.toString()!"); -+ -+ clazz = (*env)->FindClass(env, "android/hardware/usb/UsbDeviceConnection"); -+ if (!clazz) goto cleanup; -+ android_hardware_usb_UsbDeviceConnection = (*env)->NewGlobalRef(env, clazz); -+ -+ android_hardware_usb_UsbDeviceConnection_getFileDescriptor = (*env)->GetMethodID(env, android_hardware_usb_UsbDeviceConnection, -+ "getFileDescriptor", "()I"); -+ if (!android_hardware_usb_UsbDeviceConnection_getFileDescriptor) goto cleanup; -+ -+ android_hardware_usb_UsbDeviceConnection_close = (*env)->GetMethodID(env, android_hardware_usb_UsbDeviceConnection, -+ "close", "()V"); -+ if (!android_hardware_usb_UsbDeviceConnection_close) goto cleanup; -+ -+ clazz = (*env)->FindClass(env, "org/libusb/UsbHelper"); -+ if (!clazz) goto cleanup; -+ org_libusb_UsbHelper = (*env)->NewGlobalRef(env, clazz); -+ -+ org_libusb_UsbHelper_openDevice = (*env)->GetStaticMethodID(env, org_libusb_UsbHelper, -+ "openDevice", "(Ljava/lang/String;)Landroid/hardware/usb/UsbDeviceConnection;"); -+ if (!org_libusb_UsbHelper_openDevice) goto cleanup; -+ -+ usbi_dbg("found all Java classes and IDs"); -+ -+cleanup:; -+ -+ jthrowable exception; -+ if ((exception = (*env)->ExceptionOccurred(env))) { -+ (*env)->ExceptionClear(env); -+ log_exception(env, exception, NULL, __func__); -+ java_vm = NULL; -+ } -+ -+ return JNI_VERSION_1_6; -+} -+ -+JNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved) -+{ -+ JNIEnv * env; -+ void * void_env; -+ (*java_vm)->GetEnv(java_vm, &void_env, JNI_VERSION_1_6); -+ -+ env = void_env; -+ -+ if (java_lang_Throwable) -+ (*env)->DeleteGlobalRef(env, java_lang_Throwable); -+ if (android_hardware_usb_UsbDeviceConnection) -+ (*env)->DeleteGlobalRef(env, android_hardware_usb_UsbDeviceConnection); -+ if (org_libusb_UsbHelper) -+ (*env)->DeleteGlobalRef(env, org_libusb_UsbHelper); -+ -+ usbi_dbg("unloaded from JVM"); -+} -+ -+void android_java_open(struct libusb_context * ctx, const char * path, int * fd, jobject * connection) -+{ -+ *fd = -1; -+ *connection = NULL; -+ bool success = false; -+ -+ if (!java_vm) return; -+ -+ JNIEnv * env; -+ void * void_env; -+ bool had_to_attach = false; -+ jint status = (*java_vm)->GetEnv(java_vm, &void_env, JNI_VERSION_1_6); -+ -+ if (status == JNI_EDETACHED) { -+ (*java_vm)->AttachCurrentThread(java_vm, &env, NULL); -+ had_to_attach = true; -+ } else { -+ env = void_env; -+ } -+ -+ jstring path_string = (*env)->NewStringUTF(env, path); -+ -+ jobject connection_local = (*env)->CallStaticObjectMethod(env, org_libusb_UsbHelper, org_libusb_UsbHelper_openDevice, path_string); -+ if ((*env)->ExceptionCheck(env)) goto cleanup; -+ -+ if (!connection_local) { -+ usbi_err(ctx, "couldn't open device via Java API"); -+ goto cleanup; -+ } -+ -+ *connection = (*env)->NewGlobalRef(env, connection_local); -+ -+ *fd = (*env)->CallIntMethod(env, *connection, android_hardware_usb_UsbDeviceConnection_getFileDescriptor); -+ if ((*env)->ExceptionCheck(env)) goto cleanup; -+ -+ success = true; -+ -+cleanup: -+ -+ if (!success) { -+ jthrowable exception; -+ if ((exception = (*env)->ExceptionOccurred(env))) { -+ (*env)->ExceptionClear(env); -+ log_exception(env, exception, ctx, __func__); -+ } -+ -+ *fd = -1; -+ if (*connection) { -+ (*env)->DeleteGlobalRef(env, connection); -+ *connection = NULL; -+ } -+ } -+ -+ if (had_to_attach) { -+ (*java_vm)->DetachCurrentThread(java_vm); -+ } -+} -+ -+void android_java_close(struct libusb_context * ctx, jobject connection) -+{ -+ if (!java_vm) return; -+ -+ JNIEnv * env; -+ void * void_env; -+ bool had_to_attach = false; -+ jint status = (*java_vm)->GetEnv(java_vm, &void_env, JNI_VERSION_1_6); -+ -+ if (status == JNI_EDETACHED) { -+ (*java_vm)->AttachCurrentThread(java_vm, &env, NULL); -+ had_to_attach = true; -+ } else { -+ env = void_env; -+ } -+ -+ (*env)->CallVoidMethod(env, connection, android_hardware_usb_UsbDeviceConnection_close); -+ -+ jthrowable exception; -+ if ((exception = (*env)->ExceptionOccurred(env))) { -+ (*env)->ExceptionClear(env); -+ log_exception(env, exception, NULL, __func__); -+ } -+ -+ (*env)->DeleteGlobalRef(env, connection); -+ -+ if (had_to_attach) { -+ (*java_vm)->DetachCurrentThread(java_vm); -+ } -+} -+ -diff --git a/libusb/os/android_java.h b/libusb/os/android_java.h -new file mode 100644 -index 0000000..bd458bb ---- /dev/null -+++ b/libusb/os/android_java.h -@@ -0,0 +1,31 @@ -+/* -+* Android interop for libusb (declarations) -+* Copyright (c) 2012 Roman Donchenko -+* -+* 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 ANDROID_JAVA_H -+#define ANDROID_JAVA_H -+ -+#include -+ -+#include "libusbi.h" -+ -+void android_java_open(struct libusb_context * ctx, const char * path, int * fd, jobject * connection); -+void android_java_close(struct libusb_context * ctx, jobject connection); -+ -+#endif -+ -diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c -index 02d182d..44527ea 100644 ---- a/libusb/os/linux_usbfs.c -+++ b/libusb/os/linux_usbfs.c -@@ -37,6 +37,11 @@ - #include "libusbi.h" - #include "linux_usbfs.h" - -+#ifdef __ANDROID__ -+#include -+#include "android_java.h" -+#endif -+ - /* sysfs vs usbfs: - * opening a usbfs node causes the device to be resumed, so we attempt to - * avoid this during enumeration. -@@ -116,6 +121,9 @@ struct linux_device_priv { - - struct linux_device_handle_priv { - int fd; -+#ifdef __ANDROID__ -+ jobject connection; -+#endif - }; - - enum reap_action { -@@ -1218,7 +1226,13 @@ static int op_open(struct libusb_device_handle *handle) - - _get_usbfs_path(handle->dev, filename); - usbi_dbg("opening %s", filename); -+ -+#ifdef __ANDROID__ -+ android_java_open(HANDLE_CTX(handle), filename, &hpriv->fd, &hpriv->connection); -+ if (hpriv->fd < 0) hpriv->fd = open(filename, O_RDWR); -+#else - hpriv->fd = open(filename, O_RDWR); -+#endif - if (hpriv->fd < 0) { - if (errno == EACCES) { - usbi_err(HANDLE_CTX(handle), "libusb couldn't open USB device %s: " -@@ -1242,9 +1256,16 @@ static int op_open(struct libusb_device_handle *handle) - - 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); -+ struct linux_device_handle_priv *hpriv = _device_handle_priv(dev_handle); -+ -+ usbi_remove_pollfd(HANDLE_CTX(dev_handle), hpriv->fd); -+ -+#ifdef __ANDROID__ -+ if (hpriv->connection) android_java_close(HANDLE_CTX(dev_handle), hpriv->connection); -+ else close(hpriv->fd); -+#else -+ close(hpriv->fd); -+#endif - } - - static int op_get_configuration(struct libusb_device_handle *handle, diff --git a/3rdparty/android/patches/openni/android-install-path-var.patch b/3rdparty/android/patches/openni/android-install-path-var.patch deleted file mode 100644 index 2a5bd211d9e..00000000000 --- a/3rdparty/android/patches/openni/android-install-path-var.patch +++ /dev/null @@ -1,33 +0,0 @@ -Make the install location environment variable mandatory on Android and change the suffix. - -From: Roman Donchenko - - ---- - Source/OpenNI/XnOpenNI.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/Source/OpenNI/XnOpenNI.cpp b/Source/OpenNI/XnOpenNI.cpp -index de4d7e7..3ceae9e 100644 ---- a/Source/OpenNI/XnOpenNI.cpp -+++ b/Source/OpenNI/XnOpenNI.cpp -@@ -6995,7 +6995,7 @@ XN_C_API XnStatus xnScriptNodeRun(XnNodeHandle hScript, XnEnumerationErrors* pEr - #elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX) - #define XN_OPEN_NI_FILES_LOCATION "/etc/openni/" - #elif (XN_PLATFORM == XN_PLATFORM_ANDROID_ARM) -- #define XN_OPEN_NI_FILES_LOCATION "/data/ni/" -+ #define XN_OPEN_NI_FILES_LOCATION "/data/" - #else - #error "Unsupported platform!" - #endif -@@ -7007,8 +7007,8 @@ XnStatus xnGetOpenNIConfFilesPath(XnChar* strDest, XnUInt32 nBufSize) - nRetVal = xnOSGetEnvironmentVariable(XN_OPEN_NI_INSTALL_PATH_ENV, strDest, nBufSize); - if (nRetVal == XN_STATUS_OS_ENV_VAR_NOT_FOUND) - { -- #if (XN_PLATFORM == XN_PLATFORM_WIN32) -- // we don't allow environment variable not to be defined on Windows. -+ #if (XN_PLATFORM == XN_PLATFORM_WIN32 || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM) -+ // we don't allow environment variable not to be defined on Windows or Android. - return nRetVal; - #else - // use root FS diff --git a/3rdparty/android/patches/openni/build-flags.patch b/3rdparty/android/patches/openni/build-flags.patch deleted file mode 100644 index d5d90e48fe9..00000000000 --- a/3rdparty/android/patches/openni/build-flags.patch +++ /dev/null @@ -1,30 +0,0 @@ -Remove build flags that are redundant and disable optimization flags when - -From: Roman Donchenko - -debugging is enabled. ---- - Platform/Android/jni/Application.mk | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/Platform/Android/jni/Application.mk b/Platform/Android/jni/Application.mk -index 6d2da24..91e2646 100644 ---- a/Platform/Android/jni/Application.mk -+++ b/Platform/Android/jni/Application.mk -@@ -5,12 +5,13 @@ APP_PLATFORM := android-9 - - # Build ARMv7-A machine code. - APP_ABI := armeabi-v7a --APP_CFLAGS := -O3 -ftree-vectorize -ffast-math -funroll-loops - --APP_CFLAGS += -fPIC -+ifndef NDK_DEBUG -+APP_CFLAGS := -O3 -ftree-vectorize -ffast-math -funroll-loops -+endif - - ifeq ($(APP_ABI),armeabi-v7a) -- APP_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mtune=cortex-a9 -mfp=vfpv3-d16 -mfpu=vfp -+ APP_CFLAGS += -mtune=cortex-a9 - - # optionally add NEON to compilation flags. - # to activate, run: "ndk-build USE_NEON=1" diff --git a/3rdparty/android/patches/openni/dynamic-linker.patch b/3rdparty/android/patches/openni/dynamic-linker.patch deleted file mode 100644 index f4a2831c1f9..00000000000 --- a/3rdparty/android/patches/openni/dynamic-linker.patch +++ /dev/null @@ -1,50 +0,0 @@ -Remove the --dynamic-linker option (which doesn't exist) from build options. - -From: Roman Donchenko - - ---- - .../Samples/SamplesAssistant/jni/Android.mk | 2 +- - Platform/Android/jni/OpenNI.jni/Android.mk | 2 +- - Platform/Android/jni/OpenNI/Android.mk | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/Platform/Android/Samples/SamplesAssistant/jni/Android.mk b/Platform/Android/Samples/SamplesAssistant/jni/Android.mk -index e4b980d..9515e8d 100644 ---- a/Platform/Android/Samples/SamplesAssistant/jni/Android.mk -+++ b/Platform/Android/Samples/SamplesAssistant/jni/Android.mk -@@ -25,7 +25,7 @@ LOCAL_C_INCLUDES := \ - - LOCAL_CFLAGS:= -fvisibility=hidden -DXN_EXPORTS - --LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker -+LOCAL_LDFLAGS += -Wl,--export-dynamic - - LOCAL_LDLIBS := -llog - LOCAL_LDLIBS += $(OPENNI_DIR)/Platform/Android/libs/armeabi-v7a/libOpenNI.so -diff --git a/Platform/Android/jni/OpenNI.jni/Android.mk b/Platform/Android/jni/OpenNI.jni/Android.mk -index 30b332c..30ce781 100644 ---- a/Platform/Android/jni/OpenNI.jni/Android.mk -+++ b/Platform/Android/jni/OpenNI.jni/Android.mk -@@ -22,7 +22,7 @@ LOCAL_C_INCLUDES := \ - - LOCAL_CFLAGS:= -fvisibility=hidden -DXN_EXPORTS - --LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker -+LOCAL_LDFLAGS += -Wl,--export-dynamic - - LOCAL_LDLIBS := -llog - -diff --git a/Platform/Android/jni/OpenNI/Android.mk b/Platform/Android/jni/OpenNI/Android.mk -index 47b0911..355cb74 100644 ---- a/Platform/Android/jni/OpenNI/Android.mk -+++ b/Platform/Android/jni/OpenNI/Android.mk -@@ -27,7 +27,7 @@ LOCAL_C_INCLUDES := \ - - LOCAL_CFLAGS:= -fvisibility=hidden -DXN_EXPORTS - --LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker -+LOCAL_LDFLAGS += -Wl,--export-dynamic - - LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../Include - LOCAL_SHARED_LIBRARIES := libusb-1.0 diff --git a/3rdparty/android/patches/openni/format-args.patch b/3rdparty/android/patches/openni/format-args.patch deleted file mode 100644 index ae64b902919..00000000000 --- a/3rdparty/android/patches/openni/format-args.patch +++ /dev/null @@ -1,65 +0,0 @@ -Fixed several printf arguments not having the expected type. - -From: Roman Donchenko - -This patch is originally from , -slightly modified by me. ---- - Source/OpenNI/XnProfiling.cpp | 8 ++++---- - Source/Utils/niLicense/niLicense.cpp | 4 ++-- - 2 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/Source/OpenNI/XnProfiling.cpp b/Source/OpenNI/XnProfiling.cpp -index f9874fa..93dd0a2 100644 ---- a/Source/OpenNI/XnProfiling.cpp -+++ b/Source/OpenNI/XnProfiling.cpp -@@ -87,8 +87,8 @@ XN_THREAD_PROC xnProfilingThread(XN_THREAD_PARAM /*pThreadParam*/) - // print profiled sections - nReportChars = 0; - nReportChars += sprintf(csReport + nReportChars, "Profiling Report:\n"); -- nReportChars += sprintf(csReport + nReportChars, "%-*s %-5s %-6s %-9s %-7s\n", g_ProfilingData.nMaxSectionName, "TaskName", "Times", "% Time", "TotalTime", "AvgTime"); -- nReportChars += sprintf(csReport + nReportChars, "%-*s %-5s %-6s %-9s %-7s\n", g_ProfilingData.nMaxSectionName, "========", "=====", "======", "=========", "======="); -+ nReportChars += sprintf(csReport + nReportChars, "%-*s %-5s %-6s %-9s %-7s\n", (int)g_ProfilingData.nMaxSectionName, "TaskName", "Times", "% Time", "TotalTime", "AvgTime"); -+ nReportChars += sprintf(csReport + nReportChars, "%-*s %-5s %-6s %-9s %-7s\n", (int)g_ProfilingData.nMaxSectionName, "========", "=====", "======", "=========", "======="); - - XnUInt64 nTotalTime = 0; - -@@ -104,7 +104,7 @@ XN_THREAD_PROC xnProfilingThread(XN_THREAD_PARAM /*pThreadParam*/) - nAvgTime = pSection->nTotalTime / pSection->nTimesExecuted; - } - -- nReportChars += sprintf(csReport + nReportChars, "%-*s %5u %6.2f %9llu %7llu\n", g_ProfilingData.nMaxSectionName, -+ nReportChars += sprintf(csReport + nReportChars, "%-*s %5u %6.2f %9llu %7llu\n", (int)g_ProfilingData.nMaxSectionName, - pSection->csName, pSection->nTimesExecuted, dCPUPercentage, pSection->nTotalTime, nAvgTime); - - if (pSection->nIndentation == 0) -@@ -118,7 +118,7 @@ XN_THREAD_PROC xnProfilingThread(XN_THREAD_PARAM /*pThreadParam*/) - // print total - XnDouble dCPUPercentage = ((XnDouble)nTotalTime) / (nNow - nLastTime) * 100.0; - nReportChars += sprintf(csReport + nReportChars, "%-*s %5s %6.2f %9llu %7s\n", -- g_ProfilingData.nMaxSectionName, "*** Total ***", "-", dCPUPercentage, nTotalTime, "-"); -+ (int)g_ProfilingData.nMaxSectionName, "*** Total ***", "-", dCPUPercentage, nTotalTime, "-"); - - xnLogVerbose(XN_MASK_PROFILING, "%s", csReport); - -diff --git a/Source/Utils/niLicense/niLicense.cpp b/Source/Utils/niLicense/niLicense.cpp -index b16659c..09b15da 100644 ---- a/Source/Utils/niLicense/niLicense.cpp -+++ b/Source/Utils/niLicense/niLicense.cpp -@@ -119,14 +119,14 @@ int main(int argc, char* argv[]) - nRetVal = xnOSStrNCopy(license.strVendor, strVendor, strlen(strVendor) + 1, sizeof(license.strVendor)); - if (nRetVal != XN_STATUS_OK) - { -- printf("Error: Vendor name is too long (should be up to %u characters).", sizeof(license.strVendor) - 1); -+ printf("Error: Vendor name is too long (should be up to %lu characters).", (unsigned long) (sizeof(license.strVendor) - 1)); - return -1; - } - - nRetVal = xnOSStrNCopy(license.strKey, strKey, strlen(strKey) + 1, sizeof(license.strKey)); - if (nRetVal != XN_STATUS_OK) - { -- printf("Error: Key is too long (should be up to %u characters).", sizeof(license.strKey) - 1); -+ printf("Error: Key is too long (should be up to %lu characters).", (unsigned long) (sizeof(license.strKey) - 1)); - return -1; - } - } diff --git a/3rdparty/android/patches/openni/java-bindings-bugs.patch b/3rdparty/android/patches/openni/java-bindings-bugs.patch deleted file mode 100644 index 9f76039b5ec..00000000000 --- a/3rdparty/android/patches/openni/java-bindings-bugs.patch +++ /dev/null @@ -1,120 +0,0 @@ -Fix a memory leak and a crash in the Java bindings. - -From: Roman Donchenko - - ---- - Wrappers/OpenNI.java/src/org/OpenNI/Context.java | 17 ++++++++++++++--- - Wrappers/OpenNI.java/src/org/OpenNI/NodeInfo.java | 4 +++- - .../OpenNI.java/src/org/OpenNI/NodeWrapper.java | 1 + - .../OpenNI.java/src/org/OpenNI/ProductionNode.java | 4 +++- - Wrappers/OpenNI.jni/org_OpenNI_NativeMethods.cpp | 4 +++- - 5 files changed, 24 insertions(+), 6 deletions(-) - -diff --git a/Wrappers/OpenNI.java/src/org/OpenNI/Context.java b/Wrappers/OpenNI.java/src/org/OpenNI/Context.java -index 9204c4e..ffab54d 100644 ---- a/Wrappers/OpenNI.java/src/org/OpenNI/Context.java -+++ b/Wrappers/OpenNI.java/src/org/OpenNI/Context.java -@@ -85,7 +85,9 @@ public class Context extends ObjectWrapper - OutArg phPlayer = new OutArg(); - int status = NativeMethods.xnContextOpenFileRecordingEx(toNative(), fileName, phPlayer); - WrapperUtils.throwOnError(status); -- return (Player)createProductionNodeFromNative(phPlayer.value); -+ Player player = (Player) createProductionNodeFromNative(phPlayer.value); -+ NativeMethods.xnProductionNodeRelease(phPlayer.value); -+ return player; - } - - public void release() -@@ -129,7 +131,9 @@ public class Context extends ObjectWrapper - OutArg phNode = new OutArg(); - int status = NativeMethods.xnCreateProductionTree(toNative(), nodeInfo.toNative(), phNode); - WrapperUtils.throwOnError(status); -- return createProductionNodeObject(phNode.value); -+ ProductionNode node = createProductionNodeObject(phNode.value); -+ NativeMethods.xnProductionNodeRelease(phNode.value); -+ return node; - } - - public ProductionNode createAnyProductionTree(NodeType type, Query query) throws GeneralException -@@ -141,7 +145,9 @@ public class Context extends ObjectWrapper - phNode, - errors.toNative()); - WrapperUtils.checkEnumeration(status, errors); -- return createProductionNodeFromNative(phNode.value); -+ ProductionNode node = createProductionNodeFromNative(phNode.value); -+ NativeMethods.xnProductionNodeRelease(phNode.value); -+ return node; - } - - public NodeInfoList enumerateExistingNodes() throws GeneralException -@@ -378,6 +384,11 @@ public class Context extends ObjectWrapper - return createProductionNodeObject(hNode, type); - } - -+ void removeProductionNodeObject(long hNode) -+ { -+ this.allNodes.remove(hNode); -+ } -+ - private Observable errorStateChangedEvent; - private Hashtable allNodes = new Hashtable(); - -diff --git a/Wrappers/OpenNI.java/src/org/OpenNI/NodeInfo.java b/Wrappers/OpenNI.java/src/org/OpenNI/NodeInfo.java -index 30aac6c..a1171e7 100644 ---- a/Wrappers/OpenNI.java/src/org/OpenNI/NodeInfo.java -+++ b/Wrappers/OpenNI.java/src/org/OpenNI/NodeInfo.java -@@ -46,7 +46,9 @@ public class NodeInfo extends ObjectWrapper - public ProductionNode getInstance() throws GeneralException - { - long hNode = NativeMethods.xnNodeInfoGetRefHandle(toNative()); -- return Context.createProductionNodeFromNative(hNode); -+ ProductionNode node = Context.createProductionNodeFromNative(hNode); -+ NativeMethods.xnProductionNodeRelease(hNode); -+ return node; - } - - @Override -diff --git a/Wrappers/OpenNI.java/src/org/OpenNI/NodeWrapper.java b/Wrappers/OpenNI.java/src/org/OpenNI/NodeWrapper.java -index 2391c7d..8585082 100644 ---- a/Wrappers/OpenNI.java/src/org/OpenNI/NodeWrapper.java -+++ b/Wrappers/OpenNI.java/src/org/OpenNI/NodeWrapper.java -@@ -47,6 +47,7 @@ public class NodeWrapper extends ObjectWrapper - - protected void freeObject(long ptr) - { -+ context.removeProductionNodeObject(ptr); - NativeMethods.xnProductionNodeRelease(ptr); - } - -diff --git a/Wrappers/OpenNI.java/src/org/OpenNI/ProductionNode.java b/Wrappers/OpenNI.java/src/org/OpenNI/ProductionNode.java -index ac98ee1..0fc7451 100644 ---- a/Wrappers/OpenNI.java/src/org/OpenNI/ProductionNode.java -+++ b/Wrappers/OpenNI.java/src/org/OpenNI/ProductionNode.java -@@ -30,7 +30,9 @@ public class ProductionNode extends NodeWrapper - - public static ProductionNode fromNative(long hNode) throws GeneralException - { -- return Context.createProductionNodeFromNative(hNode); -+ ProductionNode node = Context.createProductionNodeFromNative(hNode); -+ NativeMethods.xnProductionNodeRelease(hNode); -+ return node; - } - - public NodeInfo getInfo() throws GeneralException -diff --git a/Wrappers/OpenNI.jni/org_OpenNI_NativeMethods.cpp b/Wrappers/OpenNI.jni/org_OpenNI_NativeMethods.cpp -index 6f8b639..4eabdb1 100644 ---- a/Wrappers/OpenNI.jni/org_OpenNI_NativeMethods.cpp -+++ b/Wrappers/OpenNI.jni/org_OpenNI_NativeMethods.cpp -@@ -699,8 +699,10 @@ jobject CreateProductionNodeDescription(JNIEnv *env, const XnProductionNodeDescr - jclass cls = env->FindClass("org/OpenNI/ProductionNodeDescription"); - jmethodID clsCtor = env->GetMethodID(cls, "", "(ILjava/lang/String;Ljava/lang/String;Lorg/OpenNI/Version;)V"); - -+ jstring vendor = env->NewStringUTF(pDesc->strVendor); -+ jstring name = env->NewStringUTF(pDesc->strName); - jobject version = CreateVersion(env, &pDesc->Version); -- return env->NewObject(cls, clsCtor, pDesc->Type, pDesc->strVendor, pDesc->strName, version); -+ return env->NewObject(cls, clsCtor, pDesc->Type, vendor, name, version); - } - - //--------------------------------------------------------------------------- diff --git a/3rdparty/android/patches/openni/paths.patch b/3rdparty/android/patches/openni/paths.patch deleted file mode 100644 index 9973c3fd426..00000000000 --- a/3rdparty/android/patches/openni/paths.patch +++ /dev/null @@ -1,25 +0,0 @@ -Move configuration files to a more conventional location. - -From: Roman Donchenko - -This patch is originally from . ---- - Source/OpenNI/XnOpenNI.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Source/OpenNI/XnOpenNI.cpp b/Source/OpenNI/XnOpenNI.cpp -index 92063cf..de4d7e7 100644 ---- a/Source/OpenNI/XnOpenNI.cpp -+++ b/Source/OpenNI/XnOpenNI.cpp -@@ -6991,9 +6991,9 @@ XN_C_API XnStatus xnScriptNodeRun(XnNodeHandle hScript, XnEnumerationErrors* pEr - #if (XN_PLATFORM == XN_PLATFORM_WIN32) - #define XN_OPEN_NI_FILES_LOCATION "\\Data\\" - #elif (CE4100) -- #define XN_OPEN_NI_FILES_LOCATION "/usr/etc/ni/" -+ #define XN_OPEN_NI_FILES_LOCATION "/etc/openni/" - #elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX) -- #define XN_OPEN_NI_FILES_LOCATION "/var/lib/ni/" -+ #define XN_OPEN_NI_FILES_LOCATION "/etc/openni/" - #elif (XN_PLATFORM == XN_PLATFORM_ANDROID_ARM) - #define XN_OPEN_NI_FILES_LOCATION "/data/ni/" - #else diff --git a/3rdparty/android/patches/openni/series b/3rdparty/android/patches/openni/series deleted file mode 100644 index b334d6d98f0..00000000000 --- a/3rdparty/android/patches/openni/series +++ /dev/null @@ -1,12 +0,0 @@ -# This series applies on GIT commit 4054007325055c16675c6ebd178352954bb9f8c7 -paths.patch -format-args.patch -substitute-libusb.patch -dynamic-linker.patch -android-install-path-var.patch -java-bindings-bugs.patch -setschedparam.patch -usb-race-condition.patch -update-android-project.patch -useless-android-files.patch -build-flags.patch diff --git a/3rdparty/android/patches/openni/setschedparam.patch b/3rdparty/android/patches/openni/setschedparam.patch deleted file mode 100644 index 8135e17f9f2..00000000000 --- a/3rdparty/android/patches/openni/setschedparam.patch +++ /dev/null @@ -1,31 +0,0 @@ -Fix usage of pthread_setschedparam. - -From: Roman Donchenko - - ---- - Source/OpenNI/Linux/LinuxThreads.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Source/OpenNI/Linux/LinuxThreads.cpp b/Source/OpenNI/Linux/LinuxThreads.cpp -index 980236c..8b9b6b2 100644 ---- a/Source/OpenNI/Linux/LinuxThreads.cpp -+++ b/Source/OpenNI/Linux/LinuxThreads.cpp -@@ -157,7 +157,7 @@ XN_C_API XnStatus xnOSSetThreadPriority(XN_THREAD_HANDLE ThreadHandle, XnThreadP - memset(¶m, 0, sizeof(param)); - - #ifndef XN_PLATFORM_HAS_NO_SCHED_PARAM -- param.__sched_priority = 5; -+ param.sched_priority = 5; - #endif - nPolicy = SCHED_RR; - } -@@ -169,7 +169,7 @@ XN_C_API XnStatus xnOSSetThreadPriority(XN_THREAD_HANDLE ThreadHandle, XnThreadP - rc = pthread_setschedparam(*ThreadHandle, nPolicy, ¶m); - if (rc != 0) - { -- xnLogWarning(XN_MASK_OS, "Failed to set thread priority (%d)", errno); -+ xnLogWarning(XN_MASK_OS, "Failed to set thread priority (%d)", rc); - return (XN_STATUS_OS_THREAD_SET_PRIORITY_FAILED); - } - diff --git a/3rdparty/android/patches/openni/substitute-libusb.patch b/3rdparty/android/patches/openni/substitute-libusb.patch deleted file mode 100644 index c37715a48d9..00000000000 --- a/3rdparty/android/patches/openni/substitute-libusb.patch +++ /dev/null @@ -1,54846 +0,0 @@ -Replace the bundled libusb with a reference to our own. - -From: Roman Donchenko - - ---- - Platform/Android/jni/External/Android.mk | 5 - Platform/Android/jni/External/libusb-1.0.8/AUTHORS | 20 - .../Android/jni/External/libusb-1.0.8/Android.mk | 28 - Platform/Android/jni/External/libusb-1.0.8/COPYING | 504 - - .../Android/jni/External/libusb-1.0.8/ChangeLog | 1853 --- - Platform/Android/jni/External/libusb-1.0.8/INSTALL | 234 - .../Android/jni/External/libusb-1.0.8/Makefile.am | 27 - .../Android/jni/External/libusb-1.0.8/Makefile.in | 802 - - Platform/Android/jni/External/libusb-1.0.8/NEWS | 56 - Platform/Android/jni/External/libusb-1.0.8/PORTING | 95 - Platform/Android/jni/External/libusb-1.0.8/README | 21 - Platform/Android/jni/External/libusb-1.0.8/THANKS | 8 - Platform/Android/jni/External/libusb-1.0.8/TODO | 9 - .../Android/jni/External/libusb-1.0.8/aclocal.m4 | 8984 -------------- - Platform/Android/jni/External/libusb-1.0.8/compile | 142 - .../Android/jni/External/libusb-1.0.8/config.guess | 1545 -- - .../Android/jni/External/libusb-1.0.8/config.h.in | 98 - .../Android/jni/External/libusb-1.0.8/config.sub | 1676 --- - .../Android/jni/External/libusb-1.0.8/configure |13264 -------------------- - .../Android/jni/External/libusb-1.0.8/configure.ac | 131 - Platform/Android/jni/External/libusb-1.0.8/depcomp | 584 - - .../jni/External/libusb-1.0.8/doc/Makefile.am | 10 - .../jni/External/libusb-1.0.8/doc/Makefile.in | 374 - - .../jni/External/libusb-1.0.8/doc/doxygen.cfg.in | 1294 -- - .../jni/External/libusb-1.0.8/examples/Makefile.am | 13 - .../jni/External/libusb-1.0.8/examples/Makefile.in | 533 - - .../jni/External/libusb-1.0.8/examples/dpfp.c | 507 - - .../External/libusb-1.0.8/examples/dpfp_threaded.c | 545 - - .../jni/External/libusb-1.0.8/examples/lsusb.c | 64 - .../Android/jni/External/libusb-1.0.8/install-sh | 507 - - .../jni/External/libusb-1.0.8/libusb-1.0.pc.in | 11 - .../jni/External/libusb-1.0.8/libusb/Makefile.am | 21 - .../jni/External/libusb-1.0.8/libusb/Makefile.in | 637 - - .../jni/External/libusb-1.0.8/libusb/config.h | 5 - .../jni/External/libusb-1.0.8/libusb/core.c | 1583 -- - .../jni/External/libusb-1.0.8/libusb/descriptor.c | 719 - - .../Android/jni/External/libusb-1.0.8/libusb/io.c | 2313 --- - .../jni/External/libusb-1.0.8/libusb/libusb.h | 1241 -- - .../jni/External/libusb-1.0.8/libusb/libusbi.h | 809 - - .../External/libusb-1.0.8/libusb/os/darwin_usb.c | 1513 -- - .../External/libusb-1.0.8/libusb/os/darwin_usb.h | 161 - .../External/libusb-1.0.8/libusb/os/linux_usbfs.c | 2211 --- - .../External/libusb-1.0.8/libusb/os/linux_usbfs.h | 138 - .../jni/External/libusb-1.0.8/libusb/sync.c | 311 - .../Android/jni/External/libusb-1.0.8/ltmain.sh | 8406 ------------- - Platform/Android/jni/External/libusb-1.0.8/missing | 367 - - Platform/Android/jni/OpenNI/Android.mk | 13 - .../Android/jni/Samples/NiSimpleRead/Android.mk | 2 - .../jni/Samples/NiSimpleSkeleton/Android.mk | 2 - Platform/Android/jni/Utils/niLicense/Android.mk | 2 - Platform/Android/jni/Utils/niReg/Android.mk | 2 - 51 files changed, 6 insertions(+), 54394 deletions(-) - delete mode 100644 Platform/Android/jni/External/Android.mk - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/AUTHORS - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/Android.mk - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/COPYING - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/ChangeLog - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/INSTALL - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/Makefile.am - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/Makefile.in - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/NEWS - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/PORTING - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/README - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/THANKS - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/TODO - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/aclocal.m4 - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/compile - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/config.guess - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/config.h.in - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/config.sub - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/configure - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/configure.ac - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/depcomp - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/doc/Makefile.am - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/doc/Makefile.in - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/doc/doxygen.cfg.in - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/examples/Makefile.am - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/examples/Makefile.in - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/examples/dpfp.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/examples/dpfp_threaded.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/examples/lsusb.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/install-sh - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb-1.0.pc.in - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/Makefile.am - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/Makefile.in - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/config.h - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/core.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/descriptor.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/io.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/libusb.h - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/libusbi.h - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/os/darwin_usb.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/os/darwin_usb.h - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/os/linux_usbfs.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/os/linux_usbfs.h - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/libusb/sync.c - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/ltmain.sh - delete mode 100644 Platform/Android/jni/External/libusb-1.0.8/missing - -diff --git a/Platform/Android/jni/External/Android.mk b/Platform/Android/jni/External/Android.mk -deleted file mode 100644 -index 835b0ff..0000000 ---- a/Platform/Android/jni/External/Android.mk -+++ /dev/null -@@ -1,5 +0,0 @@ --# OpenNI Android makefile. --# -- --include $(call all-subdir-makefiles) -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/AUTHORS b/Platform/Android/jni/External/libusb-1.0.8/AUTHORS -deleted file mode 100644 -index dc0e053..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/AUTHORS -+++ /dev/null -@@ -1,20 +0,0 @@ --Copyright (C) 2007-2009 Daniel Drake --Copyright (c) 2001 Johannes Erdfelt --Copyright (C) 2008-2010 Nathan Hjelm -- --Other contributors: --Alex Vatchenko --Artem Egorkine --Aurelien Jarno --Bastien Nocera --David Engraf --David Moore --Felipe Balbi --Hans Ulrich Niedermann --Ludovic Rousseau --Martin Koegler --Mikhail Gusarov --Rob Walker --Toby Peterson --Vasily Khoruzhick -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/Android.mk b/Platform/Android/jni/External/libusb-1.0.8/Android.mk -deleted file mode 100644 -index faf4ee1..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/Android.mk -+++ /dev/null -@@ -1,28 +0,0 @@ --# OpenNI Android makefile. --# libusb.so --# -- --LOCAL_PATH:= $(call my-dir) --include $(CLEAR_VARS) -- --LOCAL_MODULE_TAGS := optional -- --LOCAL_SRC_FILES:= \ -- libusb/core.c \ -- libusb/descriptor.c \ -- libusb/io.c \ -- libusb/sync.c \ -- libusb/os/linux_usbfs.c -- -- --LOCAL_C_INCLUDES += \ -- $(LOCAL_PATH)/libusb/ \ -- $(LOCAL_PATH)/libusb/os/ \ -- --LOCAL_PREBUILT_LIBS := libc -- --LOCAL_CFLAGS := -fvisibility=default # just a reminder. if it's "hidden" - it doesn't link! -- --LOCAL_MODULE := libusb -- --include $(BUILD_SHARED_LIBRARY) -diff --git a/Platform/Android/jni/External/libusb-1.0.8/COPYING b/Platform/Android/jni/External/libusb-1.0.8/COPYING -deleted file mode 100644 -index 5ab7695..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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/Platform/Android/jni/External/libusb-1.0.8/ChangeLog b/Platform/Android/jni/External/libusb-1.0.8/ChangeLog -deleted file mode 100644 -index a438108..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/ChangeLog -+++ /dev/null -@@ -1,1853 +0,0 @@ --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/Platform/Android/jni/External/libusb-1.0.8/INSTALL b/Platform/Android/jni/External/libusb-1.0.8/INSTALL -deleted file mode 100644 -index 5458714..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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/Platform/Android/jni/External/libusb-1.0.8/Makefile.am b/Platform/Android/jni/External/libusb-1.0.8/Makefile.am -deleted file mode 100644 -index 1b65a92..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/Makefile.am -+++ /dev/null -@@ -1,27 +0,0 @@ --AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip --ACLOCAL_AMFLAGS = -I m4 --DISTCLEANFILES = ChangeLog libusb-1.0.pc --EXTRA_DIST = TODO PORTING --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) dsd_,libusb@frs.sourceforge.net:/home/frs/project/l/li/libusb/libusb-1.0/ -- rm -rf $(reldir) -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/Makefile.in b/Platform/Android/jni/External/libusb-1.0.8/Makefile.in -deleted file mode 100644 -index 172434e..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/Makefile.in -+++ /dev/null -@@ -1,802 +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)/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@ --AM_LDFLAGS = @AM_LDFLAGS@ --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@ --LTLIBOBJS = @LTLIBOBJS@ --MAKEINFO = @MAKEINFO@ --MKDIR_P = @MKDIR_P@ --NM = @NM@ --NMEDIT = @NMEDIT@ --OBJDUMP = @OBJDUMP@ --OBJEXT = @OBJEXT@ --OS_DARWIN = @OS_DARWIN@ --OS_LINUX = @OS_LINUX@ --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@ --RANLIB = @RANLIB@ --SED = @SED@ --SET_MAKE = @SET_MAKE@ --SHELL = @SHELL@ --STRIP = @STRIP@ --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@ --lt_ECHO = @lt_ECHO@ --lt_age = @lt_age@ --lt_major = @lt_major@ --lt_revision = @lt_revision@ --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 = ChangeLog libusb-1.0.pc --EXTRA_DIST = TODO PORTING --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." --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) dsd_,libusb@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/Platform/Android/jni/External/libusb-1.0.8/NEWS b/Platform/Android/jni/External/libusb-1.0.8/NEWS -deleted file mode 100644 -index 42c232c..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/NEWS -+++ /dev/null -@@ -1,56 +0,0 @@ --This file lists notable changes in each release. For the full history of all --changes, see ChangeLog. -- --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/Platform/Android/jni/External/libusb-1.0.8/PORTING b/Platform/Android/jni/External/libusb-1.0.8/PORTING -deleted file mode 100644 -index 7070784..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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/Platform/Android/jni/External/libusb-1.0.8/README b/Platform/Android/jni/External/libusb-1.0.8/README -deleted file mode 100644 -index eefe5ee..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/README -+++ /dev/null -@@ -1,21 +0,0 @@ --libusb --====== -- --libusb is a library for USB device access from Linux 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.sourceforge.net -- --Developers will wish to consult the API documentation: --http://libusb.sourceforge.net/api-1.0/ -- --Use the mailing list for questions, comments, etc: --https://sourceforge.net/mailarchive/forum.php?forum_name=libusb-devel -- --- Daniel Drake --(use the mailing list rather than mailing developers directly) -diff --git a/Platform/Android/jni/External/libusb-1.0.8/THANKS b/Platform/Android/jni/External/libusb-1.0.8/THANKS -deleted file mode 100644 -index d926126..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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/Platform/Android/jni/External/libusb-1.0.8/TODO b/Platform/Android/jni/External/libusb-1.0.8/TODO -deleted file mode 100644 -index 6c162a3..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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/Platform/Android/jni/External/libusb-1.0.8/aclocal.m4 b/Platform/Android/jni/External/libusb-1.0.8/aclocal.m4 -deleted file mode 100644 -index a65a6c8..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/aclocal.m4 -+++ /dev/null -@@ -1,8984 +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.65],, --[m4_warning([this file was generated for autoconf 2.65. --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 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 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 56 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_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 -- --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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "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 --_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 --_LT_PROG_ECHO_BACKSLASH -- --case $host_os in --aix3*) -- # AIX sometimes has problems with the GCC collect2 program. For some -- # reason, if we set the COLLECT_NAMES environment variable, the problems -- # vanish in a puff of smoke. -- if test "X${COLLECT_NAMES+set}" != Xset; then -- COLLECT_NAMES= -- export COLLECT_NAMES -- fi -- ;; --esac -- --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --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' -- --# 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_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 "X$][$1" | $Xsed -e "$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 "X$" | $Xsed -e "$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' -- --# Quote evaled strings. --for var in lt_decl_all_varnames([[ \ --]], lt_decl_quote_varnames); do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -- *[[\\\\\\\`\\"\\\$]]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$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 "X\\\\\$\$var"\` in -- *[[\\\\\\\`\\"\\\$]]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" -- ;; -- *) -- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" -- ;; -- esac --done -- --# Fix-up fallback echo if it was mangled by the above quoting rules. --case \$lt_ECHO in --*'\\\[$]0 --fallback-echo"')dnl " -- lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` -- ;; --esac -- --_LT_OUTPUT_LIBTOOL_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]) --cat >"$CONFIG_LT" <<_LTEOF --#! $SHELL --# Generated by $as_me. --# Run this file to recreate a libtool stub with the current configuration. -- --lt_cl_silent=false --SHELL=\${CONFIG_SHELL-$SHELL} --_LTEOF -- --cat >>"$CONFIG_LT" <<\_LTEOF --AS_SHELL_SANITIZE --_AS_PREPARE -- --exec AS_MESSAGE_FD>&1 --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) 2008 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. --if test "$no_create" != yes; then -- 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) --fi --])# 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)]) --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], []) -- -- --# _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" -- ]) -- 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" != ":"; 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 -- _LT_TAGVAR(whole_archive_flag_spec, $1)='' -- _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=echo -- _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], --[ifdef([AC_DIVERSION_NOTICE], -- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], -- [AC_DIVERT_PUSH(NOTICE)]) --$1 --AC_DIVERT_POP --])# _LT_SHELL_INIT -- -- --# _LT_PROG_ECHO_BACKSLASH --# ----------------------- --# Add some code to the start of the generated configure script which --# will find an echo command which doesn't interpret backslashes. --m4_defun([_LT_PROG_ECHO_BACKSLASH], --[_LT_SHELL_INIT([ --# Check that we are running under the correct shell. --SHELL=${CONFIG_SHELL-/bin/sh} -- --case X$lt_ECHO in --X*--fallback-echo) -- # Remove one level of quotation (which was required for Make). -- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` -- ;; --esac -- --ECHO=${lt_ECHO-echo} --if test "X[$]1" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift --elif test "X[$]1" = X--fallback-echo; then -- # Avoid inline document here, it may be left over -- : --elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then -- # Yippee, $ECHO works! -- : --else -- # Restart under the correct shell. -- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} --fi -- --if test "X[$]1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat <<_LT_EOF --[$]* --_LT_EOF -- exit 0 --fi -- --# 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 -- --if test -z "$lt_ECHO"; then -- if test "X${echo_test_string+set}" != Xset; then -- # find a string as large as possible, as long as the shell can cope with it -- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do -- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... -- if { echo_test_string=`eval $cmd`; } 2>/dev/null && -- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null -- then -- break -- fi -- done -- fi -- -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- : -- else -- # The Solaris, AIX, and Digital Unix default echo programs unquote -- # backslashes. This makes it impossible to quote backslashes using -- # echo "$something" | sed 's/\\/\\\\/g' -- # -- # So, first we look for a working echo in the user's PATH. -- -- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- IFS="$lt_save_ifs" -- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && -- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && -- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$dir/echo" -- break -- fi -- done -- IFS="$lt_save_ifs" -- -- if test "X$ECHO" = Xecho; then -- # We didn't find a better echo, so look for alternatives. -- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # This shell has a builtin print -r that does the trick. -- ECHO='print -r' -- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && -- test "X$CONFIG_SHELL" != X/bin/ksh; then -- # If we have ksh, try running configure again with it. -- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -- export ORIGINAL_CONFIG_SHELL -- CONFIG_SHELL=/bin/ksh -- export CONFIG_SHELL -- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} -- else -- # Try using printf. -- ECHO='printf %s\n' -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # Cool, printf works -- : -- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL -- export CONFIG_SHELL -- SHELL="$CONFIG_SHELL" -- export SHELL -- ECHO="$CONFIG_SHELL [$]0 --fallback-echo" -- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$CONFIG_SHELL [$]0 --fallback-echo" -- else -- # maybe with a smaller string... -- prev=: -- -- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do -- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null -- then -- break -- fi -- prev="$cmd" -- done -- -- if test "$prev" != 'sed 50q "[$]0"'; then -- echo_test_string=`eval $prev` -- export echo_test_string -- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} -- else -- # Oops. We lost completely, so just stick with echo. -- ECHO=echo -- fi -- fi -- fi -- fi -- fi --fi -- --# Copy echo and quote the copy suitably for passing to libtool from --# the Makefile, instead of quoting the original, which is used later. --lt_ECHO=$ECHO --if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then -- lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" --fi -- --AC_SUBST(lt_ECHO) --]) --_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) --_LT_DECL([], [ECHO], [1], -- [An echo program that does not interpret 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 __oline__ "configure"' > conftest.$ac_ext -- if AC_TRY_EVAL(ac_compile); then -- if test "$lt_cv_prog_gnu_ld" = yes; then -- case `/usr/bin/file conftest.$ac_objext` in -- *32-bit*) -- LD="${LD-ld} -melf32bsmip" -- ;; -- *N32*) -- LD="${LD-ld} -melf32bmipn32" -- ;; -- *64-bit*) -- LD="${LD-ld} -melf64bmip" -- ;; -- esac -- else -- case `/usr/bin/file conftest.$ac_objext` in -- *32-bit*) -- LD="${LD-ld} -32" -- ;; -- *N32*) -- LD="${LD-ld} -n32" -- ;; -- *64-bit*) -- LD="${LD-ld} -64" -- ;; -- esac -- fi -- fi -- rm -rf conftest* -- ;; -- --x86_64-*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 --_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_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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -- (eval "$lt_compile" 2>conftest.err) -- ac_status=$? -- cat conftest.err >&AS_MESSAGE_LOG_FD -- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD -- if (exit $ac_status) && test -s "$ac_outfile"; then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -- $2=yes -- fi -- fi -- $RM conftest* --]) -- --if test x"[$]$2" = xyes; then -- 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if diff conftest.exp conftest.er2 >/dev/null; then -- $2=yes -- fi -- else -- $2=yes -- fi -- fi -- $RM -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; -- ;; -- -- 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"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ -- = "XX$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 __oline__ "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 -- --void fnord() { int i=42;} --int main () --{ -- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -- int status = $lt_dlunknown; -- -- if (self) -- { -- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -- /* dlclose (self); */ -- } -- else -- puts (dlerror ()); -- -- 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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -- (eval "$lt_compile" 2>out/conftest.err) -- ac_status=$? -- cat out/conftest.err >&AS_MESSAGE_LOG_FD -- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD -- if (exit $ac_status) && test -s out/conftest2.$ac_objext -- then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -- _LT_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 --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 -- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then -- # if the path contains ";" then we assume it to be the separator -- # otherwise default to the standard path separator (i.e. ":") - it is -- # assumed that no part of a normal pathname contains ";" but that should -- # okay in the real world where ";" in dirpaths is itself problematic. -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` -- else -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi -- # Ok, now we have the path, separated by spaces, we can step through it -- # and add multilib dir if necessary. -- lt_tmp_lt_search_path_spec= -- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` -- for lt_sys_path in $lt_search_path_spec; do -- if test -d "$lt_sys_path/$lt_multi_os_dir"; then -- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" -- else -- test -d "$lt_sys_path" && \ -- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" -- fi -- done -- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' --BEGIN {RS=" "; FS="/|\n";} { -- lt_foo=""; -- lt_count=0; -- for (lt_i = NF; lt_i > 0; lt_i--) { -- if ($lt_i != "" && $lt_i != ".") { -- if ($lt_i == "..") { -- lt_count++; -- } else { -- if (lt_count == 0) { -- lt_foo="/" $lt_i lt_foo; -- } else { -- lt_count--; -- } -- } -- } -- } -- if (lt_foo != "") { lt_freq[[lt_foo]]++; } -- if (lt_freq[[lt_foo]] == 1) { print lt_foo; } --}'` -- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` --else -- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" --fi]) --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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' -- ;; -- 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="/usr/lib /lib/w32api /lib /usr/local/lib" -- ;; -- mingw* | cegcc*) -- # MinGW DLLs use traditional 'lib' prefix -- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then -- # It is most probably a Windows format PATH printed by -- # mingw gcc, but we are running on Cygwin. Gcc prints its search -- # path with ; separators, and with drive letters. We can handle the -- # drive letters (cygwin fileutils understands them), so leave them, -- # especially as we might pass files found there to a mingw objdump, -- # which wouldn't understand a cygwinified path. Ahh. -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -- else -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi -- ;; -- pw32*) -- # pw32 DLLs use 'pw' prefix rather than 'lib' -- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -- ;; -- esac -- ;; -- -- *) -- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' -- ;; -- esac -- dynamic_linker='Win32 ld.exe' -- # FIXME: first we should search . and the directory the executable is in -- shlibpath_var=PATH -- ;; -- --darwin* | rhapsody*) -- dynamic_linker="$host_os dyld" -- version_type=darwin -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${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 -- ;; -- --hpux9* | hpux10* | hpux11*) -- # Give a soname corresponding to the major version so that dld.sl refuses to -- # link against other versions. -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- case $host_cpu in -- ia64*) -- shrext_cmds='.so' -- hardcode_into_libs=yes -- dynamic_linker="$host_os dld.so" -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- if test "X$HPUX_IA64_MODE" = X32; then -- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" -- else -- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" -- fi -- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -- ;; -- hppa*64*) -- shrext_cmds='.sl' -- hardcode_into_libs=yes -- dynamic_linker="$host_os dld.sl" -- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" -- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -- ;; -- *) -- shrext_cmds='.sl' -- dynamic_linker="$host_os dld.sl" -- shlibpath_var=SHLIB_PATH -- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- ;; -- esac -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -- postinstall_cmds='chmod 555 $lib' -- ;; -- --interix[[3-9]]*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- --irix5* | irix6* | nonstopux*) -- case $host_os in -- nonstopux*) version_type=nonstopux ;; -- *) -- if test "$lt_cv_prog_gnu_ld" = yes; then -- version_type=linux -- else -- version_type=irix -- fi ;; -- esac -- need_lib_prefix=no -- need_version=no -- soname_spec='${libname}${release}${shared_ext}$major' -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' -- case $host_os in -- irix5* | nonstopux*) -- libsuff= shlibsuff= -- ;; -- *) -- case $LD in # libtool.m4 will add one of these switches to LD -- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") -- libsuff= shlibsuff= libmagic=32-bit;; -- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") -- libsuff=32 shlibsuff=N32 libmagic=N32;; -- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") -- libsuff=64 shlibsuff=64 libmagic=64-bit;; -- *) libsuff= shlibsuff= libmagic=never-match;; -- esac -- ;; -- esac -- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH -- shlibpath_overrides_runpath=no -- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" -- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" -- hardcode_into_libs=yes -- ;; -- --# No shared lib support for Linux oldld, aout, or coff. --linux*oldld* | linux*aout* | linux*coff*) -- dynamic_linker=no -- ;; -- --# This must be Linux ELF. --linux* | k*bsd*-gnu) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- # Some binutils ld are patched to set DT_RUNPATH -- 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], -- [shlibpath_overrides_runpath=yes])]) -- LDFLAGS=$save_LDFLAGS -- libdir=$save_libdir -- -- # This implies no fast_install, which is unacceptable. -- # Some rework will be needed to allow for fast_install -- # before this can be enabled. -- hardcode_into_libs=yes -- -- # Append ld.so.conf contents to the search path -- if test -f /etc/ld.so.conf; then -- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -- fi -- -- # We used to test for /lib/ld.so.1 and disable shared libraries on -- # powerpc, because MkLinux only supported shared libraries with the -- # GNU dynamic linker. Since this was broken with cross compilers, -- # most powerpc-linux boxes support dynamic linking these days and -- # people can always --disable-shared, the test was removed, and we -- # assume the GNU/Linux dynamic linker is in use. -- dynamic_linker='GNU/Linux ld.so' -- ;; -- --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([], [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 -- --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 -- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' -- 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 -- ;; -- --hpux10.20* | hpux11*) -- lt_cv_file_magic_cmd=/usr/bin/file -- case $host_cpu in -- ia64*) -- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' -- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so -- ;; -- hppa*64*) -- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] -- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl -- ;; -- *) -- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' -- lt_cv_file_magic_test_file=/usr/lib/libc.sl -- ;; -- esac -- ;; -- --interix[[3-9]]*) -- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here -- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' -- ;; -- --irix5* | irix6* | nonstopux*) -- case $LD in -- *-32|*"-32 ") libmagic=32-bit;; -- *-n32|*"-n32 ") libmagic=N32;; -- *-64|*"-64 ") libmagic=64-bit;; -- *) libmagic=never-match;; -- esac -- lt_cv_deplibs_check_method=pass_all -- ;; -- --# This must be Linux ELF. --linux* | k*bsd*-gnu) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --netbsd*) -- 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. -- AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) -- 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:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) -- (eval "$ac_compile" 2>conftest.err) -- cat conftest.err >&AS_MESSAGE_LOG_FD -- (eval echo "\"\$as_me:__oline__: $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:__oline__: 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* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) -- # These system don't have libm, or don't need it -- ;; --*-ncr-sysv4.3*) -- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") -- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") -- ;; --*) -- AC_CHECK_LIB(m, cos, LIBM="-lm") -- ;; --esac --AC_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 -- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -- -- _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([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)= -- ;; -- 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) -- 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*) -- # IBM XL 8.0 on PPC -- _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*) -- # 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' -- ;; -- -- 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 -- 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) -- 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*) -- # 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*) -- # IBM XL C 8.0/Fortran 10.1 on PPC -- _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)='-Wl,' -- ;; -- *Sun\ F*) -- # 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)='' -- ;; -- 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*) -- _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 -- 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")) && ([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 -- if test "$with_gnu_ld" = yes; then -- # If archive_cmds runs LD, not CC, wlarc should be empty -- wlarc='${wl}' -- -- # Set some defaults for GNU ld with shared library support. These -- # are reset later if shared libraries are not supported. Putting them -- # here allows them to be overridden if necessary. -- runpath_var=LD_RUN_PATH -- _LT_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 -- *\ [[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.9.1, is reported --*** to be unable to reliably create shared libraries on AIX. --*** Therefore, libtool is disabling shared libraries support. If you --*** really care for shared libraries, you may want to modify your PATH --*** so that a non-GNU linker is found, and then restart. -- --_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(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 -- ;; -- -- 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) -- 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- tmp_addflag=' $pic_flag' -- ;; -- pgf77* | pgf90* | pgf95*) # 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- tmp_addflag=' $pic_flag -Mnomain' ;; -- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 -- tmp_addflag=' -i_dynamic' ;; -- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 -- tmp_addflag=' -i_dynamic -nofor_main' ;; -- ifc* | ifort*) # Intel Fortran compiler -- tmp_addflag=' -nofor_main' ;; -- lf95*) # Lahey Fortran 8.1 -- _LT_TAGVAR(whole_archive_flag_spec, $1)= -- tmp_sharedflag='--shared' ;; -- xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) -- tmp_sharedflag='-qmkshrobj' -- tmp_addflag= ;; -- 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; $ECHO \"$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*) -- # 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 $compiler_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 $compiler_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 -- 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")) && ([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 $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; 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' -- # Exported symbols can be pulled into shared objects from archives -- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -- _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 `$ECHO "X$deplibs" | $Xsed -e '\''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 -a "$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 -a "$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' -- ;; -- *) -- _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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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_MSG_CHECKING([whether -lc should be explicitly linked in]) -- $RM conftest* -- echo "$lt_simple_compile_test_code" > conftest.$ac_ext -- -- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then -- soname=conftest -- lib=conftest -- libobjs=conftest.$ac_objext -- deplibs= -- wl=$_LT_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_TAGVAR(archive_cmds_need_lc, $1)=no -- else -- _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* -- AC_MSG_RESULT([$_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_PROG_CXX --# ------------ --# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ --# compiler, we have our own version here. --m4_defun([_LT_PROG_CXX], --[ --pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) --AC_PROG_CXX --if test -n "$CXX" && ( test "X$CXX" != "Xno" && -- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || -- (test "X$CXX" != "Xg++"))) ; then -- AC_PROG_CXXCPP --else -- _lt_caught_CXX_error=yes --fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_CXX -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_CXX], []) -- -- --# _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], --[AC_REQUIRE([_LT_PROG_CXX])dnl --m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_DECL_EGREP])dnl -- --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(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 "\-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 $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; 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' -- # Exported symbols can be pulled into shared objects from archives -- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -- _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(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*) -- ;; -- -- 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; $ECHO "X$list" | $Xsed' -- ;; -- *) -- 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; $ECHO "X$list" | $Xsed' -- ;; -- *) -- 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" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -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) -- 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; $ECHO "X$list" | $Xsed' -- -- _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 | $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 | $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 | $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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' -- ;; -- *) # Version 6 will 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; $ECHO \"$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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -- ;; -- xl*) -- # 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; $ECHO \"$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='echo' -- -- # Archives containing C++ object files must be created using -- # "CC -xar", where "CC" is the Sun C++ compiler. This is -- # necessary to make sure instantiated templates are included -- # in the archive. -- _LT_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=echo -- 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" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -- ;; -- *) -- 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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${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 "\-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*) -- # 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='echo' -- -- # Archives containing C++ object files must be created using -- # "CC -xar", where "CC" is the Sun C++ compiler. This is -- # necessary to make sure instantiated templates are included -- # in the archive. -- _LT_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 "\-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 "\-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(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*) -- # 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_PROG_F77 --# ------------ --# Since AC_PROG_F77 is broken, in that it returns the empty string --# if there is no fortran compiler, we have our own version here. --m4_defun([_LT_PROG_F77], --[ --pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) --AC_PROG_F77 --if test -z "$F77" || test "X$F77" = "Xno"; then -- _lt_disable_F77=yes --fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_F77 -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_F77], []) -- -- --# _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_REQUIRE([_LT_PROG_F77])dnl --AC_LANG_PUSH(Fortran 77) -- --_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(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_PROG_FC --# ----------- --# Since AC_PROG_FC is broken, in that it returns the empty string --# if there is no fortran compiler, we have our own version here. --m4_defun([_LT_PROG_FC], --[ --pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) --AC_PROG_FC --if test -z "$FC" || test "X$FC" = "Xno"; then -- _lt_disable_FC=yes --fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_FC -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_FC], []) -- -- --# _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_REQUIRE([_LT_PROG_FC])dnl --AC_LANG_PUSH(Fortran) -- --_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(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 -- --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 "X${1}" | $Xsed -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 file --func_basename () --{ -- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$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 "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; -- *) func_stripname_result=`$ECHO "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "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 "X${1}" | $Xsed -e "$my_sed_long_opt"` -- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` --} -- --# func_lo2o object --func_lo2o () --{ -- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` --} -- --# func_xform libobj-or-source --func_xform () --{ -- func_xform_result=`$ECHO "X${1}" | $Xsed -e '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 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 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], [0], [Assembler program])dnl -- --test -z "$DLLTOOL" && DLLTOOL=dlltool --_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl -- --test -z "$OBJDUMP" && OBJDUMP=objdump --_LT_DECL([], [OBJDUMP], [0], [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 3017 ltversion.m4 --# This file is part of GNU Libtool -- --m4_define([LT_PACKAGE_VERSION], [2.2.6b]) --m4_define([LT_PACKAGE_REVISION], [1.3017]) -- --AC_DEFUN([LTVERSION_VERSION], --[macro_version='2.2.6b' --macro_revision='1.3017' --_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 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 4 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_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) --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])]) -- --# 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])]) -- --# 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/Platform/Android/jni/External/libusb-1.0.8/compile b/Platform/Android/jni/External/libusb-1.0.8/compile -deleted file mode 100644 -index 1b1d232..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/compile -+++ /dev/null -@@ -1,142 +0,0 @@ --#! /bin/sh --# Wrapper for compilers which do not understand `-c -o'. -- --scriptversion=2005-05-14.22 -- --# Copyright (C) 1999, 2000, 2003, 2004, 2005 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, 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. -- --# 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 -e 's|^.*/||' -e '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 -- mv "$cofile" "$ofile" --elif test -f "${cofile}bj"; then -- 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-end: "$" --# End: -diff --git a/Platform/Android/jni/External/libusb-1.0.8/config.guess b/Platform/Android/jni/External/libusb-1.0.8/config.guess -deleted file mode 100644 -index 2313a17..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/config.guess -+++ /dev/null -@@ -1,1545 +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 --# Free Software Foundation, Inc. -- --timestamp='2008-01-23' -- --# 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 to . Submit a context --# diff and a properly formatted ChangeLog entry. --# --# This script attempts to guess a canonical system name similar to --# config.sub. If it succeeds, it prints the system name on stdout, and --# exits with 0. Otherwise, it exits with 1. --# --# The plan is that this can be called by configure scripts if you --# don't specify an explicit build system type. -- --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 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' 1 2 15 -- --# CC_FOR_BUILD -- compiler used by this script. Note that the use of a --# compiler to aid in system detection is discouraged as it requires --# temporary files to be created and, as you can see below, it is a --# headache to deal with in a portable fashion. -- --# 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" 1 2 13 15 ; --: ${TMPDIR=/tmp} ; -- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || -- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || -- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || -- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; --dummy=$tmp/dummy ; --tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; --case $CC_FOR_BUILD,$HOST_CC,$CC in -- ,,) echo "int x;" > $dummy.c ; -- for c in cc gcc c89 c99 ; do -- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then -- CC_FOR_BUILD="$c"; break ; -- fi ; -- done ; -- 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 -- --if [ "${UNAME_SYSTEM}" = "Linux" ] ; then -- 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 -- LIBC=gnu -- #endif --EOF -- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep LIBC= | sed -e 's: ::g'` --fi -- --# 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 __ELF__ >/dev/null -- 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 ;; -- 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:SunOS:5.*:* | i86xen:SunOS:5.*:*) -- echo i386-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:*:[456]) -- 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 __LP64__ >/dev/null -- 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*:[3456]*) -- case ${UNAME_MACHINE} in -- x86) -- echo i586-pc-interix${UNAME_RELEASE} -- exit ;; -- EM64T | authenticamd) -- 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 ;; -- 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-gnu`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/[-(].*//'`-gnu -- exit ;; -- i*86:Minix:*:*) -- echo ${UNAME_MACHINE}-pc-minix -- 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 ;; -- 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:*:*) -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -- #undef CPU -- #undef mips -- #undef mipsel -- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -- CPU=mipsel -- #else -- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -- CPU=mips -- #else -- CPU= -- #endif -- #endif --EOF -- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -- /^CPU/{ -- s: ::g -- p -- }'`" -- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } -- ;; -- mips64:Linux:*:*) -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -- #undef CPU -- #undef mips64 -- #undef mips64el -- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -- CPU=mips64el -- #else -- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -- CPU=mips64 -- #else -- CPU= -- #endif -- #endif --EOF -- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -- /^CPU/{ -- s: ::g -- p -- }'`" -- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } -- ;; -- or32:Linux:*:*) -- echo or32-unknown-linux-${LIBC} -- exit ;; -- ppc:Linux:*:*) -- echo powerpc-unknown-linux-${LIBC} -- exit ;; -- ppc64:Linux:*:*) -- echo powerpc64-unknown-linux-${LIBC} -- 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 ld.so.1 >/dev/null -- if test "$?" = 0 ; then LIBC="gnulibc1" ; fi -- echo ${UNAME_MACHINE}-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 ;; -- parisc64:Linux:*:* | hppa64:Linux:*:*) -- echo hppa64-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 ;; -- 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:Linux:*:*) -- # The BFD linker knows what the default object file format is, so -- # first see if it will tell us. cd to the root directory to prevent -- # problems with other programs or directories called `ld' in the path. -- # Set LC_ALL=C to ensure ld outputs messages in English. -- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ -- | sed -ne '/supported targets:/!d -- s/[ ][ ]*/ /g -- s/.*supported targets: *// -- s/ .*// -- p'` -- case "$ld_supported_targets" in -- elf32-i386) -- TENTATIVE="${UNAME_MACHINE}-pc-linux-${LIBC}" -- ;; -- a.out-i386-linux) -- echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout" -- exit ;; -- coff-i386) -- echo "${UNAME_MACHINE}-pc-linux-${LIBC}coff" -- exit ;; -- "") -- # Either a pre-BFD a.out linker (linux-gnuoldld) or -- # one that does not give us useful --help. -- echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld" -- exit ;; -- esac -- # This should get integrated into the C code below, but now we hack -- if [ "$LIBC" != "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi -- # Determine whether the default compiler is a.out or elf -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -- #include -- #ifdef __ELF__ -- # ifdef __GLIBC__ -- # if __GLIBC__ >= 2 -- LIBC=gnu -- # else -- LIBC=gnulibc1 -- # endif -- # else -- LIBC=gnulibc1 -- # endif -- #else -- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) -- LIBC=gnu -- #else -- LIBC=gnuaout -- #endif -- #endif -- #ifdef __dietlibc__ -- LIBC=dietlibc -- #endif --EOF -- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -- /^LIBC/{ -- s: ::g -- p -- }'`" -- test x"${LIBC}" != x && { -- echo "${UNAME_MACHINE}-pc-linux-${LIBC}" -- exit -- } -- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } -- ;; -- i*86:DYNIX/ptx:4*:*) -- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. -- # earlier versions are messed up and put the nodename in both -- # sysname and nodename. -- echo i386-sequent-sysv4 -- exit ;; -- 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.0*:*) -- echo i386-unknown-lynxos${UNAME_RELEASE} -- exit ;; -- i*86:*DOS:*:*) -- echo ${UNAME_MACHINE}-pc-msdosdjgpp -- exit ;; -- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) -- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` -- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then -- 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 i386. -- echo i386-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; } ;; -- 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.0*:*) -- 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 ;; -- 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 -- 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 ;; -- 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 ;; --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/Platform/Android/jni/External/libusb-1.0.8/config.h.in b/Platform/Android/jni/External/libusb-1.0.8/config.h.in -deleted file mode 100644 -index 45e0db7..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/config.h.in -+++ /dev/null -@@ -1,98 +0,0 @@ --/* config.h.in. Generated from configure.ac by autoheader. */ -- --/* Default visibility */ --#undef API_EXPORTED -- --/* 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 header file. */ --#undef HAVE_INTTYPES_H -- --/* Define to 1 if you have the `rt' library (-lrt). */ --#undef HAVE_LIBRT -- --/* Define to 1 if you have the header file. */ --#undef HAVE_MEMORY_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 you have the header file. */ --#undef HAVE_SYS_STAT_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 -- --/* 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 -- --/* Define to 1 if you have the ANSI C header files. */ --#undef STDC_HEADERS -- --/* Backend handles timeout */ --#undef USBI_OS_HANDLES_TIMEOUT -- --/* 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/Platform/Android/jni/External/libusb-1.0.8/config.sub b/Platform/Android/jni/External/libusb-1.0.8/config.sub -deleted file mode 100644 -index ba16ebf..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/config.sub -+++ /dev/null -@@ -1,1676 +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 --# Free Software Foundation, Inc. -- --timestamp='2008-01-16' -- --# 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 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. -- --# 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 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-dietlibc | linux-newlib* | linux-uclibc* | \ -- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ -- storm-chaos* | os2-emx* | rtmk-nova*) -- os=-$maybe_os -- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` -- ;; -- *) -- 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) -- os= -- basic_machine=$1 -- ;; -- -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 \ -- | m32c | m32r | m32rle | m68000 | m68k | m88k \ -- | maxq | mb | microblaze | mcore | mep \ -- | mips | mipsbe | mipseb | mipsel | mipsle \ -- | mips16 \ -- | mips64 | mips64el \ -- | mips64vr | mips64vrel \ -- | mips64orion | mips64orionel \ -- | mips64vr4100 | mips64vr4100el \ -- | mips64vr4300 | mips64vr4300el \ -- | mips64vr5000 | mips64vr5000el \ -- | mips64vr5900 | mips64vr5900el \ -- | mipsisa32 | mipsisa32el \ -- | mipsisa32r2 | mipsisa32r2el \ -- | mipsisa64 | mipsisa64el \ -- | mipsisa64r2 | mipsisa64r2el \ -- | mipsisa64sb1 | mipsisa64sb1el \ -- | mipsisa64sr71k | mipsisa64sr71kel \ -- | mipstx39 | mipstx39el \ -- | mn10200 | mn10300 \ -- | mt \ -- | msp430 \ -- | nios | nios2 \ -- | ns16k | ns32k \ -- | or32 \ -- | pdp10 | pdp11 | pj | pjl \ -- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ -- | pyramid \ -- | score \ -- | sh | sh[1234] | sh[24]a | sh[24]a*eb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ -- | sh64 | sh64le \ -- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ -- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -- | spu | strongarm \ -- | tahoe | thumb | tic4x | tic80 | tron \ -- | v850 | v850e \ -- | we32k \ -- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ -- | z8k) -- basic_machine=$basic_machine-unknown -- ;; -- m6811 | m68hc11 | m6812 | m68hc12) -- # 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-* | c54x-* | c55x-* | c6x-* \ -- | clipper-* | craynv-* | cydra-* \ -- | d10v-* | d30v-* | dlx-* \ -- | elxsi-* \ -- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ -- | h8300-* | h8500-* \ -- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -- | i*86-* | i860-* | i960-* | ia64-* \ -- | ip2k-* | iq2000-* \ -- | m32c-* | m32r-* | m32rle-* \ -- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -- | m88110-* | m88k-* | maxq-* | mcore-* \ -- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -- | mips16-* \ -- | mips64-* | mips64el-* \ -- | mips64vr-* | mips64vrel-* \ -- | mips64orion-* | mips64orionel-* \ -- | mips64vr4100-* | mips64vr4100el-* \ -- | mips64vr4300-* | mips64vr4300el-* \ -- | mips64vr5000-* | mips64vr5000el-* \ -- | mips64vr5900-* | mips64vr5900el-* \ -- | mipsisa32-* | mipsisa32el-* \ -- | mipsisa32r2-* | mipsisa32r2el-* \ -- | mipsisa64-* | mipsisa64el-* \ -- | mipsisa64r2-* | mipsisa64r2el-* \ -- | mipsisa64sb1-* | mipsisa64sb1el-* \ -- | mipsisa64sr71k-* | mipsisa64sr71kel-* \ -- | mipstx39-* | mipstx39el-* \ -- | mmix-* \ -- | mt-* \ -- | msp430-* \ -- | nios-* | nios2-* \ -- | none-* | np1-* | ns16k-* | ns32k-* \ -- | orion-* \ -- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ -- | pyramid-* \ -- | romp-* | rs6000-* \ -- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]a*eb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ -- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ -- | sparclite-* \ -- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ -- | tahoe-* | thumb-* \ -- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ -- | tron-* \ -- | v850-* | v850e-* | vax-* \ -- | we32k-* \ -- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -- | xstormy16-* | xtensa*-* \ -- | ymp-* \ -- | z8k-*) -- ;; -- # Recognize the 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 -- ;; -- 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 -- ;; -- c90) -- basic_machine=c90-cray -- os=-unicos -- ;; -- 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 -- ;; -- 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 -- ;; -- 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 -- ;; -- 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 -- ;; -- tic54x | c54x*) -- basic_machine=tic54x-unknown -- os=-coff -- ;; -- tic55x | c55x*) -- basic_machine=tic55x-unknown -- os=-coff -- ;; -- tic6x | c6x*) -- basic_machine=tic6x-unknown -- os=-coff -- ;; -- 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 -- ;; -- 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[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. -- -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* | -sunos | -sunos[34]*\ -- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ -- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ -- | -aos* \ -- | -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* \ -- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ -- | -uxpv* | -beos* | -mpeix* | -udk* \ -- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ -- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -irx*) -- # 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 -- ;; -- -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 -- ;; -- # 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 -- ;; -- -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/Platform/Android/jni/External/libusb-1.0.8/configure b/Platform/Android/jni/External/libusb-1.0.8/configure -deleted file mode 100644 -index fed317a..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/configure -+++ /dev/null -@@ -1,13264 +0,0 @@ --#! /bin/sh --# Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.65 for libusb 1.0.8. --# --# --# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, --# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. --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 \$(( 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. -- BASH_ENV=/dev/null -- ENV=/dev/null -- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -- export CONFIG_SHELL -- exec "$CONFIG_SHELL" "$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 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 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=$?; test $as_status -eq 0 && as_status=1 -- if test "$3"; then -- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 -- fi -- $as_echo "$as_me: error: $1" >&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'" -- -- -- --# Check that we are running under the correct shell. --SHELL=${CONFIG_SHELL-/bin/sh} -- --case X$lt_ECHO in --X*--fallback-echo) -- # Remove one level of quotation (which was required for Make). -- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` -- ;; --esac -- --ECHO=${lt_ECHO-echo} --if test "X$1" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift --elif test "X$1" = X--fallback-echo; then -- # Avoid inline document here, it may be left over -- : --elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then -- # Yippee, $ECHO works! -- : --else -- # Restart under the correct shell. -- exec $SHELL "$0" --no-reexec ${1+"$@"} --fi -- --if test "X$1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat <<_LT_EOF --$* --_LT_EOF -- exit 0 --fi -- --# 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 -- --if test -z "$lt_ECHO"; then -- if test "X${echo_test_string+set}" != Xset; then -- # find a string as large as possible, as long as the shell can cope with it -- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do -- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... -- if { echo_test_string=`eval $cmd`; } 2>/dev/null && -- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null -- then -- break -- fi -- done -- fi -- -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- : -- else -- # The Solaris, AIX, and Digital Unix default echo programs unquote -- # backslashes. This makes it impossible to quote backslashes using -- # echo "$something" | sed 's/\\/\\\\/g' -- # -- # So, first we look for a working echo in the user's PATH. -- -- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- IFS="$lt_save_ifs" -- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && -- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && -- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$dir/echo" -- break -- fi -- done -- IFS="$lt_save_ifs" -- -- if test "X$ECHO" = Xecho; then -- # We didn't find a better echo, so look for alternatives. -- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # This shell has a builtin print -r that does the trick. -- ECHO='print -r' -- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && -- test "X$CONFIG_SHELL" != X/bin/ksh; then -- # If we have ksh, try running configure again with it. -- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -- export ORIGINAL_CONFIG_SHELL -- CONFIG_SHELL=/bin/ksh -- export CONFIG_SHELL -- exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} -- else -- # Try using printf. -- ECHO='printf %s\n' -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # Cool, printf works -- : -- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL -- export CONFIG_SHELL -- SHELL="$CONFIG_SHELL" -- export SHELL -- ECHO="$CONFIG_SHELL $0 --fallback-echo" -- elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$CONFIG_SHELL $0 --fallback-echo" -- else -- # maybe with a smaller string... -- prev=: -- -- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do -- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null -- then -- break -- fi -- prev="$cmd" -- done -- -- if test "$prev" != 'sed 50q "$0"'; then -- echo_test_string=`eval $prev` -- export echo_test_string -- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} -- else -- # Oops. We lost completely, so just stick with echo. -- ECHO=echo -- fi -- fi -- fi -- fi -- fi --fi -- --# Copy echo and quote the copy suitably for passing to libtool from --# the Makefile, instead of quoting the original, which is used later. --lt_ECHO=$ECHO --if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then -- lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" --fi -- -- -- -- --test -n "$DJDIR" || exec 7<&0 &1 -- --# Name of the host. --# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, --# so uname gets run too. --ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -- --# --# 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.8' --PACKAGE_STRING='libusb 1.0.8' --PACKAGE_BUGREPORT='' --PACKAGE_URL='' -- --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 --AM_LDFLAGS --AM_CFLAGS --VISIBILITY_CFLAGS --BUILD_EXAMPLES_FALSE --BUILD_EXAMPLES_TRUE --lt_age --lt_revision --lt_major --OS_DARWIN_FALSE --OS_DARWIN_TRUE --OS_LINUX_FALSE --OS_LINUX_TRUE --OS_DARWIN --OS_LINUX --CPP --OTOOL64 --OTOOL --LIPO --NMEDIT --DSYMUTIL --lt_ECHO --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 --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_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=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.8 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.8:";; -- 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-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 the package provider. --_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.8 --generated by GNU Autoconf 2.65 -- --Copyright (C) 2009 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; test "x$as_lineno_stack" = x && { as_lineno=; 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; test "x$as_lineno_stack" = x && { as_lineno=; 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 { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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; test "x$as_lineno_stack" = x && { as_lineno=; 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; } >/dev/null && { -- 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; test "x$as_lineno_stack" = x && { as_lineno=; 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; test "x$as_lineno_stack" = x && { as_lineno=; 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 { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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; test "x$as_lineno_stack" = x && { as_lineno=; 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 { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 --$as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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.$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;} -- ;; --esac -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 --$as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- --} # ac_fn_c_check_header_mongrel -- --# ac_fn_c_check_decl LINENO SYMBOL VAR --# ------------------------------------ --# Tests whether SYMBOL is declared, 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_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5 --$as_echo_n "checking whether $2 is declared... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- $as_echo_n "(cached) " >&6 --else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --int --main () --{ --#ifndef $2 -- (void) $2; --#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; test "x$as_lineno_stack" = x && { as_lineno=; 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.8, which was --generated by GNU Autoconf 2.65. 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 -- -- cat <<\_ASBOX --## ---------------- ## --## Cache variables. ## --## ---------------- ## --_ASBOX -- echo -- # The following way of writing the cache mishandles newlines in values, --( -- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do -- eval ac_val=\$$ac_var -- case $ac_val in #( -- *${as_nl}*) -- case $ac_var in #( -- *_cv_*) { $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 -- -- cat <<\_ASBOX --## ----------------- ## --## Output variables. ## --## ----------------- ## --_ASBOX -- echo -- for ac_var in $ac_subst_vars -- do -- eval ac_val=\$$ac_var -- case $ac_val in -- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; -- esac -- $as_echo "$ac_var='\''$ac_val'\''" -- done | sort -- echo -- -- if test -n "$ac_subst_files"; then -- cat <<\_ASBOX --## ------------------- ## --## File substitutions. ## --## ------------------- ## --_ASBOX -- echo -- for ac_var in $ac_subst_files -- do -- eval ac_val=\$$ac_var -- case $ac_val in -- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; -- esac -- $as_echo "$ac_var='\''$ac_val'\''" -- done | sort -- echo -- fi -- -- if test -s confdefs.h; then -- cat <<\_ASBOX --## ----------- ## --## confdefs.h. ## --## ----------- ## --_ASBOX -- echo -- cat confdefs.h -- echo -- fi -- test "$ac_signal" != 0 && -- $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 -- ac_site_file1=$CONFIG_SITE --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" -- 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 -- -- --am__api_version='1.11' -- --ac_aux_dir= --for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do -- for ac_t in install-sh install.sh shtool; do -- if test -f "$ac_dir/$ac_t"; then -- ac_aux_dir=$ac_dir -- ac_install_sh="$ac_aux_dir/$ac_t -c" -- break 2 -- fi -- done --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 test "${ac_cv_path_install+set}" = set; 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 test "${ac_cv_prog_STRIP+set}" = set; 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 test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 test "${ac_cv_path_mkdir+set}" = set; 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 test "${ac_cv_prog_AWK+set}" = set; 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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; 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.8' -- -- --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 -' -- -- -- -- -- -- -- --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 test "${ac_cv_prog_CC+set}" = set; 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 test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 test "${ac_cv_prog_CC+set}" = set; 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 test "${ac_cv_prog_CC+set}" = set; 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 test "${ac_cv_prog_CC+set}" = set; 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 test "${ac_cv_prog_ac_ct_CC+set}" = set; 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_set_status 77 --as_fn_error "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 test "${ac_cv_objext+set}" = set; 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 test "${ac_cv_c_compiler_gnu+set}" = set; 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 test "${ac_cv_prog_cc_g+set}" = set; 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 test "${ac_cv_prog_cc_c89+set}" = set; 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 test "${am_cv_CC_dependencies_compiler_type+set}" = set; 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.6b' --macro_revision='1.3017' -- -- -- -- -- -- -- -- -- -- -- -- -- --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 test "${ac_cv_build+set}" = set; 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 test "${ac_cv_host+set}" = set; 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 -- -- --{ $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 test "${ac_cv_path_SED+set}" = set; 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 test "${ac_cv_path_GREP+set}" = set; 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 test "${ac_cv_path_EGREP+set}" = set; 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 test "${ac_cv_path_FGREP+set}" = set; 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 test "${lt_cv_path_LD+set}" = set; 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 test "${lt_cv_prog_gnu_ld+set}" = set; 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 test "${lt_cv_path_NM+set}" = set; 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 "$ac_tool_prefix"; then -- for ac_prog in "dumpbin -symbols" "link -dump -symbols" -- 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 test "${ac_cv_prog_DUMPBIN+set}" = set; 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 -symbols" "link -dump -symbols" --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 test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; 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 -- -- -- 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 test "${lt_cv_nm_interface+set}" = set; 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:4539: $ac_compile\"" >&5) -- (eval "$ac_compile" 2>conftest.err) -- cat conftest.err >&5 -- (eval echo "\"\$as_me:4542: $NM \\\"conftest.$ac_objext\\\"\"" >&5) -- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) -- cat conftest.err >&5 -- (eval echo "\"\$as_me:4545: 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 test "${lt_cv_sys_max_cmd_len+set}" = set; 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; -- ;; -- -- 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"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ -- = "XX$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 test "${lt_cv_ld_reload_flag+set}" = set; 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 test "${ac_cv_prog_OBJDUMP+set}" = set; 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 test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; 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 test "${lt_cv_deplibs_check_method+set}" = set; 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. -- if ( file / ) >/dev/null 2>&1; then -- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' -- lt_cv_file_magic_cmd='func_win32_libid' -- else -- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' -- lt_cv_file_magic_cmd='$OBJDUMP -f' -- fi -- ;; -- --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 -- ;; -- --hpux10.20* | hpux11*) -- lt_cv_file_magic_cmd=/usr/bin/file -- case $host_cpu in -- ia64*) -- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' -- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so -- ;; -- hppa*64*) -- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' -- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl -- ;; -- *) -- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' -- lt_cv_file_magic_test_file=/usr/lib/libc.sl -- ;; -- esac -- ;; -- --interix[3-9]*) -- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here -- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' -- ;; -- --irix5* | irix6* | nonstopux*) -- case $LD in -- *-32|*"-32 ") libmagic=32-bit;; -- *-n32|*"-n32 ") libmagic=N32;; -- *-64|*"-64 ") libmagic=64-bit;; -- *) libmagic=never-match;; -- esac -- lt_cv_deplibs_check_method=pass_all -- ;; -- --# This must be Linux ELF. --linux* | k*bsd*-gnu) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --netbsd*) -- 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 test "${ac_cv_prog_AR+set}" = set; 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 test "${ac_cv_prog_ac_ct_AR+set}" = set; 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 test "${ac_cv_prog_STRIP+set}" = set; 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 test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 test "${ac_cv_prog_RANLIB+set}" = set; 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 test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; 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 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --# 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 test "${lt_cv_sys_global_symbol_pipe+set}" = set; 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 5751 "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 test "${lt_cv_cc_needs_belf+set}" = set; 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 test "${ac_cv_prog_DSYMUTIL+set}" = set; 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 test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; 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 test "${ac_cv_prog_NMEDIT+set}" = set; 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 test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; 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 test "${ac_cv_prog_LIPO+set}" = set; 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 test "${ac_cv_prog_ac_ct_LIPO+set}" = set; 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 test "${ac_cv_prog_OTOOL+set}" = set; 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 test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; 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 test "${ac_cv_prog_OTOOL64+set}" = set; 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 test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; 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 test "${lt_cv_apple_cc_single_mod+set}" = set; 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 test "${lt_cv_ld_exported_symbols_list+set}" = set; 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; } -- 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" != ":"; 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 test "${ac_cv_prog_CPP+set}" = set; 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.$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.$ac_ext -- --done --# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. --rm -f conftest.err conftest.$ac_ext --if $ac_preproc_ok; then : -- break --fi -- -- 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.$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.$ac_ext -- --done --# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. --rm -f conftest.err conftest.$ac_ext --if $ac_preproc_ok; then : -- --else -- { { $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 test "${ac_cv_header_stdc+set}" = set; 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 --" --eval as_val=\$$as_ac_Header -- if test "x$as_val" = 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" = x""yes; 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 test "${lt_cv_objdir+set}" = set; 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 -- --# Sed substitution that helps us do robust quoting. It backslashifies --# 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' -- --# 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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "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 test "${lt_cv_path_MAGIC_CMD+set}" = set; 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 test "${lt_cv_path_MAGIC_CMD+set}" = set; 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 -- lt_prog_compiler_no_builtin_flag=' -fno-builtin' -- -- { $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 test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; 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:7277: $lt_compile\"" >&5) -- (eval "$lt_compile" 2>conftest.err) -- ac_status=$? -- cat conftest.err >&5 -- echo "$as_me:7281: \$? = $ac_status" >&5 -- if (exit $ac_status) && test -s "$ac_outfile"; then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -- lt_cv_prog_compiler_rtti_exceptions=yes -- fi -- fi -- $RM conftest* -- --fi --{ $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' -- ;; -- -- 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 -- 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) -- 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*) -- # 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*) -- # IBM XL C 8.0/Fortran 10.1 on PPC -- lt_prog_compiler_wl='-Wl,' -- lt_prog_compiler_pic='-qpic' -- lt_prog_compiler_static='-qstaticlink' -- ;; -- *) -- case `$CC -V 2>&1 | sed 5q` in -- *Sun\ C*) -- # Sun C 5.9 -- lt_prog_compiler_pic='-KPIC' -- lt_prog_compiler_static='-Bstatic' -- lt_prog_compiler_wl='-Wl,' -- ;; -- *Sun\ F*) -- # Sun Fortran 8.3 passes all unrecognized flags to the linker -- lt_prog_compiler_pic='-KPIC' -- lt_prog_compiler_static='-Bstatic' -- lt_prog_compiler_wl='' -- ;; -- esac -- ;; -- esac -- ;; -- -- 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*) -- 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 test "${lt_cv_prog_compiler_pic_works+set}" = set; 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:7616: $lt_compile\"" >&5) -- (eval "$lt_compile" 2>conftest.err) -- ac_status=$? -- cat conftest.err >&5 -- echo "$as_me:7620: \$? = $ac_status" >&5 -- if (exit $ac_status) && test -s "$ac_outfile"; then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -- lt_cv_prog_compiler_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 test "${lt_cv_prog_compiler_static_works+set}" = set; 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if diff conftest.exp conftest.er2 >/dev/null; then -- lt_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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:7721: $lt_compile\"" >&5) -- (eval "$lt_compile" 2>out/conftest.err) -- ac_status=$? -- cat out/conftest.err >&5 -- echo "$as_me:7725: \$? = $ac_status" >&5 -- if (exit $ac_status) && test -s out/conftest2.$ac_objext -- then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -- lt_cv_prog_compiler_c_o=yes -- fi -- fi -- chmod u+w . 2>&5 -- $RM conftest* -- # SGI C++ compiler will create directory out/ii_files/ for -- # template instantiation -- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files -- $RM out/* && rmdir out -- cd .. -- $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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:7776: $lt_compile\"" >&5) -- (eval "$lt_compile" 2>out/conftest.err) -- ac_status=$? -- cat out/conftest.err >&5 -- echo "$as_me:7780: \$? = $ac_status" >&5 -- if (exit $ac_status) && test -s out/conftest2.$ac_objext -- then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -- lt_cv_prog_compiler_c_o=yes -- fi -- fi -- chmod u+w . 2>&5 -- $RM conftest* -- # SGI C++ compiler will create directory out/ii_files/ for -- # template instantiation -- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files -- $RM out/* && rmdir out -- cd .. -- $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 -- if test "$with_gnu_ld" = yes; then -- # If archive_cmds runs LD, not CC, wlarc should be empty -- wlarc='${wl}' -- -- # Set some defaults for GNU ld with shared library support. These -- # are reset later if shared libraries are not supported. Putting them -- # here allows them to be overridden if necessary. -- runpath_var=LD_RUN_PATH -- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -- export_dynamic_flag_spec='${wl}--export-dynamic' -- # ancient GNU ld didn't support --whole-archive et. al. -- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then -- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -- else -- whole_archive_flag_spec= -- fi -- supports_anon_versioning=no -- case `$LD -v 2>&1` in -- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 -- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... -- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... -- *\ 2.11.*) ;; # other 2.11 versions -- *) supports_anon_versioning=yes ;; -- esac -- -- # See if GNU ld supports shared libraries. -- case $host_os in -- 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.9.1, is reported --*** to be unable to reliably create shared libraries on AIX. --*** Therefore, libtool is disabling shared libraries support. If you --*** really care for shared libraries, you may want to modify your PATH --*** so that a non-GNU linker is found, and then restart. -- --_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' -- 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 -- ;; -- -- 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) -- 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- tmp_addflag=' $pic_flag' -- ;; -- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers -- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- tmp_addflag=' $pic_flag -Mnomain' ;; -- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 -- tmp_addflag=' -i_dynamic' ;; -- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 -- tmp_addflag=' -i_dynamic -nofor_main' ;; -- ifc* | ifort*) # Intel Fortran compiler -- tmp_addflag=' -nofor_main' ;; -- lf95*) # Lahey Fortran 8.1 -- whole_archive_flag_spec= -- tmp_sharedflag='--shared' ;; -- xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) -- tmp_sharedflag='-qmkshrobj' -- tmp_addflag= ;; -- esac -- case `$CC -V 2>&1 | sed 5q` in -- *Sun\ C*) # Sun C 5.9 -- whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- 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*) -- # 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 $compiler_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 $compiler_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 -- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -- else -- export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -- fi -- aix_use_runtimelinking=no -- -- # Test if we are trying to use run time linking or normal -- # AIX style linking. If -brtl is somewhere in LDFLAGS, we -- # need to do runtime linking. -- case $host_os in aix4.[23]|aix4.[23].*|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 $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; 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' -- # Exported symbols can be pulled into shared objects from archives -- whole_archive_flag_spec='$convenience' -- archive_cmds_need_lc=yes -- # This is similar to how AIX traditionally builds its shared libraries. -- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -- fi -- fi -- ;; -- -- amigaos*) -- 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 `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' -- # The linker will automatically build a .lib file if we build a DLL. -- old_archive_from_new_cmds='true' -- # FIXME: Should let the user specify the lib program. -- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' -- fix_srcfile_path='`cygpath -w "$srcfile"`' -- enable_shared_with_static_runtimes=yes -- ;; -- -- darwin* | rhapsody*) -- -- -- archive_cmds_need_lc=no -- hardcode_direct=no -- hardcode_automatic=yes -- hardcode_shlibpath_var=unsupported -- whole_archive_flag_spec='' -- 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=echo -- 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 -a "$with_gnu_ld" = no; then -- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -- else -- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -- fi -- if test "$with_gnu_ld" = no; then -- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_libdir_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 -a "$with_gnu_ld" = no; then -- case $host_cpu in -- hppa*64*) -- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- ia64*) -- archive_cmds='$CC -shared -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' -- ;; -- *) -- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- esac -- fi -- if test "$with_gnu_ld" = no; then -- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_libdir_separator=: -- -- case $host_cpu in -- hppa*64*|ia64*) -- hardcode_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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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; } -- $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 -- archive_cmds_need_lc=no -- else -- archive_cmds_need_lc=yes -- fi -- allow_undefined_flag=$lt_save_allow_undefined_flag -- else -- cat conftest.err 1>&5 -- fi -- $RM conftest* -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 --$as_echo "$archive_cmds_need_lc" >&6; } -- ;; -- 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 -- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then -- # if the path contains ";" then we assume it to be the separator -- # otherwise default to the standard path separator (i.e. ":") - it is -- # assumed that no part of a normal pathname contains ";" but that should -- # okay in the real world where ";" in dirpaths is itself problematic. -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` -- else -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi -- # Ok, now we have the path, separated by spaces, we can step through it -- # and add multilib dir if necessary. -- lt_tmp_lt_search_path_spec= -- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` -- for lt_sys_path in $lt_search_path_spec; do -- if test -d "$lt_sys_path/$lt_multi_os_dir"; then -- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" -- else -- test -d "$lt_sys_path" && \ -- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" -- fi -- done -- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' --BEGIN {RS=" "; FS="/|\n";} { -- lt_foo=""; -- lt_count=0; -- for (lt_i = NF; lt_i > 0; lt_i--) { -- if ($lt_i != "" && $lt_i != ".") { -- if ($lt_i == "..") { -- lt_count++; -- } else { -- if (lt_count == 0) { -- lt_foo="/" $lt_i lt_foo; -- } else { -- lt_count--; -- } -- } -- } -- } -- if (lt_foo != "") { lt_freq[lt_foo]++; } -- if (lt_freq[lt_foo] == 1) { print lt_foo; } --}'` -- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` --else -- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" --fi --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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' -- ;; -- 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="/usr/lib /lib/w32api /lib /usr/local/lib" -- ;; -- mingw* | cegcc*) -- # MinGW DLLs use traditional 'lib' prefix -- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then -- # It is most probably a Windows format PATH printed by -- # mingw gcc, but we are running on Cygwin. Gcc prints its search -- # path with ; separators, and with drive letters. We can handle the -- # drive letters (cygwin fileutils understands them), so leave them, -- # especially as we might pass files found there to a mingw objdump, -- # which wouldn't understand a cygwinified path. Ahh. -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -- else -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi -- ;; -- pw32*) -- # pw32 DLLs use 'pw' prefix rather than 'lib' -- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -- ;; -- esac -- ;; -- -- *) -- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' -- ;; -- esac -- dynamic_linker='Win32 ld.exe' -- # FIXME: first we should search . and the directory the executable is in -- shlibpath_var=PATH -- ;; -- --darwin* | rhapsody*) -- dynamic_linker="$host_os dyld" -- version_type=darwin -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${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 -- ;; -- --hpux9* | hpux10* | hpux11*) -- # Give a soname corresponding to the major version so that dld.sl refuses to -- # link against other versions. -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- case $host_cpu in -- ia64*) -- shrext_cmds='.so' -- hardcode_into_libs=yes -- dynamic_linker="$host_os dld.so" -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- if test "X$HPUX_IA64_MODE" = X32; then -- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" -- else -- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" -- fi -- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -- ;; -- hppa*64*) -- shrext_cmds='.sl' -- hardcode_into_libs=yes -- dynamic_linker="$host_os dld.sl" -- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" -- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -- ;; -- *) -- shrext_cmds='.sl' -- dynamic_linker="$host_os dld.sl" -- shlibpath_var=SHLIB_PATH -- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- ;; -- esac -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -- postinstall_cmds='chmod 555 $lib' -- ;; -- --interix[3-9]*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- --irix5* | irix6* | nonstopux*) -- case $host_os in -- nonstopux*) version_type=nonstopux ;; -- *) -- if test "$lt_cv_prog_gnu_ld" = yes; then -- version_type=linux -- else -- version_type=irix -- fi ;; -- esac -- need_lib_prefix=no -- need_version=no -- soname_spec='${libname}${release}${shared_ext}$major' -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' -- case $host_os in -- irix5* | nonstopux*) -- libsuff= shlibsuff= -- ;; -- *) -- case $LD in # libtool.m4 will add one of these switches to LD -- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") -- libsuff= shlibsuff= libmagic=32-bit;; -- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") -- libsuff=32 shlibsuff=N32 libmagic=N32;; -- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") -- libsuff=64 shlibsuff=64 libmagic=64-bit;; -- *) libsuff= shlibsuff= libmagic=never-match;; -- esac -- ;; -- esac -- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH -- shlibpath_overrides_runpath=no -- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" -- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" -- hardcode_into_libs=yes -- ;; -- --# No shared lib support for Linux oldld, aout, or coff. --linux*oldld* | linux*aout* | linux*coff*) -- dynamic_linker=no -- ;; -- --# This must be Linux ELF. --linux* | k*bsd*-gnu) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- # Some binutils ld are patched to set DT_RUNPATH -- 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 : -- 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 -- -- # This implies no fast_install, which is unacceptable. -- # Some rework will be needed to allow for fast_install -- # before this can be enabled. -- hardcode_into_libs=yes -- -- # Append ld.so.conf contents to the search path -- if test -f /etc/ld.so.conf; then -- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -- fi -- -- # We used to test for /lib/ld.so.1 and disable shared libraries on -- # powerpc, because MkLinux only supported shared libraries with the -- # GNU dynamic linker. Since this was broken with cross compilers, -- # most powerpc-linux boxes support dynamic linking these days and -- # people can always --disable-shared, the test was removed, and we -- # assume the GNU/Linux dynamic linker is in use. -- dynamic_linker='GNU/Linux ld.so' -- ;; -- --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 test "${ac_cv_lib_dl_dlopen+set}" = set; 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" = x""yes; then : -- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" --else -- -- lt_cv_dlopen="dyld" -- lt_cv_dlopen_libs= -- lt_cv_dlopen_self=yes -- --fi -- -- ;; -- -- *) -- ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" --if test "x$ac_cv_func_shl_load" = x""yes; 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 test "${ac_cv_lib_dld_shl_load+set}" = set; 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" = x""yes; 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" = x""yes; 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 test "${ac_cv_lib_dl_dlopen+set}" = set; 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" = x""yes; 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 test "${ac_cv_lib_svld_dlopen+set}" = set; 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" = x""yes; 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 test "${ac_cv_lib_dld_dld_link+set}" = set; 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" = x""yes; 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 test "${lt_cv_dlopen_self+set}" = set; 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 10156 "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 -- --void fnord() { int i=42;} --int main () --{ -- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -- int status = $lt_dlunknown; -- -- if (self) -- { -- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -- /* dlclose (self); */ -- } -- else -- puts (dlerror ()); -- -- 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 test "${lt_cv_dlopen_self_static+set}" = set; 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 10252 "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 -- --void fnord() { int i=42;} --int main () --{ -- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -- int status = $lt_dlunknown; -- -- if (self) -- { -- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -- /* dlclose (self); */ -- } -- else -- puts (dlerror ()); -- -- 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: -- -- --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 --$as_echo_n "checking for inline... " >&6; } --if test "${ac_cv_c_inline+set}" = set; 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 { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; 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 /**/" >>confdefs.h -- -- --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking operating system" >&5 --$as_echo_n "checking operating system... " >&6; } --case $host in --*-linux*) -- --$as_echo "#define OS_LINUX /**/" >>confdefs.h -- -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux" >&5 --$as_echo "Linux" >&6; } -- backend="linux" -- { $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 test "${ac_cv_lib_rt_clock_gettime+set}" = set; 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" = x""yes; then : -- cat >>confdefs.h <<_ACEOF --#define HAVE_LIBRT 1 --_ACEOF -- -- LIBS="-lrt $LIBS" -- --fi -- -- AM_LDFLAGS="" -- ;; --*-darwin*) -- --$as_echo "#define OS_DARWIN /**/" >>confdefs.h -- -- -- --$as_echo "#define USBI_OS_HANDLES_TIMEOUT /**/" >>confdefs.h -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin/MacOS X" >&5 --$as_echo "Darwin/MacOS X" >&6; } -- backend="darwin" -- AM_LDFLAGS="-Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation -Wl,-prebind -no-undefined" -- ;; --*) -- as_fn_error "unsupported operating system" "$LINENO" 5 --esac -- -- 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 -- -- --# Library versioning --lt_major="0" --lt_revision="0" --lt_age="0" -- -- -- -- --# 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" = x""yes; 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" = x""yes; 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 /**/" >>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 -- --# 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 -- -- --# Restore gnu89 inline semantics on gcc 4.3 and newer --saved_cflags="$CFLAGS" --CFLAGS="$CFLAGS -fgnu89-inline" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ -- --int --main () --{ -- -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- inline_cflags="-fgnu89-inline" --else -- inline_cflags="" --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --CFLAGS="$saved_cflags" -- --# check for -fvisibility=hidden compiler support (GCC >= 3.4) --saved_cflags="$CFLAGS" --CFLAGS="$CFLAGS -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 API_EXPORTED __attribute__((visibility(\"default\")))" >>confdefs.h -- --else -- VISIBILITY_CFLAGS="" -- --$as_echo "#define API_EXPORTED /**/" >>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" -- --AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration $nopointersign_cflags -Wshadow" -- -- -- -- -- --ac_config_files="$ac_config_files libusb-1.0.pc Makefile libusb/Makefile examples/Makefile doc/Makefile 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 -- test "x$cache_file" != "x/dev/null" && -- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 --$as_echo "$as_me: updating cache $cache_file" >&6;} -- cat confcache >$cache_file -- 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= --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 "${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 "${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 -- --: ${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. --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 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=$?; test $as_status -eq 0 && as_status=1 -- if test "$3"; then -- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 -- fi -- $as_echo "$as_me: error: $1" >&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.8, which was --generated by GNU Autoconf 2.65. 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 the package provider." -- --_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.8 --configured by $0, generated by GNU Autoconf 2.65, -- with options \\"\$ac_cs_config\\" -- --Copyright (C) 2009 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=$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"` ;; -- 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 "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' --macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' --enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' --enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' --pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' --enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' --host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' --host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' --host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' --build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' --build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' --build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' --SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' --Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' --GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' --EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' --FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' --LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' --NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' --LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' --max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' --ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' --exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' --lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' --lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' --lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' --reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' --reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' --OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' --deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' --file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' --AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' --AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' --STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' --RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' --old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' --old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' --old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' --CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' --CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' --compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' --GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' --objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' --SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' --ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' --MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' --lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' --lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' --lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' --lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' --need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' --DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' --NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' --LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' --OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' --OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' --libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' --shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' --extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' --archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' --enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' --export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' --whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' --compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' --old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' --old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' --archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' --archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' --module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' --module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' --with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' --allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' --no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' --inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' --link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' --fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' --always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' --export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' --exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' --include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' --prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' --file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' --variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' --need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' --need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' --version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' --runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' --shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' --shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' --libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' --library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' --soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' --postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' --postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' --finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' --finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' --sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' --sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' --enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' --enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' --enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' --old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' --striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' -- --LTCC='$LTCC' --LTCFLAGS='$LTCFLAGS' --compiler='$compiler_DEFAULT' -- --# Quote evaled strings. --for var in 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 \ --SHELL \ --ECHO \ --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 \ --finish_eval \ --old_striplib \ --striplib; do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -- *[\\\\\\\`\\"\\\$]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$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; do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -- *[\\\\\\\`\\"\\\$]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" -- ;; -- *) -- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" -- ;; -- esac --done -- --# Fix-up fallback echo if it was mangled by the above quoting rules. --case \$lt_ECHO in --*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` -- ;; --esac -- --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= -- trap 'exit_status=$? -- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$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 -n "$tmp" && test -d "$tmp" --} || --{ -- tmp=./conf$$-$RANDOM -- (umask 077 && mkdir "$tmp") --} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 -- --# 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 {' >"$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 >>"\$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 >>"\$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 < "$tmp/subs1.awk" > "$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 $(srcdir), --# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and --# trailing colons and then remove the whole line if VPATH becomes empty --# (actually we leave an empty line to preserve line numbers). --if test "x$srcdir" = x.; then -- ac_vpsub='/^[ ]*VPATH[ ]*=/{ --s/:*\$(srcdir):*/:/ --s/:*\${srcdir}:*/:/ --s/:*@srcdir@:*/:/ --s/^\([^=]*=[ ]*\):*/\1/ --s/:*$// --s/^[^=]*=[ ]*$// --}' --fi -- --cat >>$CONFIG_STATUS <<\_ACEOF || 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 >"$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_t=`sed -n "/$ac_delim/p" confdefs.h` -- if test -z "$ac_t"; 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="$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 "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 >"$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 "$tmp/subs.awk" >$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' "$tmp/out"`; test -n "$ac_out"; } && -- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$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 "$tmp/stdin" -- case $ac_file in -- -) cat "$tmp/out" && rm -f "$tmp/out";; -- *) rm -f "$ac_file" && mv "$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 "$tmp/defines.awk"' "$ac_file_inputs" -- } >"$tmp/config.h" \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -- if diff "$ac_file" "$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 "$tmp/config.h" "$ac_file" \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -- fi -- else -- $as_echo "/* $configure_input */" \ -- && eval '$AWK -f "$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 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="" -- --# ### 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 -- --# 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 -- --# How to create reloadable object files. --reload_flag=$lt_reload_flag --reload_cmds=$lt_reload_cmds -- --# 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 -- --# 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 -- --# Shell to use when invoking shell scripts. --SHELL=$lt_SHELL -- --# An echo program that does not interpret backslashes. --ECHO=$lt_ECHO -- --# 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 -- --# 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 -- --# 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 "X${1}" | $Xsed -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 file --func_basename () --{ -- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$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 "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; -- *) func_stripname_result=`$ECHO "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "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 "X${1}" | $Xsed -e "$my_sed_long_opt"` -- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` --} -- --# func_lo2o object --func_lo2o () --{ -- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` --} -- --# func_xform libobj-or-source --func_xform () --{ -- func_xform_result=`$ECHO "X${1}" | $Xsed -e '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" -- -- ;; -- -- 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 $? --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/Platform/Android/jni/External/libusb-1.0.8/configure.ac b/Platform/Android/jni/External/libusb-1.0.8/configure.ac -deleted file mode 100644 -index 4668cf0..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/configure.ac -+++ /dev/null -@@ -1,131 +0,0 @@ --AC_INIT([libusb], [1.0.8]) --AM_INIT_AUTOMAKE --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 --AC_C_INLINE --AM_PROG_CC_C_O --AC_DEFINE([_GNU_SOURCE], [], [Use GNU extensions]) -- --AC_MSG_CHECKING([operating system]) --case $host in --*-linux*) -- AC_DEFINE(OS_LINUX, [], [Linux backend]) -- AC_SUBST(OS_LINUX) -- AC_MSG_RESULT([Linux]) -- backend="linux" -- AC_CHECK_LIB(rt, clock_gettime) -- AM_LDFLAGS="" -- ;; --*-darwin*) -- AC_DEFINE(OS_DARWIN, [], [Darwin backend]) -- AC_SUBST(OS_DARWIN) -- AC_DEFINE(USBI_OS_HANDLES_TIMEOUT, [], [Backend handles timeout]) -- AC_MSG_RESULT([Darwin/MacOS X]) -- backend="darwin" -- AM_LDFLAGS="-Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation -Wl,-prebind -no-undefined" -- ;; --*) -- AC_MSG_ERROR([unsupported operating system]) --esac -- --AM_CONDITIONAL([OS_LINUX], [test "x$backend" == "xlinux"]) --AM_CONDITIONAL([OS_DARWIN], [test "x$backend" == "xdarwin"]) -- --# Library versioning --lt_major="0" --lt_revision="0" --lt_age="0" --AC_SUBST(lt_major) --AC_SUBST(lt_revision) --AC_SUBST(lt_age) -- --# 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, [], [timerfd headers available]) -- else -- AC_MSG_RESULT([no (header not available)]) -- fi --fi -- --# 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"]) -- --# Restore gnu89 inline semantics on gcc 4.3 and newer --saved_cflags="$CFLAGS" --CFLAGS="$CFLAGS -fgnu89-inline" --AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]), inline_cflags="-fgnu89-inline", inline_cflags="") --CFLAGS="$saved_cflags" -- --# check for -fvisibility=hidden compiler support (GCC >= 3.4) --saved_cflags="$CFLAGS" --CFLAGS="$CFLAGS -fvisibility=hidden" --AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]), -- [VISIBILITY_CFLAGS="-fvisibility=hidden" -- AC_DEFINE([API_EXPORTED], [__attribute__((visibility("default")))], [Default visibility]) ], -- [ VISIBILITY_CFLAGS="" -- AC_DEFINE([API_EXPORTED], [], [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" -- --AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration $nopointersign_cflags -Wshadow" -- --AC_SUBST(VISIBILITY_CFLAGS) --AC_SUBST(AM_CFLAGS) --AC_SUBST(AM_LDFLAGS) -- --AC_CONFIG_FILES([libusb-1.0.pc] [Makefile] [libusb/Makefile] [examples/Makefile] [doc/Makefile] [doc/doxygen.cfg]) --AC_OUTPUT -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/depcomp b/Platform/Android/jni/External/libusb-1.0.8/depcomp -deleted file mode 100644 -index ca5ea4e..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/depcomp -+++ /dev/null -@@ -1,584 +0,0 @@ --#! /bin/sh --# depcomp - compile a program generating dependencies as side-effects -- --scriptversion=2006-10-15.18 -- --# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software --# Foundation, Inc. -- --# This program is free software; you can redistribute it and/or modify --# it under the terms of the GNU General Public License as published by --# 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, 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 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 -- --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. -- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` -- tmpdepfile="$stripped.u" -- if test "$libtool" = yes; then -- "$@" -Wc,-M -- else -- "$@" -M -- fi -- stat=$? -- -- if test -f "$tmpdepfile"; then : -- else -- stripped=`echo "$stripped" | sed 's,^.*/,,'` -- tmpdepfile="$stripped.u" -- fi -- -- if test $stat -eq 0; then : -- else -- rm -f "$tmpdepfile" -- exit $stat -- fi -- -- if test -f "$tmpdepfile"; then -- outname="$stripped.o" -- # Each line is of the form `foo.o: dependent.h'. -- # Do two passes, one to just change these to -- # `$object: dependent.h' and one to simply `dependent.h:'. -- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" -- sed -e "s,^$outname: \(.*\)$,\1:," < "$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 $1 != '--mode=compile'; do -- shift -- done -- shift -- fi -- -- # Remove `-o $object'. -- IFS=" " -- for arg -- do -- case $arg in -- -o) -- shift -- ;; -- $object) -- shift -- ;; -- *) -- set fnord "$@" "$arg" -- shift # fnord -- shift # $arg -- ;; -- esac -- 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 $1 != '--mode=compile'; do -- shift -- done -- shift -- fi -- # X makedepend -- shift -- cleared=no -- for arg in "$@"; do -- case $cleared in -- no) -- set ""; shift -- cleared=yes ;; -- esac -- case "$arg" in -- -D*|-I*) -- set fnord "$@" "$arg"; shift ;; -- # Strip any option that makedepend may not understand. Remove -- # the object too, otherwise makedepend will parse it as a source file. -- -*|$object) -- ;; -- *) -- set fnord "$@" "$arg"; shift ;; -- esac -- done -- obj_suffix="`echo $object | sed 's/^.*\././'`" -- touch "$tmpdepfile" -- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" -- rm -f "$depfile" -- cat < "$tmpdepfile" > "$depfile" -- 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 $1 != '--mode=compile'; do -- shift -- done -- shift -- fi -- -- # Remove `-o $object'. -- IFS=" " -- for arg -- do -- case $arg in -- -o) -- shift -- ;; -- $object) -- shift -- ;; -- *) -- set fnord "$@" "$arg" -- shift # fnord -- shift # $arg -- ;; -- esac -- 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, regardless of -o, -- # because we must use -o when running libtool. -- "$@" || exit $? -- IFS=" " -- for arg -- do -- case "$arg" in -- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") -- set fnord "$@" -- shift -- shift -- ;; -- *) -- set fnord "$@" "$arg" -- shift -- shift -- ;; -- esac -- done -- "$@" -E | -- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" -- rm -f "$depfile" -- echo "$object : \\" > "$depfile" -- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" -- echo " " >> "$depfile" -- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" -- rm -f "$tmpdepfile" -- ;; -- --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-end: "$" --# End: -diff --git a/Platform/Android/jni/External/libusb-1.0.8/doc/Makefile.am b/Platform/Android/jni/External/libusb-1.0.8/doc/Makefile.am -deleted file mode 100644 -index ac5b189..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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/ dsd_,libusb@web.sourceforge.net:htdocs/api-1.0/ -- rm -f api-1.0 -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/doc/Makefile.in b/Platform/Android/jni/External/libusb-1.0.8/doc/Makefile.in -deleted file mode 100644 -index cdeebe6..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/doc/Makefile.in -+++ /dev/null -@@ -1,374 +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)/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@ --AM_LDFLAGS = @AM_LDFLAGS@ --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@ --LTLIBOBJS = @LTLIBOBJS@ --MAKEINFO = @MAKEINFO@ --MKDIR_P = @MKDIR_P@ --NM = @NM@ --NMEDIT = @NMEDIT@ --OBJDUMP = @OBJDUMP@ --OBJEXT = @OBJEXT@ --OS_DARWIN = @OS_DARWIN@ --OS_LINUX = @OS_LINUX@ --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@ --RANLIB = @RANLIB@ --SED = @SED@ --SET_MAKE = @SET_MAKE@ --SHELL = @SHELL@ --STRIP = @STRIP@ --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@ --lt_ECHO = @lt_ECHO@ --lt_age = @lt_age@ --lt_major = @lt_major@ --lt_revision = @lt_revision@ --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: $(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/ dsd_,libusb@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/Platform/Android/jni/External/libusb-1.0.8/doc/doxygen.cfg.in b/Platform/Android/jni/External/libusb-1.0.8/doc/doxygen.cfg.in -deleted file mode 100644 -index 574b52f..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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= -- --# 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/Platform/Android/jni/External/libusb-1.0.8/examples/Makefile.am b/Platform/Android/jni/External/libusb-1.0.8/examples/Makefile.am -deleted file mode 100644 -index 600ebd4..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/examples/Makefile.am -+++ /dev/null -@@ -1,13 +0,0 @@ --INCLUDES = -I$(top_srcdir) --noinst_PROGRAMS = lsusb dpfp dpfp_threaded -- --lsusb_SOURCES = lsusb.c --lsusb_LDADD = ../libusb/libusb-1.0.la -lusb-1.0 -- --dpfp_SOURCES = dpfp.c --dpfp_LDADD = ../libusb/libusb-1.0.la -lusb-1.0 -- --dpfp_threaded_SOURCES = dpfp_threaded.c --dpfp_threaded_CFLAGS = -pthread $(AM_CFLAGS) --dpfp_threaded_LDADD = ../libusb/libusb-1.0.la -lusb-1.0 -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/examples/Makefile.in b/Platform/Android/jni/External/libusb-1.0.8/examples/Makefile.in -deleted file mode 100644 -index 00598b1..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/examples/Makefile.in -+++ /dev/null -@@ -1,533 +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 = lsusb$(EXEEXT) dpfp$(EXEEXT) dpfp_threaded$(EXEEXT) --subdir = examples --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in --ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 --am__aclocal_m4_deps = $(top_srcdir)/configure.ac --am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -- $(ACLOCAL_M4) --mkinstalldirs = $(install_sh) -d --CONFIG_HEADER = $(top_builddir)/config.h --CONFIG_CLEAN_FILES = --CONFIG_CLEAN_VPATH_FILES = --PROGRAMS = $(noinst_PROGRAMS) --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_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_lsusb_OBJECTS = lsusb.$(OBJEXT) --lsusb_OBJECTS = $(am_lsusb_OBJECTS) --lsusb_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) $(lsusb_SOURCES) --DIST_SOURCES = $(dpfp_SOURCES) $(dpfp_threaded_SOURCES) \ -- $(lsusb_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@ --AM_LDFLAGS = @AM_LDFLAGS@ --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@ --LTLIBOBJS = @LTLIBOBJS@ --MAKEINFO = @MAKEINFO@ --MKDIR_P = @MKDIR_P@ --NM = @NM@ --NMEDIT = @NMEDIT@ --OBJDUMP = @OBJDUMP@ --OBJEXT = @OBJEXT@ --OS_DARWIN = @OS_DARWIN@ --OS_LINUX = @OS_LINUX@ --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@ --RANLIB = @RANLIB@ --SED = @SED@ --SET_MAKE = @SET_MAKE@ --SHELL = @SHELL@ --STRIP = @STRIP@ --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@ --lt_ECHO = @lt_ECHO@ --lt_age = @lt_age@ --lt_major = @lt_major@ --lt_revision = @lt_revision@ --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) --lsusb_SOURCES = lsusb.c --lsusb_LDADD = ../libusb/libusb-1.0.la -lusb-1.0 --dpfp_SOURCES = dpfp.c --dpfp_LDADD = ../libusb/libusb-1.0.la -lusb-1.0 --dpfp_threaded_SOURCES = dpfp_threaded.c --dpfp_threaded_CFLAGS = -pthread $(AM_CFLAGS) --dpfp_threaded_LDADD = ../libusb/libusb-1.0.la -lusb-1.0 --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) --lsusb$(EXEEXT): $(lsusb_OBJECTS) $(lsusb_DEPENDENCIES) -- @rm -f lsusb$(EXEEXT) -- $(AM_V_CCLD)$(LINK) $(lsusb_OBJECTS) $(lsusb_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)/lsusb.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/Platform/Android/jni/External/libusb-1.0.8/examples/dpfp.c b/Platform/Android/jni/External/libusb-1.0.8/examples/dpfp.c -deleted file mode 100644 -index bd9702a..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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 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]; -- -- sprintf(filename, "finger%d.pgm", img_idx++); -- fd = fopen(filename, "w"); -- if (!fd) -- return -1; -- -- fputs("P5 384 289 255 ", fd); -- 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 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 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/Platform/Android/jni/External/libusb-1.0.8/examples/dpfp_threaded.c b/Platform/Android/jni/External/libusb-1.0.8/examples/dpfp_threaded.c -deleted file mode 100644 -index 59540e3..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/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"); -- pthread_exit(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 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]; -- -- sprintf(filename, "finger%d.pgm", img_idx++); -- fd = fopen(filename, "w"); -- if (!fd) -- return -1; -- -- fputs("P5 384 289 255 ", fd); -- 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 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 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/Platform/Android/jni/External/libusb-1.0.8/examples/lsusb.c b/Platform/Android/jni/External/libusb-1.0.8/examples/lsusb.c -deleted file mode 100644 -index 317adf0..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/examples/lsusb.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/Platform/Android/jni/External/libusb-1.0.8/install-sh b/Platform/Android/jni/External/libusb-1.0.8/install-sh -deleted file mode 100644 -index 4fbbae7..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/install-sh -+++ /dev/null -@@ -1,507 +0,0 @@ --#!/bin/sh --# install - install a program, script, or datafile -- --scriptversion=2006-10-14.15 -- --# This originates from X11R5 (mit/util/scripts/install.sh), which was --# later released in X11R6 (xc/config/util/install.sh) with the --# following copyright and license. --# --# Copyright (C) 1994 X Consortium --# --# Permission is hereby granted, free of charge, to any person obtaining a copy --# of this software and associated documentation files (the "Software"), to --# deal in the Software without restriction, including without limitation the --# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or --# sell copies of the Software, and to permit persons to whom the Software is --# furnished to do so, subject to the following conditions: --# --# 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. -- --mvprog="${MVPROG-mv}" --cpprog="${CPPROG-cp}" --chmodprog="${CHMODPROG-chmod}" --chownprog="${CHOWNPROG-chown}" --chgrpprog="${CHGRPPROG-chgrp}" --stripprog="${STRIPPROG-strip}" --rmprog="${RMPROG-rm}" --mkdirprog="${MKDIRPROG-mkdir}" -- --posix_glob= --posix_mkdir= -- --# Desired mode of installed file. --mode=0755 -- --chmodcmd=$chmodprog --chowncmd= --chgrpcmd= --stripcmd= --rmcmd="$rmprog -f" --mvcmd="$mvprog" --src= --dst= --dir_arg= --dstarg= --no_target_directory= -- --usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE -- or: $0 [OPTION]... SRCFILES... DIRECTORY -- or: $0 [OPTION]... -t DIRECTORY SRCFILES... -- or: $0 [OPTION]... -d DIRECTORIES... -- --In the 1st form, copy SRCFILE to DSTFILE. --In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. --In the 4th, create DIRECTORIES. -- --Options: ---c (ignored) ---d create directories instead of installing files. ---g GROUP $chgrpprog installed files to GROUP. ---m MODE $chmodprog installed files to MODE. ---o USER $chownprog installed files to USER. ---s $stripprog installed files. ---t DIRECTORY install into DIRECTORY. ---T report an error if DSTFILE is a directory. ----help display this help and exit. ----version display version info and exit. -- --Environment variables override the default commands: -- CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG --" -- --while test $# -ne 0; do -- case $1 in -- -c) shift -- continue;; -- -- -d) dir_arg=true -- shift -- continue;; -- -- -g) chgrpcmd="$chgrpprog $2" -- shift -- shift -- continue;; -- -- --help) echo "$usage"; exit $?;; -- -- -m) mode=$2 -- shift -- shift -- case $mode in -- *' '* | *' '* | *' --'* | *'*'* | *'?'* | *'['*) -- echo "$0: invalid mode: $mode" >&2 -- exit 1;; -- esac -- continue;; -- -- -o) chowncmd="$chownprog $2" -- shift -- shift -- continue;; -- -- -s) stripcmd=$stripprog -- shift -- continue;; -- -- -t) dstarg=$2 -- shift -- shift -- continue;; -- -- -T) no_target_directory=true -- shift -- continue;; -- -- --version) echo "$0 $scriptversion"; exit $?;; -- -- --) shift -- break;; -- -- -*) echo "$0: invalid option: $1" >&2 -- exit 1;; -- -- *) break;; -- esac --done -- --if test $# -ne 0 && test -z "$dir_arg$dstarg"; then -- # When -d is used, all remaining arguments are directories to create. -- # When -t is used, the destination is already specified. -- # Otherwise, the last argument is the destination. Remove it from $@. -- for arg -- do -- if test -n "$dstarg"; then -- # $@ is not empty: it contains at least $arg. -- set fnord "$@" "$dstarg" -- shift # fnord -- fi -- shift # arg -- dstarg=$arg -- done --fi -- --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 "$dstarg"; then -- echo "$0: no destination specified." >&2 -- exit 1 -- fi -- -- dst=$dstarg -- # 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: $dstarg: Is a directory" >&2 -- exit 1 -- fi -- dstdir=$dst -- dst=$dstdir/`basename "$src"` -- dstdir_status=0 -- else -- # Prefer dirname, but fall back on a substitute if dirname fails. -- dstdir=` -- (dirname "$dst") 2>/dev/null || -- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -- X"$dst" : 'X\(//\)[^/]' \| \ -- X"$dst" : 'X\(//\)$' \| \ -- X"$dst" : 'X\(/\)' \| . 2>/dev/null || -- echo X"$dst" | -- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -- s//\1/ -- q -- } -- /^X\(\/\/\)[^/].*/{ -- s//\1/ -- q -- } -- /^X\(\/\/\)$/{ -- s//\1/ -- q -- } -- /^X\(\/\).*/{ -- s//\1/ -- q -- } -- s/.*/./; q' -- ` -- -- test -d "$dstdir" -- dstdir_status=$? -- fi -- fi -- -- obsolete_mkdir_used=false -- -- if test $dstdir_status != 0; then -- case $posix_mkdir in -- '') -- # Create intermediate dirs using mode 755 as modified by the umask. -- # This is like FreeBSD 'install' as of 1997-10-28. -- umask=`umask` -- case $stripcmd.$umask in -- # Optimize common cases. -- *[2367][2367]) mkdir_umask=$umask;; -- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; -- -- *[0-7]) -- mkdir_umask=`expr $umask + 22 \ -- - $umask % 100 % 40 + $umask % 20 \ -- - $umask % 10 % 4 + $umask % 2 -- `;; -- *) mkdir_umask=$umask,go-w;; -- esac -- -- # With -d, create the new directory with the user-specified mode. -- # Otherwise, rely on $mkdir_umask. -- if test -n "$dir_arg"; then -- mkdir_mode=-m$mode -- else -- 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 -- -- case $posix_glob in -- '') -- if (set -f) 2>/dev/null; then -- posix_glob=true -- else -- posix_glob=false -- fi ;; -- esac -- -- oIFS=$IFS -- IFS=/ -- $posix_glob && set -f -- set fnord $dstdir -- shift -- $posix_glob && set +f -- IFS=$oIFS -- -- prefixes= -- -- for d -- do -- test -z "$d" && continue -- -- prefix=$prefix$d -- if test -d "$prefix"; then -- prefixes= -- else -- 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"; } && -- -- # Now rename the file to the real destination. -- { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ -- || { -- # The rename failed, perhaps because mv can't rename something else -- # to itself, or perhaps because mv is so ancient that it does not -- # support -f. -- -- # Now remove or move aside any old file at destination location. -- # We try this two ways since rm can't unlink itself on some -- # systems and the destination file might be busy for other -- # reasons. In this case, the final cleanup might fail but the new -- # file should still install successfully. -- { -- if test -f "$dst"; then -- $doit $rmcmd -f "$dst" 2>/dev/null \ -- || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ -- && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ -- || { -- echo "$0: cannot unlink or rename $dst" >&2 -- (exit 1); exit 1 -- } -- else -- : -- fi -- } && -- -- # Now rename the file to the real destination. -- $doit $mvcmd "$dsttmp" "$dst" -- } -- } || exit 1 -- -- trap '' 0 -- fi --done -- --# Local variables: --# eval: (add-hook 'write-file-hooks 'time-stamp) --# time-stamp-start: "scriptversion=" --# time-stamp-format: "%:y-%02m-%02d.%02H" --# time-stamp-end: "$" --# End: -diff --git a/Platform/Android/jni/External/libusb-1.0.8/libusb-1.0.pc.in b/Platform/Android/jni/External/libusb-1.0.8/libusb-1.0.pc.in -deleted file mode 100644 -index dd6bde0..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb-1.0.pc.in -+++ /dev/null -@@ -1,11 +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 userspace --Version: @VERSION@ --Libs: -L${libdir} -lusb-1.0 --Cflags: -I${includedir}/libusb-1.0 -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/libusb/Makefile.am b/Platform/Android/jni/External/libusb-1.0.8/libusb/Makefile.am -deleted file mode 100644 -index a2be46c..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/Makefile.am -+++ /dev/null -@@ -1,21 +0,0 @@ --lib_LTLIBRARIES = libusb-1.0.la -- --LINUX_USBFS_SRC = os/linux_usbfs.h os/linux_usbfs.c --DARWIN_USB_SRC = os/darwin_usb.h os/darwin_usb.c -- --EXTRA_DIST = $(LINUX_USBFS_SRC) $(DARWIN_USB_SRC) -- --if OS_LINUX --OS_SRC = $(LINUX_USBFS_SRC) --endif -- --if OS_DARWIN --OS_SRC = $(DARWIN_USB_SRC) --AM_CFLAGS_EXT = -no-cpp-precomp --endif -- --libusb_1_0_la_CFLAGS = $(VISIBILITY_CFLAGS) $(AM_CFLAGS) -pthread --libusb_1_0_la_SOURCES = libusbi.h core.c descriptor.c io.c sync.c $(OS_SRC) -- --hdrdir = $(includedir)/libusb-1.0 --hdr_HEADERS = libusb.h -diff --git a/Platform/Android/jni/External/libusb-1.0.8/libusb/Makefile.in b/Platform/Android/jni/External/libusb-1.0.8/libusb/Makefile.in -deleted file mode 100644 -index 34c14b3..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/Makefile.in -+++ /dev/null -@@ -1,637 +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)/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.h os/darwin_usb.c os/linux_usbfs.h \ -- os/linux_usbfs.c --am__objects_1 = libusb_1_0_la-darwin_usb.lo --am__objects_2 = libusb_1_0_la-linux_usbfs.lo --@OS_DARWIN_FALSE@@OS_LINUX_TRUE@am__objects_3 = $(am__objects_2) --@OS_DARWIN_TRUE@am__objects_3 = $(am__objects_1) --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_3) --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) $(AM_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@ --AM_LDFLAGS = @AM_LDFLAGS@ --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@ --LTLIBOBJS = @LTLIBOBJS@ --MAKEINFO = @MAKEINFO@ --MKDIR_P = @MKDIR_P@ --NM = @NM@ --NMEDIT = @NMEDIT@ --OBJDUMP = @OBJDUMP@ --OBJEXT = @OBJEXT@ --OS_DARWIN = @OS_DARWIN@ --OS_LINUX = @OS_LINUX@ --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@ --RANLIB = @RANLIB@ --SED = @SED@ --SET_MAKE = @SET_MAKE@ --SHELL = @SHELL@ --STRIP = @STRIP@ --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@ --lt_ECHO = @lt_ECHO@ --lt_age = @lt_age@ --lt_major = @lt_major@ --lt_revision = @lt_revision@ --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.h os/linux_usbfs.c --DARWIN_USB_SRC = os/darwin_usb.h os/darwin_usb.c --EXTRA_DIST = $(LINUX_USBFS_SRC) $(DARWIN_USB_SRC) --@OS_DARWIN_TRUE@OS_SRC = $(DARWIN_USB_SRC) --@OS_LINUX_TRUE@OS_SRC = $(LINUX_USBFS_SRC) --@OS_DARWIN_TRUE@AM_CFLAGS_EXT = -no-cpp-precomp --libusb_1_0_la_CFLAGS = $(VISIBILITY_CFLAGS) $(AM_CFLAGS) -pthread --libusb_1_0_la_SOURCES = libusbi.h core.c descriptor.c io.c sync.c $(OS_SRC) --hdrdir = $(includedir)/libusb-1.0 --hdr_HEADERS = libusb.h --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 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 -- --@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-sync.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 -- --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 -- -- --# 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/Platform/Android/jni/External/libusb-1.0.8/libusb/config.h b/Platform/Android/jni/External/libusb-1.0.8/libusb/config.h -deleted file mode 100644 -index c055b7c..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/config.h -+++ /dev/null -@@ -1,5 +0,0 @@ --#define OS_LINUX --#define ENABLE_LOGGING --#define API_EXPORTED -- -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/libusb/core.c b/Platform/Android/jni/External/libusb-1.0.8/libusb/core.c -deleted file mode 100644 -index a0e3dbe..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/core.c -+++ /dev/null -@@ -1,1583 +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 "config.h" -- --#include --#include --#include --#include --#include --#include --#include --#include -- --#include "libusb.h" --#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; --#else --#error "Unsupported OS" --#endif -- --struct libusb_context *usbi_default_context = NULL; --static pthread_mutex_t default_context_lock = PTHREAD_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 -- * transfesr, 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. -- */ -- --/** -- * \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(). -- * -- * 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 = malloc(sizeof(*dev) + priv_size); -- int r; -- -- if (!dev) -- return NULL; -- -- r = pthread_mutex_init(&dev->lock, NULL); -- if (r) -- return NULL; -- -- dev->ctx = ctx; -- dev->refcnt = 1; -- dev->session_data = session_id; -- memset(&dev->os_priv, 0, priv_size); -- -- pthread_mutex_lock(&ctx->usb_devs_lock); -- list_add(&dev->list, &ctx->usb_devs); -- pthread_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 (num_configurations < 1) { -- usbi_dbg("no configurations?"); -- return LIBUSB_ERROR_IO; -- } -- -- 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; -- -- pthread_mutex_lock(&ctx->usb_devs_lock); -- list_for_each_entry(dev, &ctx->usb_devs, list) -- if (dev->session_data == session_id) { -- ret = dev; -- break; -- } -- pthread_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 LIBUSB_ERROR_NO_MEM -- * on memory allocation failure. -- */ --API_EXPORTED ssize_t libusb_get_device_list(libusb_context *ctx, -- libusb_device ***list) --{ -- struct discovered_devs *discdevs = discovered_devs_alloc(); -- struct libusb_device **ret; -- int r = 0; -- size_t i; -- ssize_t 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 -- */ --API_EXPORTED void 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 -- */ --API_EXPORTED uint8_t 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 -- */ --API_EXPORTED uint8_t libusb_get_device_address(libusb_device *dev) --{ -- return dev->device_address; --} -- --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 -- */ --API_EXPORTED int 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 -- */ --API_EXPORTED int 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 -- */ --API_EXPORTED libusb_device *libusb_ref_device(libusb_device *dev) --{ -- pthread_mutex_lock(&dev->lock); -- dev->refcnt++; -- pthread_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 -- */ --API_EXPORTED void libusb_unref_device(libusb_device *dev) --{ -- int refcnt; -- -- if (!dev) -- return; -- -- pthread_mutex_lock(&dev->lock); -- refcnt = --dev->refcnt; -- pthread_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); -- -- pthread_mutex_lock(&dev->ctx->usb_devs_lock); -- list_del(&dev->list); -- pthread_mutex_unlock(&dev->ctx->usb_devs_lock); -- -- free(dev); -- } --} -- --/** \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 -- */ --API_EXPORTED int 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; -- unsigned char dummy = 1; -- 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 = pthread_mutex_init(&_handle->lock, NULL); -- if (r) -- 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) { -- libusb_unref_device(dev); -- free(_handle); -- return r; -- } -- -- pthread_mutex_lock(&ctx->open_devs_lock); -- list_add(&_handle->list, &ctx->open_devs); -- pthread_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. */ -- -- /* record that we are messing with poll fds */ -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- ctx->pollfd_modify++; -- pthread_mutex_unlock(&ctx->pollfd_modify_lock); -- -- /* write some data on control pipe to interrupt event handlers */ -- r = write(ctx->ctrl_pipe[1], &dummy, sizeof(dummy)); -- if (r <= 0) { -- usbi_warn(ctx, "internal signalling write failed"); -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- ctx->pollfd_modify--; -- pthread_mutex_unlock(&ctx->pollfd_modify_lock); -- return 0; -- } -- -- /* take event handling lock */ -- libusb_lock_events(ctx); -- -- /* read the dummy data */ -- r = 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 */ -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- ctx->pollfd_modify--; -- pthread_mutex_unlock(&ctx->pollfd_modify_lock); -- -- /* Release event handling lock and wake up event waiters */ -- libusb_unlock_events(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. */ --API_EXPORTED libusb_device_handle *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) --{ -- pthread_mutex_lock(&ctx->open_devs_lock); -- list_del(&dev_handle->list); -- pthread_mutex_unlock(&ctx->open_devs_lock); -- -- usbi_backend->close(dev_handle); -- libusb_unref_device(dev_handle->dev); -- 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 -- */ --API_EXPORTED void 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 */ -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- ctx->pollfd_modify++; -- pthread_mutex_unlock(&ctx->pollfd_modify_lock); -- -- /* write some data on control pipe to interrupt event handlers */ -- r = 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); -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- ctx->pollfd_modify--; -- pthread_mutex_unlock(&ctx->pollfd_modify_lock); -- return; -- } -- -- /* take event handling lock */ -- libusb_lock_events(ctx); -- -- /* read the dummy data */ -- r = 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 */ -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- ctx->pollfd_modify--; -- pthread_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 -- */ --API_EXPORTED libusb_device *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 -- */ --API_EXPORTED int 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 -- */ --API_EXPORTED int 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 -- */ --API_EXPORTED int libusb_claim_interface(libusb_device_handle *dev, -- int interface_number) --{ -- int r = 0; -- -- usbi_dbg("interface %d", interface_number); -- if (interface_number >= sizeof(dev->claimed_interfaces) * 8) -- return LIBUSB_ERROR_INVALID_PARAM; -- -- pthread_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: -- pthread_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 -- */ --API_EXPORTED int libusb_release_interface(libusb_device_handle *dev, -- int interface_number) --{ -- int r; -- -- usbi_dbg("interface %d", interface_number); -- if (interface_number >= sizeof(dev->claimed_interfaces) * 8) -- return LIBUSB_ERROR_INVALID_PARAM; -- -- pthread_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: -- pthread_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 -- */ --API_EXPORTED int 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 >= sizeof(dev->claimed_interfaces) * 8) -- return LIBUSB_ERROR_INVALID_PARAM; -- -- pthread_mutex_lock(&dev->lock); -- if (!(dev->claimed_interfaces & (1 << interface_number))) { -- pthread_mutex_unlock(&dev->lock); -- return LIBUSB_ERROR_NOT_FOUND; -- } -- pthread_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 -- */ --API_EXPORTED int 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 -- */ --API_EXPORTED int 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. -- * -- * \param dev a device handle -- * \param interface 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 another LIBUSB_ERROR code on other failure -- * \see libusb_detach_kernel_driver() -- */ --API_EXPORTED int libusb_kernel_driver_active(libusb_device_handle *dev, -- int interface) --{ -- usbi_dbg("interface %d", interface); -- if (usbi_backend->kernel_driver_active) -- return usbi_backend->kernel_driver_active(dev, interface); -- 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. -- * -- * \param dev a device handle -- * \param interface 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 another LIBUSB_ERROR code on other failure -- * \see libusb_kernel_driver_active() -- */ --API_EXPORTED int libusb_detach_kernel_driver(libusb_device_handle *dev, -- int interface) --{ -- usbi_dbg("interface %d", interface); -- if (usbi_backend->detach_kernel_driver) -- return usbi_backend->detach_kernel_driver(dev, interface); -- else -- return LIBUSB_ERROR_NOT_SUPPORTED; --} -- --/** \ingroup dev -- * Re-attach an interface's kernel driver, which was previously detached -- * using libusb_detach_kernel_driver(). -- * -- * \param dev a device handle -- * \param interface 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_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() -- */ --API_EXPORTED int libusb_attach_kernel_driver(libusb_device_handle *dev, -- int interface) --{ -- usbi_dbg("interface %d", interface); -- if (usbi_backend->attach_kernel_driver) -- return usbi_backend->attach_kernel_driver(dev, interface); -- 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 -- */ --API_EXPORTED void 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. -- * \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 -- */ --API_EXPORTED int libusb_init(libusb_context **context) --{ -- char *dbg = getenv("LIBUSB_DEBUG"); -- struct libusb_context *ctx = malloc(sizeof(*ctx)); -- int r; -- -- if (!ctx) -- return LIBUSB_ERROR_NO_MEM; -- memset(ctx, 0, sizeof(*ctx)); -- -- if (dbg) { -- ctx->debug = atoi(dbg); -- if (ctx->debug) -- ctx->debug_fixed = 1; -- } -- -- usbi_dbg(""); -- -- if (usbi_backend->init) { -- r = usbi_backend->init(ctx); -- if (r) -- goto err; -- } -- -- pthread_mutex_init(&ctx->usb_devs_lock, NULL); -- pthread_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; -- } -- -- pthread_mutex_lock(&default_context_lock); -- if (!usbi_default_context) { -- usbi_dbg("created default context"); -- usbi_default_context = ctx; -- } -- pthread_mutex_unlock(&default_context_lock); -- -- if (context) -- *context = ctx; -- return 0; -- --err: -- free(ctx); -- 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 -- */ --API_EXPORTED void libusb_exit(struct libusb_context *ctx) --{ -- USBI_GET_CONTEXT(ctx); -- usbi_dbg(""); -- -- /* 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(); -- -- pthread_mutex_lock(&default_context_lock); -- if (ctx == usbi_default_context) { -- usbi_dbg("freeing default context"); -- usbi_default_context = NULL; -- } -- pthread_mutex_unlock(&default_context_lock); -- -- free(ctx); --} -- --void usbi_log(struct libusb_context *ctx, enum usbi_log_level level, -- const char *function, const char *format, ...) --{ -- va_list args; -- FILE *stream = stdout; -- const char *prefix; -- --#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 -- -- 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:%s [%s] ", prefix, function); -- -- va_start (args, format); -- vfprintf(stream, format, args); -- va_end (args); -- -- fprintf(stream, "\n"); --} -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/libusb/descriptor.c b/Platform/Android/jni/External/libusb-1.0.8/libusb/descriptor.c -deleted file mode 100644 -index acd7668..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/descriptor.c -+++ /dev/null -@@ -1,719 +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 "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, char *descriptor, void *dest, -- int host_endian) --{ -- unsigned char *sp = source, *dp = dest; -- uint16_t w; -- 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 += ((unsigned long)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 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 *interface) --{ -- int i; -- int j; -- -- if (interface->altsetting) { -- for (i = 0; i < interface->num_altsetting; i++) { -- struct libusb_interface_descriptor *ifp = -- (struct libusb_interface_descriptor *) -- 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 *) interface->altsetting); -- interface->altsetting = NULL; -- } -- --} -- --static int parse_interface(libusb_context *ctx, -- struct libusb_interface *interface, unsigned char *buffer, int size, -- int host_endian) --{ -- int i; -- int len; -- int r; -- int parsed = 0; -- int tmp; -- struct usb_descriptor_header header; -- struct libusb_interface_descriptor *ifp; -- unsigned char *begin; -- -- interface->num_altsetting = 0; -- -- while (size >= INTERFACE_DESC_LENGTH) { -- struct libusb_interface_descriptor *altsetting = -- (struct libusb_interface_descriptor *) interface->altsetting; -- altsetting = realloc(altsetting, -- sizeof(struct libusb_interface_descriptor) * -- (interface->num_altsetting + 1)); -- if (!altsetting) { -- r = LIBUSB_ERROR_NO_MEM; -- goto err; -- } -- interface->altsetting = altsetting; -- -- ifp = altsetting + interface->num_altsetting; -- 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? */ -- usbi_parse_descriptor(buffer, "bb", &header, 0); -- if ((size >= DESC_HEADER_LENGTH) && -- ((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(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; -- int tmp; -- struct usb_descriptor_header header; -- struct libusb_interface *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); -- interface = malloc(tmp); -- config->interface = interface; -- if (!config->interface) -- return LIBUSB_ERROR_NO_MEM; -- -- memset(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, 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 -- */ --API_EXPORTED int 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 -- */ --API_EXPORTED int 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() -- */ --API_EXPORTED int 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) --{ -- int 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() -- */ --API_EXPORTED int 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, 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 -- */ --API_EXPORTED void 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 -- */ --API_EXPORTED int 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, langid, si, di; -- -- /* 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. The language IDs are 16 -- * bit numbers, and they start at the third byte in the descriptor. See -- * USB 2.0 specification section 9.6.7 for more information. */ -- 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/Platform/Android/jni/External/libusb-1.0.8/libusb/io.c b/Platform/Android/jni/External/libusb-1.0.8/libusb/io.c -deleted file mode 100644 -index 69d62c8..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/io.c -+++ /dev/null -@@ -1,2313 +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 "config.h" --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include -- --#ifdef USBI_TIMERFD_AVAILABLE --#include --#endif --#define TIMESPEC_TO_TIMEVAL(tv, ts) \ -- do { \ -- (tv)->tv_sec = (ts)->tv_sec; \ -- (tv)->tv_usec = (ts)->tv_nsec / 1000; \ -- } while (0) -- --#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, EP_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 -- * -- * 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, 0); -- if (time has elapsed to or beyond the libusb timeout) -- libusb_handle_events_timeout(ctx, 0); -- // 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, 0); -- // 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, 0); -- } -- 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 all the synchronous I/O functions - -- * libusb hides this headache from you. You do not need to worry about any -- * of these issues if you stick to that level. -- * -- * 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. -- * -- * \section eventlock The events lock -- * -- * 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, 0); -- } -- 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); -- } -- 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; -- -- pthread_mutex_init(&ctx->flying_transfers_lock, NULL); -- pthread_mutex_init(&ctx->pollfds_lock, NULL); -- pthread_mutex_init(&ctx->pollfd_modify_lock, NULL); -- pthread_mutex_init(&ctx->events_lock, NULL); -- pthread_mutex_init(&ctx->event_waiters_lock, NULL); -- pthread_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 = pipe(ctx->ctrl_pipe); -- if (r < 0) -- return LIBUSB_ERROR_OTHER; -- -- r = usbi_add_pollfd(ctx, ctx->ctrl_pipe[0], POLLIN); -- if (r < 0) -- return r; -- --#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) { -- close(ctx->timerfd); -- return r; -- } -- } else { -- usbi_dbg("timerfd not available (code %d error %d)", ctx->timerfd, errno); -- ctx->timerfd = -1; -- } --#endif -- -- return 0; --} -- --void usbi_io_exit(struct libusb_context *ctx) --{ -- usbi_remove_pollfd(ctx, ctx->ctrl_pipe[0]); -- close(ctx->ctrl_pipe[0]); -- close(ctx->ctrl_pipe[1]); --#ifdef USBI_TIMERFD_AVAILABLE -- if (usbi_using_timerfd(ctx)) { -- usbi_remove_pollfd(ctx, ctx->timerfd); -- close(ctx->timerfd); -- } --#endif --} -- --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; -- -- pthread_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) { -- /* 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: -- pthread_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 -- */ --API_EXPORTED struct libusb_transfer *libusb_alloc_transfer(int iso_packets) --{ -- size_t os_alloc_size = usbi_backend->transfer_priv_size -- + (usbi_backend->add_iso_packet_size * iso_packets); -- int 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; -- pthread_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 -- */ --API_EXPORTED void 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); -- pthread_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 another LIBUSB_ERROR code on other failure -- */ --API_EXPORTED int 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; -- -- pthread_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) { -- pthread_mutex_lock(&ctx->flying_transfers_lock); -- list_del(&itransfer->list); -- pthread_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; -- } --#endif -- --out: -- pthread_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 -- */ --API_EXPORTED int libusb_cancel_transfer(struct libusb_transfer *transfer) --{ -- struct usbi_transfer *itransfer = -- __LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); -- int r; -- -- usbi_dbg(""); -- pthread_mutex_lock(&itransfer->lock); -- r = usbi_backend->cancel_transfer(itransfer); -- if (r < 0) -- usbi_err(TRANSFER_CTX(transfer), -- "cancel transfer failed error %d", r); -- pthread_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 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) --{ -- return 0; --} --static int arm_timerfd_for_next_timeout(struct libusb_context *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; -- -- /* 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. */ -- -- pthread_mutex_lock(&ctx->flying_transfers_lock); -- list_del(&itransfer->list); -- r = arm_timerfd_for_next_timeout(ctx); -- pthread_mutex_unlock(&ctx->flying_transfers_lock); -- -- if (r < 0) { -- return r; -- } else if (r == 0) { -- 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; -- 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); -- pthread_mutex_lock(&ctx->event_waiters_lock); -- pthread_cond_broadcast(&ctx->event_waiters_cond); -- pthread_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 -- */ --API_EXPORTED int 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 */ -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- r = ctx->pollfd_modify; -- pthread_mutex_unlock(&ctx->pollfd_modify_lock); -- if (r) { -- usbi_dbg("someone else is modifying poll fds"); -- return 1; -- } -- -- r = pthread_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 -- */ --API_EXPORTED void libusb_lock_events(libusb_context *ctx) --{ -- USBI_GET_CONTEXT(ctx); -- pthread_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 -- */ --API_EXPORTED void libusb_unlock_events(libusb_context *ctx) --{ -- USBI_GET_CONTEXT(ctx); -- ctx->event_handler_active = 0; -- pthread_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)? */ -- pthread_mutex_lock(&ctx->event_waiters_lock); -- pthread_cond_broadcast(&ctx->event_waiters_cond); -- pthread_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" -- */ --API_EXPORTED int 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 */ -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- r = ctx->pollfd_modify; -- pthread_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 -- */ --API_EXPORTED int 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 */ -- pthread_mutex_lock(&ctx->pollfd_modify_lock); -- r = ctx->pollfd_modify; -- pthread_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 -- */ --API_EXPORTED void libusb_lock_event_waiters(libusb_context *ctx) --{ -- USBI_GET_CONTEXT(ctx); -- pthread_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 -- */ --API_EXPORTED void libusb_unlock_event_waiters(libusb_context *ctx) --{ -- USBI_GET_CONTEXT(ctx); -- pthread_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 -- */ --API_EXPORTED int libusb_wait_for_event(libusb_context *ctx, struct timeval *tv) --{ -- struct timespec timeout; -- int r; -- -- USBI_GET_CONTEXT(ctx); -- if (tv == NULL) { -- pthread_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 = pthread_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); --} -- --#ifdef USBI_OS_HANDLES_TIMEOUT --static int handle_timeouts_locked(struct libusb_context *ctx) --{ -- return 0; --} --static int handle_timeouts(struct libusb_context *ctx) --{ -- return 0; --} --#else --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 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) -- 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); -- pthread_mutex_lock(&ctx->flying_transfers_lock); -- r = handle_timeouts_locked(ctx); -- pthread_mutex_unlock(&ctx->flying_transfers_lock); -- return r; --} --#endif -- --#ifdef USBI_TIMERFD_AVAILABLE --static int handle_timerfd_trigger(struct libusb_context *ctx) --{ -- int r; -- -- r = disarm_timerfd(ctx); -- if (r < 0) -- return r; -- -- pthread_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: -- pthread_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; -- nfds_t nfds = 0; -- struct pollfd *fds; -- int i = -1; -- int timeout_ms; -- -- pthread_mutex_lock(&ctx->pollfds_lock); -- list_for_each_entry(ipollfd, &ctx->pollfds, list) -- nfds++; -- -- /* TODO: malloc when number of fd's changes, not on every poll */ -- fds = malloc(sizeof(*fds) * nfds); -- if (!fds) -- return LIBUSB_ERROR_NO_MEM; -- -- list_for_each_entry(ipollfd, &ctx->pollfds, list) { -- struct libusb_pollfd *pollfd = &ipollfd->pollfd; -- int fd = pollfd->fd; -- i++; -- fds[i].fd = fd; -- fds[i].events = pollfd->events; -- fds[i].revents = 0; -- } -- pthread_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 = 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. -- * -- * \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 -- */ --API_EXPORTED int libusb_handle_events_timeout(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); -- } -- --retry: -- if (libusb_try_lock_events(ctx) == 0) { -- /* we obtained the event lock: do our own event handling */ -- r = handle_events(ctx, &poll_timeout); -- libusb_unlock_events(ctx); -- return r; -- } -- -- /* another thread is doing event handling. wait for pthread events that -- * notify event completion. */ -- libusb_lock_event_waiters(ctx); -- -- 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); -- 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 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() instead. -- * -- * \param ctx the context to operate on, or NULL for the default context -- * \returns 0 on success, or a LIBUSB_ERROR code on failure -- */ --API_EXPORTED int libusb_handle_events(libusb_context *ctx) --{ -- struct timeval tv; -- tv.tv_sec = 60; -- tv.tv_usec = 0; -- return libusb_handle_events_timeout(ctx, &tv); --} -- --/** \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 -- */ --API_EXPORTED int 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" -- */ --API_EXPORTED int libusb_pollfds_handle_timeouts(libusb_context *ctx) --{ --#if defined(USBI_OS_HANDLES_TIMEOUT) -- return 1; --#elif defined(USBI_TIMERFD_AVAILABLE) -- USBI_GET_CONTEXT(ctx); -- return usbi_using_timerfd(ctx); --#else -- 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 -- */ --API_EXPORTED int libusb_get_next_timeout(libusb_context *ctx, -- struct timeval *tv) --{ --#ifndef USBI_OS_HANDLES_TIMEOUT -- 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; -- -- pthread_mutex_lock(&ctx->flying_transfers_lock); -- if (list_empty(&ctx->flying_transfers)) { -- pthread_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) { -- if (!(transfer->flags & USBI_TRANSFER_TIMED_OUT)) { -- found = 1; -- break; -- } -- } -- pthread_mutex_unlock(&ctx->flying_transfers_lock); -- -- if (!found) { -- usbi_dbg("all URBs have already been processed for timeouts"); -- return 0; -- } -- -- next_timeout = &transfer->timeout; -- -- /* no timeout for next transfer */ -- if (!timerisset(next_timeout)) { -- usbi_dbg("no URBs with timeouts, no timeout!"); -- return 0; -- } -- -- 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; --#else -- return 0; --#endif --} -- --/** \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) -- */ --API_EXPORTED void 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; -- pthread_mutex_lock(&ctx->pollfds_lock); -- list_add_tail(&ipollfd->list, &ctx->pollfds); -- pthread_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); -- pthread_mutex_lock(&ctx->pollfds_lock); -- list_for_each_entry(ipollfd, &ctx->pollfds, list) -- if (ipollfd->pollfd.fd == fd) { -- found = 1; -- break; -- } -- -- if (!found) { -- usbi_dbg("couldn't find fd %d to remove", fd); -- pthread_mutex_unlock(&ctx->pollfds_lock); -- return; -- } -- -- list_del(&ipollfd->list); -- pthread_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. -- * -- * \param ctx the context to operate on, or NULL for the default context -- * \returns a NULL-terminated list of libusb_pollfd structures, or NULL on -- * error -- */ --API_EXPORTED const struct libusb_pollfd **libusb_get_pollfds( -- libusb_context *ctx) --{ -- struct libusb_pollfd **ret = NULL; -- struct usbi_pollfd *ipollfd; -- size_t i = 0; -- size_t cnt = 0; -- USBI_GET_CONTEXT(ctx); -- -- pthread_mutex_lock(&ctx->pollfds_lock); -- list_for_each_entry(ipollfd, &ctx->pollfds, list) -- cnt++; -- -- ret = calloc(cnt + 1, sizeof(struct libusb_pollfd *)); -- if (!ret) -- goto out; -- -- list_for_each_entry(ipollfd, &ctx->pollfds, list) -- ret[i++] = (struct libusb_pollfd *) ipollfd; -- ret[cnt] = NULL; -- --out: -- pthread_mutex_unlock(&ctx->pollfds_lock); -- return (const struct libusb_pollfd **) ret; --} -- --/* 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) { -- pthread_mutex_lock(&HANDLE_CTX(handle)->flying_transfers_lock); -- to_cancel = NULL; -- list_for_each_entry(cur, &HANDLE_CTX(handle)->flying_transfers, list) -- if (__USBI_TRANSFER_TO_LIBUSB_TRANSFER(cur)->dev_handle == handle) { -- to_cancel = cur; -- break; -- } -- pthread_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/Platform/Android/jni/External/libusb-1.0.8/libusb/libusb.h b/Platform/Android/jni/External/libusb-1.0.8/libusb/libusb.h -deleted file mode 100644 -index 483d76a..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/libusb.h -+++ /dev/null -@@ -1,1241 +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__ -- --#include --#include --#include --#include --#include -- --#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 -- */ --#define libusb_cpu_to_le16(x) ({ \ -- union { \ -- uint8_t b8[2]; \ -- uint16_t b16; \ -- } _tmp; \ -- uint16_t _tmp2 = (uint16_t)(x); \ -- _tmp.b8[1] = _tmp2 >> 8; \ -- _tmp.b8[0] = _tmp2 & 0xff; \ -- _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, -- -- /** Printer dclass */ -- LIBUSB_CLASS_PRINTER = 7, -- -- /** Picture transfer protocol class */ -- LIBUSB_CLASS_PTP = 6, -- -- /** Mass storage class */ -- LIBUSB_CLASS_MASS_STORAGE = 8, -- -- /** Hub class */ -- LIBUSB_CLASS_HUB = 9, -- -- /** Data class */ -- LIBUSB_CLASS_DATA = 10, -- -- /** 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 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 misc -- * Error codes. Most libusb functions return 0 on success or one of these -- * codes on failure. -- */ --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, -- -- /** 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 --}; -- --/** \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_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 -- ; --}; -- --int libusb_init(libusb_context **ctx); --void libusb_exit(libusb_context *ctx); --void libusb_set_debug(libusb_context *ctx, int level); -- --ssize_t libusb_get_device_list(libusb_context *ctx, -- libusb_device ***list); --void libusb_free_device_list(libusb_device **list, int unref_devices); --libusb_device *libusb_ref_device(libusb_device *dev); --void libusb_unref_device(libusb_device *dev); -- --int libusb_get_configuration(libusb_device_handle *dev, int *config); --int libusb_get_device_descriptor(libusb_device *dev, -- struct libusb_device_descriptor *desc); --int libusb_get_active_config_descriptor(libusb_device *dev, -- struct libusb_config_descriptor **config); --int libusb_get_config_descriptor(libusb_device *dev, uint8_t config_index, -- struct libusb_config_descriptor **config); --int libusb_get_config_descriptor_by_value(libusb_device *dev, -- uint8_t bConfigurationValue, struct libusb_config_descriptor **config); --void libusb_free_config_descriptor(struct libusb_config_descriptor *config); --uint8_t libusb_get_bus_number(libusb_device *dev); --uint8_t libusb_get_device_address(libusb_device *dev); --int libusb_get_max_packet_size(libusb_device *dev, unsigned char endpoint); --int libusb_get_max_iso_packet_size(libusb_device *dev, unsigned char endpoint); -- --int libusb_open(libusb_device *dev, libusb_device_handle **handle); --void libusb_close(libusb_device_handle *dev_handle); --libusb_device *libusb_get_device(libusb_device_handle *dev_handle); -- --int libusb_set_configuration(libusb_device_handle *dev, int configuration); --int libusb_claim_interface(libusb_device_handle *dev, int iface); --int libusb_release_interface(libusb_device_handle *dev, int iface); -- --libusb_device_handle *libusb_open_device_with_vid_pid(libusb_context *ctx, -- uint16_t vendor_id, uint16_t product_id); -- --int libusb_set_interface_alt_setting(libusb_device_handle *dev, -- int interface_number, int alternate_setting); --int libusb_clear_halt(libusb_device_handle *dev, unsigned char endpoint); --int libusb_reset_device(libusb_device_handle *dev); -- --int libusb_kernel_driver_active(libusb_device_handle *dev, int interface); --int libusb_detach_kernel_driver(libusb_device_handle *dev, int interface); --int libusb_attach_kernel_driver(libusb_device_handle *dev, int interface); -- --/* 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_alloc_transfer(int iso_packets); --int libusb_submit_transfer(struct libusb_transfer *transfer); --int libusb_cancel_transfer(struct libusb_transfer *transfer); --void 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_control_transfer(libusb_device_handle *dev_handle, -- uint8_t request_type, uint8_t request, uint16_t value, uint16_t index, -- unsigned char *data, uint16_t length, unsigned int timeout); -- --int libusb_bulk_transfer(libusb_device_handle *dev_handle, -- unsigned char endpoint, unsigned char *data, int length, -- int *actual_length, unsigned int timeout); -- --int 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, -- 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, (LIBUSB_DT_STRING << 8) | desc_index, -- langid, data, length, 1000); --} -- --int libusb_get_string_descriptor_ascii(libusb_device_handle *dev, -- uint8_t index, unsigned char *data, int length); -- --/* polling and timeouts */ -- --int libusb_try_lock_events(libusb_context *ctx); --void libusb_lock_events(libusb_context *ctx); --void libusb_unlock_events(libusb_context *ctx); --int libusb_event_handling_ok(libusb_context *ctx); --int libusb_event_handler_active(libusb_context *ctx); --void libusb_lock_event_waiters(libusb_context *ctx); --void libusb_unlock_event_waiters(libusb_context *ctx); --int libusb_wait_for_event(libusb_context *ctx, struct timeval *tv); -- --int libusb_handle_events_timeout(libusb_context *ctx, struct timeval *tv); --int libusb_handle_events(libusb_context *ctx); --int libusb_handle_events_locked(libusb_context *ctx, struct timeval *tv); --int libusb_pollfds_handle_timeouts(libusb_context *ctx); --int 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_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_pollfd_removed_cb)(int fd, void *user_data); -- --const struct libusb_pollfd **libusb_get_pollfds(libusb_context *ctx); --void 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/Platform/Android/jni/External/libusb-1.0.8/libusb/libusbi.h b/Platform/Android/jni/External/libusb-1.0.8/libusb/libusbi.h -deleted file mode 100644 -index e488885..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/libusbi.h -+++ /dev/null -@@ -1,809 +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 "config.h" -- --#include --#include --#include --#include --#include "libusb.h" -- --#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 *)((char *)(ptr) - (unsigned long)(&((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" -- */ --#define list_for_each_entry(pos, head, member) \ -- for (pos = list_entry((head)->next, typeof(*pos), member); \ -- &pos->member != (head); \ -- pos = list_entry(pos->member.next, typeof(*pos), member)) -- --#define list_for_each_entry_safe(pos, n, head, member) \ -- for (pos = list_entry((head)->next, typeof(*pos), member), \ -- n = list_entry(pos->member.next, typeof(*pos), member); \ -- &pos->member != (head); \ -- pos = n, n = list_entry(n->member.next, typeof(*n), 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, -- const char *function, const char *format, ...); -- --#ifdef ENABLE_LOGGING --#define _usbi_log(ctx, level, fmt...) usbi_log(ctx, level, __FUNCTION__, fmt) --#else --#define _usbi_log(ctx, level, fmt...) --#endif -- --#ifdef ENABLE_DEBUG_LOGGING --#define usbi_dbg(fmt...) _usbi_log(NULL, LOG_LEVEL_DEBUG, fmt) --#else --#define usbi_dbg(fmt...) --#endif -- --#define usbi_info(ctx, fmt...) _usbi_log(ctx, LOG_LEVEL_INFO, fmt) --#define usbi_warn(ctx, fmt...) _usbi_log(ctx, LOG_LEVEL_WARNING, fmt) --#define usbi_err(ctx, fmt...) _usbi_log(ctx, LOG_LEVEL_ERROR, fmt) -- --#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))) -- --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; -- pthread_mutex_t usb_devs_lock; -- -- /* A list of open handles. Backends are free to traverse this if required. -- */ -- struct list_head open_devs; -- pthread_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; -- pthread_mutex_t flying_transfers_lock; -- -- /* list of poll fds */ -- struct list_head pollfds; -- pthread_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; -- pthread_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 */ -- pthread_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 */ -- pthread_mutex_t event_waiters_lock; -- pthread_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 */ -- pthread_mutex_t lock; -- int refcnt; -- -- struct libusb_context *ctx; -- -- uint8_t bus_number; -- uint8_t device_address; -- uint8_t num_configurations; -- -- struct list_head list; -- unsigned long session_data; -- unsigned char os_priv[0]; --}; -- --struct libusb_device_handle { -- /* lock protects claimed_interfaces */ -- pthread_mutex_t lock; -- unsigned long claimed_interfaces; -- -- struct list_head list; -- struct libusb_device *dev; -- unsigned char os_priv[0]; --}; -- --#define USBI_TRANSFER_TIMED_OUT (1<<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). */ -- pthread_mutex_t lock; --}; -- --#define __USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer) \ -- ((struct libusb_transfer *)(((void *)(transfer)) \ -- + sizeof(struct usbi_transfer))) --#define __LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer) \ -- ((struct usbi_transfer *)(((void *)(transfer)) \ -- - sizeof(struct usbi_transfer))) -- --static inline void *usbi_transfer_get_os_priv(struct usbi_transfer *transfer) --{ -- return ((void *)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, 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); -- --/* 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 iface); -- -- /* 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 iface); -- -- /* 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 iface, 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); -- -- /* 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); -- -- /* 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); -- -- /* 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, nfds_t 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; -- --#endif -- -diff --git a/Platform/Android/jni/External/libusb-1.0.8/libusb/os/darwin_usb.c b/Platform/Android/jni/External/libusb-1.0.8/libusb/os/darwin_usb.c -deleted file mode 100644 -index 0e69e77..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/os/darwin_usb.c -+++ /dev/null -@@ -1,1513 +0,0 @@ --/* -- * darwin backend for libusb 1.0 -- * Copyright (C) 2008-2010 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 --#include -- --#include "darwin_usb.h" -- --static mach_port_t libusb_darwin_mp = 0; /* master port */ --static CFRunLoopRef libusb_darwin_acfl = NULL; /* async cf loop */ --static int 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 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) { -- return IOServiceGetMatchingServices(libusb_darwin_mp, IOServiceMatching(kIOUSBDeviceClassName), 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); -- 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)IOObjectRelease(usbDevice); -- (void)(*plugInInterface)->QueryInterface(plugInInterface, CFUUIDGetUUIDBytes(DeviceInterfaceID), -- (LPVOID)&device); -- -- (*plugInInterface)->Stop(plugInInterface); -- IODestroyPlugInInterface (plugInInterface); -- -- (*(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); -- 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; -- 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); -- -- CFNumberGetValue(locationCF, kCFNumberLongType, &location); -- CFRelease (locationCF); -- IOObjectRelease (device); -- -- pthread_mutex_lock(&ctx->open_devs_lock); -- list_for_each_entry(handle, &ctx->open_devs, list) { -- 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)); -- } -- } -- -- pthread_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; -- -- /* 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"); -- -- CFRetain (CFRunLoopGetCurrent ()); -- -- /* add the notification port to the run loop */ -- libusb_notification_port = IONotificationPortCreate (libusb_darwin_mp); -- libusb_notification_cfsource = IONotificationPortGetRunLoopSource (libusb_notification_port); -- CFRunLoopAddSource(CFRunLoopGetCurrent (), 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 ((void *)kresult); -- } -- -- /* arm notifiers */ -- darwin_clear_iterator (libusb_rem_device_iterator); -- -- /* let the main thread know about the async runloop */ -- libusb_darwin_acfl = CFRunLoopGetCurrent (); -- -- usbi_info (ctx, "libopenusb/darwin.c event_thread_main: thread ready to receive events"); -- -- /* run the runloop */ -- CFRunLoopRun(); -- -- usbi_info (ctx, "libopenusb/darwin.c event_thread_main: thread exiting"); -- -- /* delete notification port */ -- CFRunLoopSourceInvalidate (libusb_notification_cfsource); -- IONotificationPortDestroy (libusb_notification_port); -- -- CFRelease (CFRunLoopGetCurrent ()); -- -- libusb_darwin_acfl = NULL; -- -- pthread_exit (0); --} -- --static int darwin_init(struct libusb_context *ctx) { -- IOReturn kresult; -- -- if (!(initCount++)) { -- /* Create the master port for talking to IOKit */ -- if (!libusb_darwin_mp) { -- kresult = IOMasterPort (MACH_PORT_NULL, &libusb_darwin_mp); -- -- if (kresult != kIOReturnSuccess || !libusb_darwin_mp) -- return darwin_to_libusb (kresult); -- } -- -- pthread_create (&libusb_darwin_at, NULL, event_thread_main, (void *)ctx); -- -- while (!libusb_darwin_acfl) -- usleep (10); -- } -- -- return 0; --} -- --static void darwin_exit (void) { -- if (!(--initCount)) { -- void *ret; -- -- /* stop the async runloop */ -- CFRunLoopStop (libusb_darwin_acfl); -- pthread_join (libusb_darwin_at, &ret); -- -- if (libusb_darwin_mp) -- mach_port_deallocate(mach_task_self(), libusb_darwin_mp); -- -- libusb_darwin_mp = 0; -- } --} -- --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 (libusb_le16_to_cpu (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; -- UInt8 config_value; -- int config_index; -- IOReturn kresult; -- -- kresult = (*(priv->device))->GetConfiguration (priv->device, &config_value); -- if (kresult != kIOReturnSuccess) -- return darwin_to_libusb (kresult); -- -- config_index = get_configuration_index (dev, config_value); -- 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); --} -- --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, idVendor, idProduct; -- UInt8 bDeviceClass, bDeviceSubClass; -- IOUSBDevRequest req; -- 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; -- -- /* Set up request for device descriptor */ -- req.bmRequestType = USBmakebmRequestType(kUSBIn, kUSBStandard, kUSBDevice); -- req.bRequest = kUSBRqGetDescriptor; -- req.wValue = kUSBDeviceDesc << 8; -- req.wIndex = 0; -- req.wLength = sizeof(IOUSBDeviceDescriptor); -- req.pData = &(priv->dev_descriptor); -- -- (*(device))->GetDeviceAddress (device, (USBDeviceAddress *)&address); -- (*(device))->GetDeviceProduct (device, &idProduct); -- (*(device))->GetDeviceVendor (device, &idVendor); -- (*(device))->GetDeviceClass (device, &bDeviceClass); -- (*(device))->GetDeviceSubClass (device, &bDeviceSubClass); -- -- /**** retrieve device descriptors ****/ -- /* device must be open for DeviceRequest */ -- (*device)->USBDeviceOpen(device); -- -- ret = (*(device))->DeviceRequest (device, &req); -- if (ret != kIOReturnSuccess) { -- int try_unsuspend = 1; --#if DeviceVersion >= 320 -- UInt32 info; -- -- /* device may be suspended. unsuspend it and try again */ -- /* 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 */ -- (void)(*device)->USBDeviceSuspend (device, 0); -- -- ret = (*(device))->DeviceRequest (device, &req); -- -- /* resuspend the device */ -- (void)(*device)->USBDeviceSuspend (device, 1); -- } -- } -- -- (*device)->USBDeviceClose (device); -- -- if (ret != kIOReturnSuccess) { -- usbi_warn (ctx, "could not retrieve device descriptor: %s. skipping device", darwin_error_str (ret)); -- ret = -1; -- break; -- } -- -- /**** end: retrieve device descriptors ****/ -- -- /* 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)); -- ret = -1; -- break; -- } -- -- dev->bus_number = locationID >> 24; -- dev->device_address = address; -- -- /* save our location, we'll need this later */ -- priv->location = locationID; -- snprintf(priv->sys_path, 20, "%03i-%04x-%04x-%02x-%02x", address, idVendor, idProduct, bDeviceClass, 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; -- -- if (!libusb_darwin_mp) -- return LIBUSB_ERROR_INVALID_PARAM; -- -- kresult = usb_setup_device_iterator (&deviceIterator); -- 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 { -- priv->is_open = 1; -- -- /* create async event source */ -- kresult = (*(dpriv->device))->CreateDeviceAsyncEventSource (dpriv->device, &priv->cfSource); -- -- 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; -- UInt8 configNum; -- IOReturn kresult; -- -- kresult = (*(dpriv->device))->GetConfiguration (dpriv->device, &configNum); -- if (kresult != kIOReturnSuccess) -- return darwin_to_libusb (kresult); -- -- *config = (int) configNum; -- -- 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); -- -- 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); -- -- /* 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; -- uint8_t new_config; -- -- /* 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) { -- u_int8_t nConfig; /* Index of configuration to use */ -- IOUSBConfigurationDescriptorPtr configDesc; /* to describe which configuration to select */ -- /* Only a composite class device with no vendor-specific driver will -- be configured. Otherwise, we need to do it ourselves, or there -- will be no interfaces for the device. */ -- -- usbi_info (HANDLE_CTX (dev_handle), "no interface found; selecting configuration" ); -- -- kresult = (*(dpriv->device))->GetNumberOfConfigurations (dpriv->device, &nConfig); -- if (kresult != kIOReturnSuccess) { -- usbi_err (HANDLE_CTX (dev_handle), "GetNumberOfConfigurations: %s", darwin_error_str(kresult)); -- return darwin_to_libusb(kresult); -- } -- -- if (nConfig < 1) { -- usbi_err (HANDLE_CTX (dev_handle), "GetNumberOfConfigurations: no configurations"); -- return LIBUSB_ERROR_OTHER; -- } -- -- usbi_info (HANDLE_CTX (dev_handle), "device has %d configuration%s. using the first", -- (int)nConfig, (nConfig > 1 ? "s" : "") ); -- -- /* Always use the first configuration */ -- kresult = (*(dpriv->device))->GetConfigurationDescriptorPtr (dpriv->device, 0, &configDesc); -- if (kresult != kIOReturnSuccess) { -- usbi_err (HANDLE_CTX (dev_handle), "GetConfigurationDescriptorPtr: %s", -- darwin_error_str(kresult)); -- -- new_config = 1; -- } else -- new_config = configDesc->bConfigurationValue; -- -- usbi_info (HANDLE_CTX (dev_handle), "new configuration value is %d", new_config); -- -- /* set the configuration */ -- kresult = darwin_set_configuration (dev_handle, new_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); -- 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; -- } -- -- /* ignore release error */ -- (void)IOObjectRelease (usbInterface); -- -- /* Do the actual claim */ -- kresult = (*plugInInterface)->QueryInterface(plugInInterface, -- CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID), -- (LPVOID)&cInterface->interface); -- if (kresult || !cInterface->interface) { -- usbi_err (HANDLE_CTX (dev_handle), "QueryInterface: %s", darwin_error_str(kresult)); -- return darwin_to_libusb (kresult); -- } -- -- /* We no longer need the intermediate plug-in */ -- (*plugInInterface)->Release(plugInInterface); -- -- /* 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) { -- return LIBUSB_ERROR_NOT_SUPPORTED; --} -- --static int darwin_detach_kernel_driver (struct libusb_device_handle *dev_handle, int interface) { -- return LIBUSB_ERROR_NOT_SUPPORTED; --} -- --static void darwin_destroy_device(struct libusb_device *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 is_read; /* 0 = we're reading, 1 = we're writing */ -- 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; -- -- /* are we reading or writing? */ -- is_read = transfer->endpoint & LIBUSB_ENDPOINT_IN; -- -- 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_read) -- 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 { -- if (is_read) -- 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_read ? "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 is_read; /* 0 = we're writing, 1 = we're reading */ -- uint8_t pipeRef, iface; -- UInt64 frame; -- AbsoluteTime atTime; -- int i; -- -- struct __darwin_interface *cInterface; -- -- /* are we reading or writing? */ -- is_read = transfer->endpoint & LIBUSB_ENDPOINT_IN; -- -- /* construct an array of IOUSBIsocFrames */ -- 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 += 2; -- -- /* submit the request */ -- if (is_read) -- 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); -- -- if (kresult != kIOReturnSuccess) { -- usbi_err (TRANSFER_CTX (transfer), "isochronous transfer failed (dir: %s): %s", is_read ? "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_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; -- -- /* all transfers in libusb-1.0 are async */ -- 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"); -- -- 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_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]; -- -- 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; -- -- usbi_info (ITRANSFER_CTX (itransfer), "an async io operation has completed"); -- -- /* 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], &arg0, sizeof (UInt32)); --} -- --static int darwin_transfer_status (struct usbi_transfer *itransfer, kern_return_t result) { -- switch (result) { -- 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", darwin_error_str (result)); -- return LIBUSB_TRANSFER_OVERFLOW; -- case kIOUSBTransactionTimeout: -- usbi_err (ITRANSFER_CTX (itransfer), "transfer error: 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) { -- 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; -- 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, nfds_t nfds, int num_ready) { -- struct usbi_transfer *itransfer; -- UInt32 io_size; -- IOReturn kresult; -- int i = 0, ret; -- UInt32 message; -- -- pthread_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) { -- 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 < 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"); -- } -- } -- -- pthread_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 */ -- host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &clock_ref); -- break; -- case USBI_CLOCK_MONOTONIC: -- /* use system boot time as reference for the monotonic clock */ -- host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &clock_ref); -- 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/Platform/Android/jni/External/libusb-1.0.8/libusb/os/darwin_usb.h b/Platform/Android/jni/External/libusb-1.0.8/libusb/os/darwin_usb.h -deleted file mode 100644 -index a7b31eb..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/os/darwin_usb.h -+++ /dev/null -@@ -1,161 +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 -- --/* 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 -- --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; --}; -- --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; -- uint8_t endpoint_addrs[USB_MAXENDPOINTS]; -- } interfaces[USB_MAXINTERFACES]; --}; -- --struct darwin_transfer_priv { -- /* Isoc */ -- IOUSBIsocFrame *isoc_framelist; -- -- /* 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/Platform/Android/jni/External/libusb-1.0.8/libusb/os/linux_usbfs.c b/Platform/Android/jni/External/libusb-1.0.8/libusb/os/linux_usbfs.c -deleted file mode 100644 -index 6b02188..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/os/linux_usbfs.c -+++ /dev/null -@@ -1,2211 +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 -- --#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; -- --/* 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 error except a -- * cancellation, all URBs within that transfer will be cancelled with the -- * endpoint is disabled, meaning that no more data can creep in during the -- * time it takes to cancel the remaining URBs. -- * -- * 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 the URBs. -- * For OUT transfers, SHORT_NOT_OK must not be set. The effective behaviour -- * (where an OUT transfer does not complete, the rest of the URBs in the -- * transfer get cancelled) is already in effect, and setting this flag is -- * disallowed (a kernel with USB debugging enabled will reject such URBs). -- */ --static int supports_flag_bulk_continuation = -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 = -1; -- --/* do we have a descriptors file? */ --static int sysfs_has_descriptors = -1; -- --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, --}; -- --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; -- -- /* 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) --{ -- 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; --} -- --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) --{ --/* -- * Note: this func originally searched '/dev/bus/usb' before /proc/bus/usb. -- * i reversed the order, because it's currently easier to manage the /proc usbfs permissions -- */ -- const char *path = "/proc/bus/usb"; -- const char *ret = NULL; -- -- if (check_usb_vfs(path)) { -- ret = path; -- } else { -- path = "/dev/bus/usb"; -- if (check_usb_vfs(path)) -- ret = path; -- } -- -- usbi_dbg("found usbfs at %s", ret); -- printf("found usbfs at %s\n",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) --{ -- 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; -- } else { -- usbi_dbg("monotonic clock doesn't work, errno %d", errno); -- return CLOCK_REALTIME; -- } --} -- --/* bulk continuation URB flag available from Linux 2.6.32 */ --static int check_flag_bulk_continuation(void) --{ -- struct utsname uts; -- int sublevel; -- -- if (uname(&uts) < 0) -- return -1; -- if (strlen(uts.release) < 4) -- return 0; -- if (strncmp(uts.release, "2.6.", 4) != 0) -- return 0; -- -- sublevel = atoi(uts.release + 4); -- return sublevel >= 32; --} -- --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) { -- supports_flag_bulk_continuation = check_flag_bulk_continuation(); -- 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"); -- -- r = stat(SYSFS_DEVICE_PATH, &statbuf); -- if (r == 0 && S_ISDIR(statbuf.st_mode)) { -- usbi_dbg("found usb devices in sysfs"); -- } 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; --} -- --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; -- size_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_err(DEVICE_CTX(dev), "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; -- int 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, 1); -- 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, 0); -- 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; -- 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); -- } -- -- 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 = 0; -- -- 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 LIBUSB_ERROR_IO; -- } -- -- 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; -- } -- -- r = enumerate_device(ctx, &discdevs, busnum, (uint8_t) devaddr, NULL); -- if (r < 0) -- goto out; -- } -- -- *_discdevs = discdevs; --out: -- 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; -- -- 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 *usbfs_fallback) --{ -- int r; -- FILE *fd; -- char filename[PATH_MAX]; -- int busnum; -- int devaddr; -- -- usbi_dbg("scan %s", devname); -- -- /* determine descriptors presence ahead of time, we need to know this -- * when we reach initialize_device */ -- if (sysfs_has_descriptors == -1) { -- struct stat statbuf; -- -- snprintf(filename, PATH_MAX, "%s/%s/descriptors", SYSFS_DEVICE_PATH, -- devname); -- r = stat(filename, &statbuf); -- if (r == 0 && S_ISREG(statbuf.st_mode)) { -- usbi_dbg("sysfs descriptors available"); -- sysfs_has_descriptors = 1; -- } else { -- usbi_dbg("sysfs descriptors not available"); -- sysfs_has_descriptors = 0; -- } -- } -- -- snprintf(filename, PATH_MAX, "%s/%s/busnum", SYSFS_DEVICE_PATH, devname); -- fd = fopen(filename, "r"); -- if (!fd) { -- if (errno == ENOENT) { -- usbi_dbg("busnum not found, cannot relate sysfs to usbfs, " -- "falling back on pure usbfs"); -- sysfs_can_relate_devices = 0; -- *usbfs_fallback = 1; -- return LIBUSB_ERROR_OTHER; -- } -- usbi_err(ctx, "open busnum failed, errno=%d", errno); -- return LIBUSB_ERROR_IO; -- } -- -- sysfs_can_relate_devices = 1; -- -- r = fscanf(fd, "%d", &busnum); -- fclose(fd); -- if (r != 1) { -- usbi_err(ctx, "fscanf busnum returned %d, errno=%d", r, errno); -- return LIBUSB_ERROR_IO; -- } -- -- snprintf(filename, PATH_MAX, "%s/%s/devnum", SYSFS_DEVICE_PATH, devname); -- fd = fopen(filename, "r"); -- if (!fd) { -- usbi_err(ctx, "open devnum failed, errno=%d", errno); -- return LIBUSB_ERROR_IO; -- } -- -- r = fscanf(fd, "%d", &devaddr); -- fclose(fd); -- if (r != 1) { -- usbi_err(ctx, "fscanf devnum returned %d, errno=%d", r, errno); -- return LIBUSB_ERROR_IO; -- } -- -- 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, int *usbfs_fallback) --{ -- struct discovered_devs *discdevs = *_discdevs; -- DIR *devices = opendir(SYSFS_DEVICE_PATH); -- struct dirent *entry; -- int r = 0; -- -- if (!devices) { -- usbi_err(ctx, "opendir devices failed errno=%d", errno); -- return LIBUSB_ERROR_IO; -- } -- -- 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; -- -- r = sysfs_scan_device(ctx, &discdevs_new, entry->d_name, -- usbfs_fallback); -- if (r < 0) -- goto out; -- discdevs = discdevs_new; -- } -- --out: -- closedir(devices); -- *_discdevs = discdevs; -- 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, sometimes we have -- * sysfs but not enough information to relate sysfs devices to usbfs -- * nodes. the usbfs_fallback variable is used to indicate that we should -- * fall back on usbfs. -- */ -- if (sysfs_can_relate_devices != 0) { -- int usbfs_fallback = 0; -- int r = sysfs_get_device_list(ctx, _discdevs, &usbfs_fallback); -- if (!usbfs_fallback) -- return r; -- } -- -- 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); -- hpriv->fd = open(filename, O_RDWR); -- if (hpriv->fd < 0) { -- if (errno == EACCES) { -- fprintf(stderr, "libusb couldn't open USB device %s: " -- "Permission denied.\n" -- "libusb requires write access to USB device nodes.\n", -- filename); -- return LIBUSB_ERROR_ACCESS; -- } else if (errno == ENOENT) { -- 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 (*config == -1) -- *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 r = ioctl(fd, IOCTL_USBFS_RESET, NULL); -- if (r) { -- if (errno == ENODEV) -- return LIBUSB_ERROR_NOT_FOUND; -- -- usbi_err(HANDLE_CTX(handle), -- "reset failed error %d errno %d", r, errno); -- return LIBUSB_ERROR_OTHER; -- } -- -- return 0; --} -- --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); --} -- --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; -- -- /* 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; -- -- 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; -- -- r = ioctl(dpriv->fd, IOCTL_USBFS_SUBMITURB, urb); -- if (r < 0) { -- int j; -- -- 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 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; -- for (j = 0; j < i; j++) { -- int tmp = ioctl(dpriv->fd, IOCTL_USBFS_DISCARDURB, &urbs[j]); -- if (tmp && errno != EINVAL) -- usbi_warn(TRANSFER_CTX(transfer), -- "unrecognised discard errno %d", errno); -- } -- -- 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) { -- int j; -- -- 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; -- for (j = 0; j < i; j++) { -- int tmp = ioctl(dpriv->fd, IOCTL_USBFS_DISCARDURB, urbs[j]); -- if (tmp && errno != EINVAL) -- usbi_warn(TRANSFER_CTX(transfer), -- "unrecognised discard errno %d", errno); -- } -- -- 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->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 cancel_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); -- int r; -- -- if (!tpriv->urbs) -- return LIBUSB_ERROR_NOT_FOUND; -- -- tpriv->reap_action = CANCELLED; -- r = ioctl(dpriv->fd, IOCTL_USBFS_DISCARDURB, tpriv->urbs); -- if(r) { -- if (errno == EINVAL) { -- usbi_dbg("URB not found --> assuming ready to be reaped"); -- return 0; -- } else { -- usbi_err(TRANSFER_CTX(transfer), -- "unrecognised DISCARD code %d", errno); -- return LIBUSB_ERROR_OTHER; -- } -- } -- -- return 0; --} -- --static int cancel_bulk_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); -- int i; -- -- if (!tpriv->urbs) -- return LIBUSB_ERROR_NOT_FOUND; -- -- tpriv->reap_action = CANCELLED; -- for (i = 0; i < tpriv->num_urbs; i++) { -- int tmp = ioctl(dpriv->fd, IOCTL_USBFS_DISCARDURB, &tpriv->urbs[i]); -- if (tmp && errno != EINVAL) -- usbi_warn(TRANSFER_CTX(transfer), -- "unrecognised discard errno %d", errno); -- } -- return 0; --} -- --static int cancel_iso_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); -- int i; -- -- if (!tpriv->iso_urbs) -- return LIBUSB_ERROR_NOT_FOUND; -- -- tpriv->reap_action = CANCELLED; -- for (i = 0; i < tpriv->num_urbs; i++) { -- int tmp = ioctl(dpriv->fd, IOCTL_USBFS_DISCARDURB, tpriv->iso_urbs[i]); -- if (tmp && errno != EINVAL) -- usbi_warn(TRANSFER_CTX(transfer), -- "unrecognised discard errno %d", errno); -- } -- return 0; --} -- --static int op_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: -- return cancel_bulk_transfer(itransfer); -- case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: -- return cancel_iso_transfer(itransfer); -- default: -- usbi_err(TRANSFER_CTX(transfer), -- "unknown endpoint type %d", transfer->type); -- return LIBUSB_ERROR_INVALID_PARAM; -- } --} -- --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); -- -- switch (transfer->type) { -- case LIBUSB_TRANSFER_TYPE_CONTROL: -- case LIBUSB_TRANSFER_TYPE_BULK: -- case LIBUSB_TRANSFER_TYPE_INTERRUPT: -- free(tpriv->urbs); -- tpriv->urbs = NULL; -- break; -- case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: -- free_iso_urbs(tpriv); -- 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); -- int num_urbs = tpriv->num_urbs; -- int urb_idx = urb - tpriv->urbs; -- enum libusb_transfer_status status = LIBUSB_TRANSFER_COMPLETED; -- int r = 0; -- -- pthread_mutex_lock(&itransfer->lock); -- usbi_dbg("handling completion status %d of bulk urb %d/%d", urb->status, -- urb_idx + 1, 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). -- * -- * 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) { -- struct libusb_transfer *transfer = -- __USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); -- 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 == num_urbs) { -- usbi_dbg("abnormal reap: last URB handled, reporting"); -- if (tpriv->reap_action == CANCELLED) { -- free(tpriv->urbs); -- tpriv->urbs = NULL; -- pthread_mutex_unlock(&itransfer->lock); -- r = usbi_handle_transfer_cancellation(itransfer); -- goto out_unlock; -- } -- if (tpriv->reap_action != COMPLETED_EARLY) -- status = LIBUSB_TRANSFER_ERROR; -- goto completed; -- } -- goto out_unlock; -- } -- -- if (urb->status == 0 || urb->status == -EREMOTEIO || -- (urb->status == -EOVERFLOW && urb->actual_length > 0)) -- itransfer->transferred += urb->actual_length; -- -- -- switch (urb->status) { -- case 0: -- break; -- case -EREMOTEIO: /* short transfer */ -- break; -- case -EPIPE: -- usbi_dbg("detected endpoint stall"); -- status = LIBUSB_TRANSFER_STALL; -- goto completed; -- case -EOVERFLOW: -- /* overflow can only ever occur in the last urb */ -- usbi_dbg("overflow, actual_length=%d", urb->actual_length); -- status = LIBUSB_TRANSFER_OVERFLOW; -- goto completed; -- case -ETIME: -- case -EPROTO: -- case -EILSEQ: -- -- usbi_dbg("low level error %d", urb->status); -- status = LIBUSB_TRANSFER_ERROR; -- goto completed; -- default: -- usbi_warn(ITRANSFER_CTX(itransfer), -- "unrecognised urb status %d", urb->status); -- status = LIBUSB_TRANSFER_ERROR; -- goto completed; -- } -- -- /* if we're the last urb or we got less data than requested then we're -- * done */ -- if (urb_idx == num_urbs - 1) { -- usbi_dbg("last URB in transfer --> complete!"); -- } else if (urb->actual_length < urb->buffer_length) { -- struct libusb_transfer *transfer = -- __USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); -- struct linux_device_handle_priv *dpriv = -- __device_handle_priv(transfer->dev_handle); -- int i; -- -- usbi_dbg("short transfer %d/%d --> complete!", urb->actual_length, -- urb->buffer_length); -- -- /* we have to cancel the remaining urbs and wait for their completion -- * before reporting results */ -- tpriv->reap_action = COMPLETED_EARLY; -- for (i = urb_idx + 1; i < tpriv->num_urbs; i++) { -- /* remaining URBs with continuation flag are automatically -- * cancelled by the kernel */ -- if (tpriv->urbs[i].flags & USBFS_URB_BULK_CONTINUATION) -- continue; -- int tmp = ioctl(dpriv->fd, IOCTL_USBFS_DISCARDURB, &tpriv->urbs[i]); -- if (tmp && errno != EINVAL) -- usbi_warn(TRANSFER_CTX(transfer), -- "unrecognised discard errno %d", errno); -- } -- goto out_unlock; -- } else { -- goto out_unlock; -- } -- --completed: -- free(tpriv->urbs); -- tpriv->urbs = NULL; -- pthread_mutex_unlock(&itransfer->lock); -- return usbi_handle_transfer_completion(itransfer, status); --out_unlock: -- pthread_mutex_unlock(&itransfer->lock); -- return r; --} -- --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; -- -- pthread_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!"); -- pthread_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); -- -- if (urb->status == 0) { -- /* 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 = urb_desc->status; -- 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) { -- pthread_mutex_unlock(&itransfer->lock); -- return usbi_handle_transfer_cancellation(itransfer); -- } else { -- pthread_mutex_unlock(&itransfer->lock); -- return usbi_handle_transfer_completion(itransfer, -- LIBUSB_TRANSFER_ERROR); -- } -- } -- goto out; -- } -- -- switch (urb->status) { -- case 0: -- break; -- case -ETIME: -- case -EPROTO: -- case -EILSEQ: -- usbi_dbg("low-level USB error %d", urb->status); -- break; -- default: -- usbi_warn(TRANSFER_CTX(transfer), -- "unrecognised urb status %d", urb->status); -- break; -- } -- -- /* if we're the last urb or we got less data than requested then we're -- * done */ -- if (urb_idx == num_urbs) { -- usbi_dbg("last URB in transfer --> complete!"); -- free_iso_urbs(tpriv); -- pthread_mutex_unlock(&itransfer->lock); -- return usbi_handle_transfer_completion(itransfer, LIBUSB_TRANSFER_COMPLETED); -- } -- --out: -- pthread_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; -- -- pthread_mutex_lock(&itransfer->lock); -- usbi_dbg("handling completion status %d", urb->status); -- -- if (urb->status == 0) -- 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; -- pthread_mutex_unlock(&itransfer->lock); -- return usbi_handle_transfer_cancellation(itransfer); -- } -- -- switch (urb->status) { -- case 0: -- itransfer->transferred = urb->actual_length; -- status = LIBUSB_TRANSFER_COMPLETED; -- break; -- case -EPIPE: -- usbi_dbg("unsupported control request"); -- status = LIBUSB_TRANSFER_STALL; -- break; -- case -ETIME: -- case -EPROTO: -- case -EILSEQ: -- 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; -- pthread_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, nfds_t nfds, int num_ready) --{ -- int r; -- int i = 0; -- -- pthread_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) { -- 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: -- pthread_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/Platform/Android/jni/External/libusb-1.0.8/libusb/os/linux_usbfs.h b/Platform/Android/jni/External/libusb-1.0.8/libusb/os/linux_usbfs.h -deleted file mode 100644 -index bd02edc..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/os/linux_usbfs.h -+++ /dev/null -@@ -1,138 +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 -- --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/Platform/Android/jni/External/libusb-1.0.8/libusb/sync.c b/Platform/Android/jni/External/libusb-1.0.8/libusb/sync.c -deleted file mode 100644 -index d972c2d..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/libusb/sync.c -+++ /dev/null -@@ -1,311 +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 "config.h" --#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 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 -- */ --API_EXPORTED int 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(HANDLE_CTX(dev_handle)); -- if (r < 0) { -- if (r == LIBUSB_ERROR_INTERRUPTED) -- continue; -- libusb_cancel_transfer(transfer); -- while (!completed) -- if (libusb_handle_events(HANDLE_CTX(dev_handle)) < 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; -- 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 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(HANDLE_CTX(dev_handle)); -- if (r < 0) { -- if (r == LIBUSB_ERROR_INTERRUPTED) -- continue; -- libusb_cancel_transfer(transfer); -- while (!completed) -- if (libusb_handle_events(HANDLE_CTX(dev_handle)) < 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 -- */ --API_EXPORTED int 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 -- */ --API_EXPORTED int 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/Platform/Android/jni/External/libusb-1.0.8/ltmain.sh b/Platform/Android/jni/External/libusb-1.0.8/ltmain.sh -deleted file mode 100644 -index a72f2fd..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/ltmain.sh -+++ /dev/null -@@ -1,8406 +0,0 @@ --# Generated from ltmain.m4sh. -- --# ltmain.sh (GNU libtool) 2.2.6b --# Written by Gordon Matzigkeit , 1996 -- --# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 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 --# --tag=TAG use configuration variables from tag TAG --# -v, --verbose print informational messages (default) --# --version print version information --# -h, --help print short or long 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. --# 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.6b --# automake: $automake_version --# autoconf: $autoconf_version --# --# Report bugs to . -- --PROGRAM=ltmain.sh --PACKAGE=libtool --VERSION=2.2.6b --TIMESTAMP="" --package_revision=1.3017 -- --# 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 -- --# NLS nuisances: We save the old values to restore during execute mode. --# Only set LANG and LC_ALL to C if already set. --# These must not be set unconditionally because not all systems understand --# e.g. LANG=C (notably SCO). --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 -- --$lt_unset CDPATH -- -- -- -- -- --: ${CP="cp -f"} --: ${ECHO="echo"} --: ${EGREP="/bin/grep -E"} --: ${FGREP="/bin/grep -F"} --: ${GREP="/bin/grep"} --: ${LN_S="ln -s"} --: ${MAKE="make"} --: ${MKDIR="mkdir"} --: ${MV="mv -f"} --: ${RM="rm -f"} --: ${SED="/bin/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 "X${1}" | $Xsed -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 "X${1}" | $Xsed -e "$basename"` --} -- --# Generated shell functions inserted here. -- --# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh --# is ksh but when the shell is invoked as "sh" and the current value of --# the _XPG environment variable is not equal to 1 (one), the special --# positional parameter $0, within a function call, is the name of the --# function. --progpath="$0" -- --# The name of this program: --# In the unlikely event $progname began with a '-', it would play havoc with --# func_echo (imagine progname=-n), so we prepend ./ in that case: --func_dirname_and_basename "$progpath" --progname=$func_basename_result --case $progname in -- -*) progname=./$progname ;; --esac -- --# 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_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 "X$my_directory_path" | $Xsed -e "$dirname"` -- done -- my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e '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 "X$my_tmpdir" | $Xsed --} -- -- --# 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 "X$1" | $Xsed -e "$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 "X$1" | $Xsed \ -- -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 '/^# '$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:/,/# -h/ { -- s/^# // -- s/^# *$// -- s/\$progname/'$progname'/ -- p -- }' < "$progpath" -- $ECHO -- $ECHO "run \`$progname --help | more' for full usage" -- exit $? --} -- --# func_help --# Echo long help message to standard output and exit. --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" -- exit $? --} -- --# 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=: -- -- -- -- -- --# Check that we have a working $ECHO. --if test "X$1" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift --elif test "X$1" = X--fallback-echo; then -- # Avoid inline document here, it may be left over -- : --elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then -- # Yippee, $ECHO works! -- : --else -- # Restart under the correct shell, and then maybe $ECHO will work. -- exec $SHELL "$progpath" --no-reexec ${1+"$@"} --fi -- --if test "X$1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat </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=: -- ;; -- -- --verbose| -v) preserve_args="$preserve_args $opt" -- opt_silent=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=: ;; -- --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 -- case $@ in -- # Blanks in the command may have been stripped by the calling shell, -- # but not from the CC environment variable when configure was run. -- " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; -- # Blanks at the start of $base_compile will cause this to fail -- # if we don't check for them as well. -- *) -- for z in $available_tags; do -- if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then -- # Evaluate the configuration. -- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" -- CC_quoted= -- for arg in $CC; do -- # Double-quote args containing other shell metacharacters. -- func_quote_for_eval "$arg" -- CC_quoted="$CC_quoted $func_quote_for_eval_result" -- done -- case "$@ " in -- " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) -- # The compiler in the base compile command matches -- # the one in the tagged configuration. -- # Assume this is the tagged configuration we want. -- tagname=$z -- break -- ;; -- esac -- fi -- done -- # If $tagname still isn't set, then no tagged configuration -- # was found and let the user know that the "--tag" command -- # line option must be used. -- if test -z "$tagname"; then -- 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 "X$srcfile" | $Xsed -e 's%^.*/%%' -e '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 building PIC objects only -- -prefer-non-pic try to building 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 -- --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 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 -- -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 -- --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." -- -- exit $? --} -- -- # Now that we've collected a possible --mode arg, show help if necessary -- $opt_help && func_mode_help -- -- --# 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 -- -*) ;; -- *) -- # 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 "X----------------------------------------------------------------------" | $Xsed -- $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 "X----------------------------------------------------------------------" | $Xsed -- 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. -- $ECHO "X$nonopt" | $GREP shtool >/dev/null; 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" -- -- # We need to accept at least all the BSD install flags. -- dest= -- files= -- opts= -- prev= -- install_type= -- isdir=no -- stripme= -- for arg -- do -- if test -n "$dest"; then -- files="$files $dest" -- dest=$arg -- continue -- fi -- -- case $arg in -- -d) isdir=yes ;; -- -f) -- case " $install_prog " in -- *[\\\ /]cp\ *) ;; -- *) prev=$arg ;; -- esac -- ;; -- -g | -m | -o) -- prev=$arg -- ;; -- -s) -- stripme=" -s" -- continue -- ;; -- -*) -- ;; -- *) -- # If the previous option needed an argument, then skip it. -- if test -n "$prev"; then -- prev= -- else -- dest=$arg -- continue -- fi -- ;; -- esac -- -- # Aesthetically quote the argument. -- func_quote_for_eval "$arg" -- install_prog="$install_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 -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 "X$destdir" | $Xsed -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 "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` -- else -- relink_command=`$ECHO "X$relink_command" | $Xsed -e "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_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 "X$lib" | $Xsed -e '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 "X$relink_command" | $Xsed -e '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 "X$file$stripped_ext" | $Xsed -e "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 -- --/* 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 "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$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 "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -- else -- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -- fi -- ;; -- *) -- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` -- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "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. --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 -- if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | -- $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then -- win32_nmres=`eval $NM -f posix -A $1 | -- $SED -n -e ' -- 1,100{ -- / I /{ -- s,.*,import, -- p -- q -- } -- }'` -- case $win32_nmres in -- import*) win32_libid_type="x86 archive import";; -- *) win32_libid_type="x86 archive static";; -- esac -- fi -- ;; -- *DLL*) -- win32_libid_type="x86 DLL" -- ;; -- *executable*) # but shell scripts are "executable" too... -- case $win32_fileres in -- *MS\ Windows\ PE\ Intel*) -- win32_libid_type="x86 DLL" -- ;; -- esac -- ;; -- esac -- $ECHO "$win32_libid_type" --} -- -- -- --# func_extract_an_archive dir oldlib --func_extract_an_archive () --{ -- $opt_debug -- f_ex_an_ar_dir="$1"; shift -- f_ex_an_ar_oldlib="$1" -- func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' -- if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then -- : -- else -- 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 | $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 | $NL2SP` -- done -- -- func_extract_archives_result="$my_oldobjs" --} -- -- -- --# func_emit_wrapper_part1 [arg=no] --# --# Emit the first part of a libtool wrapper script on stdout. --# For more information, see the description associated with --# func_emit_wrapper(), below. --func_emit_wrapper_part1 () --{ -- func_emit_wrapper_part1_arg1=no -- if test -n "$1" ; then -- func_emit_wrapper_part1_arg1=$1 -- fi -- -- $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. --Xsed='${SED} -e 1s/^X//' --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 -- ECHO=\"$qecho\" -- file=\"\$0\" -- # Make sure echo works. -- if test \"X\$1\" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift -- elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then -- # Yippee, \$ECHO works! -- : -- else -- # Restart under the correct shell, and then maybe \$ECHO will work. -- exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} -- fi -- fi\ --" -- $ECHO "\ -- -- # Find the directory that this script lives in. -- thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\` -- file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` -- done --" --} --# end: func_emit_wrapper_part1 -- --# func_emit_wrapper_part2 [arg=no] --# --# Emit the second part of a libtool wrapper script on stdout. --# For more information, see the description associated with --# func_emit_wrapper(), below. --func_emit_wrapper_part2 () --{ -- func_emit_wrapper_part2_arg1=no -- if test -n "$1" ; then -- func_emit_wrapper_part2_arg1=$1 -- fi -- -- $ECHO "\ -- -- # Usually 'no', except on cygwin/mingw when embedded into -- # the cwrapper. -- WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_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 \"X\$thisdir\" | \$Xsed -e '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 \"X\$$shlibpath_var\" | \$Xsed -e '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. --" -- case $host in -- # Backslashes separate directories on plain windows -- *-*-mingw | *-*-os2* | *-cegcc*) -- $ECHO "\ -- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} --" -- ;; -- -- *) -- $ECHO "\ -- exec \"\$progdir/\$program\" \${1+\"\$@\"} --" -- ;; -- esac -- $ECHO "\ -- \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 -- exit 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\ --" --} --# end: func_emit_wrapper_part2 -- -- --# 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=no -- if test -n "$1" ; then -- func_emit_wrapper_arg1=$1 -- fi -- -- # split this up so that func_emit_cwrapperexe_src -- # can call each part independently. -- func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" -- func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" --} -- -- --# 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 -- lt_sed_strip_trailing_spaces="s/[ ]*\$//" -- func_to_host_path_tmp1=`( cmd //c echo "$1" |\ -- $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` -- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -- $SED -e "$lt_sed_naive_backslashify"` -- ;; -- *cygwin* ) -- func_to_host_path_tmp1=`cygpath -w "$1"` -- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -- $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_to_host_pathlist_tmp2="$1" -- # Once set for this call, this variable should not be -- # reassigned. It is used in tha fallback case. -- func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ -- $SED -e 's|^:*||' -e 's|:*$||'` -- case $build in -- *mingw* ) # Actually, msys. -- # Awkward: cmd appends spaces to result. -- lt_sed_strip_trailing_spaces="s/[ ]*\$//" -- func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ -- $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` -- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ -- $SED -e "$lt_sed_naive_backslashify"` -- ;; -- *cygwin* ) -- func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` -- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ -- $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_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" -- fi -- fi -- fi -- IFS=: -- 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_to_host_pathlist_result="$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 --# define setmode _setmode --#else --# include --# include --# ifdef __CYGWIN__ --# include --# define HAVE_SETENV --# ifdef __STRICT_ANSI__ --char *realpath (const char *, char *); --int putenv (char *); --int setenv (const char *, const char *, int); --# endif --# endif --#endif --#include --#include --#include --#include --#include --#include --#include --#include -- --#if defined(PATH_MAX) --# define LT_PATHMAX PATH_MAX --#elif defined(MAXPATHLEN) --# define LT_PATHMAX MAXPATHLEN --#else --# define LT_PATHMAX 1024 --#endif -- --#ifndef S_IXOTH --# define S_IXOTH 0 --#endif --#ifndef S_IXGRP --# define S_IXGRP 0 --#endif -- --#ifdef _MSC_VER --# define S_IXUSR _S_IEXEC --# define stat _stat --# ifndef _INTPTR_T_DEFINED --# define intptr_t int --# endif --#endif -- --#ifndef DIR_SEPARATOR --# define DIR_SEPARATOR '/' --# define PATH_SEPARATOR ':' --#endif -- --#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ -- defined (__OS2__) --# define HAVE_DOS_BASED_FILE_SYSTEM --# 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 */ -- --#ifdef __CYGWIN__ --# define FOPEN_WB "wb" --#endif -- --#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) -- --#undef LTWRAPPER_DEBUGPRINTF --#if defined DEBUGWRAPPER --# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args --static void --ltwrapper_debugprintf (const char *fmt, ...) --{ -- va_list args; -- va_start (args, fmt); -- (void) vfprintf (stderr, fmt, args); -- va_end (args); --} --#else --# define LTWRAPPER_DEBUGPRINTF(args) --#endif -- --const char *program_name = NULL; -- --void *xmalloc (size_t num); --char *xstrdup (const char *string); --const char *base_name (const char *name); --char *find_executable (const char *wrapper); --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_fatal (const char *message, ...); --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_opt_process_env_set (const char *arg); --void lt_opt_process_env_prepend (const char *arg); --void lt_opt_process_env_append (const char *arg); --int lt_split_name_value (const char *arg, char** name, char** value); --void lt_update_exe_path (const char *name, const char *value); --void lt_update_lib_path (const char *name, const char *value); -- --static const char *script_text_part1 = --EOF -- -- func_emit_wrapper_part1 yes | -- $SED -e 's/\([\\"]\)/\\\1/g' \ -- -e 's/^/ "/' -e 's/$/\\n"/' -- echo ";" -- cat <"))); -- for (i = 0; i < newargc; i++) -- { -- LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); -- } -- --EOF -- -- case $host_os in -- mingw*) -- cat <<"EOF" -- /* execv doesn't actually work on mingw as expected on unix */ -- rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); -- if (rval == -1) -- { -- /* failed to start process */ -- LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); -- return 127; -- } -- return rval; --EOF -- ;; -- *) -- cat <<"EOF" -- execv (lt_argv_zero, newargz); -- return rval; /* =127, but avoids unused variable warning */ --EOF -- ;; -- esac -- -- cat <<"EOF" --} -- --void * --xmalloc (size_t num) --{ -- void *p = (void *) malloc (num); -- if (!p) -- lt_fatal ("Memory exhausted"); -- -- return p; --} -- --char * --xstrdup (const char *string) --{ -- return string ? strcpy ((char *) xmalloc (strlen (string) + 1), -- string) : NULL; --} -- --const char * --base_name (const char *name) --{ -- const char *base; -- --#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -- /* Skip over the disk name in MSDOS pathnames. */ -- if (isalpha ((unsigned char) name[0]) && name[1] == ':') -- name += 2; --#endif -- -- for (base = name; *name; name++) -- if (IS_DIR_SEPARATOR (*name)) -- base = name + 1; -- return base; --} -- --int --check_executable (const char *path) --{ -- struct stat st; -- -- LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", -- path ? (*path ? path : "EMPTY!") : "NULL!")); -- if ((!path) || (!*path)) -- return 0; -- -- if ((stat (path, &st) >= 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; -- -- LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", -- path ? (*path ? path : "EMPTY!") : "NULL!")); -- 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; -- -- LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", -- wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); -- -- if ((wrapper == NULL) || (*wrapper == '\0')) -- return NULL; -- -- /* Absolute path? */ --#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -- if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') -- { -- concat_name = xstrdup (wrapper); -- if (check_executable (concat_name)) -- return concat_name; -- XFREE (concat_name); -- } -- else -- { --#endif -- if (IS_DIR_SEPARATOR (wrapper[0])) -- { -- concat_name = xstrdup (wrapper); -- if (check_executable (concat_name)) -- return concat_name; -- XFREE (concat_name); -- } --#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -- } --#endif -- -- for (p = wrapper; *p; p++) -- if (*p == '/') -- { -- has_slash = 1; -- break; -- } -- if (!has_slash) -- { -- /* no slashes; search PATH */ -- const char *path = getenv ("PATH"); -- if (path != NULL) -- { -- for (p = path; *p; p = p_next) -- { -- const char *q; -- size_t p_len; -- for (q = p; *q; q++) -- if (IS_PATH_SEPARATOR (*q)) -- break; -- p_len = q - p; -- p_next = (*q == '\0' ? q : q + 1); -- if (p_len == 0) -- { -- /* empty path: current directory */ -- if (getcwd (tmp, LT_PATHMAX) == NULL) -- lt_fatal ("getcwd failed"); -- tmp_len = strlen (tmp); -- concat_name = -- XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); -- memcpy (concat_name, tmp, tmp_len); -- concat_name[tmp_len] = '/'; -- strcpy (concat_name + tmp_len + 1, wrapper); -- } -- else -- { -- concat_name = -- XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); -- memcpy (concat_name, p, p_len); -- concat_name[p_len] = '/'; -- strcpy (concat_name + p_len + 1, wrapper); -- } -- if (check_executable (concat_name)) -- return concat_name; -- XFREE (concat_name); -- } -- } -- /* not found in PATH; assume curdir */ -- } -- /* Relative path | not found in path: prepend cwd */ -- if (getcwd (tmp, LT_PATHMAX) == NULL) -- lt_fatal ("getcwd failed"); -- tmp_len = strlen (tmp); -- concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); -- memcpy (concat_name, tmp, tmp_len); -- concat_name[tmp_len] = '/'; -- strcpy (concat_name + tmp_len + 1, wrapper); -- -- if (check_executable (concat_name)) -- return concat_name; -- XFREE (concat_name); -- return NULL; --} -- --char * --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) -- { -- LTWRAPPER_DEBUGPRINTF (("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 -- { -- char *errstr = strerror (errno); -- lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); -- } -- } -- XFREE (tmp_pathspec); -- -- if (!has_symlinks) -- { -- return xstrdup (pathspec); -- } -- -- tmp_pathspec = realpath (pathspec, buf); -- if (tmp_pathspec == 0) -- { -- lt_fatal ("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; --} -- --static void --lt_error_core (int exit_status, const char *mode, -- const char *message, va_list ap) --{ -- fprintf (stderr, "%s: %s: ", program_name, mode); -- vfprintf (stderr, message, ap); -- fprintf (stderr, ".\n"); -- -- if (exit_status >= 0) -- exit (exit_status); --} -- --void --lt_fatal (const char *message, ...) --{ -- va_list ap; -- va_start (ap, message); -- lt_error_core (EXIT_FAILURE, "FATAL", message, ap); -- va_end (ap); --} -- --void --lt_setenv (const char *name, const char *value) --{ -- LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", -- (name ? name : ""), -- (value ? 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; --} -- --int --lt_split_name_value (const char *arg, char** name, char** value) --{ -- const char *p; -- int len; -- if (!arg || !*arg) -- return 1; -- -- p = strchr (arg, (int)'='); -- -- if (!p) -- return 1; -- -- *value = xstrdup (++p); -- -- len = strlen (arg) - strlen (*value); -- *name = XMALLOC (char, len); -- strncpy (*name, arg, len-1); -- (*name)[len - 1] = '\0'; -- -- return 0; --} -- --void --lt_opt_process_env_set (const char *arg) --{ -- char *name = NULL; -- char *value = NULL; -- -- if (lt_split_name_value (arg, &name, &value) != 0) -- { -- XFREE (name); -- XFREE (value); -- lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); -- } -- -- lt_setenv (name, value); -- XFREE (name); -- XFREE (value); --} -- --void --lt_opt_process_env_prepend (const char *arg) --{ -- char *name = NULL; -- char *value = NULL; -- char *new_value = NULL; -- -- if (lt_split_name_value (arg, &name, &value) != 0) -- { -- XFREE (name); -- XFREE (value); -- lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); -- } -- -- new_value = lt_extend_str (getenv (name), value, 0); -- lt_setenv (name, new_value); -- XFREE (new_value); -- XFREE (name); -- XFREE (value); --} -- --void --lt_opt_process_env_append (const char *arg) --{ -- char *name = NULL; -- char *value = NULL; -- char *new_value = NULL; -- -- if (lt_split_name_value (arg, &name, &value) != 0) -- { -- XFREE (name); -- XFREE (value); -- lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); -- } -- -- new_value = lt_extend_str (getenv (name), value, 1); -- lt_setenv (name, new_value); -- XFREE (new_value); -- XFREE (name); -- XFREE (value); --} -- --void --lt_update_exe_path (const char *name, const char *value) --{ -- LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", -- (name ? name : ""), -- (value ? 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) --{ -- LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", -- (name ? name : ""), -- (value ? 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 --} --# end: func_emit_cwrapperexe_src -- --# 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 -- 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 -- 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 -- ;; -- -- -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 "X$dir" | $Xsed -e '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*) -- # 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 $wl$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" -- ;; -- -- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler -- # -r[0-9][0-9]* specifies the processor on the SGI compiler -- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler -- # +DA*, +DD* enable 64-bit mode on the HP compiler -- # -q* pass through compiler args for the IBM compiler -- # -m*, -t[45]*, -txscale* pass through architecture-specific -- # compiler args for GCC -- # -F/path gives path to uninstalled frameworks, gcc on darwin -- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC -- # @file GCC response files -- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) -- 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 \"X\${$shlibpath_var}\" \| \$Xsed -e \'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 -- deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` -- 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 \"X$deplib\"" 2>/dev/null | $Xsed -e 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 "X$inherited_linker_flags" | $Xsed -e '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 "X $dependency_libs" | $Xsed -e '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 -- 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 "X $new_inherited_linker_flags" | $Xsed -e '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|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 "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` -- fi -- -- # Eliminate all temporary directories. -- #for path in $notinst_path; do -- # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` -- # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` -- # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "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*) -- # 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 "X$potlib" | $Xsed -e '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 \"X$potent_lib\"" 2>/dev/null | $Xsed -e 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 "X $deplibs" | $Xsed \ -- -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` -- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -- for i in $predeps $postdeps ; do -- # can't use Xsed below, because $i might contain '/' -- tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` -- done -- fi -- if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | -- $GREP . >/dev/null; then -- $ECHO -- if test "X$deplibs_check_method" = "Xnone"; then -- $ECHO "*** Warning: inter-library dependencies are not supported in this platform." -- else -- $ECHO "*** Warning: inter-library dependencies are not known to be supported." -- fi -- $ECHO "*** All declared inter-library dependencies are being dropped." -- droppeddeps=yes -- fi -- ;; -- 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 "X $newdeplibs" | $Xsed -e '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 "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- deplibs=`$ECHO "X $deplibs" | $Xsed -e '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 "X$libobjs" | $SP2NL | $Xsed -e "$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 "X$include_expsyms" | $Xsed | $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 -- output_la=`$ECHO "X$output" | $Xsed -e "$basename"` -- -- # Clear the reloadable object creation command queue and -- # initialize k to one. -- test_cmds= -- concat_cmds= -- objlist= -- 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. -- eval concat_cmds=\"$reload_cmds $objlist $last_robj\" -- else -- # All subsequent reloadable object files will link in -- # the last one created. -- eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$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~ -- eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" -- 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 "X$include_expsyms" | $Xsed | $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 "X$tmp_whole_archive_flags" | $Xsed -e '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 "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$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 "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -- finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e '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 "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e '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 "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -- finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$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 -- *cygwin* | *mingw* ) -- if test "$build_libtool_libs" != yes; then -- wrappers_required=no -- fi -- ;; -- *cegcc) -- # Disable wrappers for cegcc, we are cross compiling anyway. -- wrappers_required=no -- ;; -- *) -- 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 "X$compile_command" | $Xsed -e '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 "X$link_command" | $Xsed -e '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 "X$compile_var$compile_command$compile_rpath" | $Xsed -e '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 "X$link_command" | $Xsed -e '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 "X$relink_command" | $Xsed -e "$sed_quote_subst"` -- fi -- -- # Quote $ECHO for shipping. -- if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then -- case $progpath in -- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; -- *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; -- esac -- qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` -- else -- qecho=`$ECHO "X$ECHO" | $Xsed -e "$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 "X$relink_command" | $Xsed -e "$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 -- tdlname=$dlname -- case $host,$output,$installed,$module,$dlname in -- *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; -- 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/Platform/Android/jni/External/libusb-1.0.8/missing b/Platform/Android/jni/External/libusb-1.0.8/missing -deleted file mode 100644 -index 1c8ff70..0000000 ---- a/Platform/Android/jni/External/libusb-1.0.8/missing -+++ /dev/null -@@ -1,367 +0,0 @@ --#! /bin/sh --# Common stub for a few missing GNU programs while installing. -- --scriptversion=2006-05-10.23 -- --# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 --# Free Software Foundation, Inc. --# Originally by Fran,cois Pinard , 1996. -- --# This program is free software; you can redistribute it and/or modify --# 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, 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. -- --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] -- --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 -- --# Now exit if we have it, but it failed. Also exit now if we --# don't have it and --version was passed (most likely to detect --# the program). --case $1 in -- lex|yacc) -- # Not GNU programs, they don't have --version. -- ;; -- -- tar) -- if test -n "$run"; then -- echo 1>&2 "ERROR: \`tar' requires --run" -- exit 1 -- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then -- exit 1 -- fi -- ;; -- -- *) -- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -- # We have it, but it failed. -- exit 1 -- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then -- # Could not run --version or --help. This is probably someone -- # running `$TOOL --version' or `$TOOL --help' to check whether -- # $TOOL exists and not knowing $TOOL uses missing. -- exit 1 -- fi -- ;; --esac -- --# If it does not exist, or fails to run (possibly an outdated version), --# try to emulate it. --case $1 in -- aclocal*) -- echo 1>&2 "\ --WARNING: \`$1' is $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 1 -- 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-end: "$" --# End: -diff --git a/Platform/Android/jni/OpenNI/Android.mk b/Platform/Android/jni/OpenNI/Android.mk -index 06acac6..47b0911 100644 ---- a/Platform/Android/jni/OpenNI/Android.mk -+++ b/Platform/Android/jni/OpenNI/Android.mk -@@ -24,14 +24,13 @@ LOCAL_C_INCLUDES := \ - $(LOCAL_PATH)/../../../../Include/ \ - $(LOCAL_PATH)/../../../../Source/ \ - $(LOCAL_PATH)/../../../../Source/External/TinyXml/ \ -- $(LOCAL_PATH)/../External/libusb-1.0.8/libusb \ - - LOCAL_CFLAGS:= -fvisibility=hidden -DXN_EXPORTS - - LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker - - LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../Include --LOCAL_SHARED_LIBRARIES := libusb -+LOCAL_SHARED_LIBRARIES := libusb-1.0 - - LOCAL_PREBUILT_LIBS := libc - -@@ -39,12 +38,4 @@ LOCAL_MODULE:= OpenNI - - include $(BUILD_SHARED_LIBRARY) - --# external Android build trees that import OpenNI must also have libusb, at least so they can build libOpenNI.so locally. --# this line is unwanted, though, when building locally from OpenNI's Android tree --ifdef NDK_MODULE_PATH --$(if $(call set_is_member,$(__ndk_modules),usb),\ -- $(call __ndk_info,Don't use NDK_MODULE_PATH when building OpenNI locally. Ignoring.)\ -- ,\ -- $(call import-module,External/libusb*) \ -- ) --endif -+$(call import-module,libusb-1.0) -diff --git a/Platform/Android/jni/Samples/NiSimpleRead/Android.mk b/Platform/Android/jni/Samples/NiSimpleRead/Android.mk -index 5c43cb0..2909467 100644 ---- a/Platform/Android/jni/Samples/NiSimpleRead/Android.mk -+++ b/Platform/Android/jni/Samples/NiSimpleRead/Android.mk -@@ -11,7 +11,7 @@ LOCAL_C_INCLUDES := - - LOCAL_CFLAGS:= -fvisibility=hidden -DXN_EXPORTS - --LOCAL_SHARED_LIBRARIES := libc libusb OpenNI -+LOCAL_SHARED_LIBRARIES := libc libusb-1.0 OpenNI - - LOCAL_MODULE := Sample-SimpleRead - -diff --git a/Platform/Android/jni/Samples/NiSimpleSkeleton/Android.mk b/Platform/Android/jni/Samples/NiSimpleSkeleton/Android.mk -index 31f8584..1a1034c 100644 ---- a/Platform/Android/jni/Samples/NiSimpleSkeleton/Android.mk -+++ b/Platform/Android/jni/Samples/NiSimpleSkeleton/Android.mk -@@ -11,7 +11,7 @@ LOCAL_C_INCLUDES := - - LOCAL_CFLAGS:= -fvisibility=hidden -DXN_EXPORTS - --LOCAL_SHARED_LIBRARIES := libc libusb OpenNI -+LOCAL_SHARED_LIBRARIES := libc libusb-1.0 OpenNI - - LOCAL_MODULE := Sample-SimpleSkeleton - -diff --git a/Platform/Android/jni/Utils/niLicense/Android.mk b/Platform/Android/jni/Utils/niLicense/Android.mk -index 176837f..fa15874 100644 ---- a/Platform/Android/jni/Utils/niLicense/Android.mk -+++ b/Platform/Android/jni/Utils/niLicense/Android.mk -@@ -11,7 +11,7 @@ LOCAL_C_INCLUDES := - - LOCAL_CFLAGS := -fvisibility=hidden -DXN_FORMATS_EXPORTS - --LOCAL_SHARED_LIBRARIES := libusb OpenNI -+LOCAL_SHARED_LIBRARIES := libusb-1.0 OpenNI - - LOCAL_MODULE := niLicense - -diff --git a/Platform/Android/jni/Utils/niReg/Android.mk b/Platform/Android/jni/Utils/niReg/Android.mk -index 14ddbfd..7daacf3 100644 ---- a/Platform/Android/jni/Utils/niReg/Android.mk -+++ b/Platform/Android/jni/Utils/niReg/Android.mk -@@ -11,7 +11,7 @@ LOCAL_C_INCLUDES := - - LOCAL_CFLAGS := -fvisibility=hidden -DXN_FORMATS_EXPORTS - --LOCAL_SHARED_LIBRARIES := libusb OpenNI -+LOCAL_SHARED_LIBRARIES := libusb-1.0 OpenNI - - LOCAL_MODULE := niReg - diff --git a/3rdparty/android/patches/openni/update-android-project.patch b/3rdparty/android/patches/openni/update-android-project.patch deleted file mode 100644 index 00eeb83122c..00000000000 --- a/3rdparty/android/patches/openni/update-android-project.patch +++ /dev/null @@ -1,79 +0,0 @@ -Update the android project. - -From: Roman Donchenko - - ---- - Wrappers/OpenNI.java/default.properties | 12 ------------ - Wrappers/OpenNI.java/proguard-project.txt | 20 ++++++++++++++++++++ - Wrappers/OpenNI.java/project.properties | 15 +++++++++++++++ - 3 files changed, 35 insertions(+), 12 deletions(-) - delete mode 100644 Wrappers/OpenNI.java/default.properties - create mode 100644 Wrappers/OpenNI.java/proguard-project.txt - create mode 100644 Wrappers/OpenNI.java/project.properties - -diff --git a/Wrappers/OpenNI.java/default.properties b/Wrappers/OpenNI.java/default.properties -deleted file mode 100644 -index 4694559..0000000 ---- a/Wrappers/OpenNI.java/default.properties -+++ /dev/null -@@ -1,12 +0,0 @@ --# This file is automatically generated by Android Tools. --# Do not modify this file -- YOUR CHANGES WILL BE ERASED! --# --# This file must be checked in Version Control Systems. --# --# To customize properties used by the Ant build system use, --# "build.properties", and override values to adapt the script to your --# project structure. -- --# Project target. --target=android-9 --android.library=true -diff --git a/Wrappers/OpenNI.java/proguard-project.txt b/Wrappers/OpenNI.java/proguard-project.txt -new file mode 100644 -index 0000000..f2fe155 ---- /dev/null -+++ b/Wrappers/OpenNI.java/proguard-project.txt -@@ -0,0 +1,20 @@ -+# To enable ProGuard in your project, edit project.properties -+# to define the proguard.config property as described in that file. -+# -+# Add project specific ProGuard rules here. -+# By default, the flags in this file are appended to flags specified -+# in ${sdk.dir}/tools/proguard/proguard-android.txt -+# You can edit the include path and order by changing the ProGuard -+# include property in project.properties. -+# -+# For more details, see -+# http://developer.android.com/guide/developing/tools/proguard.html -+ -+# Add any project specific keep options here: -+ -+# If your project uses WebView with JS, uncomment the following -+# and specify the fully qualified class name to the JavaScript interface -+# class: -+#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -+# public *; -+#} -diff --git a/Wrappers/OpenNI.java/project.properties b/Wrappers/OpenNI.java/project.properties -new file mode 100644 -index 0000000..b2ed0b0 ---- /dev/null -+++ b/Wrappers/OpenNI.java/project.properties -@@ -0,0 +1,15 @@ -+# This file is automatically generated by Android Tools. -+# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -+# -+# This file must be checked in Version Control Systems. -+# -+# To customize properties used by the Ant build system edit -+# "ant.properties", and override values to adapt the script to your -+# project structure. -+# -+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt -+ -+android.library=true -+# Project target. -+target=android-16 diff --git a/3rdparty/android/patches/openni/usb-race-condition.patch b/3rdparty/android/patches/openni/usb-race-condition.patch deleted file mode 100644 index dd17eac2638..00000000000 --- a/3rdparty/android/patches/openni/usb-race-condition.patch +++ /dev/null @@ -1,80 +0,0 @@ -Fix a race condition in USB read threads. - -From: Roman Donchenko - - ---- - Source/OpenNI/Linux/XnUSBLinux.cpp | 10 ++++++++++ - Source/OpenNI/Linux/XnUSBLinux.h | 4 +++- - 2 files changed, 13 insertions(+), 1 deletion(-) - -diff --git a/Source/OpenNI/Linux/XnUSBLinux.cpp b/Source/OpenNI/Linux/XnUSBLinux.cpp -index 8d5f161..f809e92 100644 ---- a/Source/OpenNI/Linux/XnUSBLinux.cpp -+++ b/Source/OpenNI/Linux/XnUSBLinux.cpp -@@ -1018,9 +1018,12 @@ XN_THREAD_PROC xnUSBReadThreadMain(XN_THREAD_PARAM pThreadParam) - - // submit request - pBufferInfo->bIsQueued = TRUE; -+ pBufferInfo->bIsSubmitted = TRUE; - int rc = libusb_submit_transfer(pTransfer); - if (rc != 0) - { -+ pBufferInfo->bIsQueued = FALSE; -+ pBufferInfo->bIsSubmitted = FALSE; - xnLogError(XN_MASK_USB, "Endpoint 0x%x, Buffer %d: Failed to submit asynch I/O transfer (err=%d)!", pTransfer->endpoint, pBufferInfo->nBufferID, rc); - } - } -@@ -1040,6 +1043,8 @@ XN_THREAD_PROC xnUSBReadThreadMain(XN_THREAD_PARAM pThreadParam) - XnUSBBuffersInfo* pBufferInfo = &pThreadData->pBuffersInfo[i]; - libusb_transfer* pTransfer = pBufferInfo->transfer; - -+ if (!pBufferInfo->bIsSubmitted) continue; -+ - // wait for the next transfer to be completed, and process it - nRetVal = xnOSWaitEvent(pBufferInfo->hEvent, pThreadData->bKillReadThread ? 0 : pThreadData->nTimeOut); - if (nRetVal == XN_STATUS_OS_EVENT_TIMEOUT) -@@ -1071,6 +1076,8 @@ XN_THREAD_PROC xnUSBReadThreadMain(XN_THREAD_PARAM pThreadParam) - } - else // transfer done - { -+ pBufferInfo->bIsSubmitted = FALSE; -+ - if (pBufferInfo->nLastStatus == LIBUSB_TRANSFER_COMPLETED || // read succeeded - pBufferInfo->nLastStatus == LIBUSB_TRANSFER_CANCELLED) // cancelled, but maybe some data arrived - { -@@ -1124,9 +1131,12 @@ XN_THREAD_PROC xnUSBReadThreadMain(XN_THREAD_PARAM pThreadParam) - if (!pBufferInfo->pThreadData->bKillReadThread) - { - pBufferInfo->bIsQueued = TRUE; -+ pBufferInfo->bIsSubmitted = TRUE; - int rc = libusb_submit_transfer(pTransfer); - if (rc != 0) - { -+ pBufferInfo->bIsQueued = FALSE; -+ pBufferInfo->bIsSubmitted = FALSE; - xnLogError(XN_MASK_USB, "Endpoint 0x%x, Buffer %d: Failed to re-submit asynch I/O transfer (err=%d)!", pTransfer->endpoint, pBufferInfo->nBufferID, rc); - } - } -diff --git a/Source/OpenNI/Linux/XnUSBLinux.h b/Source/OpenNI/Linux/XnUSBLinux.h -index 7fc9028..eeadd14 100644 ---- a/Source/OpenNI/Linux/XnUSBLinux.h -+++ b/Source/OpenNI/Linux/XnUSBLinux.h -@@ -55,6 +55,8 @@ typedef struct XnUSBBuffersInfo - libusb_transfer* transfer; - /* TRUE when transfer is queued. */ - XnBool bIsQueued; -+ /* TRUE when transfer has been submitted. */ -+ XnBool bIsSubmitted; - /* An event to notify when buffer is ready. */ - XN_EVENT_HANDLE hEvent; - XnUInt32 nBufferID; -@@ -82,7 +84,7 @@ typedef struct XnUSBReadThreadData - /* Handle to the read thread. */ - XN_THREAD_HANDLE hReadThread; - /* When TRUE, signals the thread to exit. */ -- XnBool bKillReadThread; -+ volatile XnBool bKillReadThread; - } XnUSBReadThreadData; - - typedef struct XnUSBEndPointHandle diff --git a/3rdparty/android/patches/openni/useless-android-files.patch b/3rdparty/android/patches/openni/useless-android-files.patch deleted file mode 100644 index 54933e6f7c3..00000000000 --- a/3rdparty/android/patches/openni/useless-android-files.patch +++ /dev/null @@ -1,254 +0,0 @@ -Remove useless files from the Android project. - -From: Roman Donchenko - - ---- - Wrappers/OpenNI.java/AndroidManifest.xml | 5 ----- - Wrappers/OpenNI.java/res/drawable-hdpi/icon.png | Bin - Wrappers/OpenNI.java/res/drawable-ldpi/icon.png | Bin - Wrappers/OpenNI.java/res/drawable-mdpi/icon.png | Bin - Wrappers/OpenNI.java/res/layout/main.xml | 12 ------------ - Wrappers/OpenNI.java/res/values/strings.xml | 5 ----- - 6 files changed, 22 deletions(-) - delete mode 100644 Wrappers/OpenNI.java/res/drawable-hdpi/icon.png - delete mode 100644 Wrappers/OpenNI.java/res/drawable-ldpi/icon.png - delete mode 100644 Wrappers/OpenNI.java/res/drawable-mdpi/icon.png - delete mode 100644 Wrappers/OpenNI.java/res/layout/main.xml - delete mode 100644 Wrappers/OpenNI.java/res/values/strings.xml - -diff --git a/Wrappers/OpenNI.java/AndroidManifest.xml b/Wrappers/OpenNI.java/AndroidManifest.xml -index b9e6016..9ecdf81 100644 ---- a/Wrappers/OpenNI.java/AndroidManifest.xml -+++ b/Wrappers/OpenNI.java/AndroidManifest.xml -@@ -4,9 +4,4 @@ - android:versionCode="1" - android:versionName="1.0"> - -- -- -- -- -- - -\ No newline at end of file -diff --git a/Wrappers/OpenNI.java/res/drawable-hdpi/icon.png b/Wrappers/OpenNI.java/res/drawable-hdpi/icon.png -deleted file mode 100644 -index 8074c4c571b8cd19e27f4ee5545df367420686d7..0000000000000000000000000000000000000000 -GIT binary patch -literal 0 -HcmV?d00001 - -literal 4147 -zcmV-35X|q1P)OwvMs$Q8_8nISM!^>PxsujeDCl4&hPxrxkp%Qc^^|l -zp6LqAcf3zf1H4aA1Gv-O6ha)ktct9Y+VA@N^9i;p0H%6v>ZJZYQ`zEa396z-gi{r_ -zDz)D=vgRv62GCVeRjK{15j7V@v6|2nafFX6W7z2j1_T0a -zLyT3pGTubf1lB5)32>bl0*BflrA!$|_(WD2)iJIfV}37=ZKAC -zSe3boYtQ=;o0i>)RtBvsI#iT{0!oF1VFeW`jDjF2Q4aE?{pGCAd>o8Kg#neIh*AMY -zLl{;F!vLiem7s*x0<9FKAd6LoPz3~G32P+F+cuGOJ5gcC@pU_?C2fmix7g2)SUaQO$NS07~H)#fn!Q<}KQWtX}wW`g2>cMld+`7Rxgq -zChaey66SG560JhO66zA!;sK1cWa2AG$9k~VQY??6bOmJsw9@3uL*z;WWa7(Nm{^TA -zilc?y#N9O3LcTo2c)6d}SQl-v-pE4^#wb=s(RxaE28f3FQW(yp$ulG9{KcQ7r>7mQ -zE!HYxUYex~*7IinL+l*>HR*UaD;HkQhkL(5I@UwN%Wz504M^d!ylo>ANvKPF_TvA< -zkugG5;F6x}$s~J8cnev->_(Ic7%lGQgUi3n#XVo36lUpcS9s -z)ympRr7}@|6WF)Ae;D{owN1;aZSR50al9h~?-WhbtKK%bDd -zhML131oi1Bu1&Qb$Cp199LJ#;j5d|FhW8_i4KO1OI>}J^p2DfreMSVGY9aFlr&90t -zyI2FvxQiKMFviSQeP$Ixh#70qj5O%I+O_I2t2XHWqmh2!1~tHpN3kA4n=1iHj?`@c<~3q^X6_Q$AqTDjBU`|!y<&lkqL|m5tG(b -z8a!z&j^m(|;?SW(l*?tZ*{m2H9d&3jqBtXh>O-5e4Qp-W*a5=2NL&Oi62BUM)>zE3 -zbSHb>aU3d@3cGggA`C-PsT9^)oy}%dHCaO~nwOrm5E54=aDg(&HR4S23Oa#-a^=}w%g?ZP-1iq8PSjE8jYaGZu -z$I)?YN8he?F9>)2d$G6a*zm0XB*Rf&gZAjq(8l@CUDSY1tB#!i> -zW$VfG%#SYSiZ};)>pHA`qlfDTEYQEwN6>NNEp+uxuqx({Fgr -zjI@!4xRc?vk^9+~eU|mzH__dCDI=xb{Cd}4bELS9xRaS!*FXMwtMR-RR%SLMh0Cjl -zencr8#Su<4(%}$yGVBU-HX{18v=yPH*+%^Vtknc>2A;%-~DrYFx^3XfuVgvZ{#1tA== -zm3>IzAM2{3Iv_d1XG{P6^tN3|PkJMnjs&CWN7%7_CmjoVakUhsa&dMv==2~^ri?&x -zVdv*rnfVyM+I1^Kg*S=23mR@+0T9BWFZUu~@toA8d)fw6be=`Yb6DSX6D?jB%2YT~ -z*aHjtIOozfMhA!Jd*?u5_n!SnX>vX`=Ti-1HA4RiE>eI3vTn -zz+>Ccf0HX6Ans-ebOB>RJST-Cyr#4XAk+mAlJgdQnoE{^iIN)OcYFSpgJUmXtl@tT -z-^ZuUeSj5hSFrQwqX>~EtZ*{>Gi8Bu9_|o06oNtaXP?E936!a@DsvS*tsB@fa6kEA -z5GkjwmH?EgpiG&itsB_Tb1NxtFnvxh_s@9KYX1Sttf?AlI~)z -zT=6Y7ulx=}<8Scr_UqU-_z)5gPo%050PsbM*ZLno;_-ow&k?FZJtYmb2hPA$LkP)8 -z=^d0Q6PImh6Y|QT?{grxj)S=uBKvY2EQUbm@ns9^yKiP~$DcD)c$5Em`zDSScH%iH -zVov&m=cMo`1tYwA=!a}vb_ef_{)Q2?FUqn>BR$6phXQRv^1%=YfyE-F$AR4Q?9D!f -zCzB^^#td~4u&l~l#rp2QLfe3+_ub9@+|x+m;=2(sQ`s%gO|j$XBb>A7Q(UydipiMw%igcweV#Cr~SP);q>w`bxts_4} -znKHg?X==JDkQl3Y>Ckt%`s{n?Nq-1Fw5~%Mq$CAsi-`yu_bKm -zxs#QdE7&vgJD%M84f4SNzSDv)S|V?|$!d5a#lhT5>>YWE4NGqa9-fbmV$=)@k&32kdEYetna>=j@0>V8+wRsL;po!3ivVwh<9tn -z2S<1u9DAAQ>x1Sn=fk`)At|quvleV($B|#Kap_lB-F^*yV=wZ{9baUu(uXfokr95^ -zA*!*W=5a>$2Ps`-F^+qRQT^{*cN>vipT*4!r#p%{(#I7s -z0NN94*q?ib$KJjfDI_sjHNdmEVp5wB&j54O#VoFqBwy)gfA$%)4d_X4q${L9Xom2R3xy&ZBSNgt4a1d7K^CDWa9r -zVb-_52m}Vp)`9;ZSKd#|U4ZYj5}Gp49{4utST|=c`~(#>KHF6}CCov1iHYw -zt{bWo)A@yF2$~c(nR$rSAaFQ$(Wh{vkG1AlutDMw=mM`C`T=X&|Ad9fb5Od}ROt1z -zOpczHqrb4Jo^rSCiW#&o(m7jFamnrsTpQb;*h4o8r#$aZ}2RaT-x2u^^ -z%u@YyIv$U^u~@9(XGbSwU@fk6SikH>j+D1jQrYTKGJpW%vUT{!d}7THI5&Sa?~MKy -zS0-mvMl+BOcroEJ@hN!2H_?coTEJ5Q<;Nd?yx;eIj4{$$E2?YUO|NtNPJ-PdDf;s} -zab;}Mz0kbOI}5*w@3gROcnl#5)wQnEhDBfn!Xhy`u>C}*E~vWpO^HS)FC>8^umI=+ -z&H;LW6w#;EF`}vQd_9Muru`KnQVPI9U?(sD)&Dg-0j3#(!fNKVZ_GoYH{la~d*1Yh$TI-TL>mI4vpNb@sU2=IZ8vL%AXUx0 -zz{K0|nK(yizLHaeW#ZhRfQXoK^}1$=$#1{Yn002ovPDHLkV1n#w+^+xt - -diff --git a/Wrappers/OpenNI.java/res/drawable-ldpi/icon.png b/Wrappers/OpenNI.java/res/drawable-ldpi/icon.png -deleted file mode 100644 -index 1095584ec21f71cd0afc9e0993aa2209671b590c..0000000000000000000000000000000000000000 -GIT binary patch -literal 0 -HcmV?d00001 - -literal 1723 -zcmV;s21NOZP)AReP91Tc8>~sHP8V>Ys(CF=aT`Sk=;|pS}XrJPb~T1dys{sdO&0YpQBSz*~us -zcN*3-J_EnE1cxrXiq*F~jZje~rkAe3vf3>;eR)3?Ox=jK*jEU7Do|T`2NqP{56w(* -zBAf)rvPB_7rsfeKd0^!CaR%BHUC$tsP9m8a!i@4&TxxzagzsYHJvblx4rRUu#0Jlz -zclZJwdC}7S3BvwaIMTiwb!98zRf|zoya>NudJkDGgEYs=q*HmC)>GExofw=92}s;l -z_YgKLUT5`<1RBwq{f)K~I%M=gRE6d)b5BP`8{u9x0-wsG%H)w^ -zRU7n9FwtlfsZSjiSB(k8~Y5+O>dyoSI477Ly?|FR?m))C!ci%BtY!2Sst8Uri#|SFX&)8{_Ou2 -z9r5p3Vz9_GY#%D>%huqp_>U}K45YGy__TE!HZA@bMxX~@{;>cGYRgH~Ih*vd7EgV7h6Pg$#$lH+5=^lj{W80p{{l+;{7_t5cv3xVUy -zl_BY4ht1JH*EEeRS{VwTC(QFIVu8zF&P8O$gJsMgsSO35SVvBrX`Vah$Yz2-5T>-`4DJNH;N -zlSSY8-mfty+|1~*;BtTwLz_w5 -z+lRv)J28~G%ouyvca(@|{2->WsPii&79&nju7ITE6hMX4AQc{|KqZN#)aAvemg3IZ -zCr}Y+!r}JU&^>U1C2WyZC<=47itSYQ`?$5{VH?mtFMFFExfYTsfqK%*WzH@Onc#i` -zI@a|rm-WbKk{5my{mF}H>Duc$bit&yLAgFfqo2vVbm~?FeG#0F?dSP*kxSo0Ff!o@ -z(C}B;r&6pa-NY4;y~5lX8g&*MYQ>yLGd^tDWC4(sGy$Ow-*!eh%xt;>ve|J1q$*w< -zh;B#cz!6l2=5bkX#nJ9PJQ`ew8t>7z$bxqf*QB=l2_UB$hK|1EIfloN-jQ=qcwChF -zYAkkyp=;FwcnUB3v0=*tMYMA(HdyQ`Og{P|8RRXpj5bgrSmEzSMfBn+{{vpNxw?;5UX;iv9sYxy_`IQHs$i<61a_iv^L>h8s-`D(`e@|IgS*Fj -zNGM876Gf;3D8*1UX9a%v>yJKD*QkCwW2AirU(L{qNA)JghmGItc;(H<$!ABY&gBy1vJIEUj-b8%el*o|VkG)LqNx#TG>Jvj^jIte!!+RY -z)T4j$7+PoF1AkRBf}R#^T=-q|PaK1$c<4UH)Hpq3$4WA|xtr!ZQLC=*vNE>O6E9kp+5X0eKB$6>C(lPwI@3#oY -zhS_%x7e|j!$yG?ECXmh~EH~^OeuK}+sWoJse3Z3?ha3n`MM9KvA?uqpEnBg4Q46)7 -zM$p%a$@l;+O}vfvx%XjH`}a{(-HHth9!JaUwV0*VqGR48^gWNYN<&~7x)y$e!X>e` -zZ5!6KZoxbKuV9XUDI%#M1~IVh?pNSdeb~6@$y`v|yk=XK+fHxnDqnUK4&=QRNyIVf -zYbDM*cI>~qIy*a7=z7uqkw@agd(<=y-Q7L!ty_23SGdXmahO<;N=wB+j;lNm%=OHC -zy -zU|>La6h%92y4IPufI$9>Xu!@y`TaNgtg&41@PwMwBdmSm7)xAWDLoqjZ==P2#*k7! -z3o1)cVSI3KP_!?d8G^Lg0FtLXC~JYdxi|c%h~lXEixY=%VSFF@!*3&&9>(Rb|iK54Cx5;s~PY5iaV1het%w`dgQFBAJ;aFK -zImQC}(|QaCFYUm1JVfzSc)ebv=)ObI)0jwJb``}Zj9J0n0Xgn*Zc(rFM9$xh_makZbm-at_v5^SW -zM1y1SW@%+FuIy*WR)i3A2N_q;(YO`O!A|Ts^%z}9ZepCj3ytlw#x%N_fNrKKtPh`< -z|1{UqF`4LxHaCQ79+E=uUXCOZ35jAMRz%R%0(P!0FMv=sk>Nr8%+OzY^c-M9@+fz=G`qa@v4sF5u-2289-#$**LWnyNNDwDf1( -zkUiMnw|y$tn>pQP=Vn!#|17L^5AGrjtBkN$D@v)Z7LXc5EFhLB4<;7Wehh)CMqX|W -zqsiZaO^benJ_hwa&V0ub$-_HUk**?g6fm9|!@kguU6*zhK)$qn-<3*kFrYPIaqR=V -zUaUvk>@F_89b@tHs8R!*QKY;INJ<2_U+K6Ca3e9Gsl2{qY0%a7J?uICWgHuLfj+MB -z=GkAN1&ifT#2u}B+2S#~$5jA(Qn^;H%CCmIae4AE-Dsng|Hl*Ov!z72k3ZnJs{pp| -z+pW`DDueC#mEWOf=ucJ!dTL}hzOeiS-i?m2E;`EKz4<&Lu~NnW?peqVU^@<+T3KKu -z{yrI%Qy-Z%HEvLUz}n^~m?7x`xuCtNR#L2En!T>dQtIKdS#V-Hzt3RtwTeYtmQ&dR -z6qXZvac*oc@BUYEH%@Ylv_1&tSjkbzzU6*h1(3^C`;1z;g_SmOtclS?KWk2VYE -zM*oS<=C483XckW?GN|1jfh3Ro(h -- -- -- -diff --git a/Wrappers/OpenNI.java/res/values/strings.xml b/Wrappers/OpenNI.java/res/values/strings.xml -deleted file mode 100644 -index 6a2c550..0000000 ---- a/Wrappers/OpenNI.java/res/values/strings.xml -+++ /dev/null -@@ -1,5 +0,0 @@ -- -- -- Hello World! -- OpenNI.java -- diff --git a/3rdparty/android/patches/sensor/bayer-buffer.patch b/3rdparty/android/patches/sensor/bayer-buffer.patch deleted file mode 100644 index 121bc42471c..00000000000 --- a/3rdparty/android/patches/sensor/bayer-buffer.patch +++ /dev/null @@ -1,90 +0,0 @@ -Fix several errors related to the uncompressed Bayer buffer: - -From: Roman Donchenko - -* Clear it upon frame start. -* Don't let it overflow. -* Report on frame end if it's incomplete or overflowed. ---- - .../XnUncompressedBayerProcessor.cpp | 42 ++++++++++++++++++-- - .../XnUncompressedBayerProcessor.h | 1 - 2 files changed, 38 insertions(+), 5 deletions(-) - -diff --git a/Source/XnDeviceSensorV2/XnUncompressedBayerProcessor.cpp b/Source/XnDeviceSensorV2/XnUncompressedBayerProcessor.cpp -index 5ac9b7c..f1f6acb 100644 ---- a/Source/XnDeviceSensorV2/XnUncompressedBayerProcessor.cpp -+++ b/Source/XnDeviceSensorV2/XnUncompressedBayerProcessor.cpp -@@ -67,12 +67,21 @@ void XnUncompressedBayerProcessor::ProcessFramePacketChunk(const XnSensorProtoco - - // if output format is Gray8, we can write directly to output buffer. otherwise, we need - // to write to a temp buffer. -- XnBuffer* pWriteBuffer = (GetStream()->GetOutputFormat() == XN_OUTPUT_FORMAT_GRAYSCALE8) ? GetWriteBuffer() : &m_UncompressedBayerBuffer; - -- // make sure we have enough room -- if (CheckWriteBufferForOverflow(nDataSize)) -+ if (GetStream()->GetOutputFormat() == XN_OUTPUT_FORMAT_GRAYSCALE8) - { -- pWriteBuffer->UnsafeWrite(pData, nDataSize); -+ XnBuffer* pWriteBuffer = GetWriteBuffer(); -+ -+ // make sure we have enough room -+ if (CheckWriteBufferForOverflow(nDataSize)) -+ pWriteBuffer->UnsafeWrite(pData, nDataSize); -+ } -+ else -+ { -+ XnBuffer* pWriteBuffer = &m_UncompressedBayerBuffer; -+ -+ if (pWriteBuffer->Write(pData, nDataSize) != XN_STATUS_OK) -+ xnLogWarning(XN_MASK_SENSOR_PROTOCOL_IMAGE, "Uncompressed buffer overflow"); - } - - XN_PROFILING_END_SECTION -@@ -90,7 +99,18 @@ void XnUncompressedBayerProcessor::OnEndOfFrame(const XnSensorProtocolResponseHe - case XN_OUTPUT_FORMAT_RGB24: - { - Bayer2RGB888(m_UncompressedBayerBuffer.GetData(), GetWriteBuffer()->GetUnsafeWritePointer(), GetActualXRes(), GetActualYRes(), 1, 0); -- GetWriteBuffer()->UnsafeUpdateSize(GetActualXRes()*GetActualYRes()*3); -+ -+ XnUInt32 frame_size; -+ -+ // if the frame was corrupted, propagate the corruption into the write buffer -+ if (m_UncompressedBayerBuffer.GetSize() < GetActualXRes()*GetActualYRes()) -+ frame_size = m_UncompressedBayerBuffer.GetSize() * 3; -+ else if (m_UncompressedBayerBuffer.GetSize() > GetActualXRes()*GetActualYRes()) -+ frame_size = 0; // overflows are failures too -+ else -+ frame_size = GetActualXRes()*GetActualYRes()*3; -+ -+ GetWriteBuffer()->UnsafeUpdateSize(frame_size); - m_UncompressedBayerBuffer.Reset(); - } - break; -@@ -100,3 +120,15 @@ void XnUncompressedBayerProcessor::OnEndOfFrame(const XnSensorProtocolResponseHe - - XN_PROFILING_END_SECTION - } -+ -+void XnUncompressedBayerProcessor::OnStartOfFrame(const XnSensorProtocolResponseHeader* pHeader) -+{ -+ XN_PROFILING_START_SECTION("XnUncompressedBayerProcessor::OnStartOfFrame") -+ -+ XnImageProcessor::OnStartOfFrame(pHeader); -+ -+ if (GetStream()->GetOutputFormat() == XN_OUTPUT_FORMAT_RGB24) -+ m_UncompressedBayerBuffer.Reset(); -+ -+ XN_PROFILING_END_SECTION -+} -diff --git a/Source/XnDeviceSensorV2/XnUncompressedBayerProcessor.h b/Source/XnDeviceSensorV2/XnUncompressedBayerProcessor.h -index 0491c09..3586172 100644 ---- a/Source/XnDeviceSensorV2/XnUncompressedBayerProcessor.h -+++ b/Source/XnDeviceSensorV2/XnUncompressedBayerProcessor.h -@@ -45,6 +45,7 @@ public: - protected: - virtual void ProcessFramePacketChunk(const XnSensorProtocolResponseHeader* pHeader, const XnUChar* pData, XnUInt32 nDataOffset, XnUInt32 nDataSize); - virtual void OnEndOfFrame(const XnSensorProtocolResponseHeader* pHeader); -+ virtual void OnStartOfFrame(const XnSensorProtocolResponseHeader* pHeader); - - //--------------------------------------------------------------------------- - // Class Members diff --git a/3rdparty/android/patches/sensor/build-flags.patch b/3rdparty/android/patches/sensor/build-flags.patch deleted file mode 100644 index 41f9b6ec0d3..00000000000 --- a/3rdparty/android/patches/sensor/build-flags.patch +++ /dev/null @@ -1,30 +0,0 @@ -Remove build flags that are redundant and disable optimization flags when debugging is enabled. - -From: Roman Donchenko - - ---- - Platform/Android/jni/Application.mk | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/Platform/Android/jni/Application.mk b/Platform/Android/jni/Application.mk -index 6d2da24..91e2646 100644 ---- a/Platform/Android/jni/Application.mk -+++ b/Platform/Android/jni/Application.mk -@@ -5,12 +5,13 @@ APP_PLATFORM := android-9 - - # Build ARMv7-A machine code. - APP_ABI := armeabi-v7a --APP_CFLAGS := -O3 -ftree-vectorize -ffast-math -funroll-loops - --APP_CFLAGS += -fPIC -+ifndef NDK_DEBUG -+APP_CFLAGS := -O3 -ftree-vectorize -ffast-math -funroll-loops -+endif - - ifeq ($(APP_ABI),armeabi-v7a) -- APP_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mtune=cortex-a9 -mfp=vfpv3-d16 -mfpu=vfp -+ APP_CFLAGS += -mtune=cortex-a9 - - # optionally add NEON to compilation flags. - # to activate, run: "ndk-build USE_NEON=1" diff --git a/3rdparty/android/patches/sensor/dynamic-linker.patch b/3rdparty/android/patches/sensor/dynamic-linker.patch deleted file mode 100644 index 3c28a50c862..00000000000 --- a/3rdparty/android/patches/sensor/dynamic-linker.patch +++ /dev/null @@ -1,78 +0,0 @@ -Remove the --dynamic-linker option (that doesn't exist) from the Android.mk - -From: Roman Donchenko - -files. ---- - Platform/Android/jni/XnCore/Android.mk | 2 +- - Platform/Android/jni/XnDDK/Android.mk | 2 +- - Platform/Android/jni/XnDeviceFile/Android.mk | 2 +- - Platform/Android/jni/XnDeviceSensorV2/Android.mk | 2 +- - Platform/Android/jni/XnFormats/Android.mk | 2 +- - 5 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/Platform/Android/jni/XnCore/Android.mk b/Platform/Android/jni/XnCore/Android.mk -index 979c53b..23f24aa 100644 ---- a/Platform/Android/jni/XnCore/Android.mk -+++ b/Platform/Android/jni/XnCore/Android.mk -@@ -24,7 +24,7 @@ LOCAL_C_INCLUDES := \ - - LOCAL_CFLAGS:= -fvisibility=hidden -DXN_CORE_EXPORTS - --LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker -+LOCAL_LDFLAGS += -Wl,--export-dynamic - - LOCAL_SHARED_LIBRARIES := OpenNI libusb - -diff --git a/Platform/Android/jni/XnDDK/Android.mk b/Platform/Android/jni/XnDDK/Android.mk -index 3c5d70b..233fc1d 100644 ---- a/Platform/Android/jni/XnDDK/Android.mk -+++ b/Platform/Android/jni/XnDDK/Android.mk -@@ -25,7 +25,7 @@ LOCAL_C_INCLUDES := \ - - LOCAL_CFLAGS := -fvisibility=hidden -DXN_DDK_EXPORTS - --LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker -+LOCAL_LDFLAGS += -Wl,--export-dynamic - - LOCAL_SHARED_LIBRARIES := OpenNI libusb XnCore XnFormats - -diff --git a/Platform/Android/jni/XnDeviceFile/Android.mk b/Platform/Android/jni/XnDeviceFile/Android.mk -index 9fcabe5..68b9662 100644 ---- a/Platform/Android/jni/XnDeviceFile/Android.mk -+++ b/Platform/Android/jni/XnDeviceFile/Android.mk -@@ -25,7 +25,7 @@ LOCAL_C_INCLUDES := \ - - LOCAL_CFLAGS := -fvisibility=hidden -DXN_DEVICE_EXPORTS - --LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker -+LOCAL_LDFLAGS += -Wl,--export-dynamic - - LOCAL_SHARED_LIBRARIES := OpenNI libusb XnCore XnFormats XnDDK - -diff --git a/Platform/Android/jni/XnDeviceSensorV2/Android.mk b/Platform/Android/jni/XnDeviceSensorV2/Android.mk -index 8df6499..47e959e 100644 ---- a/Platform/Android/jni/XnDeviceSensorV2/Android.mk -+++ b/Platform/Android/jni/XnDeviceSensorV2/Android.mk -@@ -25,7 +25,7 @@ LOCAL_C_INCLUDES := \ - - LOCAL_CFLAGS := -fvisibility=hidden -DXN_DEVICE_EXPORTS - --LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker -+LOCAL_LDFLAGS += -Wl,--export-dynamic - - LOCAL_SHARED_LIBRARIES := OpenNI libusb XnCore XnFormats XnDDK - -diff --git a/Platform/Android/jni/XnFormats/Android.mk b/Platform/Android/jni/XnFormats/Android.mk -index de31310..a60cf97 100644 ---- a/Platform/Android/jni/XnFormats/Android.mk -+++ b/Platform/Android/jni/XnFormats/Android.mk -@@ -27,7 +27,7 @@ LOCAL_C_INCLUDES := \ - - LOCAL_CFLAGS := -fvisibility=hidden -DXN_FORMATS_EXPORTS - --LOCAL_LDFLAGS += -Wl,--export-dynamic --dynamic-linker -+LOCAL_LDFLAGS += -Wl,--export-dynamic - - LOCAL_SHARED_LIBRARIES := OpenNI libusb XnCore - diff --git a/3rdparty/android/patches/sensor/file-log-disable.patch b/3rdparty/android/patches/sensor/file-log-disable.patch deleted file mode 100644 index 6116b65d125..00000000000 --- a/3rdparty/android/patches/sensor/file-log-disable.patch +++ /dev/null @@ -1,22 +0,0 @@ -Disable file logging by default. This patch originally from - -From: Roman Donchenko - -. ---- - Data/GlobalDefaults.ini | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Data/GlobalDefaults.ini b/Data/GlobalDefaults.ini -index 0f53683..87dbe3b 100644 ---- a/Data/GlobalDefaults.ini -+++ b/Data/GlobalDefaults.ini -@@ -6,7 +6,7 @@ LogMasks=ALL - ; 0 - No (default), 1 - Yes - ;LogWriteToConsole=1 - ; 0 - No (default), 1 - Yes --LogWriteToFile=1 -+;LogWriteToFile=1 - ; 0 - No (default), 1 - Yes - ;LogWriteLineInfo=0 - ; leave empty for nothing (default). ALL - all masks diff --git a/3rdparty/android/patches/sensor/kinect.patch b/3rdparty/android/patches/sensor/kinect.patch deleted file mode 100644 index 2777c27dda7..00000000000 --- a/3rdparty/android/patches/sensor/kinect.patch +++ /dev/null @@ -1,1941 +0,0 @@ -Add Kinect support. - -From: Roman Donchenko - -This patch is originally from , -modified by me. ---- - Source/XnDeviceSensorV2/Bayer.cpp | 1233 +++++++++++++++++++- - Source/XnDeviceSensorV2/Registration.cpp | 49 + - Source/XnDeviceSensorV2/XnDataProcessor.h | 3 - Source/XnDeviceSensorV2/XnDeviceSensor.h | 2 - Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp | 46 - - Source/XnDeviceSensorV2/XnDeviceSensorIO.h | 11 - Source/XnDeviceSensorV2/XnDeviceSensorProtocol.h | 4 - Source/XnDeviceSensorV2/XnFirmwareStreams.cpp | 17 - Source/XnDeviceSensorV2/XnHostProtocol.cpp | 5 - Source/XnDeviceSensorV2/XnHostProtocol.h | 2 - Source/XnDeviceSensorV2/XnSensorDepthStream.cpp | 5 - Source/XnDeviceSensorV2/XnSensorDepthStream.h | 2 - Source/XnDeviceSensorV2/XnSensorFirmwareParams.cpp | 8 - Source/XnDeviceSensorV2/XnSensorIRStream.cpp | 2 - Source/XnDeviceSensorV2/XnSensorImageStream.cpp | 79 + - Source/XnDeviceSensorV2/XnSensorImageStream.h | 4 - 16 files changed, 1337 insertions(+), 135 deletions(-) - -diff --git a/Source/XnDeviceSensorV2/Bayer.cpp b/Source/XnDeviceSensorV2/Bayer.cpp -index ab27c86..cead14f 100644 ---- a/Source/XnDeviceSensorV2/Bayer.cpp -+++ b/Source/XnDeviceSensorV2/Bayer.cpp -@@ -20,104 +20,1207 @@ - * * - ****************************************************************************/ - //--------------------------------------------------------------------------- -+/**************************************************************************** -+ * Edited 12.04.2011 by Raphael Dumusc * -+ * Incorporated ROS code for improved Bayer Pattern to RGB conversion. * -+ ***************************************************************************/ - // Includes -+ /* -+ The ROS bayer pattern to RGB conversion -+ Modified to be used in Avin's mod of the Primesense driver. -+ Original code available here: -+ http://www.ros.org/doc/api/openni_camera/html/openni__image__bayer__grbg_8cpp_source.html -+*/ -+ -+/* -+ * Software License Agreement (BSD License) -+ * -+ * Copyright (c) 2011 2011 Willow Garage, Inc. -+ * Suat Gedikli -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * -+ * * Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * * Redistributions in binary form must reproduce the above -+ * copyright notice, this list of conditions and the following -+ * disclaimer in the documentation and/or other materials provided -+ * with the distribution. -+ * * Neither the name of Willow Garage, Inc. nor the names of its -+ * contributors may be used to endorse or promote products derived -+ * from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -+ * POSSIBILITY OF SUCH DAMAGE. -+ * -+ */ - //--------------------------------------------------------------------------- - #include "Bayer.h" --#include -+#include -+#include - -+#define AVG(a,b) (((int)(a) + (int)(b)) >> 1) -+#define AVG3(a,b,c) (((int)(a) + (int)(b) + (int)(c)) / 3) -+#define AVG4(a,b,c,d) (((int)(a) + (int)(b) + (int)(c) + (int)(d)) >> 2) -+#define WAVG4(a,b,c,d,x,y) ( ( ((int)(a) + (int)(b)) * (int)(x) + ((int)(c) + (int)(d)) * (int)(y) ) / ( 2 * ((int)(x) + (int(y))) ) ) -+using namespace std; - //--------------------------------------------------------------------------- -+typedef enum -+{ -+ Bilinear = 0, -+ EdgeAware, -+ EdgeAwareWeighted -+} DebayeringMethod; - // Global Variables -+void BayerUpdateGamma(float fGammaCorr) -+{ -+} - //--------------------------------------------------------------------------- --XnUInt8 Gamma[256] = { -- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, -- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, -- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, -- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, -- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, -- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, -- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, -- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, -- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, -- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255}; -+void fillRGB(unsigned width, unsigned height, const XnUInt8* bayer_pixel, unsigned char* rgb_buffer, DebayeringMethod debayering_method, XnUInt32 nDownSampleStep) -+{ - -+ unsigned rgb_line_step = width * 3; - //--------------------------------------------------------------------------- - // Code -+ unsigned rgb_line_skip = rgb_line_step - width * 3; - //--------------------------------------------------------------------------- --void BayerUpdateGamma(float fGammaCorr) -+ if (nDownSampleStep == 1) - { -- for(XnUInt32 iG = 0; iG < 256;++iG) -- Gamma[iG] = XnUInt8(255*pow(XnDouble(iG)/255.0,(XnDouble)fGammaCorr) + 0.5); -+ //register const XnUInt8 *bayer_pixel = image_md_->Data (); -+ register unsigned yIdx, xIdx; -+ -+ int bayer_line_step = width; -+ int bayer_line_step2 = width << 1; -+ -+ if (debayering_method == Bilinear) -+ { -+ // first two pixel values for first two lines -+ // Bayer 0 1 2 -+ // 0 G r g -+ // line_step b g b -+ // line_step2 g r g -+ -+ rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; // blue; -+ -+ // Bayer 0 1 2 -+ // 0 g R g -+ // line_step b g b -+ // line_step2 g r g -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer 0 1 2 -+ // 0 g r g -+ // line_step B g b -+ // line_step2 g r g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // pixel (1, 1) 0 1 2 -+ // 0 g r g -+ // line_step b G b -+ // line_step2 g r g -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = AVG( bayer_pixel[line_step] , bayer_pixel[line_step+2] ); -+ -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // rest of the first two lines -+ -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) -+ { -+ // GRGR line -+ // Bayer -1 0 1 2 -+ // 0 r G r g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = bayer_pixel[bayer_line_step + 1]; -+ -+ // Bayer -1 0 1 2 -+ // 0 r g R g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer -1 0 1 2 -+ // 0 r g r g -+ // line_step g B g b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 2 -+ // 0 r g r g -+ // line_step g b G b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = AVG( bayer_pixel[line_step] , bayer_pixel[line_step+2] ); - } - --static inline void WriteRGB(XnUInt8 *pBuffer, XnUInt8 nRed, XnUInt8 nGreen, XnUInt8 nBlue) -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // 0 r G r -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g R -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[5] = bayer_pixel[line_step]; -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g B g -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g b G -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; -+ -+ bayer_pixel += bayer_line_step + 2; -+ rgb_buffer += rgb_line_step + 6 + rgb_line_skip; -+ -+ // main processing -+ -+ for (yIdx = 2; yIdx < height - 2; yIdx += 2) - { -- pBuffer[BAYER_RED] = Gamma[nRed]; -- pBuffer[BAYER_GREEN] = Gamma[nGreen]; -- pBuffer[BAYER_BLUE] = Gamma[nBlue]; -+ // first two pixel values -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 G r g -+ // line_step b g b -+ // line_step2 g r g -+ -+ rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); // blue; -+ -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g R g -+ // line_step b g b -+ // line_step2 g r g -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]); -+ -+ // BGBG line -+ // Bayer 0 1 2 -+ // 0 g r g -+ // line_step B g b -+ // line_step2 g r g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // pixel (1, 1) 0 1 2 -+ // 0 g r g -+ // line_step b G b -+ // line_step2 g r g -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // continue with rest of the line -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) -+ { -+ // GRGR line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r G r g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g R g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step], bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g B g b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g b G b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); - } - --void Bayer2RGB888(const XnUInt8* pBayerImage, XnUInt8* pRGBImage, XnUInt32 nXRes, XnUInt32 nYRes, XnUInt32 /*nDownSampleStep*/, XnUInt32 nBadPixels) -+ // last two pixels of the line -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // 0 r G r -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g R -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[5] = bayer_pixel[line_step]; -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g B g -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g b G -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; -+ -+ bayer_pixel += bayer_line_step + 2; -+ rgb_buffer += rgb_line_step + 6 + rgb_line_skip; -+ } -+ -+ //last two lines -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 G r g -+ // line_step b g b -+ -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; // blue; -+ -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g R g -+ // line_step b g b -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]); -+ -+ // BGBG line -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g r g -+ // line_step B g b -+ //rgb_pixel[rgb_line_step ] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 1] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g r g -+ // line_step b G b -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // rest of the last two lines -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) - { -- XnUInt8 nRed; -- XnUInt8 nGreen; -- XnUInt8 nBlue; -- const XnUInt8* pBayer; -- XnUInt8* pRGB; - - //if (nBadPixels > 1) - //{ - //nBadPixels = 1; - //} -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); -+ -+ -+ -+ -+ -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[-bayer_line_step + 2]); -+ -+ -+ -+ -+ -+ -+ rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[-1], bayer_pixel[1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g b G b -+ //rgb_pixel[rgb_line_step + 3] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+} -+ -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r G r -+ // line_step g b g -+ rgb_buffer[rgb_line_step ] = rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[5] = rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); -+ -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g R -+ // line_step g b g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[-bayer_line_step + 1]); -+ //rgb_pixel[5] = AVG( bayer_pixel[line_step], bayer_pixel[-line_step] ); -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g r -+ // line_step g B g -+ //rgb_pixel[rgb_line_step ] = AVG2( bayer_pixel[-1], bayer_pixel[1] ); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g r -+ // line_step g b G -+ //rgb_pixel[rgb_line_step + 3] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; -+ } -+ else if (debayering_method == EdgeAware) -+ { -+ int dh, dv; -+ -+ // first two pixel values for first two lines -+ // Bayer 0 1 2 -+ // 0 G r g -+ // line_step b g b -+ // line_step2 g r g -+ -+ rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; // blue; -+ -+ // Bayer 0 1 2 -+ // 0 g R g -+ // line_step b g b -+ // line_step2 g r g -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer 0 1 2 -+ // 0 g r g -+ // line_step B g b -+ // line_step2 g r g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // pixel (1, 1) 0 1 2 -+ // 0 g r g -+ // line_step b G b -+ // line_step2 g r g -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = AVG( bayer_pixel[line_step] , bayer_pixel[line_step+2] ); -+ -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // rest of the first two lines -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) -+ { -+ // GRGR line -+ // Bayer -1 0 1 2 -+ // 0 r G r g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = bayer_pixel[bayer_line_step + 1]; -+ -+ // Bayer -1 0 1 2 -+ // 0 r g R g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer -1 0 1 2 -+ // 0 r g r g -+ // line_step g B g b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 2 -+ // 0 r g r g -+ // line_step g b G b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = AVG( bayer_pixel[line_step] , bayer_pixel[line_step+2] ); -+ } -+ -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // 0 r G r -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g R -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[5] = bayer_pixel[line_step]; -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g B g -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g b G -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; - -- XnInt32 BAYER_LINE_LENGTH = nXRes; -- XnInt32 BAYER_LINE_LENGTH2 = BAYER_LINE_LENGTH*2; -- XnInt32 BAYER_RGB_LINE_LENGTH = nXRes*BAYER_BPP; -- XnInt32 BAYER_RGB_LINE_LENGTH2 = BAYER_RGB_LINE_LENGTH*2; -+ bayer_pixel += bayer_line_step + 2; -+ rgb_buffer += rgb_line_step + 6 + rgb_line_skip; -+ // main processing -+ for (yIdx = 2; yIdx < height - 2; yIdx += 2) -+ { -+ // first two pixel values -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 G r g -+ // line_step b g b -+ // line_step2 g r g - -- const XnUInt8* pCurrBayer; -- XnUInt8* pCurrRGB; -- XnUInt32 nColCount; -- XnUInt32 nTotalColsCount = (nXRes-2) / 2; -- XnUInt32 nTotalRowsCount = (nYRes-4) / 2; -+ rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); // blue; - -- pBayer = pBayerImage + BAYER_LINE_LENGTH - nBadPixels; -- pRGB = pRGBImage + BAYER_RGB_LINE_LENGTH; -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g R g -+ // line_step b g b -+ // line_step2 g r g -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]); - -- do { -- pCurrBayer = pBayer+ 1; -- pCurrRGB = pRGB + BAYER_BPP; -+ // BGBG line -+ // Bayer 0 1 2 -+ // 0 g r g -+ // line_step B g b -+ // line_step2 g r g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; - -- nColCount = nTotalColsCount; -+ // pixel (1, 1) 0 1 2 -+ // 0 g r g -+ // line_step b G b -+ // line_step2 g r g -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); - -- do { -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // continue with rest of the line -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) -+ { -+ // GRGR line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r G r g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); - -- nRed = ((XnUInt32)pCurrBayer[-BAYER_LINE_LENGTH]+pCurrBayer[BAYER_LINE_LENGTH]) / 2; -- nBlue = ((XnUInt32)pCurrBayer[-1]+pCurrBayer[1]) / 2; -- WriteRGB(pCurrRGB+0, nRed, pCurrBayer[0], nBlue); -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g R g -+ // line_step g b g b -+ // line_step2 r g r g - -- nRed = ((XnUInt32)pCurrBayer[-BAYER_LINE_LENGTH+2]+pCurrBayer[BAYER_LINE_LENGTH+2]) / 2; -- nGreen = ((XnUInt32)pCurrBayer[0]+pCurrBayer[2]) / 2; -- WriteRGB(pCurrRGB+BAYER_BPP, nRed, nGreen, pCurrBayer[1]); -+ dh = abs (bayer_pixel[0] - bayer_pixel[2]); -+ dv = abs (bayer_pixel[-bayer_line_step + 1] - bayer_pixel[bayer_line_step + 1]); - -- nGreen = ((XnUInt32)pCurrBayer[BAYER_LINE_LENGTH-1]+pCurrBayer[BAYER_LINE_LENGTH+1]) / 2; -- nBlue = ((XnUInt32)pCurrBayer[BAYER_LINE_LENGTH2-1]+pCurrBayer[BAYER_LINE_LENGTH2+1]) / 2; -- WriteRGB(pCurrRGB+BAYER_RGB_LINE_LENGTH, pCurrBayer[BAYER_LINE_LENGTH], nGreen, nBlue); -+ if (dh > dv) -+ rgb_buffer[4] = AVG (bayer_pixel[-bayer_line_step + 1], bayer_pixel[bayer_line_step + 1]); -+ else if (dv > dh) -+ rgb_buffer[4] = AVG (bayer_pixel[0], bayer_pixel[2]); -+ else -+ rgb_buffer[4] = AVG4 (bayer_pixel[-bayer_line_step + 1], bayer_pixel[bayer_line_step + 1], bayer_pixel[0], bayer_pixel[2]); - -- nRed = ((XnUInt32)pCurrBayer[BAYER_LINE_LENGTH]+pCurrBayer[BAYER_LINE_LENGTH+2]) / 2; -- nBlue = ((XnUInt32)pCurrBayer[1]+pCurrBayer[BAYER_LINE_LENGTH2+1]) / 2; -- WriteRGB(pCurrRGB+BAYER_RGB_LINE_LENGTH+BAYER_BPP, nRed, pCurrBayer[BAYER_LINE_LENGTH+1], nBlue); -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[5] = AVG4 (bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step], bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); - -- pCurrBayer += 2; -- pCurrRGB += 2*BAYER_BPP; -- } while (--nColCount); -+ // BGBG line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g B g b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; - -- pBayer += BAYER_LINE_LENGTH2; -- pRGB += BAYER_RGB_LINE_LENGTH2; -- } while (--nTotalRowsCount); -+ dv = abs (bayer_pixel[0] - bayer_pixel[bayer_line_step2]); -+ dh = abs (bayer_pixel[bayer_line_step - 1] - bayer_pixel[bayer_line_step + 1]); -+ -+ if (dv > dh) -+ rgb_buffer[rgb_line_step + 1] = AVG (bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ else if (dh > dv) -+ rgb_buffer[rgb_line_step + 1] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step2]); -+ else -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g b G b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ } -+ -+ // last two pixels of the line -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // 0 r G r -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g R -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[5] = bayer_pixel[line_step]; -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g B g -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g b G -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; -+ -+ bayer_pixel += bayer_line_step + 2; -+ rgb_buffer += rgb_line_step + 6 + rgb_line_skip; -+ } -+ -+ //last two lines -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 G r g -+ // line_step b g b -+ -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; // blue; -+ -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g R g -+ // line_step b g b -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]); -+ -+ // BGBG line -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g r g -+ // line_step B g b -+ //rgb_pixel[rgb_line_step ] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 1] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g r g -+ // line_step b G b -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // rest of the last two lines -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) -+ { -+ // GRGR line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r G r g -+ // line_step g b g b -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g R g -+ // line_step g b g b -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[-bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g B g b -+ rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[-1], bayer_pixel[1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g b G b -+ //rgb_pixel[rgb_line_step + 3] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ } -+ -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r G r -+ // line_step g b g -+ rgb_buffer[rgb_line_step ] = rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[5] = rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); -+ -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g R -+ // line_step g b g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[-bayer_line_step + 1]); -+ //rgb_pixel[5] = AVG( bayer_pixel[line_step], bayer_pixel[-line_step] ); -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g r -+ // line_step g B g -+ //rgb_pixel[rgb_line_step ] = AVG2( bayer_pixel[-1], bayer_pixel[1] ); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g r -+ // line_step g b G -+ //rgb_pixel[rgb_line_step + 3] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; -+ } -+ else if (debayering_method == EdgeAwareWeighted) -+ { -+ int dh, dv; -+ -+ // first two pixel values for first two lines -+ // Bayer 0 1 2 -+ // 0 G r g -+ // line_step b g b -+ // line_step2 g r g -+ -+ rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; // blue; -+ -+ // Bayer 0 1 2 -+ // 0 g R g -+ // line_step b g b -+ // line_step2 g r g -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer 0 1 2 -+ // 0 g r g -+ // line_step B g b -+ // line_step2 g r g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // pixel (1, 1) 0 1 2 -+ // 0 g r g -+ // line_step b G b -+ // line_step2 g r g -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = AVG( bayer_pixel[line_step] , bayer_pixel[line_step+2] ); -+ -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // rest of the first two lines -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) -+ { -+ // GRGR line -+ // Bayer -1 0 1 2 -+ // 0 r G r g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = bayer_pixel[bayer_line_step + 1]; -+ -+ // Bayer -1 0 1 2 -+ // 0 r g R g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer -1 0 1 2 -+ // 0 r g r g -+ // line_step g B g b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 2 -+ // 0 r g r g -+ // line_step g b G b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = AVG( bayer_pixel[line_step] , bayer_pixel[line_step+2] ); -+ } -+ -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // 0 r G r -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g R -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[5] = bayer_pixel[line_step]; -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g B g -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g b G -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; -+ -+ bayer_pixel += bayer_line_step + 2; -+ rgb_buffer += rgb_line_step + 6 + rgb_line_skip; -+ // main processing -+ for (yIdx = 2; yIdx < height - 2; yIdx += 2) -+ { -+ // first two pixel values -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 G r g -+ // line_step b g b -+ // line_step2 g r g -+ -+ rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); // blue; -+ -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g R g -+ // line_step b g b -+ // line_step2 g r g -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]); -+ -+ // BGBG line -+ // Bayer 0 1 2 -+ // 0 g r g -+ // line_step B g b -+ // line_step2 g r g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[bayer_line_step2]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // pixel (1, 1) 0 1 2 -+ // 0 g r g -+ // line_step b G b -+ // line_step2 g r g -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // continue with rest of the line -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) -+ { -+ // GRGR line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r G r g -+ // line_step g b g b -+ // line_step2 r g r g -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g R g -+ // line_step g b g b -+ // line_step2 r g r g -+ -+ dh = abs (bayer_pixel[0] - bayer_pixel[2]); -+ dv = abs (bayer_pixel[-bayer_line_step + 1] - bayer_pixel[bayer_line_step + 1]); -+ -+ if (dv == 0 && dh == 0) -+ rgb_buffer[4] = AVG4 (bayer_pixel[1 - bayer_line_step], bayer_pixel[1 + bayer_line_step], bayer_pixel[0], bayer_pixel[2]); -+ else -+ rgb_buffer[4] = WAVG4 (bayer_pixel[1 - bayer_line_step], bayer_pixel[1 + bayer_line_step], bayer_pixel[0], bayer_pixel[2], dh, dv); -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[5] = AVG4 (bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step], bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g B g b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ dv = abs (bayer_pixel[0] - bayer_pixel[bayer_line_step2]); -+ dh = abs (bayer_pixel[bayer_line_step - 1] - bayer_pixel[bayer_line_step + 1]); -+ -+ if (dv == 0 && dh == 0) -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ else -+ rgb_buffer[rgb_line_step + 1] = WAVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1], dh, dv); -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g b G b -+ // line_step2 r g r g -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ } -+ -+ // last two pixels of the line -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // 0 r G r -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = rgb_buffer[5] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g R -+ // line_step g b g -+ // line_step2 r g r -+ rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[5] = bayer_pixel[line_step]; -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g B g -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step ] = AVG4 (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1], bayer_pixel[-1], bayer_pixel[bayer_line_step2 - 1]); -+ rgb_buffer[rgb_line_step + 1] = AVG4 (bayer_pixel[0], bayer_pixel[bayer_line_step2], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ //rgb_pixel[rgb_line_step + 2] = bayer_pixel[line_step]; -+ -+ // Bayer -1 0 1 -+ // 0 r g r -+ // line_step g b G -+ // line_step2 r g r -+ rgb_buffer[rgb_line_step + 3] = AVG (bayer_pixel[1], bayer_pixel[bayer_line_step2 + 1]); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; -+ -+ bayer_pixel += bayer_line_step + 2; -+ rgb_buffer += rgb_line_step + 6 + rgb_line_skip; -+ } -+ -+ //last two lines -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 G r g -+ // line_step b g b -+ -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[rgb_line_step ] = rgb_buffer[3] = rgb_buffer[0] = bayer_pixel[1]; // red pixel -+ rgb_buffer[1] = bayer_pixel[0]; // green pixel -+ rgb_buffer[rgb_line_step + 2] = rgb_buffer[2] = bayer_pixel[bayer_line_step]; // blue; -+ -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g R g -+ // line_step b g b -+ //rgb_pixel[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[2 - bayer_line_step]); -+ -+ // BGBG line -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g r g -+ // line_step B g b -+ //rgb_pixel[rgb_line_step ] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 1] = AVG (bayer_pixel[0], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer 0 1 2 -+ // -1 b g b -+ // 0 g r g -+ // line_step b G b -+ //rgb_pixel[rgb_line_step + 3] = AVG( bayer_pixel[1] , bayer_pixel[line_step2+1] ); -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ -+ rgb_buffer += 6; -+ bayer_pixel += 2; -+ // rest of the last two lines -+ for (xIdx = 2; xIdx < width - 2; xIdx += 2, rgb_buffer += 6, bayer_pixel += 2) -+ { -+ // GRGR line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r G r g -+ // line_step g b g b -+ rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g R g -+ // line_step g b g b -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG4 (bayer_pixel[0], bayer_pixel[2], bayer_pixel[bayer_line_step + 1], bayer_pixel[1 - bayer_line_step]); -+ rgb_buffer[5] = AVG4 (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2], bayer_pixel[-bayer_line_step], bayer_pixel[-bayer_line_step + 2]); -+ -+ // BGBG line -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g B g b -+ rgb_buffer[rgb_line_step ] = AVG (bayer_pixel[-1], bayer_pixel[1]); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ -+ // Bayer -1 0 1 2 -+ // -1 g b g b -+ // 0 r g r g -+ // line_step g b G b -+ //rgb_pixel[rgb_line_step + 3] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ rgb_buffer[rgb_line_step + 5] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[bayer_line_step + 2]); -+ } -+ -+ // last two pixel values for first two lines -+ // GRGR line -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r G r -+ // line_step g b g -+ rgb_buffer[rgb_line_step ] = rgb_buffer[0] = AVG (bayer_pixel[1], bayer_pixel[-1]); -+ rgb_buffer[1] = bayer_pixel[0]; -+ rgb_buffer[5] = rgb_buffer[2] = AVG (bayer_pixel[bayer_line_step], bayer_pixel[-bayer_line_step]); -+ -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g R -+ // line_step g b g -+ rgb_buffer[rgb_line_step + 3] = rgb_buffer[3] = bayer_pixel[1]; -+ rgb_buffer[4] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step + 1], bayer_pixel[-bayer_line_step + 1]); -+ //rgb_pixel[5] = AVG( bayer_pixel[line_step], bayer_pixel[-line_step] ); -+ -+ // BGBG line -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g r -+ // line_step g B g -+ //rgb_pixel[rgb_line_step ] = AVG2( bayer_pixel[-1], bayer_pixel[1] ); -+ rgb_buffer[rgb_line_step + 1] = AVG3 (bayer_pixel[0], bayer_pixel[bayer_line_step - 1], bayer_pixel[bayer_line_step + 1]); -+ rgb_buffer[rgb_line_step + 5] = rgb_buffer[rgb_line_step + 2] = bayer_pixel[bayer_line_step]; -+ -+ // Bayer -1 0 1 -+ // -1 g b g -+ // 0 r g r -+ // line_step g b G -+ //rgb_pixel[rgb_line_step + 3] = bayer_pixel[1]; -+ rgb_buffer[rgb_line_step + 4] = bayer_pixel[bayer_line_step + 1]; -+ //rgb_pixel[rgb_line_step + 5] = bayer_pixel[line_step]; -+ } -+ //else -+ // THROW_OPENNI_EXCEPTION ("Unknwon debayering method: %d", (int)debayering_method); -+ } -+ //Warning: Downsampling mod is untested -+ else if (nDownSampleStep > 1) -+ { -+ // get each or each 2nd pixel group to find rgb values! -+ register unsigned bayerXStep = nDownSampleStep; -+ register unsigned bayerYSkip = (nDownSampleStep - 1) * width; -+ -+ // Downsampling and debayering at once -+ register const XnUInt8* bayer_buffer = bayer_pixel; -+ -+ for (register unsigned yIdx = 0; yIdx < height; ++yIdx, bayer_buffer += bayerYSkip, rgb_buffer += rgb_line_skip) // skip a line -+ { -+ for (register unsigned xIdx = 0; xIdx < width; ++xIdx, rgb_buffer += 3, bayer_buffer += bayerXStep) -+ { -+ rgb_buffer[ 2 ] = bayer_buffer[ width ]; -+ rgb_buffer[ 1 ] = AVG (bayer_buffer[0], bayer_buffer[ width + 1]); -+ rgb_buffer[ 0 ] = bayer_buffer[ 1 ]; -+ } -+ } -+ } -+} -+ -+ -+ -+void Bayer2RGB888(const XnUInt8* pBayerImage, XnUInt8* pRGBImage, XnUInt32 nXRes, XnUInt32 nYRes, XnUInt32 nDownSampleStep, XnUInt32 nBadPixels) -+{ -+ fillRGB(nXRes, nYRes, pBayerImage, pRGBImage, DebayeringMethod(1), nDownSampleStep); // DebayeringMethod(0) == bilinear, (1) == edge aware, (2) == edge aware weighted - } -diff --git a/Source/XnDeviceSensorV2/Registration.cpp b/Source/XnDeviceSensorV2/Registration.cpp -index 49f1925..5dc700e 100644 ---- a/Source/XnDeviceSensorV2/Registration.cpp -+++ b/Source/XnDeviceSensorV2/Registration.cpp -@@ -55,7 +55,7 @@ inline XnDouble XnXRegistrationFunction1000(XnRegistrationInformation1000& regIn - regInfo1000.FuncX.dD, - regInfo1000.FuncX.dE, - regInfo1000.FuncX.dF, -- (XnUInt16)(nX - nXRes/2), -+ (XnUInt16)(nX - nXRes/2), - (XnUInt16)(nY - nYRes/2)); - } - -@@ -68,19 +68,19 @@ inline XnDouble XnYRegistrationFunction1000(XnRegistrationInformation1000& regIn - regInfo1000.FuncY.dD, - regInfo1000.FuncY.dE, - regInfo1000.FuncY.dF, -- (XnUInt16)(nX - nXRes/2), -+ (XnUInt16)(nX - nXRes/2), - (XnUInt16)(nY - nYRes/2)); - } - - XnStatus XnRegistration::BuildRegTable1000() - { - XnStatus nRetVal = XN_STATUS_OK; -- -+ - // take needed parameters to perform registration - XnRegistrationInformation1000 regInfo1000; - nRetVal = XnHostProtocolAlgorithmParams(m_pDevicePrivateData, XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION, ®Info1000, sizeof(regInfo1000), m_pDepthStream->GetResolution(), (XnUInt16)m_pDepthStream->GetFPS()); - XN_IS_STATUS_OK(nRetVal); -- -+ - XnUInt16* pRegTable = m_pRegistrationTable; - XnDouble dDeltaX, dDeltaY; - -@@ -234,7 +234,7 @@ void CreateDXDYTables (XnDouble* RegXTable, XnDouble* RegYTable, - void BuildDepthToShiftTable(XnUInt16* pDepth2Shift, XnSensorDepthStream* m_pStream) - { - XnUInt32 nXScale = XN_CMOS_VGAOUTPUT_XRES / XN_DEPTH_XRES; -- XnInt16* pRGBRegDepthToShiftTable = (XnInt16*)pDepth2Shift; -+ XnInt16* pRGBRegDepthToShiftTable = (XnInt16*)pDepth2Shift; - XnUInt32 nIndex = 0; - XnDouble dDepth = 0; - -@@ -248,10 +248,8 @@ void BuildDepthToShiftTable(XnUInt16* pDepth2Shift, XnSensorDepthStream* m_pStre - m_pStream->GetProperty(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &nPlaneDsr); - dPlaneDsr = (XnDouble)nPlaneDsr; - -- XnUInt64 nDCRCDist; - XnDouble dDCRCDist; -- m_pStream->GetProperty(XN_STREAM_PROPERTY_DCMOS_RCMOS_DISTANCE, &nDCRCDist); -- dDCRCDist = (XnDouble)nDCRCDist; -+ m_pStream->GetProperty(XN_STREAM_PROPERTY_DCMOS_RCMOS_DISTANCE, &dDCRCDist); - - XnDouble dPelSize = 1.0 / (dPlanePixelSize * nXScale * S2D_PEL_CONST); - XnDouble dPelDCC = dDCRCDist * dPelSize * S2D_PEL_CONST; -@@ -269,14 +267,18 @@ void BuildDepthToShiftTable(XnUInt16* pDepth2Shift, XnSensorDepthStream* m_pStre - XnStatus XnRegistration::BuildRegTable1080() - { - XnStatus nRetVal = XN_STATUS_OK; -- -+ - // take needed parameters to perform registration - XnRegistrationInformation1080 RegData; -- nRetVal = XnHostProtocolAlgorithmParams(m_pDevicePrivateData, XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION, &RegData, sizeof(RegData), m_pDepthStream->GetResolution(), (XnUInt16)m_pDepthStream->GetFPS()); -+ nRetVal = XnHostProtocolAlgorithmParams(m_pDevicePrivateData, -+ m_pDevicePrivateData->bKinect ? XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION_MSK : XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION, -+ &RegData, sizeof(RegData), m_pDepthStream->GetResolution(), (XnUInt16)m_pDepthStream->GetFPS()); - XN_IS_STATUS_OK(nRetVal); - - xnOSMemSet(&m_padInfo, 0, sizeof(m_padInfo)); -- nRetVal = XnHostProtocolAlgorithmParams(m_pDevicePrivateData, XN_HOST_PROTOCOL_ALGORITHM_PADDING, &m_padInfo, sizeof(m_padInfo), m_pDepthStream->GetResolution(), (XnUInt16)m_pDepthStream->GetFPS()); -+ nRetVal = XnHostProtocolAlgorithmParams(m_pDevicePrivateData, -+ m_pDevicePrivateData->bKinect ? XN_HOST_PROTOCOL_ALGORITHM_PADDING_MSK : XN_HOST_PROTOCOL_ALGORITHM_PADDING, -+ &m_padInfo, sizeof(m_padInfo), m_pDepthStream->GetResolution(), (XnUInt16)m_pDepthStream->GetFPS()); - XN_IS_STATUS_OK(nRetVal); - - XN_VALIDATE_ALIGNED_CALLOC(m_pDepthToShiftTable, XnUInt16, m_pDepthStream->GetXRes()*m_pDepthStream->GetYRes(), XN_DEFAULT_MEM_ALIGN); -@@ -361,7 +363,7 @@ XnStatus XnRegistration::BuildRegTable1080() - FinishLoop: - XN_DELETE_ARR(RegXTable); - XN_DELETE_ARR(RegYTable); -- -+ - return (XN_STATUS_OK); - } - -@@ -472,13 +474,28 @@ void XnRegistration::Apply1000(XnDepthPixel* pInput, XnDepthPixel* pOutput) - nNewX = (XnInt32)(XnDouble(*pRegTable)/XN_REG_X_SCALE + XnInt32(pDepth2ShiftTable[nValue]/XN_REG_PARAB_COEFF - nConstShift) * dShiftFactor); - nNewY = *(pRegTable+1); - -- if ((XnUInt32)nNewX-1 < (XnUInt32)nDepthXRes-1) -+ if ((XnUInt32)nNewX-1 < (XnUInt32)nDepthXRes-1 && (XnUInt32)nNewY <(XnUInt32) nDepthYRes) - { - nArrPos = nNewY * nDepthXRes + nNewX; - nOutValue = pOutput[nArrPos]; - - if (nOutValue == 0 || nOutValue > nValue) - { -+ if ( nNewX > 0 && nNewY > 0 ) -+ { -+ pOutput[nArrPos-nDepthXRes] = nValue; -+ pOutput[nArrPos-nDepthXRes-1] = nValue; -+ pOutput[nArrPos-1] = nValue; -+ } -+ else if( nNewY > 0 ) -+ { -+ pOutput[nArrPos-nDepthXRes] = nValue; -+ } -+ else if( nNewX > 0 ) -+ { -+ pOutput[nArrPos-1] = nValue; -+ } -+ - pOutput[nArrPos] = nValue; - pOutput[nArrPos-1] = nValue; - pOutput[nArrPos-nDepthXRes] = nValue; -@@ -495,7 +512,7 @@ void XnRegistration::Apply1000(XnDepthPixel* pInput, XnDepthPixel* pOutput) - void XnRegistration::Apply1080(XnDepthPixel* pInput, XnDepthPixel* pOutput) - { - XnInt16* pRegTable = (XnInt16*)m_pRegistrationTable; -- XnInt16* pRGBRegDepthToShiftTable = (XnInt16*)m_pDepthToShiftTable; -+ XnInt16* pRGBRegDepthToShiftTable = (XnInt16*)m_pDepthToShiftTable; - XnDepthPixel nValue = 0; - XnDepthPixel nOutValue = 0; - XnUInt32 nNewX = 0; -@@ -523,11 +540,11 @@ void XnRegistration::Apply1080(XnDepthPixel* pInput, XnDepthPixel* pOutput) - nNewX = (XnUInt32)(*pRegTable + pRGBRegDepthToShiftTable[nValue]) / RGB_REG_X_VAL_SCALE; - nNewY = *(pRegTable+1); - -- if (nNewX < nDepthXRes) -+ if (nNewX < nDepthXRes && nNewY < nDepthYRes) - { - nArrPos = bMirror ? (nNewY+1)*nDepthXRes - nNewX : (nNewY*nDepthXRes) + nNewX; - nArrPos -= nConstOffset; -- -+ - nOutValue = pOutput[nArrPos]; - - if ((nOutValue == XN_DEVICE_SENSOR_NO_DEPTH_VALUE) || (nOutValue > nValue)) -diff --git a/Source/XnDeviceSensorV2/XnDataProcessor.h b/Source/XnDeviceSensorV2/XnDataProcessor.h -index 49e045d..7301837 100644 ---- a/Source/XnDeviceSensorV2/XnDataProcessor.h -+++ b/Source/XnDeviceSensorV2/XnDataProcessor.h -@@ -86,7 +86,8 @@ protected: - /* The number of bytes received so far (since last time this member was reset). */ - XnUInt32 m_nBytesReceived; - /* Stores last packet ID */ -- XnUInt16 m_nLastPacketID; -+ // --avin mod-- -+ XnUInt8 m_nLastPacketID; - /* The name of the stream. */ - const XnChar* m_csName; - -diff --git a/Source/XnDeviceSensorV2/XnDeviceSensor.h b/Source/XnDeviceSensorV2/XnDeviceSensor.h -index 7666922..65481c5 100644 ---- a/Source/XnDeviceSensorV2/XnDeviceSensor.h -+++ b/Source/XnDeviceSensorV2/XnDeviceSensor.h -@@ -333,7 +333,7 @@ typedef struct XnDevicePrivateData - - XN_MUTEX_HANDLE hExecuteMutex; - -- -+ XnBool bKinect; - } XnDevicePrivateData; - - #pragma pack (push, 1) -diff --git a/Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp b/Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp -index 6b01050..13c16e0 100644 ---- a/Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp -+++ b/Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp -@@ -27,14 +27,6 @@ - #include - - //--------------------------------------------------------------------------- --// Defines --//--------------------------------------------------------------------------- --#define XN_SENSOR_VENDOR_ID 0x1D27 --#define XN_SENSOR_5_0_PRODUCT_ID 0x0500 --#define XN_SENSOR_6_0_PRODUCT_ID 0x0600 --#define XN_SENSOR_6_0_1_PRODUCT_ID 0x0601 -- --//--------------------------------------------------------------------------- - // Enums - //--------------------------------------------------------------------------- - typedef enum -@@ -147,9 +139,11 @@ XnStatus XnSensorIO::OpenDataEndPoints(XnSensorUsbInterface nInterface, const Xn - XN_LOG_WARNING_RETURN(XN_STATUS_USB_INTERFACE_NOT_SUPPORTED, XN_MASK_DEVICE_IO, "Unknown interface type: %d", nInterface); - } - -+/* - xnLogVerbose(XN_MASK_DEVICE_IO, "Setting USB alternative interface to %d...", nAlternativeInterface); - nRetVal = xnUSBSetInterface(m_pSensorHandle->USBDevice, 0, nAlternativeInterface); - XN_IS_STATUS_OK(nRetVal); -+*/ - } - - xnLogVerbose(XN_MASK_DEVICE_IO, "Opening endpoints..."); -@@ -356,14 +350,14 @@ XnStatus XnSensorIO::CloseDevice() - return (XN_STATUS_OK); - } - --XnStatus Enumerate(XnUInt16 nProduct, XnStringsHash& devicesSet) -+XnStatus Enumerate(XnUInt16 nVendor, XnUInt16 nProduct, XnStringsHash& devicesSet) - { - XnStatus nRetVal = XN_STATUS_OK; - - const XnUSBConnectionString* astrDevicePaths; - XnUInt32 nCount; - -- nRetVal = xnUSBEnumerateDevices(XN_SENSOR_VENDOR_ID, nProduct, &astrDevicePaths, &nCount); -+ nRetVal = xnUSBEnumerateDevices(nVendor, nProduct, &astrDevicePaths, &nCount); - XN_IS_STATUS_OK(nRetVal); - - for (XnUInt32 i = 0; i < nCount; ++i) -@@ -391,28 +385,35 @@ XnStatus XnSensorIO::EnumerateSensors(XnConnectionString* aConnectionStrings, Xn - - if (devicesSet.Size() == 0) - { -- // search for a v6.0.1 device -- nRetVal = Enumerate(XN_SENSOR_6_0_1_PRODUCT_ID, devicesSet); -- XN_IS_STATUS_OK(nRetVal); -- -- // search for a v6.0 device -- nRetVal = Enumerate(XN_SENSOR_6_0_PRODUCT_ID, devicesSet); -- XN_IS_STATUS_OK(nRetVal); -- } - #else - XnStringsHash devicesSet; -+#endif -+ -+ // search for a MSK device -+ nRetVal = Enumerate(XN_SENSOR_MSK_VENDOR_ID, XN_SENSOR_MSK_PRODUCT_ID, devicesSet); -+ XN_IS_STATUS_OK(nRetVal); -+ -+ // search for a v6.0.1 device -+ nRetVal = Enumerate(XN_SENSOR_VENDOR_ID, XN_SENSOR_6_0_1_PRODUCT_ID, devicesSet); -+ XN_IS_STATUS_OK(nRetVal); -+ -+ // search for a v6.0 device -+ nRetVal = Enumerate(XN_SENSOR_VENDOR_ID, XN_SENSOR_6_0_PRODUCT_ID, devicesSet); -+ XN_IS_STATUS_OK(nRetVal); - - // search for a v6.0.1 device -- nRetVal = Enumerate(XN_SENSOR_6_0_1_PRODUCT_ID, devicesSet); -+ nRetVal = Enumerate(XN_SENSOR_VENDOR_ID, XN_SENSOR_5_0_PRODUCT_ID, devicesSet); - XN_IS_STATUS_OK(nRetVal); - - // search for a v6.0 device -- nRetVal = Enumerate(XN_SENSOR_6_0_PRODUCT_ID, devicesSet); -+ nRetVal = Enumerate(XN_SENSOR_VENDOR_ID, XN_SENSOR_2_0_PRODUCT_ID, devicesSet); - XN_IS_STATUS_OK(nRetVal); - - // search for a v5.0 device -- nRetVal = Enumerate(XN_SENSOR_5_0_PRODUCT_ID, devicesSet); -+ nRetVal = Enumerate(XN_SENSOR_VENDOR_ID, XN_SENSOR_5_0_PRODUCT_ID, devicesSet); - XN_IS_STATUS_OK(nRetVal); -+#if (XN_PLATFORM == XN_PLATFORM_MACOSX) -+ } - #endif - - // now copy back -@@ -470,7 +471,8 @@ XnStatus XnSensorIO::SetCallback(XnUSBEventCallbackFunctionPtr pCallbackPtr, voi - XnStatus nRetVal = XN_STATUS_OK; - - // try to register callback to a 5.0 device -- nRetVal = xnUSBSetCallbackHandler(XN_SENSOR_VENDOR_ID, XN_SENSOR_5_0_PRODUCT_ID, NULL, pCallbackPtr, pCallbackData); -+// --avin mod-- -+// nRetVal = xnUSBSetCallbackHandler(XN_SENSOR_VENDOR_ID, XN_SENSOR_5_0_PRODUCT_ID, NULL, pCallbackPtr, pCallbackData); - - return nRetVal; - } -diff --git a/Source/XnDeviceSensorV2/XnDeviceSensorIO.h b/Source/XnDeviceSensorV2/XnDeviceSensorIO.h -index 4c995ec..2067527 100644 ---- a/Source/XnDeviceSensorV2/XnDeviceSensorIO.h -+++ b/Source/XnDeviceSensorV2/XnDeviceSensorIO.h -@@ -32,6 +32,17 @@ - #include "XnFirmwareInfo.h" - - //--------------------------------------------------------------------------- -+// Defines -+//--------------------------------------------------------------------------- -+#define XN_SENSOR_VENDOR_ID 0x1D27 -+#define XN_SENSOR_2_0_PRODUCT_ID 0x0200 -+#define XN_SENSOR_5_0_PRODUCT_ID 0x0500 -+#define XN_SENSOR_6_0_PRODUCT_ID 0x0600 -+#define XN_SENSOR_6_0_1_PRODUCT_ID 0x0601 -+#define XN_SENSOR_MSK_VENDOR_ID 0x045E -+#define XN_SENSOR_MSK_PRODUCT_ID 0x02AE -+ -+//--------------------------------------------------------------------------- - // Structures & Enums - //--------------------------------------------------------------------------- - typedef struct XnUsbConnection -diff --git a/Source/XnDeviceSensorV2/XnDeviceSensorProtocol.h b/Source/XnDeviceSensorV2/XnDeviceSensorProtocol.h -index f00469e..87b4a45 100644 ---- a/Source/XnDeviceSensorV2/XnDeviceSensorProtocol.h -+++ b/Source/XnDeviceSensorV2/XnDeviceSensorProtocol.h -@@ -82,7 +82,9 @@ typedef struct XnSensorProtocolResponseHeader - { - XnUInt16 nMagic; - XnUInt16 nType; -- XnUInt16 nPacketID; -+ // --avin mod-- -+ XnUInt8 nPacketID; -+ XnUInt8 nUnknown; - XnUInt16 nBufSize; - XnUInt32 nTimeStamp; - } XnSensorProtocolResponseHeader; -diff --git a/Source/XnDeviceSensorV2/XnFirmwareStreams.cpp b/Source/XnDeviceSensorV2/XnFirmwareStreams.cpp -index 16cca8d..b8d84e5 100644 ---- a/Source/XnDeviceSensorV2/XnFirmwareStreams.cpp -+++ b/Source/XnDeviceSensorV2/XnFirmwareStreams.cpp -@@ -112,10 +112,11 @@ XnStatus XnFirmwareStreams::CheckClaimStream(const XnChar* strType, XnResolution - } - - // check FPS -- if (pIRStreamData->nFPS != nFPS) -- { -- XN_LOG_WARNING_RETURN(XN_STATUS_DEVICE_BAD_PARAM, XN_MASK_DEVICE_SENSOR, "Depth and IR streams must have the same FPS!"); -- } -+ // check FPS -+ //if (pIRStreamData->nFPS != nFPS) -+ //{ -+ // XN_LOG_WARNING_RETURN(XN_STATUS_DEVICE_BAD_PARAM, XN_MASK_DEVICE_SENSOR, "Depth and IR streams must have the same FPS!"); -+ //} - } - } - else if (strcmp(strType, XN_STREAM_TYPE_IR) == 0) -@@ -144,10 +145,10 @@ XnStatus XnFirmwareStreams::CheckClaimStream(const XnChar* strType, XnResolution - } - - // check FPS -- if (pDepthStreamData->nFPS != nFPS) -- { -- XN_LOG_WARNING_RETURN(XN_STATUS_DEVICE_BAD_PARAM, XN_MASK_DEVICE_SENSOR, "Depth and IR streams must have the same FPS!"); -- } -+ //if (pDepthStreamData->nFPS != nFPS) -+ //{ -+ // XN_LOG_WARNING_RETURN(XN_STATUS_DEVICE_BAD_PARAM, XN_MASK_DEVICE_SENSOR, "Depth and IR streams must have the same FPS!"); -+ //} - } - } - else if (strcmp(strType, XN_STREAM_TYPE_IMAGE) == 0) -diff --git a/Source/XnDeviceSensorV2/XnHostProtocol.cpp b/Source/XnDeviceSensorV2/XnHostProtocol.cpp -index 6828970..aea43bc 100644 ---- a/Source/XnDeviceSensorV2/XnHostProtocol.cpp -+++ b/Source/XnDeviceSensorV2/XnHostProtocol.cpp -@@ -892,6 +892,11 @@ XnStatus XnHostProtocolGetVersion(XnDevicePrivateData* pDevicePrivateData, XnVer - } - } - -+ int nVid, nPid; -+ sscanf(pDevicePrivateData->DeviceConfig.cpConnectionString, "%x/%x", &nVid, &nPid); -+ -+ pDevicePrivateData->bKinect = nVid == XN_SENSOR_MSK_VENDOR_ID && nPid == XN_SENSOR_MSK_PRODUCT_ID; -+ - xnLogInfo(XN_MASK_SENSOR_PROTOCOL, "Hardware versions: FW=%d.%d.%d (%d) HW=%d Chip=%d Sensor=%d SYS=%d", Version.nMajor, Version.nMinor, Version.nBuild, Version.FWVer, Version.HWVer, Version.ChipVer, Version.SensorVer, Version.nSystemVersion); - - return XN_STATUS_OK; -diff --git a/Source/XnDeviceSensorV2/XnHostProtocol.h b/Source/XnDeviceSensorV2/XnHostProtocol.h -index fafca1c..96ee023 100644 ---- a/Source/XnDeviceSensorV2/XnHostProtocol.h -+++ b/Source/XnDeviceSensorV2/XnHostProtocol.h -@@ -109,7 +109,9 @@ typedef enum - { - XN_HOST_PROTOCOL_ALGORITHM_DEPTH_INFO = 0x00, - XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION = 0x02, -+ XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION_MSK = 0x40, - XN_HOST_PROTOCOL_ALGORITHM_PADDING = 0x03, -+ XN_HOST_PROTOCOL_ALGORITHM_PADDING_MSK = 0x41, - XN_HOST_PROTOCOL_ALGORITHM_BLANKING = 0x06, - XN_HOST_PROTOCOL_ALGORITHM_DEVICE_INFO = 0x07, - XN_HOST_PROTOCOL_ALGORITHM_FREQUENCY = 0x80 -diff --git a/Source/XnDeviceSensorV2/XnSensorDepthStream.cpp b/Source/XnDeviceSensorV2/XnSensorDepthStream.cpp -index 0e9c409..633869c 100644 ---- a/Source/XnDeviceSensorV2/XnSensorDepthStream.cpp -+++ b/Source/XnDeviceSensorV2/XnSensorDepthStream.cpp -@@ -319,6 +319,8 @@ XnStatus XnSensorDepthStream::ConfigureStreamImpl() - nRetVal = m_Helper.GetCmosInfo()->SetCmosConfig(XN_CMOS_TYPE_DEPTH, GetResolution(), GetFPS()); - XN_IS_STATUS_OK(nRetVal); - -+ // Thanks to avin again! :-) -+ XnHostProtocolSetParam(GetHelper()->GetPrivateData(), 0x105, 0); - return XN_STATUS_OK; - } - -@@ -792,7 +794,8 @@ XnStatus XnSensorDepthStream::DecideFirmwareRegistration(XnBool bRegistration, X - { - // old chip (PS1000) does not support registration for VGA - XnBool bHardwareRegistrationSupported = -- m_Helper.GetPrivateData()->ChipInfo.nChipVer != XN_SENSOR_CHIP_VER_PS1000 || nRes == XN_RESOLUTION_QVGA; -+ (m_Helper.GetPrivateData()->ChipInfo.nChipVer != XN_SENSOR_CHIP_VER_PS1000 || nRes == XN_RESOLUTION_QVGA) -+ && !m_Helper.GetPrivateData()->bKinect; - - switch (registrationType) - { -diff --git a/Source/XnDeviceSensorV2/XnSensorDepthStream.h b/Source/XnDeviceSensorV2/XnSensorDepthStream.h -index 32aa364..45d1a50 100644 ---- a/Source/XnDeviceSensorV2/XnSensorDepthStream.h -+++ b/Source/XnDeviceSensorV2/XnSensorDepthStream.h -@@ -36,7 +36,7 @@ - // Defines - //--------------------------------------------------------------------------- - #define XN_DEPTH_STREAM_DEFAULT_INPUT_FORMAT XN_IO_DEPTH_FORMAT_UNCOMPRESSED_11_BIT --#define XN_DEPTH_STREAM_DEFAULT_RESOLUTION XN_RESOLUTION_QVGA -+#define XN_DEPTH_STREAM_DEFAULT_RESOLUTION XN_RESOLUTION_VGA - #define XN_DEPTH_STREAM_DEFAULT_FPS 30 - #define XN_DEPTH_STREAM_DEFAULT_OUTPUT_FORMAT XN_OUTPUT_FORMAT_DEPTH_VALUES - #define XN_DEPTH_STREAM_DEFAULT_REGISTRATION FALSE -diff --git a/Source/XnDeviceSensorV2/XnSensorFirmwareParams.cpp b/Source/XnDeviceSensorV2/XnSensorFirmwareParams.cpp -index 4349d8c..6fee21e 100644 ---- a/Source/XnDeviceSensorV2/XnSensorFirmwareParams.cpp -+++ b/Source/XnDeviceSensorV2/XnSensorFirmwareParams.cpp -@@ -510,10 +510,10 @@ XnStatus XnSensorFirmwareParams::SetImageResolution(XnUInt64 nValue) - case XN_RESOLUTION_VGA: - break; - case XN_RESOLUTION_SXGA: -- if (m_pInfo->nFWVer < XN_SENSOR_FW_VER_5_3) -- { -- XN_LOG_WARNING_RETURN(XN_STATUS_IO_INVALID_STREAM_IMAGE_RESOLUTION, XN_MASK_DEVICE_SENSOR, "Image resolution is not supported by this firmware!"); -- } -+ //if (m_pInfo->nFWVer < XN_SENSOR_FW_VER_5_3) -+ //{ -+ // XN_LOG_WARNING_RETURN(XN_STATUS_IO_INVALID_STREAM_IMAGE_RESOLUTION, XN_MASK_DEVICE_SENSOR, "Image resolution is not supported by this firmware!"); -+ //} - break; - case XN_RESOLUTION_UXGA: - if (m_pInfo->nFWVer < XN_SENSOR_FW_VER_5_1) -diff --git a/Source/XnDeviceSensorV2/XnSensorIRStream.cpp b/Source/XnDeviceSensorV2/XnSensorIRStream.cpp -index 4ede944..6014b7e 100644 ---- a/Source/XnDeviceSensorV2/XnSensorIRStream.cpp -+++ b/Source/XnDeviceSensorV2/XnSensorIRStream.cpp -@@ -87,6 +87,7 @@ XnStatus XnSensorIRStream::Init() - { 0, XN_RESOLUTION_QVGA, 60 }, - { 0, XN_RESOLUTION_VGA, 30 }, - { 0, XN_RESOLUTION_SXGA, 30 }, -+ { 0, XN_RESOLUTION_SXGA, 15 }, - }; - nRetVal = AddSupportedModes(aSupportedModes, sizeof(aSupportedModes)/sizeof(aSupportedModes[0])); - XN_IS_STATUS_OK(nRetVal); -@@ -96,6 +97,7 @@ XnStatus XnSensorIRStream::Init() - XnCmosPreset aSupportedModesSXGA[] = - { - { 0, XN_RESOLUTION_SXGA, 30 }, -+ { 0, XN_RESOLUTION_SXGA, 15 }, - }; - nRetVal = AddSupportedModes(aSupportedModesSXGA, sizeof(aSupportedModesSXGA)/sizeof(aSupportedModesSXGA[0])); - XN_IS_STATUS_OK(nRetVal); -diff --git a/Source/XnDeviceSensorV2/XnSensorImageStream.cpp b/Source/XnDeviceSensorV2/XnSensorImageStream.cpp -index a2c0e90..9ee69c8 100644 ---- a/Source/XnDeviceSensorV2/XnSensorImageStream.cpp -+++ b/Source/XnDeviceSensorV2/XnSensorImageStream.cpp -@@ -39,7 +39,7 @@ - //--------------------------------------------------------------------------- - // XnSensorImageStream class - //--------------------------------------------------------------------------- --XnSensorImageStream::XnSensorImageStream(const XnChar* strDeviceName, const XnChar* StreamName, XnSensorObjects* pObjects, XnUInt32 nBufferCount, XnBool bAllowOtherUsers) : -+XnSensorImageStream::XnSensorImageStream(const XnChar* strDeviceName, const XnChar* StreamName, XnSensorObjects* pObjects, XnUInt32 nBufferCount, XnBool bAllowOtherUsers) : - XnImageStream(StreamName, FALSE), - m_Helper(pObjects), - m_BufferPool(nBufferCount, strDeviceName, StreamName, GetMaxBufferSize(m_Helper.GetFirmwareVersion()), bAllowOtherUsers), -@@ -108,9 +108,9 @@ XnStatus XnSensorImageStream::Init() - m_LowLightCompensation.UpdateSetCallback(SetLowLightCompensationCallback, this); - - // add properties -- XN_VALIDATE_ADD_PROPERTIES(this, &m_InputFormat, &m_AntiFlicker, &m_ImageQuality, -- &m_Brightness, &m_Contrast, &m_Saturation, &m_Sharpness, -- &m_ColorTemperature, &m_BackLightCompensation, &m_Gain, &m_Zoom, -+ XN_VALIDATE_ADD_PROPERTIES(this, &m_InputFormat, &m_AntiFlicker, &m_ImageQuality, -+ &m_Brightness, &m_Contrast, &m_Saturation, &m_Sharpness, -+ &m_ColorTemperature, &m_BackLightCompensation, &m_Gain, &m_Zoom, - &m_Exposure, &m_Pan, &m_Tilt, &m_LowLightCompensation, - &m_SharedBufferName, &m_ActualRead); - -@@ -139,6 +139,9 @@ XnStatus XnSensorImageStream::Init() - XN_IS_STATUS_OK(nRetVal); - - // register supported modes -+ int nVid, nPid; -+ sscanf(m_Helper.GetPrivateData()->DeviceConfig.cpConnectionString, "%x/%x", &nVid, &nPid); -+ - if (m_Helper.GetFirmwareVersion() >= XN_SENSOR_FW_VER_5_4) - { - // ask the firmware -@@ -173,7 +176,7 @@ XnStatus XnSensorImageStream::Init() - if (aSupportedModes[i].nFormat == XN_IMAGE_STREAM_DEFAULT_INPUT_FORMAT) - { - nValidInputFormat = XN_IMAGE_STREAM_DEFAULT_INPUT_FORMAT; -- break; -+ break; - } - } - } -@@ -199,6 +202,55 @@ XnStatus XnSensorImageStream::Init() - nRetVal = AddSupportedModes(aSupportedModes, nCount); - XN_IS_STATUS_OK(nRetVal); - } -+ else if (m_Helper.GetPrivateData()->bKinect) -+ { -+ XnArray supportedModes(30); -+ -+ XN_IS_STATUS_OK(nRetVal); -+ nRetVal = AddSupportedMode(supportedModes, XN_IO_IMAGE_FORMAT_BAYER, XN_RESOLUTION_VGA, 30); -+ XN_IS_STATUS_OK(nRetVal); -+ -+ // Enable uncompressed Bayer -+ nRetVal = AddSupportedMode(supportedModes, XN_IO_IMAGE_FORMAT_UNCOMPRESSED_BAYER, XN_RESOLUTION_SXGA, 15); -+ XN_IS_STATUS_OK(nRetVal); -+ nRetVal = AddSupportedMode(supportedModes, XN_IO_IMAGE_FORMAT_UNCOMPRESSED_BAYER, XN_RESOLUTION_VGA, 30); -+ -+ // high-res -+ if (m_Helper.GetFirmwareVersion() >= XN_SENSOR_FW_VER_5_3) -+ { -+ nRetVal = AddSupportedMode(supportedModes, XN_IO_IMAGE_FORMAT_BAYER, XN_RESOLUTION_SXGA, 30); -+ XN_IS_STATUS_OK(nRetVal); -+ -+ // starting with 5.3.28, YUV is also supported in high-res -+ if (m_Helper.GetPrivateData()->Version.nMajor > 5 || -+ (m_Helper.GetPrivateData()->Version.nMajor == 5 && m_Helper.GetPrivateData()->Version.nMinor > 3) || -+ (m_Helper.GetPrivateData()->Version.nMajor == 5 && m_Helper.GetPrivateData()->Version.nMinor == 3 && m_Helper.GetPrivateData()->Version.nBuild >= 28)) -+ { -+ nRetVal = AddSupportedMode(supportedModes, XN_IO_IMAGE_FORMAT_BAYER, XN_RESOLUTION_SXGA, 30); -+ XN_IS_STATUS_OK(nRetVal); -+ -+ nRetVal = AddSupportedMode(supportedModes, XN_IO_IMAGE_FORMAT_UNCOMPRESSED_BAYER, XN_RESOLUTION_SXGA, 30); -+ XN_IS_STATUS_OK(nRetVal); -+ } -+ } -+ else if (m_Helper.GetFirmwareVersion() >= XN_SENSOR_FW_VER_5_2) -+ { -+ // on 5.2, high-res was UXGA -+ nRetVal = AddSupportedMode(supportedModes, XN_IO_IMAGE_FORMAT_BAYER, XN_RESOLUTION_UXGA, 30); -+ XN_IS_STATUS_OK(nRetVal); -+ } -+ -+ // Add all supported modes to the stream -+ nRetVal = AddSupportedModes(supportedModes.GetData(), supportedModes.GetSize()); -+ XN_IS_STATUS_OK(nRetVal); -+ -+ if (m_InputFormat.GetValue() != XN_IO_IMAGE_FORMAT_BAYER && m_InputFormat.GetValue() != XN_IO_IMAGE_FORMAT_UNCOMPRESSED_BAYER) -+ { -+ // update default input format -+ nRetVal = m_InputFormat.UnsafeUpdateValue(XN_IO_IMAGE_FORMAT_UNCOMPRESSED_BAYER); -+ XN_IS_STATUS_OK(nRetVal); -+ } -+ } - else - { - XnArray supportedModes(30); -@@ -226,7 +278,8 @@ XnStatus XnSensorImageStream::Init() - } - - // starting with FW 5.2, 25 FPS is also supported -- if (m_Helper.GetFirmwareVersion() >= XN_SENSOR_FW_VER_5_2) -+ //Suat: changed to 5_1 since out 5_1_6 works good with 25Hz -+ if (m_Helper.GetFirmwareVersion() >= XN_SENSOR_FW_VER_5_1) - { - nRetVal = AddSupportedMode(supportedModes, XN_IO_IMAGE_FORMAT_YUV422, XN_RESOLUTION_QVGA, 25); - XN_IS_STATUS_OK(nRetVal); -@@ -355,7 +408,7 @@ XnStatus XnSensorImageStream::MapPropertiesToFirmware() - XnStatus XnSensorImageStream::ValidateMode() - { - XnStatus nRetVal = XN_STATUS_OK; -- -+ - // validity checks - XnIOImageFormats nInputFormat = (XnIOImageFormats)m_InputFormat.GetValue(); - XnOutputFormats nOutputFormat = GetOutputFormat(); -@@ -370,7 +423,7 @@ XnStatus XnSensorImageStream::ValidateMode() - nInputFormat != XN_IO_IMAGE_FORMAT_UNCOMPRESSED_YUV422 && - nInputFormat != XN_IO_IMAGE_FORMAT_BAYER) - { -- XN_LOG_WARNING_RETURN(XN_STATUS_DEVICE_BAD_PARAM, XN_MASK_DEVICE_SENSOR, "Input format %d cannot be converted to RGB24!", nInputFormat); -+ //XN_LOG_WARNING_RETURN(XN_STATUS_DEVICE_BAD_PARAM, XN_MASK_DEVICE_SENSOR, "Input format %d cannot be converted to RGB24!", nInputFormat); - } - break; - case XN_OUTPUT_FORMAT_YUV422: -@@ -561,7 +614,7 @@ XnStatus XnSensorImageStream::SetOutputFormat(XnOutputFormats nOutputFormat) - - nRetVal = m_Helper.AfterSettingDataProcessorProperty(); - XN_IS_STATUS_OK(nRetVal); -- -+ - return (XN_STATUS_OK); - } - -@@ -647,10 +700,10 @@ XnStatus XnSensorImageStream::SetInputFormat(XnIOImageFormats nInputFormat) - XnStatus XnSensorImageStream::SetAntiFlicker(XnUInt32 nFrequency) - { - XnStatus nRetVal = XN_STATUS_OK; -- -+ - nRetVal = m_Helper.SimpleSetFirmwareParam(m_AntiFlicker, (XnUInt16)nFrequency); - XN_IS_STATUS_OK(nRetVal); -- -+ - return (XN_STATUS_OK); - } - -@@ -661,7 +714,7 @@ XnStatus XnSensorImageStream::SetImageQuality(XnUInt32 /*nQuality*/) - { - XN_LOG_WARNING_RETURN(XN_STATUS_DEVICE_UNSUPPORTED_PARAMETER, XN_MASK_DEVICE_SENSOR, "Image quality is only supported when input format is JPEG"); - } -- -+ - return (XN_STATUS_OK); - } - -@@ -826,7 +879,7 @@ XnStatus XnSensorImageStream::ReallocTripleFrameBuffer() - - if (IsOpen()) - { -- // before actually replacing buffer, lock the processor (so it will not continue to -+ // before actually replacing buffer, lock the processor (so it will not continue to - // use old buffer) - nRetVal = m_Helper.GetFirmware()->GetStreams()->LockStreamProcessor(GetType(), this); - XN_IS_STATUS_OK(nRetVal); -diff --git a/Source/XnDeviceSensorV2/XnSensorImageStream.h b/Source/XnDeviceSensorV2/XnSensorImageStream.h -index a975820..fea1f51 100644 ---- a/Source/XnDeviceSensorV2/XnSensorImageStream.h -+++ b/Source/XnDeviceSensorV2/XnSensorImageStream.h -@@ -33,7 +33,7 @@ - // Defines - //--------------------------------------------------------------------------- - #define XN_IMAGE_STREAM_DEFAULT_FPS 30 --#define XN_IMAGE_STREAM_DEFAULT_RESOLUTION XN_RESOLUTION_QVGA -+#define XN_IMAGE_STREAM_DEFAULT_RESOLUTION XN_RESOLUTION_VGA - #define XN_IMAGE_STREAM_DEFAULT_INPUT_FORMAT XN_IO_IMAGE_FORMAT_UNCOMPRESSED_YUV422 - #define XN_IMAGE_STREAM_DEFAULT_OUTPUT_FORMAT XN_OUTPUT_FORMAT_RGB24 - #define XN_IMAGE_STREAM_DEFAULT_FLICKER 0 -@@ -169,4 +169,4 @@ private: - XnActualIntProperty m_ActualRead; - }; - --#endif //__XN_SENSOR_IMAGE_STREAM_H__ -\ No newline at end of file -+#endif //__XN_SENSOR_IMAGE_STREAM_H__ diff --git a/3rdparty/android/patches/sensor/magic-handling.patch b/3rdparty/android/patches/sensor/magic-handling.patch deleted file mode 100644 index 7db6916305c..00000000000 --- a/3rdparty/android/patches/sensor/magic-handling.patch +++ /dev/null @@ -1,58 +0,0 @@ -Fixed a couple of corner cases related to magic handling in XnDeviceSensorProtocol. - -From: Roman Donchenko - - ---- - Source/XnDeviceSensorV2/XnDeviceSensorProtocol.cpp | 22 +++++++++++++------- - 1 file changed, 14 insertions(+), 8 deletions(-) - -diff --git a/Source/XnDeviceSensorV2/XnDeviceSensorProtocol.cpp b/Source/XnDeviceSensorV2/XnDeviceSensorProtocol.cpp -index c6ea7bb..8bfb9ac 100644 ---- a/Source/XnDeviceSensorV2/XnDeviceSensorProtocol.cpp -+++ b/Source/XnDeviceSensorV2/XnDeviceSensorProtocol.cpp -@@ -101,30 +101,36 @@ XnBool XN_CALLBACK_TYPE XnDeviceSensorProtocolUsbEpCb(XnUChar* pBuffer, XnUInt32 - // move to next state - pCurrState->CurrHeader.nMagic = nMagic; - pCurrState->State = XN_PACKET_HEADER; -- pCurrState->nMissingBytesInState = sizeof(XnSensorProtocolResponseHeader); -+ pCurrState->nMissingBytesInState = sizeof(XnSensorProtocolResponseHeader) - 2; - break; - } - -- while (pBuffer < pBufEnd) -+ pCurrState->nMissingBytesInState = sizeof(XnUInt16); -+ -+ while (pBuffer < pBufEnd - 1) - { - if (nMagic == *(XnUInt16*)(pBuffer)) - { - pCurrState->CurrHeader.nMagic = nMagic; - pCurrState->State = XN_PACKET_HEADER; -- pCurrState->nMissingBytesInState = sizeof(XnSensorProtocolResponseHeader); -+ pCurrState->nMissingBytesInState = sizeof(XnSensorProtocolResponseHeader) - 2; -+ pBuffer += 2; - break; - } - else - pBuffer++; - } - -- if (pBuffer == pBufEnd && // magic wasn't found -- pBuffer[-1] == ((XnUInt8*)&nMagic)[0]) // last byte in buffer is first in magic -+ if (pBuffer == pBufEnd - 1) // magic wasn't found - { -- // mark that we found first one -- pCurrState->nMissingBytesInState--; -- } -+ if (pBuffer[0] == ((XnUInt8*)&nMagic)[0]) // last byte in buffer is first in magic -+ { -+ // mark that we found first one -+ pCurrState->nMissingBytesInState--; -+ } - -+ pBuffer++; -+ } - break; - - case XN_PACKET_HEADER: diff --git a/3rdparty/android/patches/sensor/rules.patch b/3rdparty/android/patches/sensor/rules.patch deleted file mode 100644 index adbdb63fdad..00000000000 --- a/3rdparty/android/patches/sensor/rules.patch +++ /dev/null @@ -1,35 +0,0 @@ -Added Kinect rules and fixed the owner in the PrimeSense rules. - -From: Roman Donchenko - -The Kinect rules are from . ---- - Platform/Linux/Install/55-primesense-usb.rules | 19 +++++++++++++------ - 1 file changed, 13 insertions(+), 6 deletions(-) - -diff --git a/Platform/Linux/Install/55-primesense-usb.rules b/Platform/Linux/Install/55-primesense-usb.rules -index 6294f40..621fe3b 100644 ---- a/Platform/Linux/Install/55-primesense-usb.rules -+++ b/Platform/Linux/Install/55-primesense-usb.rules -@@ -1,8 +1,15 @@ - # make primesense device mount with writing permissions (default is read only for unknown devices) --SYSFS{idProduct}=="0200",SYSFS{idVendor}=="1d27",MODE="666",OWNER="xxx",GROUP="users" --SYSFS{idProduct}=="0300",SYSFS{idVendor}=="1d27",MODE="666",OWNER="xxx",GROUP="users" --SYSFS{idProduct}=="0400",SYSFS{idVendor}=="1d27",MODE="666",OWNER="xxx",GROUP="users" --SYSFS{idProduct}=="0500",SYSFS{idVendor}=="1d27",MODE="666",OWNER="xxx",GROUP="users" --SYSFS{idProduct}=="0600",SYSFS{idVendor}=="1d27",MODE="666",OWNER="xxx",GROUP="users" --SYSFS{idProduct}=="0601",SYSFS{idVendor}=="1d27",MODE="666",OWNER="xxx",GROUP="users" -+SYSFS{idProduct}=="0200",SYSFS{idVendor}=="1d27",MODE="666",OWNER="root",GROUP="users" -+SYSFS{idProduct}=="0300",SYSFS{idVendor}=="1d27",MODE="666",OWNER="root",GROUP="users" -+SYSFS{idProduct}=="0400",SYSFS{idVendor}=="1d27",MODE="666",OWNER="root",GROUP="users" -+SYSFS{idProduct}=="0500",SYSFS{idVendor}=="1d27",MODE="666",OWNER="root",GROUP="users" -+SYSFS{idProduct}=="0600",SYSFS{idVendor}=="1d27",MODE="666",OWNER="root",GROUP="users" -+SYSFS{idProduct}=="0601",SYSFS{idVendor}=="1d27",MODE="666",OWNER="root",GROUP="users" - -+#--avin mod-- -+# Kinect -+SUBSYSTEM=="usb", ATTR{idProduct}=="02ae", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video" -+SUBSYSTEM=="usb", ATTR{idProduct}=="02ad", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio" -+SUBSYSTEM=="usb", ATTR{idProduct}=="02b0", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video" -+SUBSYSTEM=="usb", ATTR{idProduct}=="02be", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="audio" -+SUBSYSTEM=="usb", ATTR{idProduct}=="02bf", ATTR{idVendor}=="045e", MODE:="0666", OWNER:="root", GROUP:="video" diff --git a/3rdparty/android/patches/sensor/series b/3rdparty/android/patches/sensor/series deleted file mode 100644 index de604454bfa..00000000000 --- a/3rdparty/android/patches/sensor/series +++ /dev/null @@ -1,8 +0,0 @@ -# This series applies on GIT commit 9864d868fa54724c00e147ac60f3fc79ee97450e -kinect.patch -file-log-disable.patch -dynamic-linker.patch -magic-handling.patch -bayer-buffer.patch -rules.patch -build-flags.patch diff --git a/3rdparty/android/patches/tbb.patch b/3rdparty/android/patches/tbb.patch deleted file mode 100644 index 96e317bd851..00000000000 --- a/3rdparty/android/patches/tbb.patch +++ /dev/null @@ -1,957 +0,0 @@ -diff --git a/build/Makefile.tbb b/build/Makefile.tbb -index fded71b..0b32aa3 100644 ---- a/build/Makefile.tbb -+++ b/build/Makefile.tbb -@@ -90,6 +90,10 @@ TBB_CPLUS.OBJ = concurrent_hash_map.$(OBJ) \ - tbb_statistics.$(OBJ) \ - tbb_main.$(OBJ) - -+ifneq ($(ANDROID),) -+TBB_CPLUS.OBJ += cpu-features.$(OBJ) -+endif -+ - # OLD/Legacy object files for backward binary compatibility - ifeq (,$(findstring $(DEFINE_KEY)TBB_NO_LEGACY,$(CPLUS_FLAGS))) - TBB_CPLUS_OLD.OBJ = \ -diff --git a/build/android.gcc.inc b/build/android.gcc.inc -new file mode 100644 -index 0000000..ecaa68a ---- /dev/null -+++ b/build/android.gcc.inc -@@ -0,0 +1,91 @@ -+# Copyright 2005-2012 Intel Corporation. All Rights Reserved. -+# -+# This file is part of Threading Building Blocks. -+# -+# Threading Building Blocks is free software; you can redistribute it -+# and/or modify it under the terms of the GNU General Public License -+# version 2 as published by the Free Software Foundation. -+# -+# Threading Building Blocks 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 Threading Building Blocks; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+# -+# As a special exception, you may use this file as part of a free software -+# library without restriction. Specifically, if other files instantiate -+# templates or use macros or inline functions from this file, or you compile -+# this file and link it with other files to produce an executable, this -+# file does not by itself cause the resulting executable to be covered by -+# the GNU General Public License. This exception does not however -+# invalidate any other reasons why the executable file might be covered by -+# the GNU General Public License. -+ -+COMPILE_ONLY = -c -MMD -+PREPROC_ONLY = -E -x c++ -+INCLUDE_KEY = -I -+DEFINE_KEY = -D -+OUTPUT_KEY = -o # -+OUTPUTOBJ_KEY = -o # -+PIC_KEY = -fPIC -+WARNING_AS_ERROR_KEY = -Werror -+WARNING_KEY = -Wall -+TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor $(if $(findstring cc4., $(runtime)),-Wextra) -+ -+WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor -+DYLIB_KEY = -shared -+EXPORT_KEY = -Wl,--version-script, -+LIBDL = -ldl -+ -+TBB_NOSTRICT = 1 -+ -+CPLUS = arm-linux-androideabi-g++ -+CONLY = arm-linux-androideabi-gcc -+LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY) -+LINK_FLAGS = -Wl,-rpath-link=. -+C_FLAGS = $(CPLUS_FLAGS) -+ -+ITT_NOTIFY = -DDO_ITT_NOTIFY -+ -+ifeq ($(cfg), release) -+ CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD -+endif -+ifeq ($(cfg), debug) -+ CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD -+endif -+ -+ifneq (00,$(lambdas)$(cpp0x)) -+ CXX_ONLY_FLAGS += $(CPP11_FLAGS) -+endif -+ -+TBB_ASM.OBJ= -+MALLOC_ASM.OBJ= -+ -+CPLUS_FLAGS += -march=armv7-a -mfloat-abi=softfp -+LIB_LINK_FLAGS += -Wl,--fix-cortex-a8 -Wl,--no-undefined -+ -+#------------------------------------------------------------------------------ -+# Setting assembler data. -+#------------------------------------------------------------------------------ -+ASM = arm-linux-androideabi-as -+ifeq ($(cfg),debug) -+ ASM_FLAGS += -g -+endif -+ -+ASSEMBLY_SOURCE=$(arch)-gas -+#------------------------------------------------------------------------------ -+# End of setting assembler data. -+#------------------------------------------------------------------------------ -+ -+#------------------------------------------------------------------------------ -+# Setting tbbmalloc data. -+#------------------------------------------------------------------------------ -+ -+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions -fno-schedule-insns2 -+ -+#------------------------------------------------------------------------------ -+# End of setting tbbmalloc data. -+#------------------------------------------------------------------------------ -diff --git a/build/android.inc b/build/android.inc -new file mode 100644 -index 0000000..17b92c7 ---- /dev/null -+++ b/build/android.inc -@@ -0,0 +1,80 @@ -+# Copyright 2005-2012 Intel Corporation. All Rights Reserved. -+# -+# This file is part of Threading Building Blocks. -+# -+# Threading Building Blocks is free software; you can redistribute it -+# and/or modify it under the terms of the GNU General Public License -+# version 2 as published by the Free Software Foundation. -+# -+# Threading Building Blocks 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 Threading Building Blocks; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+# -+# As a special exception, you may use this file as part of a free software -+# library without restriction. Specifically, if other files instantiate -+# templates or use macros or inline functions from this file, or you compile -+# this file and link it with other files to produce an executable, this -+# file does not by itself cause the resulting executable to be covered by -+# the GNU General Public License. This exception does not however -+# invalidate any other reasons why the executable file might be covered by -+# the GNU General Public License. -+ -+####### Detections and Commands ############################################### -+ -+export arch:=arm -+ -+export runtime:=whatever -+native_compiler := gcc -+export compiler ?= gcc -+ -+CMD=sh -c -+CWD=$(shell pwd) -+CP=cp -+RM?=rm -f -+RD?=rmdir -+MD?=mkdir -p -+NUL= /dev/null -+SLASH=/ -+MAKE_VERSIONS=sh $(tbb_root)/build/version_info_linux.sh $(CPLUS) $(CPLUS_FLAGS) $(INCLUDES) >version_string.ver -+MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh -+ -+####### Build settings ######################################################## -+ -+OBJ = o -+DLL = so -+LIBEXT = so -+ -+def_prefix = lin32 -+ -+TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst -+TBB.DEF = $(TBB.LST:.lst=.def) -+ -+TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) -+TBB.LIB = $(TBB.DLL) -+TBB_NO_VERSION.DLL= -+LINK_TBB.LIB = $(TBB.DLL) -+ -+MALLOC_NO_VERSION.DLL = -+MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def -+MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL) -+MALLOC.LIB = $(MALLOC.DLL) -+LINK_MALLOC.LIB = $(MALLOC.DLL) -+ -+MALLOCPROXY_NO_VERSION.DLL = -+MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def -+MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL) -+MALLOCPROXY.LIB = $(MALLOCPROXY.DLL) -+ -+RML_NO_VERSION.DLL = libirml$(DEBUG_SUFFIX).$(DLL) -+RML.DEF = $(RML_SERVER_ROOT)/lin-rml-export.def -+RML.DLL = $(RML_NO_VERSION.DLL).1 -+RML.LIB = $(RML_NO_VERSION.DLL) -+ -+TBB_NOSTRICT=1 -+ -+TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh -diff --git a/build/common.inc b/build/common.inc -index e14ddba..7fbf60d 100644 ---- a/build/common.inc -+++ b/build/common.inc -@@ -45,6 +45,10 @@ ifndef tbb_os - export tbb_os=macos - endif - -+ ifneq ($(ANDROID),) -+ export tbb_os=android -+ endif -+ - endif # !tbb_os - - ifeq ($(tbb_cpf),1) -diff --git a/src/tbb/arena.h b/src/tbb/arena.h -index c493df1..7a40131 100644 ---- a/src/tbb/arena.h -+++ b/src/tbb/arena.h -@@ -35,6 +35,11 @@ - #include "tbb/tbb_machine.h" - - #if !__TBB_CPU_CTL_ENV_PRESENT -+ -+#ifdef __ANDROID__ -+#define _GLIBCXX_HAVE_FENV_H 1 -+#include -+#endif - #include - typedef fenv_t __TBB_cpu_ctl_env_t; - #endif /* !__TBB_CPU_CTL_ENV_PRESENT */ -diff --git a/src/tbb/cpu-features.c b/src/tbb/cpu-features.c -new file mode 100644 -index 0000000..70f5545 ---- /dev/null -+++ b/src/tbb/cpu-features.c -@@ -0,0 +1,555 @@ -+/* -+ * Copyright (C) 2010 The Android Open Source Project -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * * Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * * Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in -+ * the documentation and/or other materials provided with the -+ * distribution. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ */ -+ -+/* ChangeLog for this library: -+ * -+ * NDK r7c: Fix CPU count computation. The old method only reported the -+ * number of _active_ CPUs when the library was initialized, -+ * which could be less than the real total. -+ * -+ * NDK r5: Handle buggy kernels which report a CPU Architecture number of 7 -+ * for an ARMv6 CPU (see below). -+ * -+ * Handle kernels that only report 'neon', and not 'vfpv3' -+ * (VFPv3 is mandated by the ARM architecture is Neon is implemented) -+ * -+ * Handle kernels that only report 'vfpv3d16', and not 'vfpv3' -+ * -+ * Fix x86 compilation. Report ANDROID_CPU_FAMILY_X86 in -+ * android_getCpuFamily(). -+ * -+ * NDK r4: Initial release -+ */ -+#include -+#ifdef __arm__ -+#include -+#endif -+#include -+#include "cpu-features.h" -+#include -+#include -+#include -+#include -+ -+static pthread_once_t g_once; -+static AndroidCpuFamily g_cpuFamily; -+static uint64_t g_cpuFeatures; -+static int g_cpuCount; -+ -+static const int android_cpufeatures_debug = 0; -+ -+#ifdef __arm__ -+# define DEFAULT_CPU_FAMILY ANDROID_CPU_FAMILY_ARM -+#elif defined __i386__ -+# define DEFAULT_CPU_FAMILY ANDROID_CPU_FAMILY_X86 -+#else -+# define DEFAULT_CPU_FAMILY ANDROID_CPU_FAMILY_UNKNOWN -+#endif -+ -+#define D(...) \ -+ do { \ -+ if (android_cpufeatures_debug) { \ -+ printf(__VA_ARGS__); fflush(stdout); \ -+ } \ -+ } while (0) -+ -+#ifdef __i386__ -+static __inline__ void x86_cpuid(int func, int values[4]) -+{ -+ int a, b, c, d; -+ /* We need to preserve ebx since we're compiling PIC code */ -+ /* this means we can't use "=b" for the second output register */ -+ __asm__ __volatile__ ( \ -+ "push %%ebx\n" -+ "cpuid\n" \ -+ "mov %1, %%ebx\n" -+ "pop %%ebx\n" -+ : "=a" (a), "=r" (b), "=c" (c), "=d" (d) \ -+ : "a" (func) \ -+ ); -+ values[0] = a; -+ values[1] = b; -+ values[2] = c; -+ values[3] = d; -+} -+#endif -+ -+/* Read the content of /proc/cpuinfo into a user-provided buffer. -+ * Return the length of the data, or -1 on error. Does *not* -+ * zero-terminate the content. Will not read more -+ * than 'buffsize' bytes. -+ */ -+static int -+read_file(const char* pathname, char* buffer, size_t buffsize) -+{ -+ int fd, len; -+ -+ fd = open(pathname, O_RDONLY); -+ if (fd < 0) -+ return -1; -+ -+ do { -+ len = read(fd, buffer, buffsize); -+ } while (len < 0 && errno == EINTR); -+ -+ close(fd); -+ -+ return len; -+} -+ -+/* Extract the content of a the first occurence of a given field in -+ * the content of /proc/cpuinfo and return it as a heap-allocated -+ * string that must be freed by the caller. -+ * -+ * Return NULL if not found -+ */ -+static char* -+extract_cpuinfo_field(char* buffer, int buflen, const char* field) -+{ -+ int fieldlen = strlen(field); -+ char* bufend = buffer + buflen; -+ char* result = NULL; -+ int len, ignore; -+ const char *p, *q; -+ -+ /* Look for first field occurence, and ensures it starts the line. -+ */ -+ p = buffer; -+ bufend = buffer + buflen; -+ for (;;) { -+ p = memmem(p, bufend-p, field, fieldlen); -+ if (p == NULL) -+ goto EXIT; -+ -+ if (p == buffer || p[-1] == '\n') -+ break; -+ -+ p += fieldlen; -+ } -+ -+ /* Skip to the first column followed by a space */ -+ p += fieldlen; -+ p = memchr(p, ':', bufend-p); -+ if (p == NULL || p[1] != ' ') -+ goto EXIT; -+ -+ /* Find the end of the line */ -+ p += 2; -+ q = memchr(p, '\n', bufend-p); -+ if (q == NULL) -+ q = bufend; -+ -+ /* Copy the line into a heap-allocated buffer */ -+ len = q-p; -+ result = malloc(len+1); -+ if (result == NULL) -+ goto EXIT; -+ -+ memcpy(result, p, len); -+ result[len] = '\0'; -+ -+EXIT: -+ return result; -+} -+ -+/* Like strlen(), but for constant string literals */ -+#define STRLEN_CONST(x) ((sizeof(x)-1) -+ -+ -+/* Checks that a space-separated list of items contains one given 'item'. -+ * Returns 1 if found, 0 otherwise. -+ */ -+static int -+has_list_item(const char* list, const char* item) -+{ -+ const char* p = list; -+ int itemlen = strlen(item); -+ -+ if (list == NULL) -+ return 0; -+ -+ while (*p) { -+ const char* q; -+ -+ /* skip spaces */ -+ while (*p == ' ' || *p == '\t') -+ p++; -+ -+ /* find end of current list item */ -+ q = p; -+ while (*q && *q != ' ' && *q != '\t') -+ q++; -+ -+ if (itemlen == q-p && !memcmp(p, item, itemlen)) -+ return 1; -+ -+ /* skip to next item */ -+ p = q; -+ } -+ return 0; -+} -+ -+/* Parse an decimal integer starting from 'input', but not going further -+ * than 'limit'. Return the value into '*result'. -+ * -+ * NOTE: Does not skip over leading spaces, or deal with sign characters. -+ * NOTE: Ignores overflows. -+ * -+ * The function returns NULL in case of error (bad format), or the new -+ * position after the decimal number in case of success (which will always -+ * be <= 'limit'). -+ */ -+static const char* -+parse_decimal(const char* input, const char* limit, int* result) -+{ -+ const char* p = input; -+ int val = 0; -+ while (p < limit) { -+ int d = (*p - '0'); -+ if ((unsigned)d >= 10U) -+ break; -+ val = val*10 + d; -+ p++; -+ } -+ if (p == input) -+ return NULL; -+ -+ *result = val; -+ return p; -+} -+ -+/* This small data type is used to represent a CPU list / mask, as read -+ * from sysfs on Linux. See http://www.kernel.org/doc/Documentation/cputopology.txt -+ * -+ * For now, we don't expect more than 32 cores on mobile devices, so keep -+ * everything simple. -+ */ -+typedef struct { -+ uint32_t mask; -+} CpuList; -+ -+static __inline__ void -+cpulist_init(CpuList* list) { -+ list->mask = 0; -+} -+ -+static __inline__ void -+cpulist_and(CpuList* list1, CpuList* list2) { -+ list1->mask &= list2->mask; -+} -+ -+static __inline__ void -+cpulist_set(CpuList* list, int index) { -+ if ((unsigned)index < 32) { -+ list->mask |= (uint32_t)(1U << index); -+ } -+} -+ -+static __inline__ int -+cpulist_count(CpuList* list) { -+ return __builtin_popcount(list->mask); -+} -+ -+/* Parse a textual list of cpus and store the result inside a CpuList object. -+ * Input format is the following: -+ * - comma-separated list of items (no spaces) -+ * - each item is either a single decimal number (cpu index), or a range made -+ * of two numbers separated by a single dash (-). Ranges are inclusive. -+ * -+ * Examples: 0 -+ * 2,4-127,128-143 -+ * 0-1 -+ */ -+static void -+cpulist_parse(CpuList* list, const char* line, int line_len) -+{ -+ const char* p = line; -+ const char* end = p + line_len; -+ const char* q; -+ -+ /* NOTE: the input line coming from sysfs typically contains a -+ * trailing newline, so take care of it in the code below -+ */ -+ while (p < end && *p != '\n') -+ { -+ int val, start_value, end_value; -+ -+ /* Find the end of current item, and put it into 'q' */ -+ q = memchr(p, ',', end-p); -+ if (q == NULL) { -+ q = end; -+ } -+ -+ /* Get first value */ -+ p = parse_decimal(p, q, &start_value); -+ if (p == NULL) -+ goto BAD_FORMAT; -+ -+ end_value = start_value; -+ -+ /* If we're not at the end of the item, expect a dash and -+ * and integer; extract end value. -+ */ -+ if (p < q && *p == '-') { -+ p = parse_decimal(p+1, q, &end_value); -+ if (p == NULL) -+ goto BAD_FORMAT; -+ } -+ -+ /* Set bits CPU list bits */ -+ for (val = start_value; val <= end_value; val++) { -+ cpulist_set(list, val); -+ } -+ -+ /* Jump to next item */ -+ p = q; -+ if (p < end) -+ p++; -+ } -+ -+BAD_FORMAT: -+ ; -+} -+ -+/* Read a CPU list from one sysfs file */ -+static void -+cpulist_read_from(CpuList* list, const char* filename) -+{ -+ char file[64]; -+ int filelen; -+ -+ cpulist_init(list); -+ -+ filelen = read_file(filename, file, sizeof file); -+ if (filelen < 0) { -+ D("Could not read %s: %s\n", filename, strerror(errno)); -+ return; -+ } -+ -+ cpulist_parse(list, file, filelen); -+} -+ -+/* Return the number of cpus present on a given device. -+ * -+ * To handle all weird kernel configurations, we need to compute the -+ * intersection of the 'present' and 'possible' CPU lists and count -+ * the result. -+ */ -+static int -+get_cpu_count(void) -+{ -+ CpuList cpus_present[1]; -+ CpuList cpus_possible[1]; -+ -+ cpulist_read_from(cpus_present, "/sys/devices/system/cpu/present"); -+ cpulist_read_from(cpus_possible, "/sys/devices/system/cpu/possible"); -+ -+ /* Compute the intersection of both sets to get the actual number of -+ * CPU cores that can be used on this device by the kernel. -+ */ -+ cpulist_and(cpus_present, cpus_possible); -+ -+ return cpulist_count(cpus_present); -+} -+ -+static void -+android_cpuInit(void) -+{ -+ char cpuinfo[4096]; -+ int cpuinfo_len; -+ -+ g_cpuFamily = DEFAULT_CPU_FAMILY; -+ g_cpuFeatures = 0; -+ g_cpuCount = 1; -+ -+ cpuinfo_len = read_file("/proc/cpuinfo", cpuinfo, sizeof cpuinfo); -+ D("cpuinfo_len is (%d):\n%.*s\n", cpuinfo_len, -+ cpuinfo_len >= 0 ? cpuinfo_len : 0, cpuinfo); -+ -+ if (cpuinfo_len < 0) /* should not happen */ { -+ return; -+ } -+ -+ /* Count the CPU cores, the value may be 0 for single-core CPUs */ -+ g_cpuCount = get_cpu_count(); -+ if (g_cpuCount == 0) { -+ g_cpuCount = 1; -+ } -+ -+ D("found cpuCount = %d\n", g_cpuCount); -+ -+#ifdef __ARM_ARCH__ -+ { -+ char* features = NULL; -+ char* architecture = NULL; -+ -+ /* Extract architecture from the "CPU Architecture" field. -+ * The list is well-known, unlike the the output of -+ * the 'Processor' field which can vary greatly. -+ * -+ * See the definition of the 'proc_arch' array in -+ * $KERNEL/arch/arm/kernel/setup.c and the 'c_show' function in -+ * same file. -+ */ -+ char* cpuArch = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "CPU architecture"); -+ -+ if (cpuArch != NULL) { -+ char* end; -+ long archNumber; -+ int hasARMv7 = 0; -+ -+ D("found cpuArch = '%s'\n", cpuArch); -+ -+ /* read the initial decimal number, ignore the rest */ -+ archNumber = strtol(cpuArch, &end, 10); -+ -+ /* Here we assume that ARMv8 will be upwards compatible with v7 -+ * in the future. Unfortunately, there is no 'Features' field to -+ * indicate that Thumb-2 is supported. -+ */ -+ if (end > cpuArch && archNumber >= 7) { -+ hasARMv7 = 1; -+ } -+ -+ /* Unfortunately, it seems that certain ARMv6-based CPUs -+ * report an incorrect architecture number of 7! -+ * -+ * See http://code.google.com/p/android/issues/detail?id=10812 -+ * -+ * We try to correct this by looking at the 'elf_format' -+ * field reported by the 'Processor' field, which is of the -+ * form of "(v7l)" for an ARMv7-based CPU, and "(v6l)" for -+ * an ARMv6-one. -+ */ -+ if (hasARMv7) { -+ char* cpuProc = extract_cpuinfo_field(cpuinfo, cpuinfo_len, -+ "Processor"); -+ if (cpuProc != NULL) { -+ D("found cpuProc = '%s'\n", cpuProc); -+ if (has_list_item(cpuProc, "(v6l)")) { -+ D("CPU processor and architecture mismatch!!\n"); -+ hasARMv7 = 0; -+ } -+ free(cpuProc); -+ } -+ } -+ -+ if (hasARMv7) { -+ g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_ARMv7; -+ } -+ -+ /* The LDREX / STREX instructions are available from ARMv6 */ -+ if (archNumber >= 6) { -+ g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_LDREX_STREX; -+ } -+ -+ free(cpuArch); -+ } -+ -+ /* Extract the list of CPU features from 'Features' field */ -+ char* cpuFeatures = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "Features"); -+ -+ if (cpuFeatures != NULL) { -+ -+ D("found cpuFeatures = '%s'\n", cpuFeatures); -+ -+ if (has_list_item(cpuFeatures, "vfpv3")) -+ g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3; -+ -+ else if (has_list_item(cpuFeatures, "vfpv3d16")) -+ g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3; -+ -+ if (has_list_item(cpuFeatures, "neon")) { -+ /* Note: Certain kernels only report neon but not vfpv3 -+ * in their features list. However, ARM mandates -+ * that if Neon is implemented, so must be VFPv3 -+ * so always set the flag. -+ */ -+ g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_NEON | -+ ANDROID_CPU_ARM_FEATURE_VFPv3; -+ } -+ free(cpuFeatures); -+ } -+ } -+#endif /* __ARM_ARCH__ */ -+ -+#ifdef __i386__ -+ g_cpuFamily = ANDROID_CPU_FAMILY_X86; -+ -+ int regs[4]; -+ -+/* According to http://en.wikipedia.org/wiki/CPUID */ -+#define VENDOR_INTEL_b 0x756e6547 -+#define VENDOR_INTEL_c 0x6c65746e -+#define VENDOR_INTEL_d 0x49656e69 -+ -+ x86_cpuid(0, regs); -+ int vendorIsIntel = (regs[1] == VENDOR_INTEL_b && -+ regs[2] == VENDOR_INTEL_c && -+ regs[3] == VENDOR_INTEL_d); -+ -+ x86_cpuid(1, regs); -+ if ((regs[2] & (1 << 9)) != 0) { -+ g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_SSSE3; -+ } -+ if ((regs[2] & (1 << 23)) != 0) { -+ g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_POPCNT; -+ } -+ if (vendorIsIntel && (regs[2] & (1 << 22)) != 0) { -+ g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_MOVBE; -+ } -+#endif -+ -+#ifdef _MIPS_ARCH -+ g_cpuFamily = ANDROID_CPU_FAMILY_MIPS; -+#endif /* _MIPS_ARCH */ -+} -+ -+ -+AndroidCpuFamily -+android_getCpuFamily(void) -+{ -+ pthread_once(&g_once, android_cpuInit); -+ return g_cpuFamily; -+} -+ -+ -+uint64_t -+android_getCpuFeatures(void) -+{ -+ pthread_once(&g_once, android_cpuInit); -+ return g_cpuFeatures; -+} -+ -+ -+int -+android_getCpuCount(void) -+{ -+ pthread_once(&g_once, android_cpuInit); -+ return g_cpuCount; -+} -diff --git a/src/tbb/cpu-features.h b/src/tbb/cpu-features.h -new file mode 100644 -index 0000000..e4026e2 ---- /dev/null -+++ b/src/tbb/cpu-features.h -@@ -0,0 +1,69 @@ -+/* -+ * Copyright (C) 2010 The Android Open Source Project -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * * Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * * Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in -+ * the documentation and/or other materials provided with the -+ * distribution. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ */ -+#ifndef CPU_FEATURES_H -+#define CPU_FEATURES_H -+ -+#include -+#include -+ -+__BEGIN_DECLS -+ -+typedef enum { -+ ANDROID_CPU_FAMILY_UNKNOWN = 0, -+ ANDROID_CPU_FAMILY_ARM, -+ ANDROID_CPU_FAMILY_X86, -+ ANDROID_CPU_FAMILY_MIPS, -+ -+ ANDROID_CPU_FAMILY_MAX /* do not remove */ -+ -+} AndroidCpuFamily; -+ -+/* Return family of the device's CPU */ -+extern AndroidCpuFamily android_getCpuFamily(void); -+ -+enum { -+ ANDROID_CPU_ARM_FEATURE_ARMv7 = (1 << 0), -+ ANDROID_CPU_ARM_FEATURE_VFPv3 = (1 << 1), -+ ANDROID_CPU_ARM_FEATURE_NEON = (1 << 2), -+ ANDROID_CPU_ARM_FEATURE_LDREX_STREX = (1 << 3), -+}; -+ -+enum { -+ ANDROID_CPU_X86_FEATURE_SSSE3 = (1 << 0), -+ ANDROID_CPU_X86_FEATURE_POPCNT = (1 << 1), -+ ANDROID_CPU_X86_FEATURE_MOVBE = (1 << 2), -+}; -+ -+extern uint64_t android_getCpuFeatures(void); -+ -+/* Return the number of CPU cores detected on this device. */ -+extern int android_getCpuCount(void); -+ -+__END_DECLS -+ -+#endif /* CPU_FEATURES_H */ -diff --git a/src/tbb/tbb_misc.h b/src/tbb/tbb_misc.h -index 9af65f4..fbcc41a 100644 ---- a/src/tbb/tbb_misc.h -+++ b/src/tbb/tbb_misc.h -@@ -215,7 +215,7 @@ inline void run_initializer( bool (*f)(), atomic& state ) { - public: - void protect_affinity_mask() {} - }; --#elif __linux__ || __FreeBSD_version >= 701000 -+#elif (__linux__ || __FreeBSD_version >= 701000) && !defined(__ANDROID__) - #if __linux__ - typedef cpu_set_t basic_mask_t; - #elif __FreeBSD_version >= 701000 -diff --git a/src/tbb/tbb_misc_ex.cpp b/src/tbb/tbb_misc_ex.cpp -index e7e3b06..a5dd211 100644 ---- a/src/tbb/tbb_misc_ex.cpp -+++ b/src/tbb/tbb_misc_ex.cpp -@@ -31,6 +31,10 @@ - - #include "tbb_misc.h" - -+#ifdef __ANDROID__ -+#include "cpu-features.h" -+#endif -+ - #if !defined(__TBB_HardwareConcurrency) - - #include "dynamic_link.h" -@@ -59,7 +63,7 @@ - namespace tbb { - namespace internal { - --#if __linux__ || __FreeBSD_version >= 701000 -+#if (__linux__ || __FreeBSD_version >= 701000) && !defined(__ANDROID__) - - static void set_affinity_mask( size_t maskSize, const basic_mask_t* threadMask ) { - #if __linux__ -@@ -183,6 +187,12 @@ int AvailableHwConcurrency() { - return theNumProcs; - } - -+#elif defined(__ANDROID__) -+ -+int AvailableHwConcurrency() { -+ return android_getCpuCount(); -+} -+ - #elif defined(_SC_NPROCESSORS_ONLN) - - int AvailableHwConcurrency() { -diff --git a/src/tbb/tools_api/ittnotify.h b/src/tbb/tools_api/ittnotify.h -index 1a8388d..e9e5329 100644 ---- a/src/tbb/tools_api/ittnotify.h -+++ b/src/tbb/tools_api/ittnotify.h -@@ -152,8 +152,8 @@ The same ID may not be reused for different instances, unless a previous - # if ITT_PLATFORM==ITT_PLATFORM_WIN - # define CDECL __cdecl - # else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ --# if defined _M_X64 || defined _M_AMD64 || defined __x86_64__ --# define CDECL /* not actual on x86_64 platform */ -+# if defined _M_X64 || defined _M_AMD64 || defined __x86_64__ || defined __ANDROID__ -+# define CDECL /* not actual on x86_64 platform or Android */ - # else /* _M_X64 || _M_AMD64 || __x86_64__ */ - # define CDECL __attribute__ ((cdecl)) - # endif /* _M_X64 || _M_AMD64 || __x86_64__ */ -diff --git a/src/tbb/tools_api/ittnotify_config.h b/src/tbb/tools_api/ittnotify_config.h -index fe1c1c6..4dac9e1 100644 ---- a/src/tbb/tools_api/ittnotify_config.h -+++ b/src/tbb/tools_api/ittnotify_config.h -@@ -86,8 +86,8 @@ - # if ITT_PLATFORM==ITT_PLATFORM_WIN - # define CDECL __cdecl - # else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ --# if defined _M_X64 || defined _M_AMD64 || defined __x86_64__ --# define CDECL /* not actual on x86_64 platform */ -+# if defined _M_X64 || defined _M_AMD64 || defined __x86_64__ || defined __ANDROID__ -+# define CDECL /* not actual on x86_64 or Android platforms */ - # else /* _M_X64 || _M_AMD64 || __x86_64__ */ - # define CDECL __attribute__ ((cdecl)) - # endif /* _M_X64 || _M_AMD64 || __x86_64__ */ -@@ -258,6 +258,11 @@ INLINE int __itt_interlocked_increment(volatile long* ptr) - #else /* __INTEL_COMPILER */ - /* TODO: Add Support for not Intel compilers for IA64 */ - #endif /* __INTEL_COMPILER */ -+#elif defined(__ANDROID__) -+INLINE int __TBB_machine_fetchadd4(volatile void *ptr, long addend) -+{ -+ return __sync_fetch_and_add(reinterpret_cast(ptr),addend); -+} - #else /* ITT_ARCH!=ITT_ARCH_IA64 */ - INLINE int __TBB_machine_fetchadd4(volatile void* ptr, long addend) - { diff --git a/3rdparty/android/tbb-build.sh b/3rdparty/android/tbb-build.sh deleted file mode 100755 index e289ceb2174..00000000000 --- a/3rdparty/android/tbb-build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -(cd src/tbb && make ANDROID=1) - -rm -r ndk-mobules/tbb/include/* 2> /dev/null -rm -r ndk-modules/tbb/lib/armeabi-v7a/* 2> /dev/null - -cp -a src/tbb/include/tbb ndk-modules/tbb/include -cp src/tbb/build/android_arm_gcc_whatever_release/*.so ndk-modules/tbb/lib/armeabi-v7a diff --git a/3rdparty/android/tbb-fetch.sh b/3rdparty/android/tbb-fetch.sh deleted file mode 100755 index b0223f95325..00000000000 --- a/3rdparty/android/tbb-fetch.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -set -e - -ver=41_20120718oss -relpath=77/188/4.1 - -rm -rf src/tbb 2> /dev/null - -mkdir src/tbb -cd src/tbb - -wget -vO- \ - "http://threadingbuildingblocks.org/uploads/$relpath/tbb${ver}_src.tgz" \ - | tar -xz --strip-components=1 - -patch -p1 -i ../../patches/tbb.patch