FreeCalypso > hg > fc-selenite
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 |