diff options
| author | 2009-08-24 17:59:35 +0200 | |
|---|---|---|
| committer | 2009-08-24 17:59:35 +0200 | |
| commit | ec63619f611c7246247485ae3d27818aa2aa1dbd (patch) | |
| tree | 2e9f404deb24c15dbe44bc87f28065b6008ee099 | |
| parent | 0a1fe2abddbd73ed00a93afd8dcaf38f5210c0fc (diff) | |
| download | usbmuxd-ec63619f611c7246247485ae3d27818aa2aa1dbd.tar.gz usbmuxd-ec63619f611c7246247485ae3d27818aa2aa1dbd.tar.bz2 | |
ZLP flag is an enum, move check into CMake.
Now prints the big fat warning at configure time
| -rw-r--r-- | Modules/CheckConstantExists.cmake | 38 | ||||
| -rw-r--r-- | Modules/FindUSB.cmake | 2 | ||||
| -rw-r--r-- | usbmuxd/CMakeLists.txt | 21 | ||||
| -rw-r--r-- | usbmuxd/usb-linux.c | 11 |
4 files changed, 59 insertions, 13 deletions
diff --git a/Modules/CheckConstantExists.cmake b/Modules/CheckConstantExists.cmake new file mode 100644 index 0000000..3d6d97e --- /dev/null +++ b/Modules/CheckConstantExists.cmake | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | # - Check if the given constant exists (as an enum, define, or whatever) | ||
| 2 | # CHECK_CONSTANT_EXISTS (CONSTANT HEADER VARIABLE) | ||
| 3 | # | ||
| 4 | # CONSTANT - the name of the constant you are interested in | ||
| 5 | # HEADER - the header(s) where the prototype should be declared | ||
| 6 | # VARIABLE - variable to store the result | ||
| 7 | # | ||
| 8 | # The following variables may be set before calling this macro to | ||
| 9 | # modify the way the check is run: | ||
| 10 | # | ||
| 11 | # CMAKE_REQUIRED_FLAGS = string of compile command line flags | ||
| 12 | # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) | ||
| 13 | # CMAKE_REQUIRED_INCLUDES = list of include directories | ||
| 14 | # | ||
| 15 | # Example: CHECK_CONSTANT_EXISTS(O_NOFOLLOW fcntl.h HAVE_O_NOFOLLOW) | ||
| 16 | |||
| 17 | |||
| 18 | INCLUDE(CheckCSourceCompiles) | ||
| 19 | |||
| 20 | MACRO (CHECK_CONSTANT_EXISTS _CONSTANT _HEADER _RESULT) | ||
| 21 | SET(_INCLUDE_FILES) | ||
| 22 | FOREACH (it ${_HEADER}) | ||
| 23 | SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n") | ||
| 24 | ENDFOREACH (it) | ||
| 25 | |||
| 26 | SET(_CHECK_CONSTANT_SOURCE_CODE " | ||
| 27 | ${_INCLUDE_FILES} | ||
| 28 | void cmakeRequireConstant(int dummy,...){(void)dummy;} | ||
| 29 | int main() | ||
| 30 | { | ||
| 31 | cmakeRequireConstant(0,${_CONSTANT}); | ||
| 32 | return 0; | ||
| 33 | } | ||
| 34 | ") | ||
| 35 | CHECK_C_SOURCE_COMPILES("${_CHECK_CONSTANT_SOURCE_CODE}" ${_RESULT}) | ||
| 36 | |||
| 37 | ENDMACRO (CHECK_CONSTANT_EXISTS) | ||
| 38 | |||
diff --git a/Modules/FindUSB.cmake b/Modules/FindUSB.cmake index d562b98..8659ec2 100644 --- a/Modules/FindUSB.cmake +++ b/Modules/FindUSB.cmake | |||
| @@ -10,7 +10,7 @@ include(LibFindMacros) | |||
| 10 | # Dependencies | 10 | # Dependencies |
| 11 | 11 | ||
| 12 | # Use pkg-config to get hints about paths | 12 | # Use pkg-config to get hints about paths |
| 13 | libfind_pkg_check_modules(USB_PKGCONF libusb-1.0) | 13 | libfind_pkg_check_modules(USB_PKGCONF libusb-1.0>=1.0.2) |
| 14 | 14 | ||
| 15 | # Include dir | 15 | # Include dir |
| 16 | find_path(USB_INCLUDE_DIR | 16 | find_path(USB_INCLUDE_DIR |
diff --git a/usbmuxd/CMakeLists.txt b/usbmuxd/CMakeLists.txt index 7d0d3d8..f95727c 100644 --- a/usbmuxd/CMakeLists.txt +++ b/usbmuxd/CMakeLists.txt | |||
| @@ -6,8 +6,27 @@ include_directories (${CMAKE_SOURCE_DIR}/common) | |||
| 6 | include_directories (${CMAKE_SOURCE_DIR}/usbmuxd) | 6 | include_directories (${CMAKE_SOURCE_DIR}/usbmuxd) |
| 7 | include_directories (${CMAKE_SOURCE_DIR}/libusbmuxd) | 7 | include_directories (${CMAKE_SOURCE_DIR}/libusbmuxd) |
| 8 | 8 | ||
| 9 | include(CheckConstantExists) | ||
| 10 | set(CMAKE_REQUIRED_INCLUDES ${USB_INCLUDE_DIRS}) | ||
| 11 | check_constant_exists(LIBUSB_TRANSFER_ZERO_PACKET libusb.h HAVE_LIBUSB_ZLP) | ||
| 12 | |||
| 13 | if(NOT HAVE_LIBUSB_ZLP) | ||
| 14 | message(" | ||
| 15 | ================================================================================ | ||
| 16 | ==================================== WARNING =================================== | ||
| 17 | ================================================================================ | ||
| 18 | Your libusb is missing proper Zero Length Packet support! If you are using a | ||
| 19 | recent libusb Git, things may or may not work. If you are using libusb 1.0.2 or | ||
| 20 | earlier, things will definitely not work properly. | ||
| 21 | |||
| 22 | Please apply the patch in the contrib/ directory to your libusb 1.0 tree. | ||
| 23 | ================================================================================ | ||
| 24 | ") | ||
| 25 | add_definitions(-DEXPLICIT_ZLP_TRANSACTION) | ||
| 26 | endif(NOT HAVE_LIBUSB_ZLP) | ||
| 27 | |||
| 9 | add_definitions(-Wall -O2 -g -DUSBMUXD_DAEMON) | 28 | add_definitions(-Wall -O2 -g -DUSBMUXD_DAEMON) |
| 10 | add_executable(usbmuxd main.c usb-linux.c log.c ../common/utils.c device.c client.c) | 29 | add_executable(usbmuxd main.c usb-linux.c log.c ../common/utils.c device.c client.c) |
| 11 | target_link_libraries(usbmuxd ${LIBS}) | 30 | target_link_libraries(usbmuxd ${LIBS}) |
| 12 | 31 | ||
| 13 | install(TARGETS usbmuxd RUNTIME DESTINATION sbin) \ No newline at end of file | 32 | install(TARGETS usbmuxd RUNTIME DESTINATION sbin) |
diff --git a/usbmuxd/usb-linux.c b/usbmuxd/usb-linux.c index 2d6053e..c09cdc9 100644 --- a/usbmuxd/usb-linux.c +++ b/usbmuxd/usb-linux.c | |||
| @@ -33,17 +33,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
| 33 | #include "log.h" | 33 | #include "log.h" |
| 34 | #include "device.h" | 34 | #include "device.h" |
| 35 | 35 | ||
| 36 | #ifndef LIBUSB_TRANSFER_ZERO_PACKET | ||
| 37 | #warning Your libusb is missing proper Zero Length Packet support! | ||
| 38 | #warning | ||
| 39 | #warning If you are using a recent libusb Git, things may or may not work. | ||
| 40 | #warning If you are using libusb 1.0.2 or earlier, things will definitely not work | ||
| 41 | #warning properly. | ||
| 42 | #warning | ||
| 43 | #warning Please apply the patch in the contrib/ directory to your libusb 1.0 tree. | ||
| 44 | #define EXPLICIT_ZLP_TRANSACTION | ||
| 45 | #endif | ||
| 46 | |||
| 47 | // interval for device connection/disconnection polling, in milliseconds | 36 | // interval for device connection/disconnection polling, in milliseconds |
| 48 | // we need this because there is currently no asynchronous device discovery mechanism in libusb | 37 | // we need this because there is currently no asynchronous device discovery mechanism in libusb |
| 49 | #define DEVICE_POLL_TIME 1000 | 38 | #define DEVICE_POLL_TIME 1000 |
