summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Hector Martin2009-08-24 17:59:35 +0200
committerGravatar Hector Martin2009-08-24 17:59:35 +0200
commitec63619f611c7246247485ae3d27818aa2aa1dbd (patch)
tree2e9f404deb24c15dbe44bc87f28065b6008ee099
parent0a1fe2abddbd73ed00a93afd8dcaf38f5210c0fc (diff)
downloadusbmuxd-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.cmake38
-rw-r--r--Modules/FindUSB.cmake2
-rw-r--r--usbmuxd/CMakeLists.txt21
-rw-r--r--usbmuxd/usb-linux.c11
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
18INCLUDE(CheckCSourceCompiles)
19
20MACRO (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}
28void cmakeRequireConstant(int dummy,...){(void)dummy;}
29int main()
30{
31 cmakeRequireConstant(0,${_CONSTANT});
32 return 0;
33}
34")
35 CHECK_C_SOURCE_COMPILES("${_CHECK_CONSTANT_SOURCE_CODE}" ${_RESULT})
36
37ENDMACRO (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
13libfind_pkg_check_modules(USB_PKGCONF libusb-1.0) 13libfind_pkg_check_modules(USB_PKGCONF libusb-1.0>=1.0.2)
14 14
15# Include dir 15# Include dir
16find_path(USB_INCLUDE_DIR 16find_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)
6include_directories (${CMAKE_SOURCE_DIR}/usbmuxd) 6include_directories (${CMAKE_SOURCE_DIR}/usbmuxd)
7include_directories (${CMAKE_SOURCE_DIR}/libusbmuxd) 7include_directories (${CMAKE_SOURCE_DIR}/libusbmuxd)
8 8
9include(CheckConstantExists)
10set(CMAKE_REQUIRED_INCLUDES ${USB_INCLUDE_DIRS})
11check_constant_exists(LIBUSB_TRANSFER_ZERO_PACKET libusb.h HAVE_LIBUSB_ZLP)
12
13if(NOT HAVE_LIBUSB_ZLP)
14 message("
15================================================================================
16==================================== WARNING ===================================
17================================================================================
18Your libusb is missing proper Zero Length Packet support! If you are using a
19recent libusb Git, things may or may not work. If you are using libusb 1.0.2 or
20earlier, things will definitely not work properly.
21
22Please apply the patch in the contrib/ directory to your libusb 1.0 tree.
23================================================================================
24")
25 add_definitions(-DEXPLICIT_ZLP_TRANSACTION)
26endif(NOT HAVE_LIBUSB_ZLP)
27
9add_definitions(-Wall -O2 -g -DUSBMUXD_DAEMON) 28add_definitions(-Wall -O2 -g -DUSBMUXD_DAEMON)
10add_executable(usbmuxd main.c usb-linux.c log.c ../common/utils.c device.c client.c) 29add_executable(usbmuxd main.c usb-linux.c log.c ../common/utils.c device.c client.c)
11target_link_libraries(usbmuxd ${LIBS}) 30target_link_libraries(usbmuxd ${LIBS})
12 31
13install(TARGETS usbmuxd RUNTIME DESTINATION sbin) \ No newline at end of file 32install(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