1
1
#! /bin/bash -
2
- set -o nounset # Treat unset variables as an error
2
+ set -o nounset # Treat unset variables as an error
3
3
4
4
# Base path
5
5
Core_path=../..
@@ -23,24 +23,24 @@ LLoutInc_path=$Core_path/cores/arduino/stm32/LL
23
23
CMSIS_Startupfile=$Core_path /cores/arduino/stm32/stm32_def_build.h
24
24
25
25
# Variables
26
- series=($( find $HALDrivers_path -maxdepth 1 -type d -name " STM32*" | sed -e " s#$HALDrivers_path /STM32##g" -e " s#xx_HAL_Driver##g" ) )
26
+ series=($( find $HALDrivers_path -maxdepth 1 -type d -name " STM32*" | sed -e " s#$HALDrivers_path /STM32##g" -e " s#xx_HAL_Driver##g" | sort ) )
27
27
28
28
all_LL_file=stm32yyxx_ll.h
29
29
30
30
# Create the file
31
31
print_C_header () {
32
- if [[ $1 = * " template" * ]]; then
33
- echo " #if 0" > " $1 "
34
- else
35
- touch " $1 "
36
- fi
32
+ if [[ $1 = * " template" * ]]; then
33
+ echo " #if 0" > " $1 "
34
+ else
35
+ touch " $1 "
36
+ fi
37
37
}
38
38
39
39
# Add some pragma to ll header files to avoid several warnings
40
40
# which will be corrected along Cube update
41
41
print_LL_header () {
42
- upper=$( echo " $1 " | awk ' {print toupper($1)}' | sed -e " s/\./_/g" )
43
- echo " #ifndef _${upper} _
42
+ upper=$( echo " $1 " | awk ' {print toupper($1)}' | sed -e " s/\./_/g" )
43
+ echo " #ifndef _${upper} _
44
44
#define _${upper} _
45
45
/* LL raised several warnings, ignore them */
46
46
#pragma GCC diagnostic push
@@ -50,14 +50,14 @@ echo "#ifndef _${upper}_
50
50
}
51
51
52
52
print_CMSIS_Startup_header () {
53
- echo " #ifndef _STM32_DEF_BUILD_
53
+ echo " #ifndef _STM32_DEF_BUILD_
54
54
#define _STM32_DEF_BUILD_
55
55
56
56
#if !defined(CMSIS_STARTUP_FILE) && !defined(CUSTOM_STARTUP_FILE)" > $CMSIS_Startupfile
57
57
}
58
58
59
59
print_CMSIS_Startup_footer () {
60
- echo " #else
60
+ echo " #else
61
61
#error UNKNOWN CHIP
62
62
#endif
63
63
#else
@@ -67,25 +67,24 @@ echo "#else
67
67
}
68
68
69
69
print_CMSIS_Startup_list () {
70
- # Handle first elements
71
- # File name
72
- local f
73
- local upper
74
- f=$( echo " ${list[0]} " | awk -F/ ' {print $NF}' )
75
- upper=$( echo " $f " | awk -F' [_.]' ' {print toupper($2)}' | tr X x)
76
- echo " #if defined($upper )
70
+ # Handle first elements
71
+ # File name
72
+ local f
73
+ local upper
74
+ f=$( echo " ${list[0]} " | awk -F/ ' {print $NF}' )
75
+ upper=$( echo " $f " | awk -F' [_.]' ' {print toupper($2)}' | tr X x)
76
+ echo " #if defined($upper )
77
77
#define CMSIS_STARTUP_FILE \" $f \" " >> $CMSIS_Startupfile
78
78
79
- if [ ${# list[@]} -gt 1 ]; then
80
- for fp in " ${list[@]: 1} "
81
- do
82
- # File name
83
- f=$( echo " $fp " | awk -F/ ' {print $NF}' )
84
- upper=$( echo " $f " | awk -F' [_.]' ' {print toupper($2)}' | tr X x)
85
- echo " #elif defined($upper )
79
+ if [ ${# list[@]} -gt 1 ]; then
80
+ for fp in " ${list[@]: 1} " ; do
81
+ # File name
82
+ f=$( echo " $fp " | awk -F/ ' {print $NF}' )
83
+ upper=$( echo " $f " | awk -F' [_.]' ' {print toupper($2)}' | tr X x)
84
+ echo " #elif defined($upper )
86
85
#define CMSIS_STARTUP_FILE \" $f \" " >> $CMSIS_Startupfile
87
- done
88
- fi
86
+ done
87
+ fi
89
88
}
90
89
91
90
# main
100
99
rm -f $HALoutSrc_path /* $LLoutSrc_path /* $LLoutInc_path /* $CMSIS_Startupfile
101
100
102
101
# Search all files for each series
103
- for serie in " ${series[@]} "
104
- do
102
+ for serie in " ${series[@]} " ; do
105
103
if [ -d $HALDrivers_path /STM32" ${serie} " xx_HAL_Driver/Src ]; then
106
104
lower=$( echo " $serie " | awk ' {print tolower($0)}' )
107
105
echo -n " Generating for $serie ..."
108
106
109
107
# Generate stm32yyxx_[hal|ll]*.c file
110
108
filelist=($( find $HALDrivers_path /STM32" ${serie} " xx_HAL_Driver/Src -maxdepth 1 -name " stm32${lower} xx_*.c" ) )
111
- for fp in " ${filelist[@]} "
112
- do
109
+ for fp in " ${filelist[@]} " ; do
113
110
outp=$HALoutSrc_path
114
111
# File name
115
112
f=$( echo " $fp " | awk -F/ ' {print $NF}' )
116
113
# Compute generic file name
117
114
g=" ${f// $lower / yy} "
118
- if [[ $f = * " _ll_" * ]]; then
115
+ if [[ $f = * " _ll_" * ]]; then
119
116
outp=$LLoutSrc_path
120
117
fi
121
118
if [ ! -f $outp /" $g " ]; then
126
123
echo " #ifdef STM32${serie} xx"
127
124
echo " #include \" $f \" "
128
125
echo " #endif"
129
- } >> $outp /" $g "
126
+ } >> $outp /" $g "
130
127
done
131
128
132
129
# Generate stm32yyxx_ll_*.h file
133
130
filelist=($( find $HALDrivers_path /STM32" ${serie} " xx_HAL_Driver/Inc -maxdepth 2 -name " stm32${lower} xx_ll_*.h" ) )
134
- for fp in " ${filelist[@]} "
135
- do
131
+ for fp in " ${filelist[@]} " ; do
136
132
# File name
137
133
f=$( echo " $fp " | awk -F/ ' {print $NF}' )
138
134
# Compute generic file name
145
141
echo " #include \" $g \" " >> $LLoutInc_path /${all_LL_file} .tmp
146
142
# Amend file name under serie switch
147
143
{
148
- echo " #ifdef STM32${serie} xx"
149
- echo " #include \" $f \" "
150
- echo " #endif"
151
- } >> $LLoutInc_path /" $g "
144
+ echo " #ifdef STM32${serie} xx"
145
+ echo " #include \" $f \" "
146
+ echo " #endif"
147
+ } >> $LLoutInc_path /" $g "
152
148
done
153
149
echo " done"
154
150
fi
@@ -164,15 +160,13 @@ rm -f $LLoutInc_path/${all_LL_file}.tmp
164
160
165
161
# Search all template file to end "#if 0"
166
162
filelist=($( find $HALoutSrc_path -maxdepth 1 -name " stm32*_template.c" ) )
167
- for fp in " ${filelist[@]} "
168
- do
169
- echo " #endif /* 0 */" >> " $fp "
163
+ for fp in " ${filelist[@]} " ; do
164
+ echo " #endif /* 0 */" >> " $fp "
170
165
done
171
166
172
167
# Search all LL header files to end guard
173
168
filelist=($( find $LLoutInc_path -maxdepth 1 -name " stm32yyxx_ll*.h" ) )
174
- for fp in " ${filelist[@]} "
175
- do
169
+ for fp in " ${filelist[@]} " ; do
176
170
upper=$( basename " $fp " | awk ' {print toupper($1)}' | sed -e " s/\./_/g" )
177
171
echo " #pragma GCC diagnostic pop" >> " $fp "
178
172
echo " #endif /* _${upper} _ */" >> " $fp "
@@ -181,12 +175,12 @@ done
181
175
# CMSIS startup files
182
176
list=($( find $CMSIS_Device_ST_path -name " startup_*.s" | grep gcc | sort -du) )
183
177
if [ ${# list[@]} -ne 0 ]; then
184
- echo " Number of startup files: ${# list[@]} "
185
- print_CMSIS_Startup_header
186
- print_CMSIS_Startup_list
187
- print_CMSIS_Startup_footer
178
+ echo " Number of startup files: ${# list[@]} "
179
+ print_CMSIS_Startup_header
180
+ print_CMSIS_Startup_list
181
+ print_CMSIS_Startup_footer
188
182
else
189
- echo " No startup files found!"
183
+ echo " No startup files found!"
190
184
fi
191
185
192
186
# CMSIS DSP C source files
199
193
rm -fr " ${CMSIS_DSP_outSrc_path:? } " /* /
200
194
201
195
filelist=($( find $CMSIS_DSPSrc_path -name " *.c" | sed -e " s#$CMSIS_DSPSrc_path /##g" | sort -u) )
202
- for fp in " ${filelist[@]} "
203
- do
196
+ for fp in " ${filelist[@]} " ; do
204
197
# Directory name
205
198
d=$( echo " $fp " | awk -F/ ' {print $(NF-1)}' )
206
199
if [ ! -d $CMSIS_DSP_outSrc_path /" $d " ]; then
0 commit comments