]> Shamusworld >> Repos - rmac/blob - maketabs.bat
Version bump for last commit. :-)
[rmac] / maketabs.bat
1 rem @echo off
2 rem Check for file dates and build .h files if needed
3
4 call :CHECK_OUT_OF_DATE 68k.mch 68ktab.h
5 call :CHECK_OUT_OF_DATE direct.tab mntab.h
6 call :CHECK_OUT_OF_DATE kw.tab kwtab.h
7 call :CHECK_OUT_OF_DATE risc.tab risckw.h
8 call :CHECK_OUT_OF_DATE dsp56k.mch dsp56ktab.h
9 call :CHECK_OUT_OF_DATE 6502.tab 6502kw.h
10 call :CHECK_OUT_OF_DATE op.tab opkw.h
11 call :CHECK_OUT_OF_DATE 68kregs.tab 68kregs.h
12 call :CHECK_OUT_OF_DATE 56kregs.tab 56kregs.h
13 call :CHECK_OUT_OF_DATE 6502regs.tab 6502regs.h
14 call :CHECK_OUT_OF_DATE riscregs.tab riscregs.h
15 call :CHECK_OUT_OF_DATE unary.tab unarytab.h
16
17 GOTO NOGEN
18
19 :BUILD
20
21 echo Generating files...
22
23 68kgen 68k.tab <68k.mch >68ktab.h
24 dsp56kgen dsp56k.tab <dsp56k.mch >dsp56ktab.h
25 type direct.tab 68k.tab | kwgen mn >mntab.h
26 kwgen kw <kw.tab >kwtab.h
27 kwgen mr <risc.tab >risckw.h
28 kwgen dsp <dsp56k.tab >dsp56kkw.h
29 kwgen mp <6502.tab >6502kw.h
30 kwgen mp <6502.tab >6502kw.h
31 kwgen mo <op.tab >opkw.h
32 kwgen reg68 <68kregs.tab >68kregs.h
33 kwgen reg56 <56kregs.tab >56kregs.h
34 kwgen reg65 <6502regs.tab >6502regs.h
35 kwgen regrisc <riscregs.tab >riscregs.h
36 kwgen unary <unary.tab >unarytab.h
37
38 rem Touch timestamps of files that include these header files so they'll recompile
39 echo Generating tables...
40 copy /b amode.c +,, >NUL
41 copy /b direct.c +,, >NUL
42 copy /b expr.c +,, >NUL
43 copy /b mach.c +,, >NUL
44 copy /b procln.c +,, >NUL
45 copy /b riscasm.c +,, >NUL
46 copy /b token.c +,, >NUL
47 copy /b dsp56k_mach.c +,, >NUL
48 copy /b eagen.c +,, >NUL
49 goto :END
50
51 :NOGEN
52
53 REM If eagen0.c is newer than eagen.c then "touch" eagen.c so that visual studio will recompile oth.
54 REM Same for amode.c / parmode.h and mach.c / 68ktab.h
55 call :CHECK_AND_TOUCH eagen0.c eagen.c
56 call :CHECK_AND_TOUCH parmode.h amode.c
57 call :CHECK_AND_TOUCH 68ktab.h mach.c
58
59 :END
60 exit /b
61
62 rem Check if second passed file is older compared to the first, or doesn't exist, or is zero size. In which case go generate everything just to be sure
63 :CHECK_OUT_OF_DATE
64 SET FILE1=%1
65 SET FILE2=%2
66 if not exist %FILE2% GOTO BUILD
67 FOR /F "usebackq" %%A IN ('%FILE2%') DO set size=%%~zA
68 if "%size%"=="0" GOTO BUILD
69 for /F %%i IN ('dir /b /OD %FILE1% %FILE2% ^| more +1') DO SET NEWEST=%%i
70 if %NEWEST%==%FILE1% GOTO BUILD
71
72 exit /b
73
74 rem Check if second passed file is older compared to the first, and "touch" the file stamp of hat file if yes
75 :CHECK_AND_TOUCH
76 SET FILE1=%1
77 SET FILE2=%2
78 for /F %%i IN ('dir /b /OD %FILE1% %FILE2% ^| more +1') DO SET NEWEST=%%i
79 if %NEWEST%==%FILE2% GOTO :CHECK_AND_TOUCH_END
80 Echo touching %2...
81 copy /b %2 +,, >NUL
82
83 :CHECK_AND_TOUCH_END
84 exit /b