FreeCalypso > hg > ffs-editor
changeset 4:7ed24ddc5c2a
scripts/mk-component.sh: adapted from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 15 May 2020 02:06:09 +0000 |
parents | 8123259c7f14 |
children | 3b367f330821 |
files | scripts/mk-component.sh |
diffstat | 1 files changed, 90 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/mk-component.sh Fri May 15 02:06:09 2020 +0000 @@ -0,0 +1,90 @@ +#!/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 + +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" +} + +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=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