1# This configure.in is based off of the one that glib uses
2
3# require atleast autoconf 2.59
4AC_PREREQ(2.59)
5
6# init autoconf (and check for presence of usb.c)
7AC_INIT([libusb],[0.1.12])
8AC_CONFIG_SRCDIR([usb.c])
9
10AH_TOP(
11#undef LINUX_API
12#undef BSD_API
13#undef DARWIN_API
14
15#undef HAVE_OLD_DEV_USB_USB_H
16
17#undef HAVE_LIMITS_H
18#undef HAVE_UNISTD_H
19#undef HAVE_VALUES_H
20
21#undef LIBUSB_MAJOR_VERSION
22#undef LIBUSB_MINOR_VERSION
23#undef LIBUSB_MICRO_VERSION
24#undef LIBUSB_INTERFACE_AGE
25#undef LIBUSB_BINARY_AGE
26)
27
28# Save this value here, since automake will set cflags later
29cflags_set=${CFLAGS+set}
30
31AM_INIT_AUTOMAKE([gnu nostdinc subdir-objects 1.7.6 --warnings=all])
32
33LIBUSB_VERSION=$VERSION
34
35#
36# The following version number definitions apply to libusb
37# as a whole, so if changes occoured in any of them, they are all
38# treated with the same interface and binary age.
39#
40# Making releases:
41#   LIBUSB_MICRO_VERSION += 1;
42#   LIBUSB_INTERFACE_AGE += 1;
43#   LIBUSB_BINARY_AGE += 1;
44# if any functions have been added, set LIBUSB_INTERFACE_AGE to 0.
45# if backwards compatibility has been broken,
46# set LIBUSB_BINARY_AGE _and_ LIBUSB_INTERFACE_AGE to 0.
47#
48LIBUSB_MAJOR_VERSION=0
49LIBUSB_MINOR_VERSION=1
50LIBUSB_MICRO_VERSION=12
51LIBUSB_INTERFACE_AGE=4
52LIBUSB_BINARY_AGE=8
53
54AC_SUBST(LIBUSB_MAJOR_VERSION)
55AC_SUBST(LIBUSB_MINOR_VERSION)
56AC_SUBST(LIBUSB_MICRO_VERSION)
57AC_SUBST(LIBUSB_VERSION)
58AC_SUBST(LIBUSB_INTERFACE_AGE)
59AC_SUBST(LIBUSB_BINARY_AGE)
60
61AC_DEFINE_UNQUOTED(LIBUSB_MAJOR_VERSION, $LIBUSB_MAJOR_VERSION)
62AC_DEFINE_UNQUOTED(LIBUSB_MINOR_VERSION, $LIBUSB_MINOR_VERSION)
63AC_DEFINE_UNQUOTED(LIBUSB_MICRO_VERSION, $LIBUSB_MICRO_VERSION)
64AC_DEFINE_UNQUOTED(LIBUSB_INTERFACE_AGE, $LIBUSB_INTERFACE_AGE)
65AC_DEFINE_UNQUOTED(LIBUSB_BINARY_AGE, $LIBUSB_BINARY_AGE)
66
67# libtool versioning
68# JR: Add support for MICRO_VERSION to be alpha-numeric. This will make
69# lt_current use the numeric part of MICRO_VERSION
70
71LIBUSB_MICRO_VERSION_NUM=`echo $LIBUSB_MICRO_VERSION | sed 's/[[a-zA-Z]]//g'`
72LT_RELEASE=$LIBUSB_MAJOR_VERSION.$LIBUSB_MINOR_VERSION
73LT_CURRENT=`expr $LIBUSB_MICRO_VERSION_NUM - $LIBUSB_INTERFACE_AGE`
74LT_REVISION=$LIBUSB_INTERFACE_AGE
75LT_AGE=`expr $LIBUSB_BINARY_AGE - $LIBUSB_INTERFACE_AGE`
76AC_SUBST(LT_RELEASE)
77AC_SUBST(LT_CURRENT)
78AC_SUBST(LT_REVISION)
79AC_SUBST(LT_AGE)
80
81AC_CONFIG_HEADERS([config.h])
82
83dnl Initialize libtool
84AM_PROG_LIBTOOL
85
86dnl This has already been dragged in by AM_PROG_LIBTOOL
87dnl AC_CANONICAL_HOST
88
89LINUX_API=0
90DARWIN_API=0
91BSD_API=0
92
93AC_MSG_CHECKING(for what USB OS support)
94case $host in
95  *-linux*)
96    AC_DEFINE(LINUX_API, 1)
97    AC_DEFINE(BSD_API, 0)
98    AC_DEFINE(DARWIN_API, 0)
99    LINUX_API=1
100    os_support=linux
101    AC_MSG_RESULT(Linux)
102    OSLIBS=""
103    ;;
104  *-freebsd*|*-kfreebsd*-gnu|*-openbsd*|*-netbsd*)
105    AC_DEFINE(BSD_API, 1)
106    AC_DEFINE(LINUX_API, 0)
107    AC_DEFINE(DARWIN_API, 0)
108    BSD_API=1
109    os_support=bsd
110    AC_MSG_RESULT(FreeBSD, OpenBSD and/or NetBSD)
111    OSLIBS=""
112    ;;
113  *-darwin*)
114    AC_DEFINE(DARWIN_API, 1) 
115    AC_DEFINE(LINUX_API, 0)
116    AC_DEFINE(BSD_API, 0)
117    DARWIN_API=1
118    os_support=darwin
119    AC_MSG_RESULT(Darwin and/or MacOS 10)
120    OSLIBS="-Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation -Wl,-prebind"
121    ;;
122  *)
123    AC_MSG_RESULT(unknown operating system)
124    AC_MSG_ERROR(libusb does not support compiling for $host)
125    ;;
126esac
127
128AC_SUBST(DARWIN_API)
129AC_SUBST(LINUX_API)
130AC_SUBST(BSD_API)
131
132AM_CONDITIONAL(LINUX_API, test "$os_support" = "linux")
133AM_CONDITIONAL(BSD_API, test "$os_support" = "bsd")
134AM_CONDITIONAL(DARWIN_API, test "$os_support" = "darwin")
135
136AC_SUBST(OSLIBS)
137
138if test `expr $LIBUSB_MINOR_VERSION \% 2` = 1 ; then
139  debug_default=yes
140else
141  debug_default=minimum
142fi
143
144dnl declare --enable-* args and collect ac_help strings
145AC_ARG_ENABLE(debug, [  --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
146
147if test "x$enable_debug" = "xyes"; then
148  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
149fi
150
151# Checks for programs.
152AC_LANG_CPLUSPLUS
153AC_PROG_CC
154AM_PROG_CC_C_O
155AC_PROG_INSTALL
156
157changequote(,)dnl
158if test "x$GCC" = "xyes"; then
159  case " $CFLAGS " in
160  *[\ \	]-Wall[\ \	]*) ;;
161  *) CFLAGS="$CFLAGS -Wall" ;;
162  esac
163fi
164changequote([,])dnl
165
166# Checks for header files.
167AC_HEADER_STDC
168
169# Checks for library functions.
170AC_FUNC_VPRINTF
171
172AC_C_CONST
173
174dnl for bytesex stuff
175AC_C_BIGENDIAN
176
177if test "$ac_cv_c_bigendian" = "yes"; then
178  BIGENDIAN="1"
179else
180  BIGENDIAN="0"
181fi
182AC_SUBST(BIGENDIAN)
183
184dnl header file checks
185AC_CHECK_HEADERS(limits.h, AC_DEFINE_UNQUOTED(HAVE_LIMITS_H))
186AC_CHECK_HEADERS(unistd.h, AC_DEFINE_UNQUOTED(HAVE_UNISTD_H))
187AC_CHECK_HEADERS(values.h, AC_DEFINE_UNQUOTED(HAVE_VALUES_H))
188
189# Check for some functions
190AC_CHECK_FUNCS(memmove)
191
192if test "$os_support" = "bsd"; then
193  AC_MSG_CHECKING(if dev/usb/usb.h uses new naming convention)
194  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <dev/usb/usb.h>]], [[
195       int a = ((struct usb_ctl_request *)0L)->ucr_addr
196     ]])],[AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
197    AC_DEFINE_UNQUOTED(HAVE_OLD_DEV_USB_USB_H)])
198fi
199
200#pkg-config: pkg-config is a tool to simplify checks for libraries and versions.
201pkgconfig_msg="no (http://www.freedesktop.org/software/pkgconfig)"
202try_pkgconfig=true
203have_pkgconfig=false
204AC_ARG_WITH(pkgconfig, [  --without-pkgconfig     don"t use pkg-config],[
205  if test x$withval = xno; then
206    try_pkgconfig=false
207    pkgconfig_msg="no (not requested)"
208  fi])
209if $try_pkgconfig; then
210  AC_PATH_PROG(PKG_CONFIG,pkg-config)
211  if test -n "${PKG_CONFIG}"; then
212    have_pkgconfig=true
213    pkgconfig_msg="yes"
214  fi
215fi
216# guessing directory to install *.pc into
217pkgconfigdir="${libdir}/pkgconfig"
218AC_SUBST(pkgconfigdir)
219
220# Check if the user wants to enable documentation
221AC_MSG_CHECKING(if we should build the documentation)
222AC_ARG_ENABLE(build-docs, [  --disable-build-docs    turn off building documentation],
223	[ test "$enableval" != no && build_docs=yes || build_docs=no ],
224	build_docs=auto)
225AC_MSG_RESULT($build_docs)
226
227if test "$build_docs" != "no"; then
228  AC_CHECK_PROG(JADE, jade, jade)
229  if test  -z "$JADE"; then
230    AC_CHECK_PROG(JADE, openjade, openjade)
231  fi
232fi
233
234LIBUSB_INIT_DOXYGEN([LIBUSB C++ API Reference], [Version $VERSION])
235
236dnl Not quite ready for primetime --jerdfelt
237dnl AC_CHECK_PROG(DVIPS, dvips, dvips, false)
238dnl if test "$DVIPS" = "false"; then
239dnl   unset BUILD_DOCS
240dnl fi
241
242if test "$build_docs" != "no" -a -z "$JADE"; then
243  AC_MSG_WARN(Documentation build components not installed. sgml docs will not be built)
244  build_docs="no"
245fi
246
247AM_CONDITIONAL(BUILD_DOCS, test "$build_docs" != "no")
248
249AC_CONFIG_FILES([
250  Makefile
251  doc/Makefile
252  libusb.spec
253  libusb-config
254  libusb.pc
255  tests/Makefile
256  README
257  INSTALL.libusb
258  usb.h
259  Doxyfile
260])
261AC_CONFIG_COMMANDS([default],[[chmod +x libusb-config]],[[]])
262AC_OUTPUT
263
264