FreeCalypso > hg > fc-selenite
view scripts/mk-component-gcc.sh @ 50:a9a7d531e673
components: initial support for gcc
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 19 Jul 2018 19:23:19 +0000 |
parents | 19f5e7133949 |
children | 2106617f1291 |
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 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