FreeCalypso > hg > fc-magnetite
annotate scripts/mk-component.sh @ 632:d968a3216ba0
new tangomdm build target
TCS211/Magnetite built for target leonardo runs just fine on the Tango-based
Caramel board, but a more proper tangomdm build target is preferable in order
to better market these Tango modems to prospective commercial customers. The
only differences are in GPIO and MCSI config:
* MCSI is enabled in the tangomdm build config.
* GPIO 1 is loudspeaker amplifier control on Leonardo, but on Tango platforms
it can be used for anything. On Caramel boards this GPIO should be
configured as an output driving high.
* GPIO 2 needs to be configured as Calypso input on Leonardo, but on Tango
platforms it can be used for anything. On Caramel boards this GPIO should be
configured as an output, either high or low is OK.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 04 Jan 2020 19:27:41 +0000 |
parents | 0198ac1e1a4f |
children |
rev | line source |
---|---|
10 | 1 #!/bin/sh |
2 | |
3 if [ $# -lt 1 -o $# -gt 2 ] | |
4 then | |
5 echo "usage: $0 component-lib [flavor]" 1>&2 | |
6 exit 1 | |
7 fi | |
8 | |
9 LIBNAME="$1" | |
10 | |
11 if [ -n "$2" ] | |
12 then | |
13 recipe_file="components/$1-$2" | |
14 else | |
15 recipe_file="components/$1" | |
16 fi | |
17 | |
18 if [ ! -f "$recipe_file" ] | |
19 then | |
20 echo "Error: $recipe_file not found" 1>&2 | |
21 exit 1 | |
22 fi | |
23 | |
24 if [ -z "$BUILD_DIR" ] | |
25 then | |
26 echo "Error: BUILD_DIR= must be passed via environment" 1>&2 | |
27 exit 1 | |
28 fi | |
29 | |
30 set -e | |
31 | |
32 mkdir -p $BUILD_DIR/$LIBNAME | |
33 | |
34 # beginning of the Makefile | |
35 echo "all: $LIBNAME.lib" > $BUILD_DIR/$LIBNAME/Makefile | |
36 echo >> $BUILD_DIR/$LIBNAME/Makefile | |
37 | |
38 # shell functions to be used in the recipes | |
39 | |
15
c8bdae60fcb1
changed the generation of *_version.c files to not break on make clean
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
40 make_version() { |
105
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
41 case $# in |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
42 1) |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
43 echo "$1_version.c:" >> $BUILD_DIR/$LIBNAME/Makefile |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
44 echo " ../../scripts/make-version.sh $1 > $1_version.c" \ |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
45 >> $BUILD_DIR/$LIBNAME/Makefile |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
46 ;; |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
47 2) |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
48 echo "$2_version.c:" >> $BUILD_DIR/$LIBNAME/Makefile |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
49 echo " ../../scripts/make-version.sh $1 > $2_version.c" \ |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
50 >> $BUILD_DIR/$LIBNAME/Makefile |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
51 ;; |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
52 *) |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
53 echo "Error: make_version takes 1 or 2 arguments" 1>&2 |
15
c8bdae60fcb1
changed the generation of *_version.c files to not break on make clean
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
54 exit 1 |
105
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
55 ;; |
5e2b0806b098
scripts/mk-component.sh make_version(): allow filename to be different
Mychaela Falconia <falcon@freecalypso.org>
parents:
68
diff
changeset
|
56 esac |
15
c8bdae60fcb1
changed the generation of *_version.c files to not break on make clean
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
57 echo >> $BUILD_DIR/$LIBNAME/Makefile |
c8bdae60fcb1
changed the generation of *_version.c files to not break on make clean
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
58 } |
c8bdae60fcb1
changed the generation of *_version.c files to not break on make clean
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
59 |
68
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
60 asm_file() { |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
61 if [ $# != 1 ] |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
62 then |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
63 echo "Error: asm_file takes 1 argument" 1>&2 |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
64 exit 1 |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
65 fi |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
66 objname=`basename "$1" .s`.obj |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
67 helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
68 helpers/makeline cmd ../../toolwrap/asm470 ${ASMFLAGS} "$1" '$@' \ |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
69 >> $BUILD_DIR/$LIBNAME/Makefile |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
70 echo >> $BUILD_DIR/$LIBNAME/Makefile |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
71 OBJS="$OBJS $objname" |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
72 } |
838717193e09
eliminated the use of bootloader.lib binary blob
Mychaela Falconia <falcon@freecalypso.org>
parents:
32
diff
changeset
|
73 |
10 | 74 cfile_plain() { |
75 if [ $# != 1 ] | |
76 then | |
77 echo "Error: cfile_plain takes 1 argument" 1>&2 | |
78 exit 1 | |
79 fi | |
80 objname=`basename "$1" .c`.obj | |
81 helpers/makeline dep $objname "$1" >> $BUILD_DIR/$LIBNAME/Makefile | |
133
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
82 case "$objname" in |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
83 *[A-Z]*) |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
84 helpers/makeline cmd rm -f '$@' \ |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
85 >> $BUILD_DIR/$LIBNAME/Makefile |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
86 ;; |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
87 esac |
10 | 88 helpers/makeline cmd ../../toolwrap/cl470 -q -c ${CFLAGS} ${CPPFLAGS} \ |
89 "$1" >> $BUILD_DIR/$LIBNAME/Makefile | |
32
c49c78d9bb5a
scripts/mk-component.sh: fix for cl470's auto-lowercasing of filenames
Mychaela Falconia <falcon@freecalypso.org>
parents:
15
diff
changeset
|
90 case "$objname" in |
c49c78d9bb5a
scripts/mk-component.sh: fix for cl470's auto-lowercasing of filenames
Mychaela Falconia <falcon@freecalypso.org>
parents:
15
diff
changeset
|
91 *[A-Z]*) |
c49c78d9bb5a
scripts/mk-component.sh: fix for cl470's auto-lowercasing of filenames
Mychaela Falconia <falcon@freecalypso.org>
parents:
15
diff
changeset
|
92 objname_lc=`echo $objname | tr A-Z a-z` |
c49c78d9bb5a
scripts/mk-component.sh: fix for cl470's auto-lowercasing of filenames
Mychaela Falconia <falcon@freecalypso.org>
parents:
15
diff
changeset
|
93 helpers/makeline cmd mv $objname_lc $objname \ |
c49c78d9bb5a
scripts/mk-component.sh: fix for cl470's auto-lowercasing of filenames
Mychaela Falconia <falcon@freecalypso.org>
parents:
15
diff
changeset
|
94 >> $BUILD_DIR/$LIBNAME/Makefile |
c49c78d9bb5a
scripts/mk-component.sh: fix for cl470's auto-lowercasing of filenames
Mychaela Falconia <falcon@freecalypso.org>
parents:
15
diff
changeset
|
95 ;; |
c49c78d9bb5a
scripts/mk-component.sh: fix for cl470's auto-lowercasing of filenames
Mychaela Falconia <falcon@freecalypso.org>
parents:
15
diff
changeset
|
96 esac |
10 | 97 echo >> $BUILD_DIR/$LIBNAME/Makefile |
98 OBJS="$OBJS $objname" | |
99 } | |
100 | |
101 cfile_str2ind() { | |
102 if [ $# != 1 ] | |
103 then | |
104 echo "Error: cfile_str2ind takes 1 argument" 1>&2 | |
105 exit 1 | |
106 fi | |
107 if [ "$USE_STR2IND" = 1 ] | |
108 then | |
109 objname=`basename "$1" .c`.obj | |
122
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
110 pp_name=`echo $1 | sed -e 's/\.c$/.pp/' | tr A-Z a-z` |
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
111 pp__name=`echo $1 | sed -e 's/\.c$/.pp_/' | tr A-Z a-z` |
10 | 112 helpers/makeline dep $objname "$1" \ |
113 >> $BUILD_DIR/$LIBNAME/Makefile | |
133
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
114 case "$objname" in |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
115 *[A-Z]*) |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
116 helpers/makeline cmd rm -f '$@' \ |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
117 >> $BUILD_DIR/$LIBNAME/Makefile |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
118 ;; |
87347425b11f
scripts/mk-component.sh: more filename case muck
Mychaela Falconia <falcon@freecalypso.org>
parents:
122
diff
changeset
|
119 esac |
10 | 120 helpers/makeline cmd ../../toolwrap/cl470 -q -po -p? -x \ |
121 ${CPPFLAGS} "$1" >> $BUILD_DIR/$LIBNAME/Makefile | |
122 helpers/makeline cmd ../../toolwrap/str2ind -a \ | |
123 -t ../str2ind.tab -l ../str2ind.log \ | |
124 -f "$pp_name" >> $BUILD_DIR/$LIBNAME/Makefile | |
125 helpers/makeline cmd ../../toolwrap/cl470 -q -c ${CFLAGS} \ | |
126 "$pp__name" >> $BUILD_DIR/$LIBNAME/Makefile | |
127 helpers/makeline cmd @rm -f "$pp_name" \ | |
128 >> $BUILD_DIR/$LIBNAME/Makefile | |
129 helpers/makeline cmd @rm -f "$pp__name" \ | |
130 >> $BUILD_DIR/$LIBNAME/Makefile | |
122
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
131 case "$objname" in |
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
132 *[A-Z]*) |
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
133 objname_lc=`echo $objname | tr A-Z a-z` |
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
134 helpers/makeline cmd mv $objname_lc $objname \ |
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
135 >> $BUILD_DIR/$LIBNAME/Makefile |
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
136 ;; |
feba9ffc2627
scripts/mk-component.sh: filename case muck for str2ind
Mychaela Falconia <falcon@freecalypso.org>
parents:
105
diff
changeset
|
137 esac |
10 | 138 echo >> $BUILD_DIR/$LIBNAME/Makefile |
139 OBJS="$OBJS $objname" | |
140 else | |
141 cfile_plain "$1" | |
142 fi | |
143 } | |
144 | |
574
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
145 cfile_symlink() { |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
146 if [ $# != 1 ] |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
147 then |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
148 echo "Error: cfile_symlink takes 1 argument" 1>&2 |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
149 exit 1 |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
150 fi |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
151 localcopy=`basename "$1"` |
575
0198ac1e1a4f
cfile_symlink for GPF: a more robust approach
Mychaela Falconia <falcon@freecalypso.org>
parents:
574
diff
changeset
|
152 echo "$localcopy:" >> $BUILD_DIR/$LIBNAME/Makefile |
0198ac1e1a4f
cfile_symlink for GPF: a more robust approach
Mychaela Falconia <falcon@freecalypso.org>
parents:
574
diff
changeset
|
153 echo " ln -s $1 ." >> $BUILD_DIR/$LIBNAME/Makefile |
574
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
154 echo >> $BUILD_DIR/$LIBNAME/Makefile |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
155 cfile_plain $localcopy |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
156 } |
41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
Mychaela Falconia <falcon@freecalypso.org>
parents:
133
diff
changeset
|
157 |
10 | 158 # invoke the recipe |
159 | |
160 SRC=../../src | |
161 OBJS= | |
162 . "$recipe_file" | |
163 | |
164 # finish the Makefile | |
165 | |
166 helpers/makeline dep $LIBNAME.lib ${OBJS} >> $BUILD_DIR/$LIBNAME/Makefile | |
167 echo ' ../../toolwrap/ar470 r $@ $^' >> $BUILD_DIR/$LIBNAME/Makefile | |
168 echo >> $BUILD_DIR/$LIBNAME/Makefile | |
169 echo 'clean:' >> $BUILD_DIR/$LIBNAME/Makefile | |
170 echo ' rm -f *.obj *.lib *.c' >> $BUILD_DIR/$LIBNAME/Makefile |