fi
AC_SUBST(WARN_CFLAGS)
-AC_CHECK_PROG([HAVE_SDCC], [sdcc], yes, no)
+#
+# Configure SDCC
+#
+
+AC_ARG_WITH([sdcc],
+ [AS_HELP_STRING([--with-sdcc],
+ [Name of SDCC])],
+ [],
+ [with_sdcc=auto])
+
+if test "x$with_sdcc" != "xno"; then
+ if test "x$with_sdcc" = "xauto"; then
+ with_sdcc="sdcc"
+ AC_CHECK_PROG([HAVE_SDCC],[$with_sdcc], yes, no)
+ else
+ HAVE_SDCC=yes
+ fi
+else
+ HAVE_SDCC=no
+fi
+
if test "x$HAVE_SDCC" = "xno"; then
- AC_MSG_WARN([No sdcc found, cc1111 binaries will not be built])
+ AC_MSG_WARN([SDCC not found, cc1111 binaries will not be built])
+else
+ SDCC=$with_sdcc
+fi
+
+AC_SUBST(SDCC)
+AC_SUBST(HAVE_SDCC)
+
+#
+# Configure ARM compiler for STM32L and LPC11U14
+#
+
+AC_ARG_WITH([arm-cc],
+ [AS_HELP_STRING([--with-arm-cc],
+ [Name of ARM C compiler])],
+ [],
+ [with_arm_cc=auto])
+
+if test "x$with_arm_cc" != "xno"; then
+ if test "x$with_arm_cc" = "xauto"; then
+ with_arm_cc="arm-none-eabi-gcc"
+ AC_CHECK_PROG([HAVE_ARM_CC],[$with_arm_cc], yes, no)
+ else
+ HAVE_ARM_CC=yes
+ fi
+else
+ HAVE_ARM_CC=no
fi
-AC_CHECK_PROG([HAVE_ARM_GCC],[arm-none-eabi-gcc], yes, no,[/opt/cortex/bin])
-if test "x$HAVE_ARM_GCC" = "xno"; then
- AC_MSG_WARN([No summon toolchain arm compiler found, STM32L binaries will not be built])
+if test "x$HAVE_ARM_CC" = "xno"; then
+ AC_MSG_WARN([Arm compiler not found, ARM binaries will not be built])
+else
+ ARM_CC=$with_arm_cc
+fi
+AC_SUBST(HAVE_ARM_CC)
+AC_SUBST(ARM_CC)
+
+if test "x$HAVE_ARM_CC" = "xyes"; then
+ save_CC="$CC"
+ save_CFLAGS="$CFLAGS"
+ CC="$ARM_CC"
+ CFLAGS="-mthumb -mcpu=cortex-m0"
+ AC_LANG_PUSH([C])
+
+ AC_MSG_CHECKING([if ]$ARM_CC[ supports cortex-m0])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int i;])],
+ [HAVE_ARM_M0_CC=yes],
+ [HAVE_ARM_M0_CC=no])
+ AC_MSG_RESULT([$HAVE_ARM_M0])
+ CFLAGS="-mthumb -mcpu=cortex-m3"
+ AC_MSG_CHECKING([if ]$ARM_CC[ supports cortex-m3])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int i;])],
+ [HAVE_ARM_M3_CC=yes],
+ [HAVE_ARM_M3_CC=no])
+ AC_MSG_RESULT([$HAVE_ARM_M3])
+ AC_LANG_POP([C])
+ CFLAGS="$save_CFLAGS"
+ CC="$save_CC"
+else
+ HAVE_ARM_M3_CC=no
+ HAVE_ARM_M0_CC=no
+fi
+AC_SUBST(HAVE_ARM_M3_CC)
+AC_SUBST(HAVE_ARM_M0_CC)
+
+if test "x$HAVE_ARM_M3_CC" = "xno"; then
+ AC_MSG_WARN([No cortex-m3 arm compiler found, STM32L binaries will not be built])
fi
-AC_CHECK_PROG([HAVE_ARM_M0_GCC], [arm-none-eabi-gcc], yes, no,[/usr/bin])
-if test "x$HAVE_ARM_M0_GCC" = "xno"; then
- AC_MSG_WARN([No linaro toolchain arm cortex-m0 compiler found, LPC11U14 binaries will not be built])
+if test "x$HAVE_ARM_M0_CC" = "xno"; then
+ AC_MSG_WARN([No cortex-m0 arm compiler found, LPC11U14 binaries will not be built])
fi
+#
+# Configure AVR compiler
+#
+
+AC_ARG_WITH([avr-cc],
+ [AS_HELP_STRING([--with-avr-cc],
+ [Name of AVR C compiler])],
+ [],
+ [with_avr_cc=auto])
+
+if test "x$with_avr_cc" != "xno"; then
+ if test "x$with_avr_cc" = "xauto"; then
+ with_avr_cc="avr-gcc"
+ AC_CHECK_PROG([HAVE_AVR_CC],[$with_avr_cc], yes, no)
+ else
+ HAVE_AVR_CC=yes
+ fi
+else
+ HAVE_AVR_CC=no
+fi
+
+AC_ARG_WITH([avr-objcopy],
+ [AS_HELP_STRING([--with-avr-objcopy],
+ [Name of AVR objcopy])],
+ [],
+ [with_avr_objcopy=auto])
+
+if test "x$with_avr_objcopy" != "xno"; then
+ if test "x$with_avr_objcopy" = "xauto"; then
+ with_avr_objcopy="avr-objcopy"
+ AC_CHECK_PROG([HAVE_AVR_OBJCOPY],[$with_avr_objcopy], yes, no)
+ else
+ HAVE_AVR_OBJCOPY=yes
+ fi
+else
+ HAVE_AVR_OBJCOPY=no
+fi
+
+if test "x$HAVE_AVR_CC" = "xno" -o "x$HAVE_AVR_OBJCOPY" = "xno"; then
+ AC_MSG_WARN([AVR compiler and objcopy not found, atmel binaries will not be built])
+ HAVE_AVR_CC=no
+else
+ AVR_CC=$with_avr_cc
+ AVR_OBJCOPY=$with_avr_objcopy
+fi
+
+AC_SUBST(AVR_CC)
+AC_SUBST(AVR_OBJCOPY)
+AC_SUBST(HAVE_AVR_CC)
+
AC_CHECK_PROG([HAVE_NICKLE], [nickle], yes, no)
if test "x$HAVE_NICKLE" = "xno"; then
AC_MSG_ERROR([Please install nickle to build AltOs])
AC_OUTPUT([
Makefile
+src/Makedefs
altoslib/Makefile
altosuilib/Makefile
altosuilib/AltosUIVersion.java
echo " Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
echo ""
echo " Configuration"
-echo " STM32L support..............: ${HAVE_ARM_GCC}"
-echo " LPC11U14 support............: ${HAVE_ARM_M0_GCC}"
+echo " Arm compiler................: ${ARM_CC}"
+echo " STM32L support..............: ${HAVE_ARM_M3_CC}"
+echo " LPC11U14 support............: ${HAVE_ARM_M0_CC}"
+echo " SDCC........................: ${SDCC}"
echo " CC1111 support..............: ${HAVE_SDCC}"
+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 ""
--- /dev/null
+ARM_CC=@ARM_CC@
+HAVE_ARM_M3_CC=@HAVE_ARM_M3_CC@
+HAVE_ARM_M0_CC=@HAVE_ARM_M0_CC@
+
+SDCC=@SDCC@
+HAVE_SDCC=@HAVE_SDCC@
+
+AVR_CC=@AVR_CC@
+AVR_OBJCOPY=@AVR_OBJCOPY@
+HAVE_AVR_CC=@HAVE_AVR_CC@
vpath matrix.5c kalman
include Version
+include Makedefs
SDCCDIRS=\
telemetrum-v1.2 telemetrum-v1.1 telemetrum-v1.0 \
telefire-v0.1 telefire-v0.2 \
telemini-v2.0
-AVRDIRS=\
- telescience-v0.1 telescience-pwm micropeak nanopeak-v0.1
-
-ARMDIRS=\
+ARMM3DIRS=\
telemega-v0.1 telemega-v0.1/flash-loader \
telemega-v0.3 telemega-v0.3/flash-loader \
megadongle-v0.1 megadongle-v0.1/flash-loader \
ARMM0DIRS=\
easymini-v1.0 easymini-v1.0/flash-loader
-ifneq ($(shell which sdcc),)
+AVRDIRS=\
+ telescience-v0.1 telescience-pwm micropeak nanopeak-v0.1
+
+ifeq ($(strip $(HAVE_SDCC)),yes)
SUBDIRS += $(SDCCDIRS)
endif
-ifneq ($(shell which avr-gcc),)
- SUBDIRS += $(AVRDIRS)
+ifeq ($(strip ($HAVE_ARM_M3_CC)),yes)
+ SUBDIRS += $(ARMM3DIRS)
endif
-ifneq ($(shell which /opt/cortex/bin/arm-none-eabi-gcc),)
- SUBDIRS += $(ARMDIRS)
+ifneq ($(strip ($HAVE_ARM_M0_CC)),yes)
+ SUBDIRS += $(ARMM0DIRS)
endif
-ifneq ($(shell which /usr/bin/arm-none-eabi-gcc),)
- SUBDIRS += $(ARMM0DIRS)
+ifeq ($(strip $(HAVE_AVR_CC)),yes)
+ SUBDIRS += $(AVRDIRS)
endif
-ALLDIRS=$(SDCCDIRS) $(AVRDIRS) $(ARMDIRS)
+ALLDIRS=$(SDCCDIRS) $(ARMM3DIRS) $(ARMM0DIRS) $(AVRDIRS)
all: all-local all-recursive
vpath matrix.5c ../kalman
vpath ao-make-product.5c ../util
+include ../avr/Makefile.defs
+
MCU=atmega32u4
DUDECPUTYPE=m32u4
#PROGRAMMER=stk500v2 -P usb
-PROGRAMMER=usbtiny
-LOADCMD=avrdude
LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
-CC=avr-gcc
-OBJCOPY=avr-objcopy
-
-ifndef VERSION
-include ../Version
-endif
INC = \
ao.h \
--- /dev/null
+ifndef TOPDIR
+TOPDIR=..
+endif
+
+ifndef VERSION
+include $(TOPDIR)/Version
+endif
+
+include $(TOPDIR)/Makedefs
+
+CC=$(AVR_CC)
+OBJCOPY=$(AVR_OBJCOPY)
+LDSCRIPTS=/usr/lib/avr/lib/ldscripts
+
+PROGRAMMER=usbtiny
+LOADCMD=avrdude
-CC=sdcc
+include ../Makedefs
+CC=$(SDCC)
CFLAGS=--model-small --debug --opt-code-speed -DCODESIZE=$(CODESIZE)
.elf.ihx:
objcopy -O ihex $*.elf $@
-CC=arm-none-eabi-gcc
-SAT=/opt/cortex
-SAT_CLIB=$(SAT)/lib/pdclib-cortex-m0.a
-SAT_CFLAGS=-I$(SAT)/include
ifndef VERSION
include $(TOPDIR)/Version
endif
+include $(TOPDIR)/Makedefs
+
+CC=$(ARM_CC)
+SAT=/opt/cortex
+SAT_CLIB=$(SAT)/lib/pdclib-cortex-m0.a
+SAT_CFLAGS=-I$(SAT)/include
AO_CFLAGS=-I. -I$(TOPDIR)/lpc -I$(TOPDIR)/core -I$(TOPDIR)/drivers -I$(TOPDIR)/product -I$(TOPDIR)
STM_CFLAGS=-std=gnu99 -mlittle-endian -mcpu=cortex-m0 -mthumb -ffreestanding -nostdlib $(AO_CFLAGS) $(SAT_CFLAGS)
vpath matrix.5c ../kalman
vpath ao-make-product.5c ../util
-CC=arm-none-eabi-gcc
-SAT=/opt/cortex
-SAT_CLIB=$(SAT)/lib/pdclib-cortex-m0.a
-SAT_CFLAGS=-I$(SAT)/include
+ifndef TOPDIR
+TOPDIR=..
+endif
ifndef VERSION
-include ../Version
+include $(TOPDIR)/Version
endif
+include $(TOPDIR)/Makedefs
+
+CC=$(ARM_CC)
+SAT=/opt/cortex
+SAT_CLIB=$(SAT)/lib/pdclib-cortex-m0.a
+SAT_CFLAGS=-I$(SAT)/include
-AO_CFLAGS=-I. -I../lpc -I../core -I../drivers -I..
+AO_CFLAGS=-I. -I$(TOPDIR)/lpc -I$(TOPDIR)/core -I$(TOPDIR)/drivers -I$(TOPDIR)
LPC_CFLAGS=-std=gnu99 -mlittle-endian -mcpu=cortex-m0 -mthumb -ffreestanding -nostdlib $(AO_CFLAGS) $(SAT_CFLAGS)
-LDFLAGS=$(LPC_CFLAGS) -L../stm -Wl,-Taltos.ld
+LDFLAGS=$(LPC_CFLAGS) -L$(TOPDIR)/stm -Wl,-Taltos.ld
NICKLE=nickle
.c.o:
$(call quiet,CC) -c $(CFLAGS) $<
-ao_serial_lpc.h: ../lpc/baud_rate ao_pins.h
- nickle ../lpc/baud_rate `awk '/AO_LPC_CLKOUT/{print $$3}' ao_pins.h` > $@
+ao_serial_lpc.h: $(TOPDIR)/lpc/baud_rate ao_pins.h
+ nickle $(TOPDIR)/lpc/baud_rate `awk '/AO_LPC_CLKOUT/{print $$3}' ao_pins.h` > $@
ao_serial_lpc.o: ao_serial_lpc.h
vpath ao-make-product.5c ../util
vpath make-altitude-pa ../util
+include ../avr/Makefile.defs
+
MCU=attiny85
DUDECPUTYPE=t85
#PROGRAMMER=stk500v2 -P usb
-PROGRAMMER=usbtiny
-LOADCMD=avrdude
LOADSLOW=-i 32 -B 32
LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
-CC=avr-gcc
-OBJCOPY=avr-objcopy
-
-LDFLAGS=-L/usr/lib/ldscripts -Tavr25.x
-ifndef VERSION
-include ../Version
-endif
+LDFLAGS=-L$(LDSCRIPTS) -Tavr25.x
ALTOS_SRC = \
ao_micropeak.c \
vpath ao-make-product.5c ../util
vpath make-altitude-pa ../util
+include ../avr/Makefile.defs
+
MCU=attiny85
DUDECPUTYPE=t85
#PROGRAMMER=stk500v2 -P usb
-PROGRAMMER=usbtiny
-LOADCMD=avrdude
LOADSLOW=-i 32 -B 32
LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
-CC=avr-gcc
-OBJCOPY=avr-objcopy
-
-LDFLAGS=-L/usr/lib/ldscripts -Tavr25.x
-ifndef VERSION
-include ../Version
-endif
+LDFLAGS=-L$(LDSCRIPTS) -Tavr25.x
ALTOS_SRC = \
ao_micropeak.c \
.elf.ihx:
objcopy -O ihex $*.elf $@
-CC=/opt/cortex/bin/arm-none-eabi-gcc
-SAT=/opt/cortex
-SAT_CLIB=$(SAT)/lib/pdclib-cortex-m3.a
-SAT_CFLAGS=-I$(SAT)/include
-
ifndef VERSION
include $(TOPDIR)/Version
endif
+include $(TOPDIR)/Makedefs
+
+CC=$(ARM_CC)
+SAT=/opt/cortex
+SAT_CLIB=$(SAT)/lib/pdclib-cortex-m3.a
+SAT_CFLAGS=-I$(SAT)/include
AO_CFLAGS=-I. -I$(TOPDIR)/stm -I$(TOPDIR)/core -I$(TOPDIR)/drivers -I$(TOPDIR)/product -I$(TOPDIR)
STM_CFLAGS=-std=gnu99 -mlittle-endian -mcpu=cortex-m3 -mthumb -ffreestanding -nostdlib $(AO_CFLAGS) $(SAT_CFLAGS)
.elf.ihx:
objcopy -O ihex $*.elf $@
-SAT=/opt/cortex
-CC=$(SAT)/bin/arm-none-eabi-gcc
-SAT_CLIB=$(SAT)/lib/pdclib-cortex-m3.a
-SAT_CFLAGS=-I$(SAT)/include
+ifndef TOPDIR
+TOPDIR=..
+endif
ifndef VERSION
-include ../Version
+include $(TOPDIR)/Version
endif
+include $(TOPDIR)/Makedefs
+
+CC=$(ARM_CC)
+SAT=/opt/cortex
+SAT_CLIB=$(SAT)/lib/pdclib-cortex-m3.a
+SAT_CFLAGS=-I$(SAT)/include
AO_CFLAGS=-I. -I../stm -I../core -I../drivers -I..
STM_CFLAGS=-std=gnu99 -mlittle-endian -mcpu=cortex-m3 -mthumb -ffreestanding -nostdlib $(AO_CFLAGS) $(SAT_CFLAGS)
vpath % .:..:../core:../product:../drivers:../avr
vpath ao-make-product.5c ../util
+include ../avr/Makefile.defs
+
MCU=atmega32u4
DUDECPUTYPE=m32u4
#PROGRAMMER=stk500v2 -P usb
-PROGRAMMER=usbtiny
-LOADCMD=avrdude
LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
-CC=avr-gcc
-OBJCOPY=avr-objcopy
-
-ifndef VERSION
-include ../Version
-endif
INC = \
ao.h \
vpath % ..:../core:../product:../drivers:../avr
vpath ao-make-product.5c ../util
+include ../avr/Makefile.defs
+
MCU=atmega32u4
DUDECPUTYPE=m32u4
#PROGRAMMER=stk500v2 -P usb
-PROGRAMMER=usbtiny
-LOADCMD=avrdude
LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
-CC=avr-gcc
-OBJCOPY=avr-objcopy
-
-LDFLAGS=-L/usr/lib/ldscripts -Tavr5.x
-ifndef VERSION
-include ../Version
-endif
+LDFLAGS=-L$(LDSCRIPTS) -Tavr5.x
INC = \
ao.h \
vpath % ..:../core:../product:../drivers:../avr
vpath ao-make-product.5c ../util
+include ../avr/Makefile.defs
+
MCU=atmega32u4
DUDECPUTYPE=m32u4
#PROGRAMMER=stk500v2 -P usb
-PROGRAMMER=usbtiny
-LOADCMD=avrdude
LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
-CC=avr-gcc
-OBJCOPY=avr-objcopy
-
-LDFLAGS=-L/usr/lib/ldscripts -Tavr5.x
-ifndef VERSION
-include ../Version
-endif
+LDFLAGS=-L$(LDSCRIPTS) -Tavr5.x
INC = \
ao.h \