view scripts/mk-component-gcc.sh @ 134:7d50d8d13711

FFS code sync with Magnetite + gcc version fix This change brings the new flash autodetection for FC and Pirelli targets from Magnetite, and should also fix the gcc version for C1xx and gtamodem targets, which were previously broken because they used TI's original flash autodetect code (which operates at address 0) while the boot ROM is mapped there.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 11 Dec 2018 08:43:25 +0000
parents 19f5e7133949
children 2106617f1291
line wrap: on
line source

#!/bin/sh

if [ $# != 1 ]
then
	echo "usage: $0 component-lib" 1>&2
	exit 1
fi

LIBNAME="$1"
recipe_file="components/$1"

if [ ! -f "$recipe_file" ]
then
	echo "Error: $recipe_file not found" 1>&2
	exit 1
fi

if [ -z "$BUILD_DIR" ]
then
	echo "Error: BUILD_DIR= must be passed via environment" 1>&2
	exit 1
fi

set -e

mkdir -p $BUILD_DIR/$LIBNAME

# beginning of the Makefile
echo "all:	$LIBNAME.a" > $BUILD_DIR/$LIBNAME/Makefile
echo >> $BUILD_DIR/$LIBNAME/Makefile

# shell functions to be used in the recipes

make_version() {
	case $# in
	    1)
		echo "$1_version.c:" >> $BUILD_DIR/$LIBNAME/Makefile
		echo "	../../scripts/make-version.sh $1 > $1_version.c" \
			>> $BUILD_DIR/$LIBNAME/Makefile
		;;
	    2)
		echo "$2_version.c:" >> $BUILD_DIR/$LIBNAME/Makefile
		echo "	../../scripts/make-version.sh $1 > $2_version.c" \
			>> $BUILD_DIR/$LIBNAME/Makefile
		;;
	    *)
		echo "Error: make_version takes 1 or 2 arguments" 1>&2
		exit 1
		;;
	esac
	echo >> $BUILD_DIR/$LIBNAME/Makefile
}

asm_file() {
	if [ $# != 1 ]
	then
		echo "Error: asm_file takes 1 argument" 1>&2
		exit 1
	fi
	objname=`basename "$1" .S`.o
	helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile
	helpers/makeline cmd arm-elf-gcc -c ${ASMFLAGS} ${CPPFLAGS} "$1" \
		>> $BUILD_DIR/$LIBNAME/Makefile
	echo >> $BUILD_DIR/$LIBNAME/Makefile
	OBJS="$OBJS $objname"
}

c_file() {
	if [ $# != 1 ]
	then
		echo "Error: c_file takes 1 argument" 1>&2
		exit 1
	fi
	objname=`basename "$1" .c`.o
	helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile
	helpers/makeline cmd arm-elf-gcc -c ${CFLAGS_gcc} ${CPPFLAGS} "$1" \
		>> $BUILD_DIR/$LIBNAME/Makefile
	echo >> $BUILD_DIR/$LIBNAME/Makefile
	OBJS="$OBJS $objname"
}

# invoke the recipe

COMPILER=gcc
SRC=../../src
OBJS=
MMI=0
. "$recipe_file"

# finish the Makefile

helpers/makeline dep $LIBNAME.a ${OBJS} >> $BUILD_DIR/$LIBNAME/Makefile
echo '	arm-elf-ar rcu $@ $^' >> $BUILD_DIR/$LIBNAME/Makefile
echo '	arm-elf-ranlib $@' >> $BUILD_DIR/$LIBNAME/Makefile
echo >> $BUILD_DIR/$LIBNAME/Makefile
echo 'clean:' >> $BUILD_DIR/$LIBNAME/Makefile
echo '	rm -f *.[oa] *.c' >> $BUILD_DIR/$LIBNAME/Makefile