All pastes #1898350 Raw Edit

Femto OS compile script

public text v1 · immutable
#1898350 ·published 2010-07-11 11:23 UTC
rendered paste body
#!/bin/bash

# USAGE
#   ./scripts/compile (("program" | "flash" | "f" | "build" | "compile" | "b" |
#           "clean" | "c" | "rebuild" | "recompile" | "r" | "terminal" | "com" |
#           "picocom" | "t" | "pause" | "wait" | "p" | "w") " ")*
#
#
# USAGE EXAMPLE
#   ./scripts/compile r f t
#
#
# DIRECTORY STRUCTURE
#   main.c                 The main program's C-File
#   main.h                 The main program's H-File
#   config_application.h   The main program's Femto OS configuration
#   femtoos_devices/       Femto OS files
#   femtoos_headers/       Femto OS files
#   femtoos_source/        Femto OS files
#   obj/                   Compiler outputs
#   scripts/compile        This script
#   scripts/overall_info   Can be fount in Femto OS
#   scripts/test_fp_use    Can be fount in Femto OS


# http://img35.imageshack.us/f/compilerflags.png/
CARGS=" \
 	-I../femtoos_headers \
 	-I../femtoos_devices \
 	-I../femtoos_source \
 	-I..
	-mmcu=atmega1280 \
	-Os \
	--param inline-call-cost=2 \
	-gdwarf-2 \
	-mint8 \
	-Wall \
	-Wno-main \
	-Winline \
	-Wundef \
	-Wl,--defsym=__stack=xOS+xOSstackShift \
	-Wl,--gc-sections \
	-Wl,--relax \
	-funsigned-char \
	-fpack-struct \
	-fshort-enums \
	-ffunction-sections \
	-fomit-frame-pointer
	-save-temps "

LARGS="$CARGS \
	-minit-stack='xOS+xOSstackShift'
	-Wl,-Map=main.map"

CARGS="$CARGS \
	-DF_CPU=16000000ULL \
	-DdefExtReduceProEpilogue=cfgBikini \
	-c "

AARGS="$CARGS \
	-x assembler-with-cpp "



PREFIX="/usr/local/bin"
GCC="$PREFIX/avr-gcc"
OBJCOPY="$PREFIX/avr-objcopy"
OBJDUMP="$PREFIX/avr-objdump"
AVRDUDE="$PREFIX/avrdude"
SIZE="$PREFIX/avr-size"



function doFlash()
{
	# -V      Disable automatic verify check when uploading data.
	$AVRDUDE -p atmega1280 -P /dev/ttyUSB* -c arduino -b 57600 -U flash:w:obj/main.hex
}


function doClean()
{
	rm obj/*
}


function doBuild()
{
	mkdir -p obj
	cd obj
	
	echo "main.c"
	$GCC $CARGS -o main.o ../main.c || exit 1
	
	echo "femtoos_core.c"
	$GCC $CARGS -o femtoos_core.o ../femtoos_source/femtoos_core.c || exit 1
	
	echo "femtoos_port.c"
	$GCC $CARGS -o femtoos_port.o ../femtoos_source/femtoos_port.c || exit 1
	
	echo "femtoos_shared.c"
	$GCC $CARGS -o femtoos_shared.o ../femtoos_source/femtoos_shared.c || exit 1
	
	echo "emtoos_startup.s"
	$GCC $AARGS -o femtoos_startup.o ../femtoos_source/femtoos_startup.s || exit 1
	
	echo "LINKING"
	$GCC $LARGS -o main.elf femtoos_shared.o femtoos_core.o femtoos_port.o femtoos_startup.o main.o || exit 1
	
	
	$OBJCOPY -O binary -R .eeprom  main.elf main.bin || exit 1
	$OBJCOPY -O ihex -R .eeprom  main.elf main.hex || exit 1
	$OBJCOPY -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex main.elf main.eep || exit 1
	$OBJDUMP -dt main.elf > main.lss || exit 1
	../scripts/test_fp_use main.lss || exit 1
	../scripts/overall_info main.lss femtoos_shared.i main.map > main.defs || exit 1
	../scripts/overall_info main.lss femtoos_shared.i main.map registers | tee main.regs || exit 1
	../scripts/overall_info main.lss femtoos_shared.i main.map labels || exit 1
	$SIZE main.elf | tee main.size
	cd ..
}


function doTerminal()
{
#	picocom -b 19200 /dev/ttyUSB*
	picocom /dev/ttyUSB*
}


function doWait()
{
	echo "Just waiting for YOU!!!!!1111eleven"
	read
}


while [ $# -ne 0 ]
do
    case $1 in
    "program" | "flash" | "f")
    	doFlash || exit 1
    	;;
	"build" | "compile" | "b")
		doBuild || exit 1
		;;
	"clean" | "c")
		doClean || exit 1
		;;
	"rebuild" | "recompile" | "r")
		doClean || exit 1
		doBuild || exit 1
		;;
	"terminal" | "com" | "picocom" | "t")
		doTerminal || exit 1
		;;
	"pause" | "wait" | "p" | "w")
		doWait || exit 1
		;;
	esac
	
    shift
done