2 dnl Copyright © 2008,2009 Keith Packard <keithp@keithp.com>
4 dnl This program is free software; you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation; either version 2 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful, but
10 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 dnl General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License along
15 dnl with this program; if not, write to the Free Software Foundation, Inc.,
16 dnl 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
18 dnl Process this file with autoconf to create configure.
21 AC_INIT([altos], 1.9.15)
23 AC_CONFIG_SRCDIR([src/kernel/ao.h])
24 AM_INIT_AUTOMAKE([foreign dist-bzip2])
27 RELEASE_DATE=2023-02-19
28 AC_SUBST(RELEASE_DATE)
30 DOC_DATE=`LC_ALL=C date -d $RELEASE_DATE +'%d %b %Y'`
34 VERSION_DASH=`echo $VERSION | sed 's/\./-/g'`
35 AC_SUBST(VERSION_DASH)
36 AC_SUBST(ANDROID_VERSION)
38 dnl ==========================================================================
39 dnl Java library versions
44 AC_SUBST(ALTOSLIB_VERSION)
45 AC_DEFINE(ALTOSLIB_VERSION,$ALTOSLIB_VERSION,[Version of the AltosLib package])
46 AC_SUBST(ALTOSUILIB_VERSION)
47 AC_DEFINE(ALTOSUILIB_VERSION,$ALTOSUILIB_VERSION,[Version of the AltosUILib package])
49 dnl ==========================================================================
51 AM_CONFIG_HEADER(config.h)
53 AC_ARG_WITH(freetts, AS_HELP_STRING([--with-freetts=PATH],
54 [Set freetts class path (default /usr/share/java)]),
55 [FREETTS=$withval], [FREETTS=/usr/share/java])
59 AC_ARG_WITH(jfreechart, AS_HELP_STRING([--with-jfreechart=PATH],
60 [Set jfreechart class path (default /usr/share/java)]),
61 [JFREECHART=$withval], [JFREECHART=/usr/share/java])
65 AC_ARG_WITH(jcommon, AS_HELP_STRING([--with-jcommon=PATH],
66 [Set jcommon class path (default /usr/share/java)]),
67 [JCOMMON=$withval], [JCOMMON=/usr/share/java])
71 AC_ARG_WITH(jvm, AS_HELP_STRING([--with-jvm=PATH],
72 [Set jvm path for java builds (default searches in /usr/lib/jvm)]),
73 [JVM=$withval], [JVM=auto])
75 if test "x$JVM" = "xauto"; then
76 AC_MSG_CHECKING([JVM])
77 for jvm in default-java java-6-openjdk java-7-openjdk java-8-openjdk java-9-openjdk java-10-openjdk java-11-openjdk java-12-openjdk java-13-openjdk java-6-sun java-8-openjdk-amd64; do
78 if test "x$JVM" = "xauto"; then
79 INCLUDE="/usr/lib/jvm/$jvm/include"
80 if test -f "$INCLUDE"/jni.h; then
81 JVM=/usr/lib/jvm/"$jvm"
85 if test "x$JVM" = "xauto"; then
86 AC_MSG_ERROR([no JVM files found])
91 AC_ARG_WITH(java-version, AS_HELP_STRING([--with-java-version=7],
92 [Set java language compatibility version (default is 7)]),
93 [JAVA_VERSION=$withval], [JAVA_VERSION=7])
95 JAVAC="$JVM"/bin/javac
97 JVM_INCLUDE="$JVM"/include
98 JAVAC_VERSION_FLAGS="-target 1.$JAVA_VERSION -source 1.$JAVA_VERSION"
103 AC_SUBST(JVM_INCLUDE)
104 AC_SUBST(JAVAC_VERSION_FLAGS)
107 AC_ARG_WITH(android, AS_HELP_STRING([--with-android=PATH],
108 [Set android SDK path (default searches in a variety of places)]),
109 [ANDROID_SDK=$withval], [ANDROID_SDK=${ANDROID_SDK:-auto}])
111 if test "x$ANDROID_SDK" = "xauto"; then
112 AC_MSG_CHECKING([Android SDK])
113 for sdk in ../android/android-sdk-linux ../android/android-sdk ../android-sdk ../android-sdk-linux $HOME/android; do
114 if test "x$ANDROID_SDK" = "xauto"; then
116 if test -f "$SDK/SDK Readme.txt"; then
117 ANDROID_SDK=`readlink -m "$SDK"`
121 if test "x$ANDROID_SDK" = "xauto"; then
122 AC_MSG_NOTICE([no Android SDK found])
125 AC_MSG_RESULT([$ANDROID_SDK])
127 if test "x$ANDROID_SDK" != "xno"; then
128 AC_MSG_CHECKING([Android SDK version])
129 SDK_VERSION=`grep -i '^Pkg.Revision=' $ANDROID_SDK/tools/source.properties | cut -f2- -d= | sed s/^r//`
130 SDK_MAJOR_VERSION="`echo $SDK_VERSION | sed 's/[[^0-9]].*//'`"
131 if test "$SDK_MAJOR_VERSION" -lt 17 ; then
132 AC_MSG_NOTICE([SDK version $SDK_VERSION is too old. Need >= r17])
135 AC_MSG_RESULT([$SDK_VERSION])
138 if test "x$ANDROID_SDK" != "xno"; then
139 AC_MSG_CHECKING([Android SDK API Level])
140 if test -f "$ANDROID_SDK/platforms/android-10/source.properties"; then
141 API_LEVEL=`sed -ne 's/^AndroidVersion.ApiLevel=//p' $ANDROID_SDK/platforms/android-10/source.properties`
142 if test "$API_LEVEL" = "10"; then
143 AC_MSG_RESULT([$API_LEVEL])
145 AC_MSG_NOTICE([API Level 10 not installed correctly.])
149 AC_MSG_NOTICE([API Level 10 not installed, but is required.])
153 if test "x$ANDROID_SDK" != "xno"; then
154 AC_MSG_CHECKING([Android SDK required extras])
155 if test -f "$ANDROID_SDK/extras/android/support/source.properties"; then
156 ANDROID_SUPPORT_LIB_NAME=`sed -ne 's/^Extra.NameDisplay=//p' $ANDROID_SDK/extras/android/support/source.properties`
157 if test -f "$ANDROID_SDK/extras/google/google_play_services/source.properties"; then
158 GOOGLE_PLAY_SERVICES_NAME=`sed -ne 's/^Extra.NameDisplay=//p' $ANDROID_SDK/extras/google/google_play_services/source.properties`
159 AC_MSG_RESULT([$ANDROID_SUPPORT_LIB_NAME, $GOOGLE_PLAY_SERVICES_NAME])
161 AC_MSG_NOTICE([Google Play Services library not installed.])
165 AC_MSG_NOTICE([Android Support Library not installed.])
171 if test "x$ANDROID_SDK" != "xno"; then
172 HAVE_ANDROID_SDK="yes"
175 HAVE_ANDROID_SDK="no"
178 AM_CONDITIONAL([ANDROID], [test x$ANDROID_SDK != xno])
179 AM_CONDITIONAL([ANDROID_RELEASE], [test x$ANDROID_RELEASE = xyes])
181 AC_SUBST(ANDROID_SDK)
183 AC_ARG_WITH(fat-dir, AS_HELP_STRING([--with-fat-dir=PATH],
184 [Set the directory to install the 'fat-install' distribution files to (defaults to no such target)]),
185 [FATDIR=$withval], [FATDIR=none])
187 AM_CONDITIONAL(FATINSTALL, [test "x$FATDIR" != "xnone"])
191 AC_ARG_WITH(google-key, AS_HELP_STRING([--with-google-key=PATH],
192 [Set the file to read the AltosDroid maps API key from (defaults to ~/altusmetrumllc/google-altosdroid-maps-api-key)]),
193 [GOOGLEKEYFILE=$withval], [GOOGLEKEYFILE=$HOME/altusmetrumllc/google-altosdroid-maps-api-key])
195 if test -r "$GOOGLEKEYFILE" -a -s "$GOOGLEKEYFILE"; then
196 GOOGLEKEY=`cat "$GOOGLEKEYFILE"`
197 HAVE_GOOGLE_KEY="yes"
203 AC_ARG_WITH(windows-key, AS_HELP_STRING([--with-windows-key=PATH],
204 [Set the file containing the Windows installer signing key (defaults to ~/altusmetrumllc/ssl.com/altus_metrum,_llc.p12)]),
205 [WINDOWSKEYFILE="$withval"], [WINDOWSKEYFILE=$HOME/altusmetrumllc/ssl.com/altus_metrum,_llc.p12])
207 AC_ARG_WITH(windows-key-pass, AS_HELP_STRING([--with-windows-key-pass=PATH],
208 [Set the file containing the Windows installer signing key password (defaults to ~/altusmetrumllc/ssl.com/password)]),
209 [WINDOWSKEYPASSFILE="$withval"], [WINDOWSKEYPASSFILE=$HOME/altusmetrumllc/ssl.com/password])
211 AC_CHECK_PROG(jsign, jsign, "yes", "no")
213 if test -s "$WINDOWSKEYFILE" -a -s "$WINDOWSKEYPASSFILE" -a "$jsign" = yes; then
214 HAVE_WINDOWS_KEY="yes"
216 HAVE_WINDOWS_KEY="no"
219 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs"
220 AC_SUBST(WARN_CFLAGS)
222 AC_ARG_ENABLE(faketime, AS_HELP_STRING([--enable-faketime],
223 [Use faketime program to ensure pdf files are reproducible (default=no)]),
224 [FAKETIME=$enableval], [FAKETIME=no])
226 AM_CONDITIONAL(FAKETIME, [test x$FAKETIME = xyes])
229 AC_SUBST(WINDOWSKEYFILE)
230 AC_SUBST(WINDOWSKEYPASSFILE)
231 AC_SUBST(HAVE_WINDOWS_KEY)
240 if test "x$GCC" = "xyes"; then
241 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
242 -Wmissing-prototypes -Wmissing-declarations \
243 -Wnested-externs -fno-strict-aliasing"
244 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
245 [Can use #warning in C files])
247 AC_SUBST(WARN_CFLAGS)
250 # Configure ARM compiler for STM32L and LPC11U14
253 AC_ARG_WITH([arm-cc],
254 [AS_HELP_STRING([--with-arm-cc],
255 [Name of ARM C compiler])],
259 if test "x$with_arm_cc" != "xno"; then
260 if test "x$with_arm_cc" = "xauto"; then
261 with_arm_cc="arm-none-eabi-gcc"
262 AC_CHECK_PROG([HAVE_ARM_CC],[$with_arm_cc], yes, no)
270 if test "x$HAVE_ARM_CC" = "xno"; then
271 AC_MSG_WARN([Arm compiler not found, ARM binaries will not be built])
275 AC_SUBST(HAVE_ARM_CC)
278 if test "x$HAVE_ARM_CC" = "xyes"; then
280 save_CFLAGS="$CFLAGS"
283 CFLAGS="-mthumb -mcpu=cortex-m0"
284 LIBS="--specs=picolibc.specs"
287 AC_MSG_CHECKING([if ]$ARM_CC[ supports cortex-m0])
288 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
289 [HAVE_ARM_M0_CC=yes],
291 AC_MSG_RESULT([$HAVE_ARM_M0_CC])
293 CFLAGS="-mthumb -mcpu=cortex-m3"
294 AC_MSG_CHECKING([if ]$ARM_CC[ supports cortex-m3])
295 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
296 [HAVE_ARM_M3_CC=yes],
298 AC_MSG_RESULT([$HAVE_ARM_M3_CC])
302 CFLAGS="$save_CFLAGS"
308 AC_SUBST(HAVE_ARM_M3_CC)
309 AC_SUBST(HAVE_ARM_M0_CC)
311 if test "x$HAVE_ARM_M3_CC" = "xno"; then
312 AC_MSG_WARN([No cortex-m3 arm compiler found, STM32L binaries will not be built])
315 if test "x$HAVE_ARM_M0_CC" = "xno"; then
316 AC_MSG_WARN([No cortex-m0 arm compiler found, LPC11U14 and STM32F0 binaries will not be built])
322 # Configure AVR compiler
325 AC_ARG_WITH([avr-cc],
326 [AS_HELP_STRING([--with-avr-cc],
327 [Name of AVR C compiler])],
331 if test "x$with_avr_cc" != "xno"; then
332 if test "x$with_avr_cc" = "xauto"; then
333 with_avr_cc="avr-gcc"
334 AC_CHECK_PROG([HAVE_AVR_CC],[$with_avr_cc], yes, no)
342 AC_ARG_WITH([avr-objcopy],
343 [AS_HELP_STRING([--with-avr-objcopy],
344 [Name of AVR objcopy])],
346 [with_avr_objcopy=auto])
348 if test "x$with_avr_objcopy" != "xno"; then
349 if test "x$with_avr_objcopy" = "xauto"; then
350 with_avr_objcopy="avr-objcopy"
351 AC_CHECK_PROG([HAVE_AVR_OBJCOPY],[$with_avr_objcopy], yes, no)
359 if test "x$HAVE_AVR_CC" = "xno" -o "x$HAVE_AVR_OBJCOPY" = "xno"; then
360 AC_MSG_WARN([AVR compiler and objcopy not found, atmel binaries will not be built])
364 save_CFLAGS="$CFLAGS"
368 CFLAGS="-mmcu=attiny85"
370 AC_MSG_CHECKING([if ]$with_avr_cc[ can link programs])
371 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
374 AC_MSG_RESULT([$AVR_LINK])
378 CFLAGS="$save_CFLAGS"
381 if test "x$AVR_LINK" = xyes; then
383 AVR_OBJCOPY=$with_avr_objcopy
390 AC_SUBST(AVR_OBJCOPY)
391 AC_SUBST(HAVE_AVR_CC)
393 AC_CHECK_PROG([HAVE_NICKLE], [nickle], yes, no)
394 if test "x$HAVE_NICKLE" = "xno"; then
395 AC_MSG_ERROR([Please install nickle to build AltOs])
398 AC_CHECK_PROG([HAVE_ASCIIDOCTOR_PDF], [asciidoctor-pdf], yes, no)
399 if test "x$HAVE_ASCIIDOCTOR_PDF" = "xno"; then
400 AC_MSG_WARN([asciidoctor-pdf not found, PDF docs will not be built])
402 AM_CONDITIONAL([ASCIIDOCTOR_PDF], [test x$HAVE_ASCIIDOCTOR_PDF != xno])
404 AC_ARG_WITH([strip-nondeterminism],
405 [AS_HELP_STRING([--with-strip-nondeterminism],
406 [Name of non-deterministic build data stripping tool])],
408 [with_strip_nondeterminism=auto])
410 if test "x$with_strip_nondeterminism" != "xno"; then
411 if test "x$with_strip_nondeterminism" = "xauto"; then
412 with_strip_nondeterminism="strip-nondeterminism"
413 AC_CHECK_PROG([HAVE_STRIP_NONDETERMINISM],[$with_strip_nondeterminism], yes, no)
415 HAVE_STRIP_NONDETERMINISM=yes
418 HAVE_STRIP_NONDETERMINISM=no
420 AM_CONDITIONAL([STRIP_NONDETERMINISM], [test x$HAVE_STRIP_NONDETERMINISM != xno])
421 AC_SUBST(STRIP_NONDETERMINISM, "$with_strip_nondeterminism")
423 PKG_CHECK_MODULES([JANSSON], [jansson])
425 AC_ARG_WITH([readline],
426 [AS_HELP_STRING([--with-readline],
427 [enable readline functionality in ao-dbg @<:@default=auto@:>@])],
429 [with_readline=auto])
433 if test x"$with_readline" != "xno"; then
434 AC_CHECK_LIB([readline], [main],
435 [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
436 AC_DEFINE([HAVE_LIBREADLINE], [1],
437 [Define if you have libreadline])],
438 [if test "x$with_readline" != xauto; then
439 AC_MSG_ERROR([--with-readline was given, but test for readline failed])
444 PKG_CHECK_MODULES([LIBUSB], [libusb-1.0])
446 AC_CHECK_HEADERS(libelf.h libelf/libelf.h, [break])
447 AC_CHECK_HEADERS(gelf.h libelf/gelf.h, [break])
449 AC_ARG_WITH([stlink],
450 [AS_HELP_STRING([--with-stlink],
451 [Build tools that use the stlink library (default: auto)])],
455 if test x"$with_stlink" != "xno"; then
456 PKG_CHECK_MODULES([STLINK], [stlink], [HAVE_STLINK=yes], [HAVE_STLINK=no])
457 if test x"$HAVE_STLINK" = "xno" -a x"$with_stlink" != "xauto"; then
458 AC_MSG_ERROR([--with-stlink was given, but stlink was not found])
464 if test x"$HAVE_STLINK" = "xyes"; then
465 AC_DEFINE(HAVE_STLINK,1,[Using STlink library])
468 AM_CONDITIONAL([LIBSTLINK], [test x$HAVE_STLINK = xyes])
470 AC_ARG_ENABLE([multi-arch],
471 [AS_HELP_STRING([--enable-multi-arch],
472 [enable building both i386 and amd64 libraries (default=auto)])],
473 [MULTI_ARCH=$enableval],
476 case x"$MULTI_ARCH" in
481 save_CFLAGS="$CFLAGS"
485 AC_MSG_CHECKING([if ]$CC[ ]$CFLAGS[ can link programs])
486 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
489 AC_MSG_RESULT([$M64_LINK])
491 AC_MSG_CHECKING([if ]$CC[ ]$CFLAGS[ can link programs])
492 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
495 AC_MSG_RESULT([$M32_LINK])
496 CFLAGS="$save_CFLAGS"
498 case x"$M64_LINK"x"$M32_LINK" in
519 AM_CONDITIONAL([MULTI_ARCH], [test x$MULTI_ARCH = xyes])
521 AC_ARG_ENABLE([install-shared-mime-info],
522 [AS_HELP_STRING([--disable-install-shared-mime-info],
523 [disable installing shared mime info files (default=yes)])],
524 [INSTALL_SHARED_MIME_INFO=$enableval],
525 [INSTALL_SHARED_MIME_INFO=yes])
527 AM_CONDITIONAL([INSTALL_SHARED_MIME_INFO], [test x$INSTALL_SHARED_MIME_INFO = xyes])
532 src/chaoskey-v1.0/org.altusmetrum.ChaosKey.metainfo.xml
535 altoslib/AltosVersion.java
540 altosui/altos-windows.nsi
544 micropeak/micropeak-windows.nsi
547 telegps/telegps-windows.nsi
549 altosdroid/local.properties
550 altosdroid/app/src/main/AndroidManifest.xml
551 altosdroid/app/build.gradle
553 ao-tools/lib/Makefile
554 ao-tools/ao-rawload/Makefile
555 ao-tools/ao-dbg/Makefile
556 ao-tools/ao-bitbang/Makefile
557 ao-tools/ao-eeprom/Makefile
558 ao-tools/ao-list/Makefile
559 ao-tools/ao-load/Makefile
560 ao-tools/ao-telem/Makefile
561 ao-tools/ao-stmload/Makefile
562 ao-tools/ao-send-telem/Makefile
563 ao-tools/ao-sky-flash/Makefile
564 ao-tools/ao-dumpflash/Makefile
565 ao-tools/ao-edit-telem/Makefile
566 ao-tools/ao-dump-up/Makefile
567 ao-tools/ao-elftohex/Makefile
568 ao-tools/ao-usbload/Makefile
569 ao-tools/ao-flash/Makefile
570 ao-tools/ao-test-igniter/Makefile
571 ao-tools/ao-test-baro/Makefile
572 ao-tools/ao-test-flash/Makefile
573 ao-tools/ao-test-pressure/Makefile
574 ao-tools/ao-cal-accel/Makefile
575 ao-tools/ao-cal-freq/Makefile
576 ao-tools/ao-test-gps/Makefile
577 ao-tools/ao-usbtrng/Makefile
578 ao-tools/ao-makebin/Makefile
581 map-server/altos-mapd/Makefile
582 map-server/altos-map/Makefile
583 map-server/altos-mapj/Makefile
587 echo " Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
589 echo " Configuration"
590 echo " Arm compiler................: ${ARM_CC}"
591 echo " STM32L support..............: ${HAVE_ARM_M3_CC}"
592 echo " LPC11U14 support............: ${HAVE_ARM_M0_CC}"
593 echo " AVR compiler................: ${AVR_CC} ${AVR_OBJCOPY}"
594 echo " AVR support.................: ${HAVE_AVR_CC}"
595 echo " Android support.............: ${HAVE_ANDROID_SDK}"
596 echo " Android release support.....: ${ANDROID_RELEASE}"
597 echo " STlink support..............: ${HAVE_STLINK}"
598 echo " i386 and amd64 libaltos.....: ${MULTI_ARCH}"
599 echo " install shared mime info....: ${INSTALL_SHARED_MIME_INFO}"
600 echo " Strip jar timestamps........: ${STRIP_NONDETERMINISM}"
603 echo " freetts.....................: ${FREETTS}"
604 echo " jfreechart..................: ${JFREECHART}"
605 echo " jcommon.....................: ${JCOMMON}"
606 echo " JVM include.................: ${JVM_INCLUDE}"
607 echo " AltosDroid maps API key.....: ${HAVE_GOOGLE_KEY}"
608 echo " Windows installer key.......: ${HAVE_WINDOWS_KEY}"
609 if test x${ANDROID_SDK} != "xno"; then
612 echo " Android SDK.................: ${ANDROID_SDK}"