comparison 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
comparison
equal deleted inserted replaced
48:c56f1d6202f5 49:19f5e7133949
1 #!/bin/sh
2
3 if [ $# != 1 ]
4 then
5 echo "usage: $0 component-lib" 1>&2
6 exit 1
7 fi
8
9 LIBNAME="$1"
10 recipe_file="components/$1"
11
12 if [ ! -f "$recipe_file" ]
13 then
14 echo "Error: $recipe_file not found" 1>&2
15 exit 1
16 fi
17
18 if [ -z "$BUILD_DIR" ]
19 then
20 echo "Error: BUILD_DIR= must be passed via environment" 1>&2
21 exit 1
22 fi
23
24 set -e
25
26 mkdir -p $BUILD_DIR/$LIBNAME
27
28 # beginning of the Makefile
29 echo "all: $LIBNAME.a" > $BUILD_DIR/$LIBNAME/Makefile
30 echo >> $BUILD_DIR/$LIBNAME/Makefile
31
32 # shell functions to be used in the recipes
33
34 make_version() {
35 case $# in
36 1)
37 echo "$1_version.c:" >> $BUILD_DIR/$LIBNAME/Makefile
38 echo " ../../scripts/make-version.sh $1 > $1_version.c" \
39 >> $BUILD_DIR/$LIBNAME/Makefile
40 ;;
41 2)
42 echo "$2_version.c:" >> $BUILD_DIR/$LIBNAME/Makefile
43 echo " ../../scripts/make-version.sh $1 > $2_version.c" \
44 >> $BUILD_DIR/$LIBNAME/Makefile
45 ;;
46 *)
47 echo "Error: make_version takes 1 or 2 arguments" 1>&2
48 exit 1
49 ;;
50 esac
51 echo >> $BUILD_DIR/$LIBNAME/Makefile
52 }
53
54 asm_file() {
55 if [ $# != 1 ]
56 then
57 echo "Error: asm_file takes 1 argument" 1>&2
58 exit 1
59 fi
60 objname=`basename "$1" .S`.o
61 helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile
62 helpers/makeline cmd arm-elf-gcc -c ${ASMFLAGS} ${CPPFLAGS} "$1" \
63 >> $BUILD_DIR/$LIBNAME/Makefile
64 echo >> $BUILD_DIR/$LIBNAME/Makefile
65 OBJS="$OBJS $objname"
66 }
67
68 c_file() {
69 if [ $# != 1 ]
70 then
71 echo "Error: c_file takes 1 argument" 1>&2
72 exit 1
73 fi
74 objname=`basename "$1" .c`.o
75 helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile
76 helpers/makeline cmd arm-elf-gcc -c ${CFLAGS_gcc} ${CPPFLAGS} "$1" \
77 >> $BUILD_DIR/$LIBNAME/Makefile
78 echo >> $BUILD_DIR/$LIBNAME/Makefile
79 OBJS="$OBJS $objname"
80 }
81
82 # invoke the recipe
83
84 COMPILER=gcc
85 SRC=../../src
86 OBJS=
87 MMI=0
88 . "$recipe_file"
89
90 # finish the Makefile
91
92 helpers/makeline dep $LIBNAME.a ${OBJS} >> $BUILD_DIR/$LIBNAME/Makefile
93 echo ' arm-elf-ar rcu $@ $^' >> $BUILD_DIR/$LIBNAME/Makefile
94 echo ' arm-elf-ranlib $@' >> $BUILD_DIR/$LIBNAME/Makefile
95 echo >> $BUILD_DIR/$LIBNAME/Makefile
96 echo 'clean:' >> $BUILD_DIR/$LIBNAME/Makefile
97 echo ' rm -f *.[oa] *.c' >> $BUILD_DIR/$LIBNAME/Makefile