view scripts/mk-component-gcc.sh @ 112:fdecfb3bd860

.../drv_app/r2d/r2d_*.c: LCD include case fixes from Magnetite R2D is not used in Selenite, but we strive to keep the two source trees in sync as much as possible to reduce the diffs.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 13 Oct 2018 16:56:22 +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