libaltos: Use cross compilers to build libaltos for i686, amd64, aarch64, armel and...
authorKeith Packard <keithp@keithp.com>
Mon, 12 Jul 2021 17:08:05 +0000 (10:08 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 21 Jul 2021 21:28:14 +0000 (14:28 -0700)
Use current debian packages to build libraries for x86 and arm debian hosts.

Signed-off-by: Keith Packard <keithp@keithp.com>
altosui/Makefile.am
altosuilib/AltosUILib.java
libaltos/Makefile.am
libaltos/gcc [new file with mode: 0755]
micropeak/Makefile.am
telegps/Makefile.am

index 1cbb919f16ce299310014934bbd23e86cd0f46ec..1935e75e14ed7f238612b39aee638a949d6f63c1 100644 (file)
@@ -57,7 +57,7 @@ ALTOSUILIB_CLASS=\
        altosuilib_$(ALTOSUILIB_VERSION).jar
 
 if MULTI_ARCH
        altosuilib_$(ALTOSUILIB_VERSION).jar
 
 if MULTI_ARCH
-LIBALTOS_LINUX=libaltos32.so libaltos64.so
+LIBALTOS_LINUX=libaltos_i686.so libaltos_amd64.so libaltos_aarch64.so libaltos_armel.so libaltos_armhf.so
 else
 LIBALTOS_LINUX=libaltos.so
 endif
 else
 LIBALTOS_LINUX=libaltos.so
 endif
@@ -266,7 +266,7 @@ install-altosuiJAVA: altosui.jar
 classes/altosui:
        mkdir -p classes/altosui
 
 classes/altosui:
        mkdir -p classes/altosui
 
-$(JAR): classaltosui.stamp Manifest.txt $(JAVA_ICONS) $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS)
+$(JAR): classaltosui.stamp Manifest.txt $(JAVA_ICONS) $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) build-libaltos
        jar cfm $@ Manifest.txt \
                $(ICONJAR) \
                -C classes altosui \
        jar cfm $@ Manifest.txt \
                $(ICONJAR) \
                -C classes altosui \
@@ -315,11 +315,23 @@ libaltos.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
-libaltos32.so: build-libaltos
+libaltos_i686.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
-libaltos64.so: build-libaltos
+libaltos_amd64.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_aarch64.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_armel.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_armhf.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
@@ -327,31 +339,16 @@ libaltos.dylib:
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
-altos.dll: ../libaltos/altos.dll
+altos.dll: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
-altos64.dll: ../libaltos/altos64.dll
+altos64.dll: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
-../libaltos/.libs/libaltos64.so: ../libaltos/.libs/libaltos32.so
-
-../libaltos/.libs/libaltos32.so: build-libaltos
-
-../libaltos/.libs/libaltos.so: build-libaltos
-
-../libaltos/altos.dll: build-altos-dll
-
-../libaltos/altos64.dll: build-altos64-dll
-
 build-libaltos:
 build-libaltos:
-       +cd ../libaltos && make libaltos.la
-build-altos-dll:
-       +cd ../libaltos && make altos.dll
-
-build-altos64-dll:
-       +cd ../libaltos && make altos64.dll
+       +cd ../libaltos && make
 
 $(ALTOSLIB_CLASS):
        -rm -f "$@"
 
 $(ALTOSLIB_CLASS):
        -rm -f "$@"
index 97a9067a5ee2d7d72033531ccabf85c23deece0e..a0cf325d8543ed1f2afcc33e941a8de50eec1dc8 100644 (file)
@@ -89,23 +89,20 @@ public class AltosUILib extends AltosLib {
        static public boolean loaded_library = false;
        static public boolean has_bluetooth = false;
 
        static public boolean loaded_library = false;
        static public boolean has_bluetooth = false;
 
-       static final String[] library_names_32 = { "altos", "altos32", "altos64" };
-       static final String[] library_names_64 = { "altos", "altos64", "altos32" };
+       static final String[] library_names = {
+               "altos",
+               "altos32",
+               "altos64",
+               "altos_i686",
+               "altos_amd64",
+               "altos_aarch64",
+               "altos_armel",
+               "altos_armhf"
+       };
 
        public static boolean load_library() {
                if (!initialized) {
 
        public static boolean load_library() {
                if (!initialized) {
-                       String model = System.getProperty("sun.arch.data.model", "missing");
-                       boolean is_64 = false;
-                       if (model.equals("64")) {
-                               is_64 = true;
-                       } else if (model.equals("32")) {
-                               ;
-                       } else {
-                               String arch = System.getProperty("os.arch", "missing");
-                               if (arch.endsWith("64"))
-                                       is_64 = true;
-                       }
-                       for (String name : is_64 ? library_names_64 : library_names_32) {
+                       for (String name : library_names) {
                                try {
                                        System.loadLibrary(name);
                                        libaltos.altos_init();
                                try {
                                        System.loadLibrary(name);
                                        libaltos.altos_init();
index 8c57b3f9d92f4d7a23e4a9fd28977c46d03074aa..2b9a7aa6b85614a05b542eb8f644b68b1fb06c21 100644 (file)
@@ -1,3 +1,4 @@
+export PATH=$(shell echo "$$PWD:$$PATH")
 AM_CFLAGS=-DLINUX -DPOSIX_TTY -I$(JVM_INCLUDE) -I$(JVM_INCLUDE)/linux
 AM_JAVACFLAGS=$(JAVAC_VERSION_FLAGS) -encoding UTF-8 -Xlint:deprecation -Xlint:unchecked
 
 AM_CFLAGS=-DLINUX -DPOSIX_TTY -I$(JVM_INCLUDE) -I$(JVM_INCLUDE)/linux
 AM_JAVACFLAGS=$(JAVAC_VERSION_FLAGS) -encoding UTF-8 -Xlint:deprecation -Xlint:unchecked
 
@@ -33,27 +34,59 @@ btletest_SOURCES=btletest.c
 btletest_LDADD=-lbluetooth
 
 if MULTI_ARCH
 btletest_LDADD=-lbluetooth
 
 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
+altoslib_LTLIBRARIES+=libaltos_i686.la libaltos_amd64.la libaltos_aarch64.la libaltos_armel.la libaltos_armhf.la
+
+I686=i686-linux-gnu
+libaltos_i686_la_LDFLAGS=-Wl,arch=$(I686) $(libaltos_la_LDFLAGS)
+libaltos_i686_la_CFLAGS=-Warch=i686-linux-gnu $(AM_CFLAGS)
+libaltos_i686_la_SOURCES=$(libaltos_la_SOURCES)
+
+AMD64=x86_64-linux-gnu
+libaltos_amd64_la_LDFLAGS=-Wl,arch=$(AMD64) $(libaltos_la_LDFLAGS)
+libaltos_amd64_la_CFLAGS=-Warch=x86_64-linux-gnu $(AM_CFLAGS)
+libaltos_amd64_la_SOURCES=$(libaltos_la_SOURCES)
+
+AARCH64=aarch64-linux-gnu
+libaltos_aarch64_la_LDFLAGS=-Wl,arch=$(AARCH64) $(libaltos_la_LDFLAGS)
+libaltos_aarch64_la_CFLAGS=-Warch=$(AARCH64) $(AM_CFLAGS)
+libaltos_aarch64_la_SOURCES=$(libaltos_la_SOURCES)
+
+ARMEL=arm-linux-gnueabi
+libaltos_armel_la_LDFLAGS=-Wl,arch=$(ARMEL) $(libaltos_la_LDFLAGS)
+libaltos_armel_la_CFLAGS=-Warch=$(ARMEL) $(AM_CFLAGS)
+libaltos_armel_la_SOURCES=$(libaltos_la_SOURCES)
+
+ARMHF=arm-linux-gnueabihf
+libaltos_armhf_la_LDFLAGS=-Wl,arch=$(ARMHF) $(libaltos_la_LDFLAGS)
+libaltos_armhf_la_CFLAGS=-Warch=$(ARMHF) $(AM_CFLAGS)
+libaltos_armhf_la_SOURCES=$(libaltos_la_SOURCES)
+
+noinst_PROGRAMS+=cjnitest_i686 cjnitest_amd64 cjnitest_aarch64 cjnitest_armel cjnitest_armhf
+
+cjnitest_i686_CFLAGS=$(libaltos_i686_la_CFLAGS)
+cjnitest_i686_LDFLAGS=-Wl,arch=$(I686)
+cjnitest_i686_SOURCES=$(cjnitest_SOURCES)
+cjnitest_i686_LDADD=libaltos_i686.la
+
+cjnitest_amd64_CFLAGS=$(libaltos_amd64_la_CFLAGS)
+cjnitest_amd64_LDFLAGS=-Wl,arch=$(AMD64)
+cjnitest_amd64_SOURCES=$(cjnitest_SOURCES)
+cjnitest_amd64_LDADD=libaltos_amd64.la
+
+cjnitest_aarch64_CFLAGS=$(libaltos_aarch64_la_CFLAGS)
+cjnitest_aarch64_LDFLAGS=-Wl,arch=$(AARCH64)
+cjnitest_aarch64_SOURCES=$(cjnitest_SOURCES)
+cjnitest_aarch64_LDADD=libaltos_aarch64.la
+
+cjnitest_armel_CFLAGS=$(libaltos_armel_la_CFLAGS)
+cjnitest_armel_LDFLAGS=-Wl,arch=$(ARMEL)
+cjnitest_armel_SOURCES=$(cjnitest_SOURCES)
+cjnitest_armel_LDADD=libaltos_armel.la
+
+cjnitest_armhf_CFLAGS=$(libaltos_armhf_la_CFLAGS)
+cjnitest_armhf_LDFLAGS=-Wl,arch=$(ARMHF)
+cjnitest_armhf_SOURCES=$(cjnitest_SOURCES)
+cjnitest_armhf_LDADD=libaltos_armhf.la
 
 endif
 
 
 endif
 
@@ -70,6 +103,9 @@ $(SWIG_FILE): libaltos.i0 $(HFILES)
 
 all-local: classlibaltos.stamp
 
 
 all-local: classlibaltos.stamp
 
+test:
+       which gcc
+
 libaltos_wrap.c: classlibaltos.stamp
 
 classlibaltos.stamp: $(SWIG_FILE)
 libaltos_wrap.c: classlibaltos.stamp
 
 classlibaltos.stamp: $(SWIG_FILE)
@@ -85,12 +121,11 @@ MINGLIBS=-lsetupapi -lws2_32
 
 fat: all altos.dll altos64.dll
 
 
 fat: all altos.dll altos64.dll
 
-#altos.dll: $(WINDOWS_SRC) $(WINDOWS_H)
-#      $(MINGCC32) -o $@ $(MINGFLAGS) -shared $(WINDOWS_SRC) $(MINGLIBS)
+altos.dll: $(WINDOWS_SRC) $(WINDOWS_H)
+       $(MINGCC32) -o $@ $(MINGFLAGS) -shared $(WINDOWS_SRC) $(MINGLIBS)
 
 
-#altos64.dll: $(WINDOWS_SRC) $(WINDOWS_H)
-#      $(MINGCC64) -o $@ $(MINGFLAGS) -shared $(WINDOWS_SRC) $(MINGLIBS)
+altos64.dll: $(WINDOWS_SRC) $(WINDOWS_H)
+       $(MINGCC64) -o $@ $(MINGFLAGS) -shared $(WINDOWS_SRC) $(MINGLIBS)
 
 clean-local:
 
 clean-local:
-       -rm -rf libaltosJNI *.class *.java classlibaltos.stamp $(SWIG_FILE) libaltos_wrap.c
-#      -rm -rf  altos.dll altos64.dll  
+       -rm -rf libaltosJNI *.class *.java classlibaltos.stamp $(SWIG_FILE) libaltos_wrap.c altos.dll altos64.dll
diff --git a/libaltos/gcc b/libaltos/gcc
new file mode 100755 (executable)
index 0000000..da261cc
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+NEW_PATH=`echo $PATH | sed 's/^[^:]*://'`
+PATH=$NEW_PATH
+CC=gcc
+args=()
+for i in "$@"; do
+    case "$i" in
+       -Wl,arch=*)
+           arch=`echo "$i" | sed -e 's/^-Wl,arch=//'`
+           CC="$arch"-gcc
+           ;;
+       -Warch=*)
+           arch=`echo "$i" | sed -e 's/^-Warch=//'`
+           CC="$arch"-gcc
+           ;;
+       *)
+           args+=( "$i" )
+           ;;
+    esac
+done
+echo "          " "$CC" "${args[@]}"
+exec "$CC" "${args[@]}"
index 9a0328d7a2e2fbf44e5dc3e1260fcda3619cc904..09cf9617cf9e07485c4a67c73ed15b363544d615 100644 (file)
@@ -37,7 +37,7 @@ JAR=micropeak.jar
 FATJAR=micropeak-fat.jar
 
 if MULTI_ARCH
 FATJAR=micropeak-fat.jar
 
 if MULTI_ARCH
-LIBALTOS_LINUX=libaltos32.so libaltos64.so
+LIBALTOS_LINUX=libaltos_i686.so libaltos_amd64.so libaltos_aarch64.so libaltos_armel.so libaltos_armhf.so
 else
 LIBALTOS_LINUX=libaltos.so
 endif
 else
 LIBALTOS_LINUX=libaltos.so
 endif
@@ -241,11 +241,23 @@ libaltos.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
-libaltos32.so: build-libaltos
+libaltos_i686.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
-libaltos64.so: build-libaltos
+libaltos_amd64.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_aarch64.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_armel.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_armhf.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
@@ -273,6 +285,7 @@ altos64.dll: ../libaltos/altos64.dll
 
 build-libaltos:
        +cd ../libaltos && make libaltos.la
 
 build-libaltos:
        +cd ../libaltos && make libaltos.la
+
 build-altos-dll:
        +cd ../libaltos && make altos.dll
 
 build-altos-dll:
        +cd ../libaltos && make altos.dll
 
index 26e5dfb82d79ca1b7bcc4cc2a0f5e3c55268fd51..7ab0749cfa01162f0389f01c7f82bab851eb0e9e 100644 (file)
@@ -43,7 +43,7 @@ JAR=telegps.jar
 FATJAR=telegps-fat.jar
 
 if MULTI_ARCH
 FATJAR=telegps-fat.jar
 
 if MULTI_ARCH
-LIBALTOS_LINUX=libaltos32.so libaltos64.so
+LIBALTOS_LINUX=libaltos_i686.so libaltos_amd64.so libaltos_aarch64.so libaltos_armel.so libaltos_armhf.so
 else
 LIBALTOS_LINUX=libaltos.so
 endif
 else
 LIBALTOS_LINUX=libaltos.so
 endif
@@ -244,11 +244,23 @@ libaltos.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
-libaltos32.so: build-libaltos
+libaltos_i686.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
-libaltos64.so: build-libaltos
+libaltos_amd64.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_aarch64.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_armel.so: build-libaltos
+       -rm -f "$@"
+       $(LN_S) ../libaltos/.libs/"$@" .
+
+libaltos_armhf.so: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/.libs/"$@" .
 
@@ -256,31 +268,16 @@ libaltos.dylib:
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
-altos.dll: ../libaltos/altos.dll
+altos.dll: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
-altos64.dll: ../libaltos/altos64.dll
+altos64.dll: build-libaltos
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
        -rm -f "$@"
        $(LN_S) ../libaltos/"$@" .
 
-../libaltos/.libs/libaltos64.so: ../libaltos/.libs/libaltos32.so
-
-../libaltos/.libs/libaltos32.so: build-libaltos
-
-../libaltos/.libs/libaltos.so: build-libaltos
-
-../libaltos/altos.dll: build-altos-dll
-
-../libaltos/altos64.dll: build-altos64-dll
-
 build-libaltos:
 build-libaltos:
-       +cd ../libaltos && make libaltos.la
-build-altos-dll:
-       +cd ../libaltos && make altos.dll
-
-build-altos64-dll:
-       +cd ../libaltos && make altos64.dll
+       +cd ../libaltos && make
 
 $(ALTOSLIB_CLASS):
        -rm -f "$@"
 
 $(ALTOSLIB_CLASS):
        -rm -f "$@"