11@ echo off
2+ :: Copyright 2025 - Infineon Technologies
23setlocal
34:: Step 1: Validate input argument
45if " %1 " == " " (
5- echo Error: No *.cbuild-gen-idx.yml file path provided as argument
6+ echo Error: No *.cbuild-gen-idx.yml file path provided as an argument
67 exit /b 1
78)
89set " CBUILD_GEN_IDX = %~1 "
@@ -12,69 +13,94 @@ if not exist "%CBUILD_GEN_IDX%" (
1213 exit /b 1
1314)
1415
15- :: Step 2: Parse project-name and cbuild-gen from *.cbuild-gen-idx.yml, then parse *.cbuild-gen.yml for paths
16+ :: Step 2: Parse project-name, cbuild-gen path from *.cbuild-gen-idx.yml and device-pack with path from *.cbuild-gen.yml
1617setlocal EnableDelayedExpansion
1718set " PROJECT_NAME = "
18- set " CBUILD_GEN_YML_DIR = "
1919set " CBUILD_GEN_YML_PATH = "
2020set " DESIGN_MODUS_SRC_PATH = "
21- set " CPROJECT_YML_PATH = "
2221set " CGEN_YML_PATH = "
22+ set " DEVICE_PACK = "
23+ set " PACK_PATH = "
2324
24- :: Parse project- name from *.cbuild-gen-idx.yml
25+ :: Parse project name from *.cbuild-gen-idx.yml
2526for /f " delims=" %%a in ('findstr /C:" project:" " %CBUILD_GEN_IDX% " ') do (
2627 set " PROJECT_NAME = %%a "
2728 set " PROJECT_NAME = !PROJECT_NAME:project-name: =! "
2829 set " PROJECT_NAME = !PROJECT_NAME: =! "
2930)
30- :: Parse cbuild-gen path from *.cbuild-gen-idx.yml and extract directory
31+ :: Parse cbuild-gen path from *.cbuild-gen-idx.yml
3132for /f " delims=" %%a in ('findstr /C:" cbuild-gen:" " %CBUILD_GEN_IDX% " ') do (
3233 set " CBUILD_GEN_YML_PATH = %%a "
3334 set " CBUILD_GEN_YML_PATH = !CBUILD_GEN_YML_PATH:cbuild-gen: =! "
3435 set " CBUILD_GEN_YML_PATH = !CBUILD_GEN_YML_PATH:- =! "
3536 set " CBUILD_GEN_YML_PATH = !CBUILD_GEN_YML_PATH: =! "
3637 set " CBUILD_GEN_YML_PATH = !CBUILD_GEN_YML_PATH:/ =\ ! "
37- for %%i in (" !CBUILD_GEN_YML_PATH! " ) do set " CBUILD_GEN_YML_DIR = %%~dpi "
38- set " CBUILD_GEN_YML_DIR = !CBUILD_GEN_YML_DIR:~0 ,-1 ! "
3938)
4039echo DEBUG: PROJECT_NAME: !PROJECT_NAME! >> debug.log
41- echo DEBUG: CBUILD_GEN_YML_DIR : !CBUILD_GEN_YML_DIR ! >> debug.log
40+ echo DEBUG: CBUILD_GEN_YML_PATH : !CBUILD_GEN_YML_PATH ! >> debug.log
4241
4342if not defined PROJECT_NAME (
4443 echo Error: Could not parse project-name from %CBUILD_GEN_IDX%
4544 exit /b 1
4645)
47- if not defined CBUILD_GEN_YML_DIR (
48- echo Error: Could not parse cbuild-gen directory from %CBUILD_GEN_IDX%
46+ if not defined CBUILD_GEN_YML_PATH (
47+ echo Error: Could not parse cbuild-gen path from %CBUILD_GEN_IDX%
4948 exit /b 1
5049)
51- if not exist " !CBUILD_GEN_YML_DIR! \ " (
52- echo Error: cbuild-gen directory not found at !CBUILD_GEN_YML_DIR !
50+ if not exist " !CBUILD_GEN_YML_PATH! " (
51+ echo Error: *. cbuild-gen.yml file not found at !CBUILD_GEN_YML_PATH !
5352 exit /b 1
5453)
5554
56- :: Find *.cbuild-gen.yml in the directory
57- for /f " delims=" %%f in ('dir /b " !CBUILD_GEN_YML_DIR! \*.cbuild-gen.yml" 2^ > nul ') do (
58- set " CBUILD_GEN_YML_PATH = !CBUILD_GEN_YML_DIR! \%%f "
55+ :: Parse device-pack from *.cbuild-gen.yml
56+ for /f " delims=" %%a in ('findstr /C:" device-pack:" " !CBUILD_GEN_YML_PATH! " ') do (
57+ set " DEVICE_PACK = %%a "
58+ set " DEVICE_PACK = !DEVICE_PACK:device-pack: =! "
59+ set " DEVICE_PACK = !DEVICE_PACK: =! "
5960)
60- echo DEBUG: CBUILD_GEN_YML_PATH : !CBUILD_GEN_YML_PATH ! >> debug.log
61+ echo DEBUG: DEVICE_PACK : !DEVICE_PACK ! >> debug.log
6162
62- if not defined CBUILD_GEN_YML_PATH (
63- echo Error: No *.cbuild-gen.yml file found in !CBUILD_GEN_YML_DIR !
63+ if not defined DEVICE_PACK (
64+ echo Error: Could not parse device-pack from !CBUILD_GEN_YML_PATH !
6465 exit /b 1
6566)
66- if not exist " !CBUILD_GEN_YML_PATH! " (
67- echo Error: *.cbuild-gen.yml file not found at !CBUILD_GEN_YML_PATH!
68- exit /b 1
67+
68+ :: Parse packs section to find the path for the device-pack
69+ set " FOUND_PACK = "
70+ set " PACK_PATH = "
71+ set " IN_PACKS = 0"
72+ for /f " delims=" %%b in ('type " !CBUILD_GEN_YML_PATH! " ') do (
73+ set " LINE = %%b "
74+ set " TRIMMED_LINE = !LINE: =! "
75+ if " !TRIMMED_LINE! " == " packs:" (
76+ set " IN_PACKS = 1"
77+ ) else if !IN_PACKS! equ 1 (
78+ if " !TRIMMED_LINE! " == " -pack:!DEVICE_PACK! " (
79+ set " FOUND_PACK = 1"
80+ ) else if defined FOUND_PACK (
81+ if " !TRIMMED_LINE:~0 ,5 ! " == " path:" (
82+ set " PACK_PATH = !LINE! "
83+ set " PACK_PATH = !PACK_PATH:path: =! "
84+ set " PACK_PATH = !PACK_PATH: =! "
85+ set " PACK_PATH = !PACK_PATH:/ =\ ! "
86+ goto :end_pack_parse
87+ )
88+ )
89+ )
6990)
91+ :end_pack_parse
92+ echo DEBUG: PACK_PATH: !PACK_PATH! >> debug.log
7093
71- :: Parse cproject.yml, cgen.yml, and design.modus paths from *.cbuild-gen.yml
72- for /f " delims=" %%a in ('findstr /C:" cproject.yml" " !CBUILD_GEN_YML_PATH! " ') do (
73- set " CPROJECT_YML_PATH = %%a "
74- set " CPROJECT_YML_PATH = !CPROJECT_YML_PATH:project: =! "
75- set " CPROJECT_YML_PATH = !CPROJECT_YML_PATH: =! "
76- set " CPROJECT_YML_PATH = !CPROJECT_YML_PATH:/ =\ ! "
94+ if not defined PACK_PATH (
95+ echo Error: Could not parse path for device-pack !DEVICE_PACK! from !CBUILD_GEN_YML_PATH!
96+ exit /b 1
97+ )
98+ if not exist " !PACK_PATH! " (
99+ echo Error: Pack path not found at !PACK_PATH!
100+ exit /b 1
77101)
102+
103+ :: Parse cgen.yml, and design.modus paths from *.cbuild-gen.yml
78104for /f " delims=" %%a in ('findstr /C:" cgen.yml" " !CBUILD_GEN_YML_PATH! " ') do (
79105 set " CGEN_YML_PATH = %%a "
80106 set " CGEN_YML_PATH = !CGEN_YML_PATH:path: =! "
@@ -87,14 +113,9 @@ for /f "delims=" %%a in ('findstr /C:"design.modus" "!CBUILD_GEN_YML_PATH!"') do
87113 set " DESIGN_MODUS_SRC_PATH = !DESIGN_MODUS_SRC_PATH: =! "
88114 set " DESIGN_MODUS_SRC_PATH = !DESIGN_MODUS_SRC_PATH:/ =\ ! "
89115)
90- echo DEBUG: CPROJECT_YML_PATH: !CPROJECT_YML_PATH! >> debug.log
91116echo DEBUG: CGEN_YML_PATH: !CGEN_YML_PATH! >> debug.log
92117echo DEBUG: DESIGN_MODUS_SRC_PATH: !DESIGN_MODUS_SRC_PATH! >> debug.log
93118
94- if not defined CPROJECT_YML_PATH (
95- echo Error: Could not parse cproject.yml path from !CBUILD_GEN_YML_PATH!
96- exit /b 1
97- )
98119if not defined CGEN_YML_PATH (
99120 echo Error: Could not parse cgen.yml path from !CBUILD_GEN_YML_PATH!
100121 exit /b 1
@@ -137,7 +158,7 @@ if not exist "!DESIGN_MODUS_DEST_PATH!" (
137158) else (
138159 echo design.modus already exists at !DESIGN_MODUS_DEST_PATH! >> debug.log
139160)
140- endlocal & set " PROJECT_NAME = %PROJECT_NAME% " & set " CPROJECT_YML_PATH = %CPROJECT_YML_PATH %" & set " CGEN_YML_PATH = %CGEN_YML_PATH %"
161+ endlocal & set " PROJECT_NAME = %PROJECT_NAME% " & set " CGEN_YML_PATH = %CGEN_YML_PATH %" & set " PACK_PATH = %PACK_PATH %"
141162
142163:: Step 3: Define paths based on *.cgen.yml path
143164setlocal EnableDelayedExpansion
@@ -290,80 +311,17 @@ if "!TOOL_PATH!"=="" (
290311)
291312endlocal & set " TOOL_PATH = %TOOL_PATH% "
292313
293- :: Step 5: Parse cbuild.yml from the directory where *.cproject.yml is present and extract props.json paths
314+ :: Step 5: Extract props.json paths using PACK_PATH from Step 2
294315setlocal EnableDelayedExpansion
295316set " LIBRARY_PATH = "
296- set " CBUILD_FILE = "
297317set " MTB_PDL_FOUND = 0"
298318set " DEVICE_DB_FOUND = 0"
299319set " MISSING_FILES = "
300320set " MTB_PDL_DIRS = "
301321set " DEVICE_DB_DIRS = "
302322
303- :: Derive directory from CPROJECT_YML_PATH
304- for %%i in (" !CPROJECT_YML_PATH! " ) do set " PARENT_DIR = %%~dpi "
305- set " PARENT_DIR = !PARENT_DIR:~0 ,-1 ! "
306-
307- :: Find *.cbuild.yml in parent directory
308- echo Searching for *.cbuild.yml in !PARENT_DIR! ... >> debug.log
309- for /f " delims=" %%f in ('dir /b " !PARENT_DIR! \*.cbuild.yml" 2^ > nul ') do (
310- set " CBUILD_FILE = !PARENT_DIR! \%%f "
311- )
312-
313- if not defined CBUILD_FILE (
314- echo Error: No *.cbuild.yml file found in !PARENT_DIR!
315- exit /b 1
316- )
317- if not exist " !CBUILD_FILE! " (
318- echo Error: cbuild file not found at !CBUILD_FILE!
319- exit /b 1
320- )
321-
322- :: Log the cbuild file being processed
323- echo Processing cbuild file: !CBUILD_FILE!
324-
325- :: Parse device-pack from cbuild.yml
326- set " DEVICE_PACK = "
327- for /f " delims=" %%a in ('findstr /C:" device-pack:" " !CBUILD_FILE! " ') do (
328- set " DEVICE_PACK = %%a "
329- set " DEVICE_PACK = !DEVICE_PACK:device-pack: =! "
330- set " DEVICE_PACK = !DEVICE_PACK: =! "
331- )
332- if not defined DEVICE_PACK (
333- echo Error: Could not parse device-pack from !CBUILD_FILE!
334- exit /b 1
335- )
336-
337- :: Extract pack name and version
338- set " PACK_NAME = "
339- set " PACK_VERSION = "
340- for /f " tokens=1,2 delims=@" %%a in (" !DEVICE_PACK! " ) do (
341- set " PACK_NAME = %%a "
342- set " PACK_VERSION = %%b "
343- )
344- if not defined PACK_NAME (
345- echo Error: Could not parse pack name from device-pack: !DEVICE_PACK!
346- exit /b 1
347- )
348- if not defined PACK_VERSION (
349- echo Error: Could not parse pack version from device-pack: !DEVICE_PACK!
350- exit /b 1
351- )
352-
353- :: Remove vendor prefix (Infineon::) from pack name
354- set " PACK_NAME_PATH = !PACK_NAME:Infineon:: =! "
355- echo Parsed pack name: !PACK_NAME! , version: !PACK_VERSION! >> debug.log
356-
357- :: Construct pack path
358- set " PACK_PATH = %USERPROFILE% \AppData\Local\Arm\Packs\Infineon\!PACK_NAME_PATH! \!PACK_VERSION! "
359- set " PACK_PATH = !PACK_PATH:/ =\ ! "
360- echo Checking pack path: !PACK_PATH! >> debug.log
361-
362- :: Verify pack path exists
363- if not exist " !PACK_PATH! " (
364- echo Error: Pack path not found at !PACK_PATH!
365- exit /b 1
366- )
323+ :: Use PACK_PATH from Step 2
324+ echo Checking pack path from Step 2: !PACK_PATH! >> debug.log
367325
368326:: Check for Libraries folder
369327set " LIBRARIES_PATH = !PACK_PATH! \Libraries"
0 commit comments