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.
23 AC_CONFIG_SRCDIR([src/kernel/ao.h])
24 AM_INIT_AUTOMAKE([foreign dist-bzip2])
27 RELEASE_DATE=2018-12-31
28 AC_SUBST(RELEASE_DATE)
30 VERSION_DASH=`echo $VERSION | sed 's/\./-/g'`
31 AC_SUBST(VERSION_DASH)
32 AC_SUBST(ANDROID_VERSION)
34 dnl ==========================================================================
35 dnl Java library versions
40 AC_SUBST(ALTOSLIB_VERSION)
41 AC_DEFINE(ALTOSLIB_VERSION,$ALTOSLIB_VERSION,[Version of the AltosLib package])
42 AC_SUBST(ALTOSUILIB_VERSION)
43 AC_DEFINE(ALTOSUILIB_VERSION,$ALTOSUILIB_VERSION,[Version of the AltosUILib package])
45 dnl ==========================================================================
47 AM_CONFIG_HEADER(config.h)
49 AC_ARG_WITH(freetts, AS_HELP_STRING([--with-freetts=PATH],
50 [Set freetts class path (default /usr/share/java)]),
51 [FREETTS=$withval], [FREETTS=/usr/share/java])
55 AC_ARG_WITH(jfreechart, AS_HELP_STRING([--with-jfreechart=PATH],
56 [Set jfreechart class path (default /usr/share/java)]),
57 [JFREECHART=$withval], [JFREECHART=/usr/share/java])
61 AC_ARG_WITH(jcommon, AS_HELP_STRING([--with-jcommon=PATH],
62 [Set jcommon class path (default /usr/share/java)]),
63 [JCOMMON=$withval], [JCOMMON=/usr/share/java])
67 AC_ARG_WITH(jvm, AS_HELP_STRING([--with-jvm-include=PATH],
68 [Set jvm include path for jni builds (default searches in /usr/lib/jvm)]),
69 [JVM_INCLUDE=$withval], [JVM_INCLUDE=auto])
71 if test "x$JVM_INCLUDE" = "xauto"; then
72 AC_MSG_CHECKING([JVM include files])
73 for jvm in default-java java-6-openjdk java-6-sun; do
74 if test "x$JVM_INCLUDE" = "xauto"; then
75 INCLUDE="/usr/lib/jvm/$jvm/include"
76 if test -f "$INCLUDE"/jni.h; then
77 JVM_INCLUDE="$INCLUDE"
81 if test "x$JVM_INCLUDE" = "xauto"; then
82 AC_MSG_ERROR([no JVM include files found])
84 AC_MSG_RESULT([$JVM_INCLUDE])
89 AC_ARG_WITH(android, AS_HELP_STRING([--with-android=PATH],
90 [Set android SDK path (default searches in a variety of places)]),
91 [ANDROID_SDK=$withval], [ANDROID_SDK=${ANDROID_SDK:-auto}])
93 if test "x$ANDROID_SDK" = "xauto"; then
94 AC_MSG_CHECKING([Android SDK])
95 for sdk in ../android/android-sdk-linux ../android/android-sdk ../android-sdk ../android-sdk-linux $HOME/android; do
96 if test "x$ANDROID_SDK" = "xauto"; then
98 if test -f "$SDK/SDK Readme.txt"; then
99 ANDROID_SDK=`readlink -m "$SDK"`
103 if test "x$ANDROID_SDK" = "xauto"; then
104 AC_MSG_NOTICE([no Android SDK found])
107 AC_MSG_RESULT([$ANDROID_SDK])
109 if test "x$ANDROID_SDK" != "xno"; then
110 AC_MSG_CHECKING([Android SDK version])
111 SDK_VERSION=`grep -i '^Pkg.Revision=' $ANDROID_SDK/tools/source.properties | cut -f2- -d= | sed s/^r//`
112 SDK_MAJOR_VERSION="`echo $SDK_VERSION | sed 's/[[^0-9]].*//'`"
113 if test "$SDK_MAJOR_VERSION" -lt 17 ; then
114 AC_MSG_NOTICE([SDK version $SDK_VERSION is too old. Need >= r17])
117 AC_MSG_RESULT([$SDK_VERSION])
120 if test "x$ANDROID_SDK" != "xno"; then
121 AC_MSG_CHECKING([Android SDK API Level])
122 if test -f "$ANDROID_SDK/platforms/android-10/source.properties"; then
123 API_LEVEL=`sed -ne 's/^AndroidVersion.ApiLevel=//p' $ANDROID_SDK/platforms/android-10/source.properties`
124 if test "$API_LEVEL" = "10"; then
125 AC_MSG_RESULT([$API_LEVEL])
127 AC_MSG_NOTICE([API Level 10 not installed correctly.])
131 AC_MSG_NOTICE([API Level 10 not installed, but is required.])
135 if test "x$ANDROID_SDK" != "xno"; then
136 AC_MSG_CHECKING([Android SDK required extras])
137 if test -f "$ANDROID_SDK/extras/android/support/source.properties"; then
138 ANDROID_SUPPORT_LIB_NAME=`sed -ne 's/^Extra.NameDisplay=//p' $ANDROID_SDK/extras/android/support/source.properties`
139 if test -f "$ANDROID_SDK/extras/google/google_play_services/source.properties"; then
140 GOOGLE_PLAY_SERVICES_NAME=`sed -ne 's/^Extra.NameDisplay=//p' $ANDROID_SDK/extras/google/google_play_services/source.properties`
141 AC_MSG_RESULT([$ANDROID_SUPPORT_LIB_NAME, $GOOGLE_PLAY_SERVICES_NAME])
143 AC_MSG_NOTICE([Google Play Services library not installed.])
147 AC_MSG_NOTICE([Android Support Library not installed.])
153 if test "x$ANDROID_SDK" != "xno"; then
154 HAVE_ANDROID_SDK="yes"
155 if test -f "$HOME/altusmetrumllc/google-play-release.keystore" -a -f "$HOME/altusmetrumllc/google-play-passphrase"; then
159 HAVE_ANDROID_SDK="no"
162 AM_CONDITIONAL([ANDROID], [test x$ANDROID_SDK != xno])
163 AM_CONDITIONAL([ANDROID_RELEASE], [test x$ANDROID_RELEASE = xyes])
165 AC_SUBST(ANDROID_SDK)
167 AC_ARG_WITH(fat-dir, AS_HELP_STRING([--with-fat-dir=PATH],
168 [Set the directory to install the 'fat-install' distribution files to (defaults to no such target)]),
169 [FATDIR=$withval], [FATDIR=none])
171 AM_CONDITIONAL(FATINSTALL, [test "x$FATDIR" != "xnone"])
175 AC_ARG_WITH(google-key, AS_HELP_STRING([--with-google-key=PATH],
176 [Set the file to read the AltosDroid maps API key from (defaults to ~/altusmetrumllc/google-altosdroid-maps-api-key)]),
177 [GOOGLEKEYFILE=$withval], [GOOGLEKEYFILE=$HOME/altusmetrumllc/google-altosdroid-maps-api-key])
179 if test -r "$GOOGLEKEYFILE" -a -s "$GOOGLEKEYFILE"; then
180 GOOGLEKEY=`cat "$GOOGLEKEYFILE"`
181 HAVE_GOOGLE_KEY="yes"
187 AC_ARG_ENABLE(faketime, AS_HELP_STRING([--enable-faketime],
188 [Use faketime program to ensure pdf files are reproducible (default=no)]),
189 [FAKETIME=$enableval], [FAKETIME=no])
191 AM_CONDITIONAL(FAKETIME, [test x$FAKETIME = xyes])
202 if test "x$GCC" = "xyes"; then
203 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
204 -Wmissing-prototypes -Wmissing-declarations \
205 -Wnested-externs -fno-strict-aliasing"
206 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
207 [Can use #warning in C files])
209 AC_SUBST(WARN_CFLAGS)
212 # Configure ARM compiler for STM32L and LPC11U14
215 AC_ARG_WITH([arm-cc],
216 [AS_HELP_STRING([--with-arm-cc],
217 [Name of ARM C compiler])],
221 if test "x$with_arm_cc" != "xno"; then
222 if test "x$with_arm_cc" = "xauto"; then
223 with_arm_cc="arm-none-eabi-gcc"
224 AC_CHECK_PROG([HAVE_ARM_CC],[$with_arm_cc], yes, no)
232 if test "x$HAVE_ARM_CC" = "xno"; then
233 AC_MSG_WARN([Arm compiler not found, ARM binaries will not be built])
237 AC_SUBST(HAVE_ARM_CC)
240 if test "x$HAVE_ARM_CC" = "xyes"; then
242 save_CFLAGS="$CFLAGS"
245 CFLAGS="-mthumb -mcpu=cortex-m0"
246 LIBS="-ffreestanding -nostdlib"
249 AC_MSG_CHECKING([if ]$ARM_CC[ supports cortex-m0])
250 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int i;])],
251 [HAVE_ARM_M0_CC=yes],
253 AC_MSG_RESULT([$HAVE_ARM_M0_CC])
255 CFLAGS="-mthumb -mcpu=cortex-m3"
256 AC_MSG_CHECKING([if ]$ARM_CC[ supports cortex-m3])
257 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int i;])],
258 [HAVE_ARM_M3_CC=yes],
260 AC_MSG_RESULT([$HAVE_ARM_M3_CC])
264 CFLAGS="$save_CFLAGS"
270 AC_SUBST(HAVE_ARM_M3_CC)
271 AC_SUBST(HAVE_ARM_M0_CC)
273 if test "x$HAVE_ARM_M3_CC" = "xno"; then
274 AC_MSG_WARN([No cortex-m3 arm compiler found, STM32L binaries will not be built])
277 if test "x$HAVE_ARM_M0_CC" = "xno"; then
278 AC_MSG_WARN([No cortex-m0 arm compiler found, LPC11U14 binaries will not be built])
281 AC_ARG_WITH([newlib-nano],
282 [AS_HELP_STRING([--with-newlib-nano],
283 [Root of newlib nano install])],
285 [with_newlib_nano=auto])
288 if test "x$with_newlib_nano" != "xno"; then
289 if test "x$with_newlib_nano" = "xauto"; then
290 for d in /usr/local/lib/newlib-nano /usr/lib/newlib-nano; do
291 if test "x$with_newlib_nano" = "xauto" -a -d "$d"; then
292 with_newlib_nano="$d"
301 if test "x$HAVE_NEWLIB_NANO" = "xno"; then
302 AC_MSG_WARN([No newlib-nano library found, ARM binaries will not be built])
306 NEWLIB_NANO="$with_newlib_nano"
309 AC_SUBST(HAVE_NEWLIB_NANO)
310 AC_SUBST(NEWLIB_NANO)
313 # Configure AVR compiler
316 AC_ARG_WITH([avr-cc],
317 [AS_HELP_STRING([--with-avr-cc],
318 [Name of AVR C compiler])],
322 if test "x$with_avr_cc" != "xno"; then
323 if test "x$with_avr_cc" = "xauto"; then
324 with_avr_cc="avr-gcc"
325 AC_CHECK_PROG([HAVE_AVR_CC],[$with_avr_cc], yes, no)
333 AC_ARG_WITH([avr-objcopy],
334 [AS_HELP_STRING([--with-avr-objcopy],
335 [Name of AVR objcopy])],
337 [with_avr_objcopy=auto])
339 if test "x$with_avr_objcopy" != "xno"; then
340 if test "x$with_avr_objcopy" = "xauto"; then
341 with_avr_objcopy="avr-objcopy"
342 AC_CHECK_PROG([HAVE_AVR_OBJCOPY],[$with_avr_objcopy], yes, no)
350 if test "x$HAVE_AVR_CC" = "xno" -o "x$HAVE_AVR_OBJCOPY" = "xno"; then
351 AC_MSG_WARN([AVR compiler and objcopy not found, atmel binaries will not be built])
355 save_CFLAGS="$CFLAGS"
359 CFLAGS="-mmcu=attiny85"
361 AC_MSG_CHECKING([if ]$with_avr_cc[ can link programs])
362 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
365 AC_MSG_RESULT([$AVR_LINK])
369 CFLAGS="$save_CFLAGS"
372 if test "x$AVR_LINK" = xyes; then
374 AVR_OBJCOPY=$with_avr_objcopy
381 AC_SUBST(AVR_OBJCOPY)
382 AC_SUBST(HAVE_AVR_CC)
384 AC_CHECK_PROG([HAVE_NICKLE], [nickle], yes, no)
385 if test "x$HAVE_NICKLE" = "xno"; then
386 AC_MSG_ERROR([Please install nickle to build AltOs])
389 AC_CHECK_PROG([HAVE_ASCIIDOCTOR_PDF], [asciidoctor-pdf], yes, no)
390 if test "x$HAVE_ASCIIDOCTOR_PDF" = "xno"; then
391 AC_MSG_WARN([asciidoctor-pdf not found, PDF docs will not be built])
393 AM_CONDITIONAL([ASCIIDOCTOR_PDF], [test x$HAVE_ASCIIDOCTOR_PDF != xno])
395 PKG_CHECK_MODULES([JANSSON], [jansson])
397 AC_ARG_WITH([readline],
398 [AS_HELP_STRING([--with-readline],
399 [enable readline functionality in ao-dbg @<:@default=auto@:>@])],
401 [with_readline=auto])
405 if test x"$with_readline" != "xno"; then
406 AC_CHECK_LIB([readline], [main],
407 [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
408 AC_DEFINE([HAVE_LIBREADLINE], [1],
409 [Define if you have libreadline])],
410 [if test "x$with_readline" != xauto; then
411 AC_MSG_ERROR([--with-readline was given, but test for readline failed])
416 PKG_CHECK_MODULES([LIBUSB], [libusb-1.0])
418 AC_CHECK_HEADERS(libelf.h libelf/libelf.h, [break])
419 AC_CHECK_HEADERS(gelf.h libelf/gelf.h, [break])
421 AC_ARG_WITH([stlink],
422 [AS_HELP_STRING([--with-stlink],
423 [Build tools that use the stlink library (default: auto)])],
427 if test x"$with_stlink" != "xno"; then
428 PKG_CHECK_MODULES([STLINK], [stlink], [HAVE_STLINK=yes], [HAVE_STLINK=no])
429 if test x"$HAVE_STLINK" = "xno" -a x"$with_stlink" != "xauto"; then
430 AC_MSG_ERROR([--with-stlink was given, but stlink was not found])
436 if test x"$HAVE_STLINK" = "xyes"; then
437 AC_DEFINE(HAVE_STLINK,1,[Using STlink library])
440 AM_CONDITIONAL([LIBSTLINK], [test x$HAVE_STLINK = xyes])
442 AC_ARG_ENABLE([multi-arch],
443 [AS_HELP_STRING([--enable-multi-arch],
444 [enable building both i386 and amd64 libraries (default=auto)])],
445 [MULTI_ARCH=$enableval],
448 case x"$MULTI_ARCH" in
453 save_CFLAGS="$CFLAGS"
457 AC_MSG_CHECKING([if ]$CC[ ]$CFLAGS[ can link programs])
458 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
461 AC_MSG_RESULT([$M64_LINK])
463 AC_MSG_CHECKING([if ]$CC[ ]$CFLAGS[ can link programs])
464 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
467 AC_MSG_RESULT([$M32_LINK])
468 CFLAGS="$save_CFLAGS"
470 case x"$M64_LINK"x"$M32_LINK" in
491 AM_CONDITIONAL([MULTI_ARCH], [test x$MULTI_ARCH = xyes])
493 AC_ARG_ENABLE([install-shared-mime-info],
494 [AS_HELP_STRING([--disable-install-shared-mime-info],
495 [disable installing shared mime info files (default=yes)])],
496 [INSTALL_SHARED_MIME_INFO=$enableval],
497 [INSTALL_SHARED_MIME_INFO=yes])
499 AM_CONDITIONAL([INSTALL_SHARED_MIME_INFO], [test x$INSTALL_SHARED_MIME_INFO = xyes])
504 src/chaoskey-v1.0/org.altusmetrum.ChaosKey.metainfo.xml
507 altoslib/AltosVersion.java
512 altosui/altos-windows.nsi
516 micropeak/micropeak-windows.nsi
519 telegps/telegps-windows.nsi
521 altosdroid/local.properties
522 altosdroid/AndroidManifest.xml
524 ao-tools/lib/Makefile
525 ao-tools/ao-rawload/Makefile
526 ao-tools/ao-dbg/Makefile
527 ao-tools/ao-bitbang/Makefile
528 ao-tools/ao-eeprom/Makefile
529 ao-tools/ao-list/Makefile
530 ao-tools/ao-load/Makefile
531 ao-tools/ao-telem/Makefile
532 ao-tools/ao-stmload/Makefile
533 ao-tools/ao-send-telem/Makefile
534 ao-tools/ao-sky-flash/Makefile
535 ao-tools/ao-dumpflash/Makefile
536 ao-tools/ao-edit-telem/Makefile
537 ao-tools/ao-dump-up/Makefile
538 ao-tools/ao-elftohex/Makefile
539 ao-tools/ao-usbload/Makefile
540 ao-tools/ao-flash/Makefile
541 ao-tools/ao-test-igniter/Makefile
542 ao-tools/ao-test-baro/Makefile
543 ao-tools/ao-test-flash/Makefile
544 ao-tools/ao-cal-accel/Makefile
545 ao-tools/ao-cal-freq/Makefile
546 ao-tools/ao-test-gps/Makefile
547 ao-tools/ao-usbtrng/Makefile
548 ao-tools/ao-chaosread/Makefile
549 ao-tools/ao-makebin/Makefile
552 map-server/altos-mapd/Makefile
553 map-server/altos-map/Makefile
554 map-server/altos-mapj/Makefile
559 echo " Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
561 echo " Configuration"
562 echo " Arm compiler................: ${ARM_CC}"
563 echo " STM32L support..............: ${HAVE_ARM_M3_CC}"
564 echo " LPC11U14 support............: ${HAVE_ARM_M0_CC}"
565 echo " AVR compiler................: ${AVR_CC} ${AVR_OBJCOPY}"
566 echo " AVR support.................: ${HAVE_AVR_CC}"
567 echo " Android support.............: ${HAVE_ANDROID_SDK}"
568 echo " Android release support.....: ${ANDROID_RELEASE}"
569 echo " STlink support..............: ${HAVE_STLINK}"
570 echo " Newlib-nano support.........: ${NEWLIB_NANO}"
571 echo " i386 and amd64 libaltos.....: ${MULTI_ARCH}"
572 echo " install shared mime info....: ${INSTALL_SHARED_MIME_INFO}"
575 echo " freetts.....................: ${FREETTS}"
576 echo " jfreechart..................: ${JFREECHART}"
577 echo " jcommon.....................: ${JCOMMON}"
578 echo " JVM include.................: ${JVM_INCLUDE}"
579 echo " AltosDroid maps API key.....: ${HAVE_GOOGLE_KEY}"
580 if test x${ANDROID_SDK} != "xno"; then
583 echo " Android SDK.................: ${ANDROID_SDK}"