-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.bat
108 lines (91 loc) · 3.02 KB
/
build.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
@echo off
@setlocal EnableDelayedExpansion enableextensions
@cls
@cd %~dp0
@SET PROGRAM_NAME=%~dp0
@for /D %%a in ("%PROGRAM_NAME:~0,-1%.txt") do @SET PROGRAM_NAME=%%~na
@SET EABI=arm-none-eabi
@SET LIB_BIP_PATH="..\libbip"
@SET LIB_BIP="%LIB_BIP_PATH%\libbip.a"
@SET GCC_OPT=-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fno-math-errno -I "%LIB_BIP_PATH%" -c -Os -Wa,-R -Wall -fpie -pie -fpic -mthumb -mlittle-endian -ffunction-sections -fdata-sections
@SET LD_OPT=-lm -lc -EL -N -Os --cref -pie --gc-sections
@SET AS=%EABI%-as
@SET LD=%EABI%-ld
@SET OBJCOPY=%EABI%-objcopy
@SET GCC=%EABI%-gcc
@SET NM=%EABI%-nm
if exist label.txt (
set /p LABEL=< label.txt
) else (
SET LABEL = %PROGRAM_NAME%
)
@call :echoColor 0F "====================================" 1
@call :echoColor 0F " ¨¬¥®¢ ¨¥ ¯à®¥ªâ : "
@echo %PROGRAM_NAME%
@call :echoColor 0F "Š®¬¯¨«ïâ®à: "
@echo %COMPILER%
@call :echoColor 0F "====================================" 1
@echo.
@call :echoColor 0F " ç¨ ¥¬ á¡®àªã..." 1
@SET PARTNAME=%PROGRAM_NAME%
@call :echoColor 0B "Š®¬¯¨«ïæ¨ï "
@call :echoColor 0E "%PARTNAME%" 1
@SET n=1
@for %%f in (*.c) do (
@ SET FILES_TO_COMPILE=!FILES_TO_COMPILE! %%~nf.o
@call :EchoN "%n%. %%~nf.c"
!GCC! !GCC_OPT! -o %%~nf.o %%~nf.c
@if errorlevel 1 goto :error
@call :echoColor 0A "...OK" 1
@SET /a n=n+1)
@SET /a n=n-1
@call :echoColor 0B "ˆâ®£®: "
@call :echoColor 0E "%n%" 1
@call :echoColor 0B "‘¡®àª ..."
%LD% -Map %PARTNAME%.map -o %PROGRAM_NAME%.elf %FILES_TO_COMPILE% %LD_OPT% %LIB_BIP%
@if errorlevel 1 goto :error
if exist label.txt (
%OBJCOPY% %PROGRAM_NAME%.elf --add-section .elf.label=label.txt
)
@call :EchoN "%PROGRAM_NAME%" > name.txt
%OBJCOPY% %PROGRAM_NAME%.elf --add-section .elf.name=name.txt
if exist name.txt del name.txt
@if errorlevel 1 goto :error
@call :echoColor 0A "OK" 1
@call :echoColor 0B "‘¡®àª ®ª®ç¥ ." 1
:done_
@call :echoColor 0A "ƒ®â®¢®." 1
pause
@goto :EOF
:error
@call :echoColor 4e Ž˜ˆŠ€! 1
@endlocal & @SET ERROR=ERROR
@pause
@goto :EOF
::===========================================================
:: A function prints text in first parameter without CRLF
:EchoN
@ <nul set /p strTemp=%~1
@ exit /b 0
::===========================================================
:: ‚뢮¤ § ¤ ®© áâப¨ § ¤ ë¬ æ¢¥â®¬
:: 3 ¯ à ¬¥âà ¥á«¨ ¥ ¯ãá⮩ § ¤ ¥â ¯¥à¥¢®¤ áâப¨
:: 0 = —¥àë© 8 = ‘¥àë©
:: 1 = ‘¨¨© 9 = ‘¢¥â«®-ᨨ©
:: 2 = ‡¥«¥ë© A = ‘¢¥â«®-§¥«¥ë©
:: 3 = ƒ®«ã¡®© B = ‘¢¥â«®-£®«ã¡®©
:: 4 = Šà áë© C = ‘¢¥â«®-ªà áë©
:: 5 = ‹¨«®¢ë© D = ‘¢¥â«®-«¨«®¢ë©
:: 6 = †¥«âë© E = ‘¢¥â«®-¦¥«âë©
:: 7 = ¥«ë© F = Ÿàª®-¡¥«ë©
:echoColor [Color] [Text] [\n]
@ if not defined BS for /F "tokens=1 delims=#" %%i in ('"prompt #$H#& echo on& for %%j in (.) do rem"') do set "BS=%%i"
@ if not exist foo set /p .=.<nul>foo
@ set "regex=%~2" !
@ set "regex=%regex:"="%"
@ findstr /a:%1 /prc:"\." "%regex%\..\foo" nul
@ set /p .=%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%<nul
@ if "%3" neq "" echo.
@exit /b 0
::===========================================================
====================================================