# HG changeset patch # User Mychaela Falconia # Date 1589508369 0 # Node ID 7ed24ddc5c2aeed3ae6f9f705aa03346d883dba1 # Parent 8123259c7f14e780427526fa484361c617bb1df6 scripts/mk-component.sh: adapted from Selenite diff -r 8123259c7f14 -r 7ed24ddc5c2a scripts/mk-component.sh --- /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