FreeCalypso > hg > fc-magnetite
diff scripts/mk-component.sh @ 10:352f80da6813
ACI compiles!
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 27 Sep 2016 02:31:03 +0000 |
parents | |
children | c8bdae60fcb1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/mk-component.sh Tue Sep 27 02:31:03 2016 +0000 @@ -0,0 +1,97 @@ +#!/bin/sh + +if [ $# -lt 1 -o $# -gt 2 ] +then + echo "usage: $0 component-lib [flavor]" 1>&2 + exit 1 +fi + +LIBNAME="$1" + +if [ -n "$2" ] +then + recipe_file="components/$1-$2" +else + recipe_file="components/$1" +fi + +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 + +cfile_plain() { + if [ $# != 1 ] + then + echo "Error: cfile_plain takes 1 argument" 1>&2 + exit 1 + fi + objname=`basename "$1" .c`.obj + helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile + helpers/makeline cmd ../../toolwrap/cl470 -q -c ${CFLAGS} ${CPPFLAGS} \ + "$1" >> $BUILD_DIR/$LIBNAME/Makefile + echo >> $BUILD_DIR/$LIBNAME/Makefile + OBJS="$OBJS $objname" +} + +cfile_str2ind() { + if [ $# != 1 ] + then + echo "Error: cfile_str2ind takes 1 argument" 1>&2 + exit 1 + fi + if [ "$USE_STR2IND" = 1 ] + then + objname=`basename "$1" .c`.obj + pp_name=`echo $1 | sed -e s/.c\$/.pp/` + pp__name=`echo $1 | sed -e s/.c\$/.pp_/` + helpers/makeline dep $objname "$1" \ + >> $BUILD_DIR/$LIBNAME/Makefile + helpers/makeline cmd ../../toolwrap/cl470 -q -po -p? -x \ + ${CPPFLAGS} "$1" >> $BUILD_DIR/$LIBNAME/Makefile + helpers/makeline cmd ../../toolwrap/str2ind -a \ + -t ../str2ind.tab -l ../str2ind.log \ + -f "$pp_name" >> $BUILD_DIR/$LIBNAME/Makefile + helpers/makeline cmd ../../toolwrap/cl470 -q -c ${CFLAGS} \ + "$pp__name" >> $BUILD_DIR/$LIBNAME/Makefile + helpers/makeline cmd @rm -f "$pp_name" \ + >> $BUILD_DIR/$LIBNAME/Makefile + helpers/makeline cmd @rm -f "$pp__name" \ + >> $BUILD_DIR/$LIBNAME/Makefile + echo >> $BUILD_DIR/$LIBNAME/Makefile + OBJS="$OBJS $objname" + else + cfile_plain "$1" + fi +} + +# invoke the recipe + +SRC=../../src +OBJS= +. "$recipe_file" + +# finish the Makefile + +helpers/makeline dep $LIBNAME.lib ${OBJS} >> $BUILD_DIR/$LIBNAME/Makefile +echo ' ../../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