Update UART LLD makefile to only build k2g c66x, little-endian
[processor-sdk/performance-audio-sr.git] / pdk_k2g_1_0_1 / packages / pdkProjectCreate.sh
1 # ******************************************************************************
2 # * FILE PURPOSE: PDK Unit Test and Example Project Creator
3 # ******************************************************************************
4 # * FILE NAME: pdkProjectCreate.sh
5 # *
6 # * DESCRIPTION: 
7 # *  The script file is used to create the test and example projects of all
8 # *  components under PDK. These projects are available in the specified 
9 # *  workspace.
10 # *
11 # * USAGE:
12 # *  pdkProjectCreate.sh [soc] [board] [endian] [module] [processor]
13 # * 
14 # *  Description:    (first option is default)
15 # *  soc         -   AM335x / AM437x / AM571x / AM572x / K2E / K2G / K2K / K2H / K2L /
16 # *                  C6678 / C6657
17 # *  board       -   all (use "all" for K2X and C66X SOCs)
18 # *                  -or-
19 # *                  Refer to pdk_<soc>_<version>\packages\ti\board\lib
20 # *                  for valid board inputs for the soc
21 # *  endian      -   little / big
22 # *  module      -   all
23 # *                  -or-
24 # *                  aif2 / bcp / cppi / csl / dfe / emac / fatfs / fm / fftc /
25 # *                  gpio / hyplnk / i2c / icss_emac / iqn2 / mcasp / mcbsp / mmcsd / nimu /
26 # *                  nimu_icss / nwal / pa / pcie / pktlib / pruss / qmss / rm / sa /
27 # *                  serdes-diag / spi / srio / tcp3d / tfw / transportqmss /
28 # *                  transportsrio / tsip / uart / usb / wdtimer
29 # *  processor   -   arm / dsp / m4
30 # * 
31 # *  Example:
32 # *   a) pdkProjectCreate.sh
33 # *               - Creates all module projects for the AM335x soc for arm little endian
34 # *   b) pdkProjectCreate.sh AM437x
35 # *               - Creates all module projects for the AM437x soc for arm little endian
36 # *   c) pdkProjectCreate.sh AM437x idkAM437x
37 # *               - Creates all module projects for idkAM437x device for arm little endian
38 # *   d) pdkProjectCreate.sh AM571x evmAM571x little
39 # *               - Creates all module projects for evmAM571x device for arm little endian
40 # *   e) pdkProjectCreate.sh AM571x evmAM571x little i2c dsp
41 # *               - Creates i2c module projects for evmAM571x device for dsp little endian
42 # *   f) pdkProjectCreate.sh K2H all little i2c arm
43 # *               - Creates i2c module projects for K2H device for arm little endian
44 # *   g) pdkProjectCreate.sh C6678 all little hyplnk dsp
45 # *               - Creates hyplnk module projects for C6678 device for dsp little endian
46 # * 
47 # * Copyright (C) 2012-2016, Texas Instruments, Inc.
48 # *****************************************************************************
50 # Lists of valid input parameters - MUST be updated as new input parameters are added
51 # *****************************************************************************
52 soc_list=("AM335x" "AM437x" "AM571x" "AM572x" "K2E" "K2K" "K2H" "K2L" "K2G" "C6678" "C6657")
53 endian_list=("little" "big")
54 module_list=("all" "aif2" "bcp" "cppi" "csl" "dfe" "emac" "fatfs" "fm" "fftc" "gpio" "hyplnk" "i2c" "icss_emac" "iqn2" "mcasp" "mcbsp" "mmcsd" "nimu" "nimu_icss" "nwal" "pa" "pcie" "pktlib" "pruss" "qmss" "rm" "sa" "serdes_diag" "spi" "srio" "tcp3d" "tfw" "transportqmss" "transportsrio" "tsip" "uart" "usb" "wdtimer")
55 proc_list=("arm" "dsp" "m4")
57 # Parameter Validation: Check if the argument was passed to the batch file.
58 # *****************************************************************************
59 # Argument [soc] is used to set SOC variable.
60 if [ -n "$1" ]; then
61     export SOC="$1"
62 else
63     export SOC="AM335x"
64 fi
66 # Argument [board] is used to set BOARD variable.
67 # This is the board type of the soc for which project are to be created.
68 if [ -n "$2" ]; then
69     export BOARD="$2"
70 else
71     export BOARD="all"
72 fi
74 # Argument [endian] is used to set ENDIAN variable.
75 # This is Endianess of the projects being created.
76 # Valid Values are 'little' and 'big'. Defaults to 'little'.
77 if [ -n "$3" ]; then
78     export ENDIAN="$3"
79 else
80     export ENDIAN="little"
81 fi
83 # Argument [module] is used to set MODULE variable.
84 # This is specific module for which projects are created.
85 # Valid Values are LLD name. Defaults to all LLD's.
86 if [ -n "$4" ]; then
87     export MODULE="$4"
88 else
89     export MODULE="all"
90 fi
92 # Argument [processor] is used to set PROCESSOR variable.
93 # This is specific processor type for which projects are created.
94 # Valid Values are arm, dsp, or m4 . Defaults to arm.
95 if [ -n "$5" ]; then
96     export PROCESSOR="$5"
97 else
98     export PROCESSOR="arm"
99 fi
101 export PDK_SHORT_NAME=$PWD
103 # *****************************************************************************
105 echo "========================================================================="
106 echo "Configuration:"
107 echo "  SOC             :   $SOC"
108 echo "  BOARD           :   $BOARD"
109 echo "  ENDIAN          :   $ENDIAN"
110 echo "  MODULE          :   $MODULE"
111 echo "  PROCESSOR       :   $PROCESSOR"
112 echo "  PDK_SHORT_NAME  :   $PDK_SHORT_NAME"
113 echo "========================================================================="
114 echo "Checking Configuration..."
116 error_exit () {
117     echo "Exiting..."
118     echo "========================================================================="
119     exit 1
122 contains () {
123     local name=$1[@]
124     local list=("${!name}")
125     local in_list=0
127     for item in "${list[@]}"
128     do
129         if [ "$2" = "$item" ]; then
130             in_list=1
131             break
132         fi
133     done
135     if [ $in_list -eq 0 ]; then
136         echo "ERROR: $3 ($2) is invalid"
137         error_exit
138     fi
141 contains soc_list    "$SOC"         "SOC"
142 contains endian_list "$ENDIAN"      "Endian"
143 contains module_list "$MODULE"      "Module"
144 contains proc_list   "$PROCESSOR"   "Processor"
146 if [ $BOARD != "all" ]; then
147     if [ "${BOARD/$SOC}" = "$BOARD" ]; then
148         echo "ERROR: Board ($BOARD) is invalid for the specified SOC ($SOC)"
149         error_exit
150     fi
151 fi
153 if [ $SOC = "AM335x" ]; then
154     if [ $PROCESSOR = "dsp" ]; then
155         echo "ERROR: The AM335x soc does not contain a DSP processor"
156         error_exit
157     elif [ $PROCESSOR = "m4" ]; then
158         echo "ERROR: The AM335x soc does not contain a M4 processor"
159         error_exit
160     fi
162     if [ $ENDIAN = "big" ]; then
163         echo "ERROR: The AM335x soc's arm does not support big endian"
164         error_exit
165     fi
166 elif [ $SOC = "AM437x" ]; then
167     if [ $PROCESSOR = "dsp" ]; then
168         echo "ERROR: The AM437x soc does not contain a DSP processor"
169         error_exit
170     elif [ $PROCESSOR = "m4" ]; then
171         echo "ERROR: The AM437x soc does not contain a M4 processor"
172         error_exit
173     fi
175     if [ $ENDIAN = "big" ]; then
176         echo "ERROR: The AM437x soc's arm does not support big endian"
177         error_exit
178     fi
179 elif [ $SOC = "AM571x" ]; then
180     if [ $ENDIAN = "big" ]; then
181         echo "ERROR: The AM571x soc's processor's do not support big endian"
182         error_exit
183     fi
184 elif [ $SOC = "AM572x" ]; then
185     if [ $ENDIAN = "big" ]; then
186         echo "ERROR: The AM572x soc's processor's do not support big endian"
187         error_exit
188     fi
189 elif [ $SOC = "K2K" ]; then
190     if [ $PROCESSOR = "m4" ]; then
191         echo "ERROR: The K2K soc does not contain a M4 processor"
192         error_exit
193     fi
194     if [ $PROCESSOR = "arm" ]; then
195         if [ $ENDIAN = "big" ]; then
196             echo "ERROR: The K2K soc's processor's do not support big endian"
197             error_exit
198         fi
199     fi
200 elif [ $SOC = "K2H" ]; then
201     if [ $PROCESSOR = "m4" ]; then
202         echo "ERROR: The K2H soc does not contain a M4 processor"
203         error_exit
204     fi
205     if [ $PROCESSOR = "arm" ]; then
206         if [ $ENDIAN = "big" ]; then
207             echo "ERROR: The K2H soc's processor's do not support big endian"
208             error_exit
209         fi
210     fi
211 elif [ $SOC = "K2E" ]; then
212     if [ $PROCESSOR = "m4" ]; then
213         echo "ERROR: The K2E soc does not contain a M4 processor"
214         error_exit
215     fi
216     if [ $PROCESSOR = "arm" ]; then
217         if [ $ENDIAN = "big" ]; then
218             echo "ERROR: The K2E soc's processor's do not support big endian"
219             error_exit
220         fi
221     fi
222 elif [ $SOC = "K2L" ]; then
223     if [ $PROCESSOR = "m4" ]; then
224         echo "ERROR: The K2L soc does not contain a M4 processor"
225         error_exit
226     fi
227     if [ $PROCESSOR = "arm" ]; then
228         if [ $ENDIAN = "big" ]; then
229             echo "ERROR: The K2L soc's processor's do not support big endian"
230             error_exit
231         fi
232     fi
233 elif [ $SOC = "K2G" ]; then
234     if [ $PROCESSOR = "m4" ]; then
235         echo "ERROR: The K2G soc does not contain a M4 processor"
236         error_exit
237     fi
238     if [ $PROCESSOR = "arm" ]; then
239         if [ $ENDIAN = "big" ]; then
240             echo "ERROR: The K2G soc's processor's do not support big endian"
241             error_exit
242         fi
243     fi
244 elif [ $SOC = "C6678" ]; then
245     if [ $PROCESSOR = "m4" ]; then
246         echo "ERROR: The C6678 soc does not contain a M4 processor"
247         error_exit
248     fi
249     if [ $PROCESSOR = "arm" ]; then
250         echo "ERROR: The C6678 soc does not contain an arm processor"
251         error_exit
252     fi
253 elif [ $SOC = "C6657" ]; then
254     if [ $PROCESSOR = "m4" ]; then
255         echo "ERROR: The C6657 soc does not contain a M4 processor"
256         error_exit
257     fi
258     if [ $PROCESSOR = "arm" ]; then
259         echo "ERROR: The C6657 soc does not contain an arm processor"
260         error_exit
261     fi
262 else
263     echo "ERROR: Invalid soc"
264     error_exit
265 fi
267 # *****************************************************************************
268 # * Version Information of the various tools etc required to build the test
269 # * projects. Customers are free to modify these to meet their requi#ents.
270 # *****************************************************************************
272 # export to 'no' when using QT, EVM, VDB, or other hardware. export to 'yes'
273 # only when using the simulator.
274 export IS_SIMULATOR_SUPPORT_NEEDED=no
276 # Install Location for CCS
277 export CCS_INSTALL_PATH=~/ti/ccsv6
279 # Workspace where the PDK projects will be created.
280 export MY_WORKSPACE=$PDK_SHORT_NAME/MyExampleProjects
282 # macros.ini location
283 export MACROS_FILE=$PDK_SHORT_NAME/macros.ini
285 # This is the format of the executable being created
286 # Valid Values are 'ELF' and 'COFF'
287 export OUTPUT_FORMAT=ELF
289 # Version of CG-Tools
290 export CGT_VERSION=8.1.0
292 # Version of CG-ARM-Tools for M4
293 export CGT_M4_VERSION=5.2.5
295 # Version of XDC
296 export XDC_VERSION=3.32.00.06
298 # Version of BIOS
299 export BIOS_VERSION=6.45.01.29
301 # Version of CG-Tools for ARM
302 export CGT_VERSION_ARM=GNU_4.8.4:Linaro
304 # Version of the IPC
305 export IPC_VERSION=3.42.00.02
307 # EDMA3 Version 
308 export EDMA_VERSION=2.12.01.23
310 # Version of the PDK
311 export PDK_VERSION=1.0.1
313 # Version of the NDK 
314 export NDK_VERSION=2.24.03.35
316 # Version of UIA
317 export UIA_VERSION=2.00.03.43
319 # PDK Part Number & Platform name
320 if [ "$SOC" = "K2K" ]; then
321     export PDK_PARTNO=TCI6638
322     export PDK_ECLIPSE_ID=com.ti.pdk.k2hk
323     export RTSC_PLATFORM_NAME=ti.platforms.evmTCI6638K2K
324     if [ "$PROCESSOR" == "arm" ]; then
325         export RTSC_TARGET=gnu.targets.arm.A15F
326         export CCS_DEVICE="Cortex A.TCI6638K2K"
327     fi
328 elif [ "$SOC" = "K2H" ]; then
329     export PDK_PARTNO=TCI6636
330     export PDK_ECLIPSE_ID=com.ti.pdk.k2hk
331     export RTSC_PLATFORM_NAME=ti.platforms.evmTCI6636K2H
332     if [ "$PROCESSOR" == "arm" ]; then
333         export RTSC_TARGET=gnu.targets.arm.A15F
334         export CCS_DEVICE="Cortex A.66AK2H12"
335     fi
336 elif [ "$SOC" = "K2L" ]; then
337     export PDK_PARTNO=TCI6630
338     export PDK_ECLIPSE_ID=com.ti.pdk.k2l
339     export RTSC_PLATFORM_NAME=ti.platforms.evmTCI6630K2L
340     if [ "$PROCESSOR" == "arm" ]; then
341         export RTSC_TARGET=gnu.targets.arm.A15F
342         export CCS_DEVICE="Cortex A.TCI6630K2L"
343     fi
344 elif [ "$SOC" = "K2E" ]; then
345     export PDK_PARTNO=66AK2E05
346     export PDK_ECLIPSE_ID=com.ti.pdk.k2e
347     export RTSC_PLATFORM_NAME=ti.platforms.evmC66AK2E
348     if [ "$PROCESSOR" == "arm" ]; then
349         export RTSC_TARGET=gnu.targets.arm.A15F
350         export CCS_DEVICE="Cortex A.66AK2E05"
351     fi
352 elif [ "$SOC" = "K2G" ]; then
353     export PDK_PARTNO=66AK2G02
354     export PDK_ECLIPSE_ID=com.ti.pdk.k2g
355     export RTSC_PLATFORM_NAME=ti.platforms.evmTCI66AK2G02
356     if [ "$PROCESSOR" == "arm" ]; then
357         export RTSC_TARGET=gnu.targets.arm.A15F
358         export CCS_DEVICE="Cortex A.66AK2G02"
359     fi
360 elif [ "$SOC" = "AM571x" ]; then
361     export PDK_PARTNO=AM571X
362     export PDK_ECLIPSE_ID=com.ti.pdk.am57xx
363     export RTSC_PLATFORM_NAME=ti.platforms.evmAM571X
364     if [ "$PROCESSOR" = "arm" ]; then
365         export RTSC_TARGET=gnu.targets.arm.A15F
366         export CCS_DEVICE="Cortex A.AM5728_RevA"
367     elif [ "$PROCESSOR" == "m4" ]; then
368         export RTSC_TARGET=ti.targets.arm.elf.M4
369         export CCS_DEVICE="Cortex M.AM5728_RevA"
370     fi
371 elif [ "$SOC" == "AM572x" ]; then
372     export PDK_PARTNO=AM572X
373     export PDK_ECLIPSE_ID=com.ti.pdk.am57xx
374     export RTSC_PLATFORM_NAME=ti.platforms.evmAM572X
375     if [ "$PROCESSOR" == "arm" ]; then
376         export RTSC_TARGET=gnu.targets.arm.A15F
377         export CCS_DEVICE="Cortex A.AM5728_RevA"
378     elif [ "$PROCESSOR" == "m4" ]; then
379         export RTSC_TARGET=ti.targets.arm.elf.M4
380         export CCS_DEVICE="Cortex M.AM5728_RevA"
381     fi
382 elif [ "$SOC" == AM335x ]; then
383     export PDK_PARTNO=AM335
384     export PDK_ECLIPSE_ID=com.ti.pdk.am335x
385     export RTSC_PLATFORM_NAME=ti.platforms.evmAM3359
386     export RTSC_TARGET=gnu.targets.arm.A8F
387     export CCS_DEVICE="Cortex A.AM3359.ICE_AM3359"
388 elif [ "$SOC" = "AM437x" ]; then
389     export PDK_PARTNO=AM437
390     export PDK_ECLIPSE_ID=com.ti.pdk.am437x
391     export RTSC_PLATFORM_NAME=ti.platforms.evmAM437X
392     export RTSC_TARGET=gnu.targets.arm.A9F
393     export CCS_DEVICE="Cortex A.AM4379.IDK_AM437X"
394 elif [ "$SOC" = "C6678" ]; then
395     export PDK_PARTNO=C6678L
396     export PDK_ECLIPSE_ID=com.ti.pdk.c667x
397     export RTSC_PLATFORM_NAME=ti.platforms.evm6678
398 elif [ "$SOC" = "C6657" ]; then
399     export PDK_PARTNO=C6657
400     export PDK_ECLIPSE_ID=com.ti.pdk.c665x
401     export RTSC_PLATFORM_NAME=ti.platforms.evm6657
402 else
403     # Need to exit the batch script cleanly 
404     export PDK_PARTNO=TCI6634
405     export PDK_ECLIPSE_ID=ti.pdk
406     export RTSC_PLATFORM_NAME=ti.platforms.simKepler
407 fi
409 # RTSC Target
410 # - Please ensure that you select this taking into account the
411 #   OUTPUT_FORMAT and the RTSC_PLATFORM_NAME 
412 if [ "$PROCESSOR" = "dsp" ]; then
413     if [ "$ENDIAN" = "big" ]; then
414         export RTSC_TARGET=ti.targets.elf.C66_big_endian
415         export CCS_DEVICE="com.ti.ccstudio.deviceModel.C6000.GenericC64xPlusDevice"
416     else
417         export RTSC_TARGET=ti.targets.elf.C66
418         export CCS_DEVICE="com.ti.ccstudio.deviceModel.C6000.GenericC64xPlusDevice"
419     fi
420 fi
422 echo "  PDK_PARTNO         : $PDK_PARTNO"
423 echo "  PDK_ECLIPSE_ID     : $PDK_ECLIPSE_ID"
424 echo "  RTSC_PLATFORM_NAME : $RTSC_PLATFORM_NAME"
425 echo "  RTSC_TARGET        : $RTSC_TARGET"
426 echo "  CCS_DEVICE         : $CCS_DEVICE"
427 # *****************************************************************************
428 # *****************************************************************************
429 #                 Please do NOT change anything below this
430 # *****************************************************************************
431 # *****************************************************************************
433 # export auto create command by default for use with CCSv5 and CCSv6
434 export AUTO_CREATE_COMMAND=eclipse/ccstudio
436 # export project for Silicon or QT by default
437 export SIMULATOR_SUPPORT_DEFINE=
439 echo "*****************************************************************************"
440 echo "Detecting all projects in PDK and importing them in the workspace $MY_WORKSPACE"
442 # Set BOARD to equal the SOC if BOARD is set to "all".  All projects for the
443 # SOC will be picked up
444 if [ "$BOARD" = "all" ]; then
445     BOARD="$SOC"
446 fi
447 # Set MODULE to null string so it picks up all projects of PROCESSOR
448 if [ "$MODULE" = "all" ]; then
449     MODULE=""
450 fi
452 ccs_create_dsp()
454     echo Detected Project $1
455     textfile=${1#*/}
457     $CCS_INSTALL_PATH/$AUTO_CREATE_COMMAND -nosplash -data $MY_WORKSPACE -application com.ti.ccstudio.apps.projectCreate -ccs.name ${textfile%.*} -ccs.outputFormat $OUTPUT_FORMAT -ccs.device "$CCS_DEVICE" -ccs.endianness $ENDIAN -ccs.kind executable -ccs.cgtVersion $CGT_VERSION -rtsc.xdcVersion $XDC_VERSION -rtsc.enableDspBios -rtsc.biosVersion $BIOS_VERSION -rtsc.buildProfile "debug" -rtsc.products "com.ti.sdo.edma3:$EDMA_VERSION;com.ti.rtsc.IPC:$IPC_VERSION;com.ti.rtsc.SYSBIOS:$BIOS_VERSION;$PDK_ECLIPSE_ID:$PDK_VERSION;com.ti.rtsc.NDK:$NDK_VERSION;com.ti.uia:$UIA_VERSION" -rtsc.platform "$RTSC_PLATFORM_NAME" -rtsc.target $RTSC_TARGET -ccs.rts libc.a -ccs.args $textfile -ccs.overwrite full \;
459     echo "Copying macros.ini"
460     cp $PDK_SHORT_NAME/macros.ini $MY_WORKSPACE/${textfile%.*}
463 ccs_create_arm()
465     echo Detected Project $1
466     textfile=${1#*/}
468     $CCS_INSTALL_PATH/$AUTO_CREATE_COMMAND -nosplash -data $MY_WORKSPACE -application com.ti.ccstudio.apps.projectCreate -ccs.cmd "" -ccs.name ${textfile%.*} -ccs.outputFormat $OUTPUT_FORMAT -ccs.setLinkerOptions "-L\${BIOS_CG_ROOT}/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu" -ccs.device "$CCS_DEVICE" -ccs.endianness $ENDIAN -ccs.kind executable -ccs.cgtVersion $CGT_VERSION_ARM -rtsc.xdcVersion $XDC_VERSION -rtsc.enableDspBios -rtsc.biosVersion $BIOS_VERSION -rtsc.buildProfile "debug" -rtsc.products "com.ti.sdo.edma3:$EDMA_VERSION;com.ti.rtsc.SYSBIOS:$BIOS_VERSION;$PDK_ECLIPSE_ID:$PDK_VERSION;com.ti.rtsc.NDK:$NDK_VERSION" -rtsc.platform "$RTSC_PLATFORM_NAME" -rtsc.target $RTSC_TARGET -ccs.rts libc.a libgcc.a libuart.a libm.a libnosys.a -ccs.args $textfile -ccs.overwrite full \;
470     echo "Copying macros.ini"
471     cp $PDK_SHORT_NAME/macros.ini $MY_WORKSPACE/${textfile%.*}
474 ccs_create_m4()
476     echo Detected Project $1
477     textfile=${1#*/}
479     $CCS_INSTALL_PATH/$AUTO_CREATE_COMMAND -nosplash -data $MY_WORKSPACE -application com.ti.ccstudio.apps.projectCreate -ccs.cmd "" -ccs.name ${textfile%.*} -ccs.outputFormat $OUTPUT_FORMAT -ccs.device "$CCS_DEVICE" -ccs.endianness $ENDIAN -ccs.kind executable -ccs.cgtVersion $CGT_M4_VERSION -rtsc.xdcVersion $XDC_VERSION -rtsc.enableDspBios -rtsc.biosVersion $BIOS_VERSION -rtsc.buildProfile "debug" -rtsc.products "com.ti.sdo.edma3:$EDMA_VERSION;com.ti.rtsc.IPC:$IPC_VERSION;com.ti.rtsc.SYSBIOS:$BIOS_VERSION;$PDK_ECLIPSE_ID:$PDK_VERSION;com.ti.rtsc.NDK:$NDK_VERSION" -rtsc.platform "$RTSC_PLATFORM_NAME" -rtsc.target $RTSC_TARGET -ccs.rts libc.a libgcc.a libuart.a libm.a libnosys.a -ccs.args $textfile -ccs.overwrite full \;
481     echo "Copying macros.ini"
482     cp $PDK_SHORT_NAME/macros.ini $MY_WORKSPACE/${textfile%.*}
485 export -f ccs_create_dsp
486 export -f ccs_create_arm
487 export -f ccs_create_m4
489 if [ "$PROCESSOR" = "dsp" ]; then
490     find -iname "*$MODULE*$BOARD*c66*roject.txt" -execdir bash -c 'ccs_create_dsp {}' \;
491     if [ $(find -iname "*$MODULE*$BOARD*c66*roject.txt" | wc -l) -eq 0 ]; then
492        echo "No projects detected"
493     fi
494 elif [ "$PROCESSOR" = "arm" ]; then
495     find -iname "*$MODULE*$BOARD*arm*roject.txt" -execdir bash -c 'ccs_create_arm {}' \;
496     if [ $(find -iname "*$MODULE*$BOARD*arm*roject.txt" | wc -l) -eq 0 ]; then
497        echo "No projects detected"
498     fi
499 elif [ "$PROCESSOR" = "m4" ]; then
500     find -iname "*$MODULE*$BOARD*m4*roject.txt" -execdir bash -c 'ccs_create_m4 {}' \;
501     if [ $(find -iname "*$MODULE*$BOARD*m4*roject.txt" | wc -l) -eq 0 ]; then
502        echo "No projects detected"
503     fi
504 else
505     echo "$PROCESSOR is an invalid processor"
506 fi
508 echo "Project generation complete"
509 echo "*****************************************************************************"