FreeCalypso > hg > ffs-editor
view scripts/mk-component.sh @ 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 | |
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.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