diff options
| -rw-r--r-- | altosui/Makefile.am | 16 | ||||
| -rw-r--r-- | altosuilib/AltosUILib.java | 16 | ||||
| -rw-r--r-- | configure.ac | 54 | ||||
| -rw-r--r-- | libaltos/Makefile.am | 30 | 
4 files changed, 105 insertions, 11 deletions
| diff --git a/altosui/Makefile.am b/altosui/Makefile.am index 71e96004..dc34c444 100644 --- a/altosui/Makefile.am +++ b/altosui/Makefile.am @@ -175,7 +175,13 @@ WINDOWS_DIST=Altos-Windows-$(VERSION_DASH).exe  FAT_FILES=$(FATJAR) $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(FREETTS_CLASS) $(JFREECHART_CLASS) $(JCOMMON_CLASS) -LINUX_FILES=$(FAT_FILES) libaltos.so $(FIRMWARE) $(DOC) +if MULTI_ARCH +LINUX_LIBS=libaltos32.so libaltos64.so +else +LINUX_LIBS=libaltos.so +endif + +LINUX_FILES=$(FAT_FILES) $(LINUX_LIBS) $(FIRMWARE) $(DOC)  LINUX_EXTRA=altosui-fat  MACOSX_INFO_PLIST=Info.plist @@ -269,6 +275,14 @@ libaltos.so: build-libaltos  	-rm -f "$@"  	$(LN_S) ../libaltos/.libs/"$@" . +libaltos32.so: build-libaltos +	-rm -f "$@" +	$(LN_S) ../libaltos/.libs/"$@" . + +libaltos64.so: build-libaltos +	-rm -f "$@" +	$(LN_S) ../libaltos/.libs/"$@" . +  libaltos.dylib:  	-rm -f "$@"  	$(LN_S) ../libaltos/"$@" . diff --git a/altosuilib/AltosUILib.java b/altosuilib/AltosUILib.java index 307ef19d..18c4c3d9 100644 --- a/altosuilib/AltosUILib.java +++ b/altosuilib/AltosUILib.java @@ -81,18 +81,20 @@ public class AltosUILib extends AltosLib {  	static public boolean initialized = false;  	static public boolean loaded_library = false; +	static final String[] library_names = { "altos", "altos32", "altos64" }; +  	public static boolean load_library() {  		if (!initialized) { -			try { -				System.loadLibrary("altos"); -				libaltos.altos_init(); -				loaded_library = true; -			} catch (UnsatisfiedLinkError e) { +			for (String name : library_names) {  				try { -					System.loadLibrary("altos64"); +					System.out.printf ("Trying library %s\n", name); +					System.loadLibrary(name);  					libaltos.altos_init();  					loaded_library = true; -				} catch (UnsatisfiedLinkError e2) { +					System.out.printf ("Using library %s\n", name); +					break; +				} catch (UnsatisfiedLinkError e) { +					System.out.printf("Link error %s\n", e.getMessage());  					loaded_library = false;  				}  			} diff --git a/configure.ac b/configure.ac index 1214564b..20acdf5f 100644 --- a/configure.ac +++ b/configure.ac @@ -430,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 @@ -483,6 +534,7 @@ 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}" diff --git a/libaltos/Makefile.am b/libaltos/Makefile.am index 831432fc..969aa8ad 100644 --- a/libaltos/Makefile.am +++ b/libaltos/Makefile.am @@ -5,8 +5,7 @@ AM_JAVACFLAGS=-target 1.6 -encoding UTF-8 -Xlint:deprecation -source 6  altoslibdir=$(libdir)/altos  altoslib_LTLIBRARIES=libaltos.la - -libaltos_la_LDFLAGS = -version-info 1:0:1 +libaltos_la_LDFLAGS=-version-info 1:0:1  libaltos_la_SOURCES=\  	libaltos.c \ @@ -14,8 +13,35 @@ libaltos_la_SOURCES=\  noinst_PROGRAMS=cjnitest +cjnitest_SOURCES=cjnitest.c  cjnitest_LDADD=libaltos.la +if MULTI_ARCH +altoslib_LTLIBRARIES+=libaltos32.la libaltos64.la + +libaltos32_la_LDFLAGS=$(libaltos_la_LDFLAGS) +libaltos64_la_LDFLAGS=$(libaltos_la_LDFLAGS) + +libaltos32_la_CFLAGS=-m32 $(AM_CFLAGS) +libaltos64_la_CFLAGS=-m64 $(AM_CFLAGS) + +libaltos32_la_SOURCES=$(libaltos_la_SOURCES) +libaltos64_la_SOURCES=$(libaltos_la_SOURCES) + +noinst_PROGRAMS+=cjnitest32 cjnitest64 + +cjnitest32_CFLAGS=-m32 +cjnitest64_CFLAGS=-m64 + +cjnitest32_SOURCES=$(cjnitest_SOURCES) +cjnitest64_SOURCES=$(cjnitest_SOURCES) + +cjnitest32_LDADD=libaltos32.la +cjnitest64_LDADD=libaltos64.la + +endif + +  LIBS=-lbluetooth  HFILES=libaltos.h | 
