FreeCalypso > hg > fc-selenite
diff scripts/mk-component-gcc.sh @ 49:19f5e7133949
scripts/mk-component-gcc.sh: initial version created
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 19 Jul 2018 03:09:24 +0000 |
parents | |
children | 2106617f1291 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/mk-component-gcc.sh Thu Jul 19 03:09:24 2018 +0000 @@ -0,0 +1,97 @@ +#!/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