libaltos: Build -m64 and -m32 for fat tarball when possible
[fw/altos] / configure.ac
index aa957b1fb5112bbf766de420a49ed3b7befbf5a4..20acdf5f3dd2b2bab0e593b1b617c91364aebf80 100644 (file)
@@ -18,7 +18,7 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-AC_INIT([altos], 1.2.9.4)
+AC_INIT([altos], 1.3.9.1)
 AC_CONFIG_SRCDIR([src/core/ao.h])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE
@@ -30,7 +30,7 @@ dnl ==========================================================================
 dnl Java library versions
 
 ALTOSUILIB_VERSION=1
-ALTOSLIB_VERSION=2
+ALTOSLIB_VERSION=3
 
 AC_SUBST(ALTOSLIB_VERSION)
 AC_DEFINE(ALTOSLIB_VERSION,$ALTOSLIB_VERSION,[Version of the AltosLib package])
@@ -238,6 +238,27 @@ fi
 AC_SUBST(HAVE_ARM_CC)
 AC_SUBST(ARM_CC)
 
+if test -d pdclib -a x"$HAVE_ARM_CC" = xyes; then
+       PDCLIB_ROOT='$(TOPDIR)/../pdclib-root'
+       PDCLIB_INCLUDES='-I$(TOPDIR)/../pdclib-root/include'
+       PDCLIB_LIBS_M0='-L$(TOPDIR)/../pdclib-root/lib -lpdclib-cortex-m0'
+       PDCLIB_LIBS_M3='-L$(TOPDIR)/../pdclib-root/lib -lpdclib-cortex-m3'
+       HAVE_PDCLIB=yes
+else
+       PDCLIB_INCLUDES=''
+       PDCLIB_LIBS_M0='-lpdclib-cortex-m0'
+       PDCLIB_LIBS_M3='-lpdclib-cortex-m3'
+       HAVE_PDCLIB=no
+fi
+
+AM_CONDITIONAL(PDCLIB, [test x$HAVE_PDCLIB = xyes])
+
+AC_SUBST(PDCLIB_INCLUDES)
+AC_SUBST(PDCLIB_LIBS_M0)
+AC_SUBST(PDCLIB_LIBS_M3)
+AC_SUBST(PDCLIB_ROOT)
+AC_SUBST(HAVE_PDCLIB)
+
 if test "x$HAVE_ARM_CC" = "xyes"; then
        save_CC="$CC"
        save_CFLAGS="$CFLAGS"
@@ -253,10 +274,6 @@ if test "x$HAVE_ARM_CC" = "xyes"; then
                          [HAVE_ARM_M0_CC=no])
         AC_MSG_RESULT([$HAVE_ARM_M0_CC])
 
-       AC_CHECK_LIB(pdclib-cortex-m0,memcpy,
-                    [],
-                    [HAVE_ARM_M0_CC=no])
-
        CFLAGS="-mthumb -mcpu=cortex-m3"
        AC_MSG_CHECKING([if ]$ARM_CC[ supports cortex-m3])
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int i;])],
@@ -264,9 +281,15 @@ if test "x$HAVE_ARM_CC" = "xyes"; then
                          [HAVE_ARM_M3_CC=no])
         AC_MSG_RESULT([$HAVE_ARM_M3_CC])
 
-       AC_CHECK_LIB(pdclib-cortex-m3,memcpy,
-                    [],
-                    [HAVE_ARM_M3_CC=no])
+       if test x$HAVE_PDCLIB != xyes; then
+               AC_CHECK_LIB(pdclib-cortex-m0,memcpy,
+                            [],
+                            [HAVE_ARM_M0_CC=no])
+
+               AC_CHECK_LIB(pdclib-cortex-m3,memcpy,
+                            [],
+                            [HAVE_ARM_M3_CC=no])
+        fi
 
        AC_LANG_POP([C])
        LIBS="$save_LIBS"
@@ -407,7 +430,58 @@ if test x"$HAVE_STLINK" = "xyes"; then
        AC_DEFINE(HAVE_STLINK,1,[Using STlink library])
 fi
 
-AM_CONDITIONAL([LIBSTLINK], [test x$HAVE_STLINK == xyes])
+AM_CONDITIONAL([LIBSTLINK], [test x$HAVE_STLINK = xyes])
+
+AC_ARG_ENABLE([multi-arch],
+             [AS_HELP_STRING([--enable-multi-arch],
+                             [enable building both i386 and amd64 libraries (default=auto)])],
+             [MULTI_ARCH=$enableval],
+             [MULTI_ARCH=auto])
+
+case x"$MULTI_ARCH" in
+xauto)
+       arch=`uname -m`
+       case x"$arch" in
+       xx86_64|xi*86)
+               save_CFLAGS="$CFLAGS"
+               save_LIBS="$LIBS"
+               LIBS="-lbluetooth"
+               CFLAGS="-m64"
+               AC_MSG_CHECKING([if ]$CC[ ]$CFLAGS[ can link programs])
+               AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+                               [M64_LINK=yes],
+                               [M64_LINK=no])
+               AC_MSG_RESULT([$M64_LINK])
+               CFLAGS="-m32"
+               AC_MSG_CHECKING([if ]$CC[ ]$CFLAGS[ can link programs])
+               AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+                               [M32_LINK=yes],
+                               [M32_LINK=no])
+               AC_MSG_RESULT([$M32_LINK])
+               CFLAGS="$save_CFLAGS"
+               LIBS="$save_LIBS"
+               case x"$M64_LINK"x"$M32_LINK" in
+               xyesxyes)
+                       MULTI_ARCH=yes
+                       ;;
+               *)
+                       MULTI_ARCH=no
+                       ;;
+               esac
+               ;;
+       *)
+               MULTI_ARCH=no
+               ;;
+       esac
+       ;;
+xyes|xno)
+       ;;
+*)
+       MULTI_ARCH="no"
+       ;;
+esac
+       
+AM_CONDITIONAL([MULTI_ARCH], [test x$MULTI_ARCH = xyes])
 
 AC_OUTPUT([
 Makefile
@@ -459,6 +533,8 @@ echo "    AVR compiler................: ${AVR_CC} ${AVR_OBJCOPY}"
 echo "    AVR support.................: ${HAVE_AVR_CC}"
 echo "    Android support.............: ${HAVE_ANDROID_SDK}"
 echo "    STlink support..............: ${HAVE_STLINK}"
+echo "    Local pdclib................: ${HAVE_PDCLIB}"
+echo "    i386 and amd64 libaltos.....: ${MULTI_ARCH}"
 echo ""
 echo "  Java paths"
 echo "    freetts.....................: ${FREETTS}"