Blame | Last modification | View Log | Download
AC_PREREQ(2.63)# Version number. This is currently the only place.m4_define([HIDAPI_MAJOR], 0)m4_define([HIDAPI_MINOR], 7)m4_define([HIDAPI_RELEASE], 0)m4_define([HIDAPI_RC], +)m4_define([VERSION_STRING], HIDAPI_MAJOR[.]HIDAPI_MINOR[.]HIDAPI_RELEASE[]HIDAPI_RC)AC_INIT([hidapi],[VERSION_STRING],[alan@signal11.us])# Library soname version# Follow the following rules (particularly the ones in the second link):# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html# http://sourceware.org/autobook/autobook/autobook_91.htmllt_current="0"lt_revision="0"lt_age="0"LTLDFLAGS="-version-info ${lt_current}:${lt_revision}:${lt_age}"AC_CONFIG_MACRO_DIR([m4])AM_INIT_AUTOMAKE([foreign -Wall -Werror])AC_CONFIG_MACRO_DIR([m4])m4_ifdef([AM_PROG_AR], [AM_PROG_AR])LT_INITAC_PROG_CCAC_PROG_CXXAC_PROG_OBJCPKG_PROG_PKG_CONFIGm4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])hidapi_lib_error() {echo ""echo " Library $1 was not found on this system."echo " Please install it and re-run ./configure"echo ""exit 1}hidapi_prog_error() {echo ""echo " Program $1 was not found on this system."echo " This program is part of $2."echo " Please install it and re-run ./configure"echo ""exit 1}AC_MSG_CHECKING([operating system])AC_MSG_RESULT($host)case $host in*-linux*)AC_MSG_RESULT([ (Linux back-end)])AC_DEFINE(OS_LINUX, 1, [Linux implementations])AC_SUBST(OS_LINUX)backend="linux"os="linux"threads="pthreads"# HIDAPI/hidraw libsPKG_CHECK_MODULES([libudev], [libudev], true, [hidapi_lib_error libudev])LIBS_HIDRAW_PR+=" $libudev_LIBS"CFLAGS_HIDRAW+=" $libudev_CFLAGS"# HIDAPI/libusb libsAC_CHECK_LIB([rt], [clock_gettime], [LIBS_LIBUSB_PRIVATE+=" -lrt"], [hidapi_lib_error librt])PKG_CHECK_MODULES([libusb], [libusb-1.0], true, [hidapi_lib_error libusb-1.0])LIBS_LIBUSB_PRIVATE+=" $libusb_LIBS"CFLAGS_LIBUSB+=" $libusb_CFLAGS";;*-darwin*)AC_MSG_RESULT([ (Mac OS X back-end)])AC_DEFINE(OS_DARWIN, 1, [Mac implementation])AC_SUBST(OS_DARWIN)backend="mac"os="darwin"threads="pthreads"LIBS="${LIBS} -framework IOKit -framework CoreFoundation";;*-freebsd*)AC_MSG_RESULT([ (FreeBSD back-end)])AC_DEFINE(OS_FREEBSD, 1, [FreeBSD implementation])AC_SUBST(OS_FREEBSD)backend="libusb"os="freebsd"threads="pthreads"CFLAGS="$CFLAGS -I/usr/local/include"LDFLAGS="$LDFLAGS -L/usr/local/lib"LIBS="${LIBS}"AC_CHECK_LIB([usb], [libusb_init], [LIBS_LIBUSB_PRIVATE="${LIBS_LIBUSB_PRIVATE} -lusb"], [hidapi_lib_error libusb])AC_CHECK_LIB([iconv], [iconv_open], [LIBS_LIBUSB_PRIVATE="${LIBS_LIBUSB_PRIVATE} -liconv"], [hidapi_lib_error libiconv])echo libs_priv: $LIBS_LIBUSB_PRIVATE;;*-mingw*)AC_MSG_RESULT([ (Windows back-end, using MinGW)])backend="windows"os="windows"threads="windows"win_implementation="mingw";;*-cygwin*)AC_MSG_RESULT([ (Windows back-end, using Cygwin)])backend="windows"os="windows"threads="windows"win_implementation="cygwin";;*)AC_MSG_ERROR([HIDAPI is not supported on your operating system yet])esacLIBS_HIDRAW="${LIBS} ${LIBS_HIDRAW_PR}"LIBS_LIBUSB="${LIBS} ${LIBS_LIBUSB_PRIVATE}"AC_SUBST([LIBS_HIDRAW])AC_SUBST([LIBS_LIBUSB])AC_SUBST([CFLAGS_LIBUSB])AC_SUBST([CFLAGS_HIDRAW])if test "x$os" = xwindows; thenAC_DEFINE(OS_WINDOWS, 1, [Windows implementations])AC_SUBST(OS_WINDOWS)LDFLAGS="${LDFLAGS} -no-undefined"LIBS="${LIBS} -lsetupapi"fiif test "x$threads" = xpthreads; thenAX_PTHREAD([found_pthreads=yes], [found_pthreads=no])if test "x$found_pthreads" = xyes; thenif test "x$os" = xlinux; then# Only use pthreads for libusb implementation on Linux.LIBS_LIBUSB="$PTHREAD_LIBS $LIBS_LIBUSB"CFLAGS_LIBUSB="$CFLAGS_LIBUSB $PTHREAD_CFLAGS"# There's no separate CC on Linux for threading,# so it's ok that both implementations use $PTHREAD_CCCC="$PTHREAD_CC"elseLIBS="$PTHREAD_LIBS $LIBS"CFLAGS="$CFLAGS $PTHREAD_CFLAGS"CC="$PTHREAD_CC"fififi# Test GUIAC_ARG_ENABLE([testgui],[AS_HELP_STRING([--enable-testgui],[enable building of test GUI (default n)])],[testgui_enabled=$enableval],[testgui_enabled='no'])AM_CONDITIONAL([BUILD_TESTGUI], [test "x$testgui_enabled" != "xno"])# Configure the MacOS TestGUI app bundlerm -Rf testgui/TestGUI.appmkdir -p testgui/TestGUI.appcp -R ${srcdir}/testgui/TestGUI.app.in/* testgui/TestGUI.appchmod -R u+w testgui/TestGUI.appmkdir testgui/TestGUI.app/Contents/MacOS/if test "x$testgui_enabled" != "xno"; thenif test "x$os" = xdarwin; then# On Mac OS, don't use pkg-config.AC_CHECK_PROG([foxconfig], [fox-config], [fox-config], false)if test "x$foxconfig" = "xfalse"; thenhidapi_prog_error fox-config "FOX Toolkit"fiLIBS_TESTGUI+=`$foxconfig --libs`LIBS_TESTGUI+=" -framework Cocoa -L/usr/X11R6/lib"CFLAGS_TESTGUI+=`$foxconfig --cflags`OBJCFLAGS+=" -x objective-c++"elif test "x$os" = xwindows; then# On Windows, just set the paths for Fox toolkitif test "x$win_implementation" = xmingw; thenCFLAGS_TESTGUI="-I\$(srcdir)/../../hidapi-externals/fox/include -g -c"LIBS_TESTGUI=" -mwindows \$(srcdir)/../../hidapi-externals/fox/lib/libFOX-1.6.a -lgdi32 -Wl,--enable-auto-import -static-libgcc -static-libstdc++ -lkernel32"else# CygwinCFLAGS_TESTGUI="-DWIN32 -I\$(srcdir)/../../hidapi-externals/fox/include -g -c"LIBS_TESTGUI="\$(srcdir)/../../hidapi-externals/fox/lib/libFOX-cygwin-1.6.a -lgdi32 -Wl,--enable-auto-import -static-libgcc -static-libstdc++ -lkernel32"fielse# On Linux and FreeBSD platforms, use pkg-config to find fox.PKG_CHECK_MODULES([fox], [fox])LIBS_TESTGUI="${LIBS_TESTGUI} $fox_LIBS"if test "x$os" = xfreebsd; thenLIBS_TESTGUI="${LIBS_TESTGUI} -L/usr/local/lib"fiCFLAGS_TESTGUI="${CFLAGS_TESTGUI} $fox_CFLAGS"fifiAC_SUBST([LIBS_TESTGUI])AC_SUBST([CFLAGS_TESTGUI])AC_SUBST([backend])# OS info for AutomakeAM_CONDITIONAL(OS_LINUX, test "x$os" = xlinux)AM_CONDITIONAL(OS_DARWIN, test "x$os" = xdarwin)AM_CONDITIONAL(OS_FREEBSD, test "x$os" = xfreebsd)AM_CONDITIONAL(OS_WINDOWS, test "x$os" = xwindows)AC_CONFIG_HEADERS([config.h])if test "x$os" = "xlinux"; thenAC_CONFIG_FILES([pc/hidapi-hidraw.pc])AC_CONFIG_FILES([pc/hidapi-libusb.pc])elseAC_CONFIG_FILES([pc/hidapi.pc])fiAC_SUBST(LTLDFLAGS)AC_CONFIG_FILES([Makefile \hidtest/Makefile \libusb/Makefile \linux/Makefile \mac/Makefile \testgui/Makefile \windows/Makefile])AC_OUTPUT