FreeCalypso > hg > fc-selenite
view scripts/mk-component.sh @ 145:d606941f1286
tms470/makefile-frags/link-steps: emit target name and source version
into the firmware version ID string
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 06 Feb 2019 22:22:39 +0000 |
parents | 2106617f1291 |
children |
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.lib" > $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`.obj helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile helpers/makeline cmd ../../tms470/toolwrap/asm470 ${ASMFLAGS} "$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`.obj helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile case "$objname" in *[A-Z]*) helpers/makeline cmd rm -f '$@' \ >> $BUILD_DIR/$LIBNAME/Makefile ;; esac helpers/makeline cmd ../../tms470/toolwrap/cl470 -q -c ${CFLAGS} \ ${CPPFLAGS} "$1" >> $BUILD_DIR/$LIBNAME/Makefile case "$objname" in *[A-Z]*) objname_lc=`echo $objname | tr A-Z a-z` helpers/makeline cmd mv $objname_lc $objname \ >> $BUILD_DIR/$LIBNAME/Makefile ;; esac echo >> $BUILD_DIR/$LIBNAME/Makefile OBJS="$OBJS $objname" } cfile_symlink() { if [ $# != 1 ] then echo "Error: cfile_symlink takes 1 argument" 1>&2 exit 1 fi localcopy=`basename "$1"` echo "$localcopy:" >> $BUILD_DIR/$LIBNAME/Makefile echo " ln -s $1 ." >> $BUILD_DIR/$LIBNAME/Makefile echo >> $BUILD_DIR/$LIBNAME/Makefile c_file $localcopy } # invoke the recipe COMPILER=tms470 SRC=../../src OBJS= MMI=0 . "$recipe_file" # finish the Makefile helpers/makeline dep $LIBNAME.lib ${OBJS} >> $BUILD_DIR/$LIBNAME/Makefile echo ' ../../tms470/toolwrap/ar470 r $@ $^' >> $BUILD_DIR/$LIBNAME/Makefile echo >> $BUILD_DIR/$LIBNAME/Makefile echo 'clean:' >> $BUILD_DIR/$LIBNAME/Makefile echo ' rm -f *.obj *.lib *.c' >> $BUILD_DIR/$LIBNAME/Makefile