Files
failnix/targets/wasm-tacle/parallel/PapaBench/conf/Makefile.std

186 lines
4.0 KiB
Makefile

#
# $Id: Makefile.std,v 1.3 2011-01-21 11:52:33 moellmer Exp $
# Copyright (C) 2003 Pascal Brisset, Antoine Drouin
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
#
# This is the common Makefile for the avr-target.
# Edit the configuration part to suit your local install
#
# Configuration
PAPARAZZI_DIR = \"$(BASE)/\"
ATMELBIN = /usr/bin
ATMEL_INCLUDES = -I $(BASE)/avr/include/
UISPBIN=/usr/bin
PROG_PORT = /dev/parport0
USB_PROG_PORT = /dev/ttyUSB1
# Architecture dependent
include $(BASE)/conf/Makefile.local
-include $(BASE)/conf/$(CONF).conf
SERIAL_FLAGS = \
-dprog=avr910 \
-dpart=auto \
-dserial=/dev/ttyS0 \
-dspeed=38400
ISP_FLAGS = \
-dlpt=$(PROG_PORT) -dprog=stk200 -v=3
USB_FLAGS =
-dserial=$(USB_PROG_PORT) \
-dprog=avr910 \
-dpart=auto \
-v=3
UISP = uisp
UISP_FLAGS = $(ISP_FLAGS)
#UISP_FLAGS = $(SERIAL_FLAGS)
#
# End of configuration part.
#
CFLAGS = \
-Wall \
$(ATMEL_INCLUDES) \
$(INCLUDES) \
$(LOCAL_CFLAGS) \
-O2 \
$(ARCH_CFLAGS) \
$(USER_CFLAGS)
ifdef PAPABENCH_SINGLE
CFLAGS += -DPAPABENCH_SINGLE
endif
LDFLAGS = \
$(ARCH_STDFLAGS) \
$(ARCH_LDFLAGS) \
$(USER_LDLFLAGS)
#
# General rules
#
all: \
$(TARGET).elf $(TARGET).dis
compile: $(TARGET).elf \
load upload: check_fuses \
$(TARGET).install
$(TARGET).objs = \
$($(TARGET).srcs:.c=.o)
#$(TARGET).elf: $($(TARGET).objs)
$(TARGET).elf:
$(CC) $(CFLAGS) $($(TARGET).srcs) -o $@
#
# Fuses
#
rd_fuses: check_arch
$(UISP) $(ISP_FLAGS) --rd_fuses
wr_fuses: check_arch
$(UISP) $(ISP_FLAGS) --wr_fuse_h=$(HIGH_FUSE)
$(UISP) $(ISP_FLAGS) --wr_fuse_l=$(LOW_FUSE)
$(UISP) $(ISP_FLAGS) --wr_fuse_e=$(EXT_FUSE)
$(UISP) $(ISP_FLAGS) --wr_lock=$(LOCK_FUSE)
TMPFILE = 'check_fuses.tmp'
check_fuses: check_arch
@echo "##### Check of fuses #####"
@$(UISP) $(ISP_FLAGS) --rd_fuses >$(TMPFILE)
@if (grep -ri 'Fuse Low Byte' $(TMPFILE) | cut -c24- | grep -iq $(LOW_FUSE)) && (grep -ri 'Fuse High Byte' $(TMPFILE) |cut -c24- | grep -iq $(HIGH_FUSE)) && (grep -ri 'Fuse Extended Byte' $(TMPFILE) |cut -c24- | grep -iq $(EXT_FUSE)) && (grep -ri 'Lock Bits' $(TMPFILE) |cut -c24- | grep -iq $(LOCK_FUSE)); then echo "-> Fuses are Ok"; rm $(TMPFILE); else echo "-> Wrong fuses. Type 'make wr_fuses'"; rm $(TMPFILE); exit 1; fi
ifdef PAPABENCH_NOLINK
%.elf:
else
%.elf:
$(LD) \
$(LOCAL_LDFLAGS) \
$($(@:.elf=).objs) \
-o $@ \
$(LDFLAGS) \
-static
$(SIZE) $@
endif
%.s: %.c
$(CC) $(CFLAGS) -S $<
%.o: %.s
$(CC) $(CFLAGS) -c $<
%.hex: %.elf
$(OBJCOPY) -O ihex -R .eeprom $< $@
%.dis: %.elf
$(OBJDUMP) $< > $@
%.install: %.hex check_arch
# stk200 needs to be erased first
$(UISP) $(UISP_FLAGS) --erase
$(UISP) $(UISP_FLAGS) --upload if=$<
verify: $(TARGET).hex
$(UISP) $(UISP_FLAGS) --verify if=$<
erase: check_arch
$(UISP) $(ISP_FLAGS) --erase
check_arch :
@echo "##### Check architecture #####"
@if ($(UISP) $(UISP_FLAGS) 2>&1 | tr '[:upper:]' '[:lower:]' | grep $(ARCH)); then : ; else echo "-> Wrong architecture (mcu0 vs mcu1 ?)"; exit 1; fi
avr_clean:
rm -f .depend $($(TARGET).srcs:.c=.s)
rm -f $(TARGET).elf $(TARGET).elf.s $($(TARGET).srcs:.c=.o)
#
# Dependencies
#
.depend:
$(CC) $(CFLAGS) $($(TARGET).srcs) > .depend
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),erase)
-include .depend
endif
endif