blob: 2beff482bc7ccfb529c8de4c3641914e2700f772 [file] [log] [blame]
Linus Walleijeb8c6fe2006-02-03 09:46:22 +00001# Process this file with autoconf to produce a configure script.
2AC_PREREQ(2.52)
Linus Walleij1aec6fd2011-06-08 09:08:33 +02003AC_INIT([libmtp], [1.1.0], [libmtp-discuss@lists.sourceforge.net])
Linus Walleijd4637502009-06-14 23:03:33 +00004AC_CONFIG_MACRO_DIR([m4])
Linus Walleijeb8c6fe2006-02-03 09:46:22 +00005AM_INIT_AUTOMAKE([foreign])
6AC_CONFIG_SRCDIR([src/libmtp.c])
Linus Walleij8609af32006-12-28 21:25:17 +00007AM_CONFIG_HEADER(config.h)
Linus Walleijeb8c6fe2006-02-03 09:46:22 +00008
Linus Walleijeb8c6fe2006-02-03 09:46:22 +00009# Checks for programs.
10AC_PROG_CC
11AC_PROG_INSTALL
12AC_PROG_LN_S
13AC_LIBTOOL_WIN32_DLL
14AC_PROG_LIBTOOL
Linus Walleijd4637502009-06-14 23:03:33 +000015AM_ICONV
16
Denis Dupeyronb9eed542011-01-26 22:31:16 -070017# Optionally set install location of udev
18UDEV=/lib/udev
19AC_ARG_WITH(udev,
20 AC_HELP_STRING([--with-udev=DIR],
21 [directory where udev is installed [default=/lib/udev]]),
22 [UDEV="${withval}"], [])
23AC_SUBST(UDEV)
Linus Walleij925cd452010-12-05 21:26:48 +000024
Denis Dupeyronb9eed542011-01-26 22:31:16 -070025# Optionally set name of udev rules file
Linus Walleij2d195352011-10-22 14:34:32 +020026# priority is 60, to appear before 70-acl.rules which handles
27# access control to the devices.
Linus Walleij6a81a342011-02-16 16:39:26 +010028# Later rules can then use the identifiers for its processing.
Linus Walleij2d195352011-10-22 14:34:32 +020029UDEV_RULES=60-libmtp.rules
Denis Dupeyronb9eed542011-01-26 22:31:16 -070030AC_ARG_WITH(udev-rules,
31 AC_HELP_STRING([--with-udev-rules=NAME],
Linus Walleij2d195352011-10-22 14:34:32 +020032 [file name for udev rules [default=60-libmtp.rules]]),
Denis Dupeyronb9eed542011-01-26 22:31:16 -070033 [UDEV_RULES="${withval}"], [])
34AC_SUBST(UDEV_RULES)
Linus Walleij5cf12e72011-01-18 15:33:09 +010035
Denis Dupeyron83e79a22011-02-07 22:40:45 -070036# Optionally set group for device nodes
37UDEV_GROUP=
38AC_ARG_WITH(udev-group,
39 AC_HELP_STRING([--with-udev-group=GROUP],
40 [file group for device nodes [default: none specified]]]),
41 [UDEV_GROUP="-g\"${withval}\""], [])
42AC_SUBST(UDEV_GROUP)
43
44# Optionally set mode for device nodes
45UDEV_MODE=
46AC_ARG_WITH(udev-mode,
47 AC_HELP_STRING([--with-udev-mode=GROUP],
48 [file mode for device nodes [default: none specified]]]),
49 [UDEV_MODE="-m\"${withval}\""], [])
50AC_SUBST(UDEV_MODE)
51
Denis Dupeyronbc442cd2011-01-16 21:57:39 -070052# Optionally enable and check for doxygen
53AC_ARG_ENABLE([doxygen],
Denis Dupeyron339b3942011-01-20 23:17:23 -070054 AS_HELP_STRING([--enable-doxygen], [Build API documentation using Doxygen [default=no]]),
Denis Dupeyronbc442cd2011-01-16 21:57:39 -070055 [ac_enable_doxygen=$enableval], [ac_enable_doxygen=auto])
Denis Dupeyron339b3942011-01-20 23:17:23 -070056if test "x$ac_enable_doxygen" == "xyes"; then
Denis Dupeyronbc442cd2011-01-16 21:57:39 -070057 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false)
58 if test "x$HAVE_DOXYGEN" = "xfalse" -a "x$ac_enable_doxygen" = "xyes"; then
59 AC_MSG_ERROR([*** API documentation explicitly requested but Doxygen not found])
60 fi
61 AC_MSG_NOTICE([API documentation will be generated using Doxygen])
62else
63 HAVE_DOXYGEN=false
64 AC_MSG_NOTICE([API documentation will not be generated])
Linus Walleijeb8c6fe2006-02-03 09:46:22 +000065fi
Denis Dupeyronbc442cd2011-01-16 21:57:39 -070066AM_CONDITIONAL(HAVE_DOXYGEN,$HAVE_DOXYGEN)
Linus Walleijeb8c6fe2006-02-03 09:46:22 +000067
68# Check for Darwin
69AC_MSG_CHECKING([if the host operating system is Darwin])
70case "$host" in
71 *-darwin*)
72 AC_MSG_RESULT([yes])
73 CFLAGS="$CFLAGS -DUSE_DARWIN"
74 OSFLAGS="-framework IOKit"
75 ;;
76 *) AC_MSG_RESULT([no]) ;;
77esac
78AC_SUBST(OSFLAGS)
79
Linus Walleij9e44f182010-12-07 20:33:13 +000080AC_MSG_CHECKING([if the host operating system is Linux])
81AC_TRY_COMPILE([#ifndef __linux__
82 #error "FAIL"
83 #endif
84 ],
85 [int test;],
86 [ AC_MSG_RESULT(yes)
87 AM_CONDITIONAL(USE_LINUX, true)
88 ],
89 [ AC_MSG_RESULT(no)
90 AM_CONDITIONAL(USE_LINUX, false)
91 ])
92
Linus Walleijeb8c6fe2006-02-03 09:46:22 +000093# Check for mingw compiler platform
94AC_MSG_CHECKING([For MinGW32])
95case "$host" in
96 *-*-mingw*)
97 AC_MSG_RESULT([yes])
98 mingw_compiler=yes
99 ;;
100 *) AC_MSG_RESULT([no]) ;;
101esac
102AM_CONDITIONAL(COMPILE_MINGW32, [test "$mingw_compiler" = "yes"])
103
Linus Walleij6f050022009-05-06 21:14:41 +0000104# Check if Microsoft LIB.EXE is available
105if test "$mingw_compiler" = "yes"; then
106 AC_CHECK_PROG(ms_lib_exe, lib.exe, yes, no)
107fi
108AM_CONDITIONAL(MS_LIB_EXE, test x$ms_lib_exe = xyes)
Linus Walleijeb8c6fe2006-02-03 09:46:22 +0000109
110# Checks for libraries.
Linus Walleijeb8c6fe2006-02-03 09:46:22 +0000111AC_CHECK_LIB([usb], [usb_control_msg],,
112 AC_MSG_ERROR([I can't find the libusb libraries on your system. You
113 may need to set the LDFLAGS environment variable to include the
114 search path where you have libusb installed before running
115 configure (e.g. setenv LDFLAGS=-L/usr/local/lib)]), "$OSFLAGS")
Linus Walleijeb8c6fe2006-02-03 09:46:22 +0000116
117# Checks for header files.
118AC_HEADER_STDC
119AC_HEADER_TIME
120# zlib.h the day we need to decompress firmware
121AC_CHECK_HEADERS([ctype.h errno.h fcntl.h getopt.h libgen.h \
Linus Walleij56c63952008-06-08 21:55:58 +0000122 limits.h stdio.h string.h sys/stat.h sys/time.h unistd.h \
Linus Walleij8e499142011-02-10 16:28:02 +0100123 langinfo.h locale.h arpa/inet.h byteswap.h sys/uio.h])
Linus Walleijeb8c6fe2006-02-03 09:46:22 +0000124AC_CHECK_HEADER([usb.h],,
125 AC_MSG_ERROR([I can't find the libusb header file on your system.
126 You may need to set the CPPFLAGS environment variable to include
127 the search path where you have libusb installed before running
128 configure (e.g. setenv CPPFLAGS=-I/usr/local/include)]))
129
130# Checks for typedefs, structures, and compiler characteristics.
131AC_C_CONST
132AC_TYPE_OFF_T
133AC_TYPE_SIGNAL
134AC_TYPE_SIZE_T
135AC_STRUCT_ST_BLKSIZE
136
137# Checks for library functions.
138AC_FUNC_MALLOC
139AC_FUNC_MEMCMP
140AC_FUNC_STAT
Richard Low8d97bad2010-09-12 17:31:12 +0000141AC_CHECK_FUNCS(basename memset select strdup strerror strndup strrchr strtoul usleep mkstemp)
Linus Walleijeb8c6fe2006-02-03 09:46:22 +0000142
143# Switches.
Linus Walleij05358382007-08-06 20:46:35 +0000144# Enable LFS (Large File Support)
Linus Walleij2f1b6402009-06-15 19:49:33 +0000145AC_SYS_LARGEFILE
Linus Walleijeb8c6fe2006-02-03 09:46:22 +0000146# Stick in "-Werror" if you want to be more aggressive.
147# (No need to use AC_SUBST on this default substituted environment variable.)
148CFLAGS="$CFLAGS -Wall -Wmissing-prototypes"
149
150# Output files
Linus Walleije8c54642006-03-28 09:45:00 +0000151
152# Create a stdint.h-like file containing size-specific integer definitions
153# that will always be available. The <stdint.h> file is required by the
154# library, but we provide this anyway because the libptp2 stuff wants this
155# file.
Linus Walleij2a84ca42008-12-14 00:00:23 +0000156AX_NEED_STDINT_H([src/_stdint.h])
Linus Walleij6fd2f082006-03-28 07:19:22 +0000157
Linus Walleije8c54642006-03-28 09:45:00 +0000158# Create a header file containing NetBSD-style byte swapping macros.
159# This m4 macros has caused severe pain, I am considering creating a
160# hard-coded byte swapper that will be eternally portable.
Linus Walleijb02a0662006-04-25 08:05:09 +0000161AC_NEED_BYTEORDER_H(src/gphoto2-endian.h)
Linus Walleij6fd2f082006-03-28 07:19:22 +0000162
Linus Walleijeb8c6fe2006-02-03 09:46:22 +0000163AC_CONFIG_FILES([src/libmtp.h doc/Doxyfile Makefile doc/Makefile src/Makefile
Linus Walleij6d3c2222010-11-30 23:42:32 +0000164 examples/Makefile util/Makefile libmtp.sh hotplug.sh libmtp.pc])
Linus Walleijeb8c6fe2006-02-03 09:46:22 +0000165AC_OUTPUT
Linus Walleij0f2e7732006-08-17 20:48:32 +0000166chmod +x hotplug.sh