1rem @echo off
2
3set PCCDIR=
4set PREFIX=
5set usecl=
6set doinstall=false
7
8:parsecommandline
9if '%1' == '/h' goto dispinfo
10if '%1' == '/pcc' goto usepcc
11if '%1' == '/cl' goto usecl
12if '%1' == '/prefix' goto prefix
13if '%1' == '/pccdir' goto pccdir
14if '%1' == '/pccsrcdir' goto pccsrcdir
15if '%1' == '/pcclibssrcdir' goto pcclibssrcdir
16if '%1' == '/install' set doinstall=true
17goto build
18
19:dispinfo
20echo build.bat [/h] { /pcc or /cl } [/prefix -dir-] [/pccdir -dir-] [/pccsrcdir -dir-] [/pcclibssrcdir -dir-] [/install]
21goto end
22
23:prefix
24shift
25set PREFIX=%1
26shift
27goto parsecommandline
28
29:pccdir
30shift
31set PCCDIR=%1
32shift
33goto parsecommandline
34
35:pccsrcdir
36shift
37set PCCSRCDIR=%1
38shift
39goto parsecommandline
40
41:pcclibssrcdir
42shift
43set PCCLIBSSRCDIR=%1
44shift
45goto parsecommandline
46
47:usecl
48set CC=cl.exe -D__MSC__
49set CFLAGS=/nologo /Zi /MT /W2
50set CFLAGS2=/nologo /Zi /MD /Za /Wall /GS-
51set OBJ=obj
52set AR=lib.exe /nologo
53set AR_OUT=/OUT:libpcc.a
54set usecl=true
55shift
56goto parsecommandline
57
58:usepcc
59set CC=pcc.exe
60set CFLAGS=-g
61set CFLAGS2=-fno-stack-protector-all
62set OBJ=o
63set AR=ar.exe
64set AR_OUT=r libpcc.a
65set usecl=false
66shift
67goto parsecommandline
68
69:build
70
71if '%usecl%' == '' goto dispinfo
72
73set PREFIX=###%PREFIX%###
74set PREFIX=%PREFIX:"###=%
75set PREFIX=%PREFIX:###"=%
76set PREFIX=%PREFIX:###=%
77
78set PCCDIR=###%PCCDIR%###
79set PCCDIR=%PCCDIR:"###=%
80set PCCDIR=%PCCDIR:###"=%
81set PCCDIR=%PCCDIR:###=%
82
83set PCCSRCDIR=###%PCCSRCDIR%###
84set PCCSRCDIR=%PCCSRCDIR:"###=%
85set PCCSRCDIR=%PCCSRCDIR:###"=%
86set PCCSRCDIR=%PCCSRCDIR:###=%
87
88set PCCLIBSSRCDIR=###%PCCLIBSSRCDIR%###
89set PCCLIBSSRCDIR=%PCCLIBSSRCDIR:"###=%
90set PCCLIBSSRCDIR=%PCCLIBSSRCDIR:###"=%
91set PCCLIBSSRCDIR=%PCCLIBSSRCDIR:###=%
92
93if not '%PCCDIR%' == '' goto pccdirset
94set PCCDIR=C:\Program Files\pcc
95:pccdirset
96
97if not '%PCCSRCDIR%' == '' goto pccsrcdirset
98set PCCSRCDIR=..\..
99:pccsrcdirset
100
101if not '%PCCLIBSSRCDIR%' == '' goto pcclibssrcdirset
102set PCCLIBSSRCDIR=..\..\..\pcc-libs
103:pcclibssrcdirset
104
105if '%usecl%' == 'true' goto ccprefixed
106set CC="%PCCDIR%\bin\%CC%"
107set AR="%PCCDIR%\bin\%AR%"
108:ccprefixed
109
110set TARGOS=win32
111set MACH=i386
112set LIBEXECDIR=""
113
114set MIPDIR=%PCCSRCDIR%\mip
115set CPPDIR=%PCCSRCDIR%\cc\cpp
116set CCOMDIR=%PCCSRCDIR%\cc\ccom
117set CCDIR=%PCCSRCDIR%\cc\cc
118set OSDIR=%PCCSRCDIR%\os\%TARGOS%
119set MACHDIR=%PCCSRCDIR%\arch\%MACH%
120set BISON_SIMPLE=%OSDIR%\bison.simple
121set CPPFLAGS=-DWIN32 -DGCC_COMPAT -DPCC_DEBUG -DTARGOS="%TARGOS%" -Dos_%TARGOS% -DTARGMACH="%MACH%" -Dmach_%MACH% -DLIBEXECDIR=%LIBEXECDIR% -D_CRT_SECURE_NO_WARNINGS
122
123del *.obj *.o *.exe
124
125%CC% -o pcc.exe %CPPFLAGS% %CFLAGS% -I%CCDIR% -I%OSDIR% -I%MACHDIR% -I%MIPDIR% %CCDIR%\cc.c %MIPDIR%\compat.c
126
127bison -y -t -d --no-lines %CPPDIR%\cpy.y
128rem flex %CPPDIR%\scanner.l
129rem %CC% -o cpp.exe %CPPFLAGS% %CFLAGS% -I%CPPDIR% -I%OSDIR% -I%MACHDIR% -I%MIPDIR% -I. %CPPDIR%\cpp.c %MIPDIR%\compat.c y.tab.c lex.yy.c "C:\Program Files\UnxUtils\usr\local\lib\libfl.lib"
130%CC% -o cpp.exe %CPPFLAGS% %CFLAGS% -I%CPPDIR% -I%OSDIR% -I%MACHDIR% -I%MIPDIR% -I. %CPPDIR%\cpp.c %CPPDIR%\token.c %MIPDIR%\compat.c y.tab.c "C:\Program Files\UnxUtils\usr\local\lib\libfl.lib"
131
132%CC% -o mkext.exe -DMKEXT %CPPFLAGS% %CFLAGS% -I%CCOMDIR% -I%OSDIR% -I%MACHDIR% -I%MIPDIR% %MIPDIR%\mkext.c %MACHDIR%\table.c %MIPDIR%\common.c
133mkext
134bison -y -t -d --no-lines %CCOMDIR%\cgram.y
135move y.tab.c cgram.c
136move y.tab.h cgram.h
137flex %CCOMDIR%\scan.l
138move lex.yy.c scan.c
139
140%CC% -o ccom.exe %CPPFLAGS% %CFLAGS% -I%CCOMDIR% -I%OSDIR% -I%MACHDIR% -I%MIPDIR% -I. %CCOMDIR%\main.c %MIPDIR%\compat.c scan.c cgram.c external.c %CCOMDIR%\optim.c %CCOMDIR%\builtins.c %CCOMDIR%\pftn.c %CCOMDIR%\trees.c %CCOMDIR%\inline.c %CCOMDIR%\symtabs.c %CCOMDIR%\init.c %MACHDIR%\local.c %MACHDIR%\code.c %CCOMDIR%\stabs.c %CCOMDIR%\gcc_compat.c %MIPDIR%\match.c %MIPDIR%\reader.c %MIPDIR%\optim2.c %MIPDIR%\regs.c %MACHDIR%\local2.c %MACHDIR%\order.c %MACHDIR%\table.c %MIPDIR%\common.c "C:\Program Files\UnxUtils\usr\local\lib\libfl.lib"
141
142if not '%PREFIX%' == '' goto prefixset
143set PREFIX=C:\Program Files\pcc
144:prefixset
145
146set PCCDESTDIR=%PREFIX%
147set LIBPCCDESTDIR=%PREFIX%\lib\i386-win32\1.1.0
148
149set LIBPCCDIR=%PCCLIBSSRCDIR%\libpcc
150%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\_alloca.c
151%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\adddi3.c
152%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\anddi3.c
153%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\ashldi3.c
154%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\ashrdi3.c
155%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\cmpdi2.c
156%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\divdi3.c
157%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\fixdfdi.c
158%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\fixsfdi.c
159%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\fixunsdfdi.c
160%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\fixunssfdi.c
161%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\floatdidf.c
162%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\floatdisf.c
163%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\floatunsdidf.c
164%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\iordi3.c
165%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\lshldi3.c
166%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\lshrdi3.c
167%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\moddi3.c
168%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\muldi3.c
169%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\negdi2.c
170%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\notdi2.c
171%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\qdivrem.c
172%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\ssp.c
173%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\subdi3.c
174%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\ucmpdi2.c
175%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\udivdi3.c
176%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\umoddi3.c
177%CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\xordi3.c
178
179if '%usecl%' == 'false' %CC% -c %CPPFLAGS% %CFLAGS2% -I%LIBPCCDIR% %LIBPCCDIR%\_ftol.c
180if '%usecl%' == 'true' ml /nologo -c %LIBPCCDIR%\_ftol.asm
181
182%AR% %AR_OUT% _ftol.%OBJ% adddi3.%OBJ% anddi3.%OBJ% ashldi3.%OBJ% ashrdi3.%OBJ% cmpdi2.%OBJ% divdi3.%OBJ% fixdfdi.%OBJ% fixsfdi.%OBJ% fixunsdfdi.%OBJ% fixunssfdi.%OBJ% floatdidf.%OBJ% floatdisf.%OBJ% floatunsdidf.%OBJ% iordi3.%OBJ% lshldi3.%OBJ% lshrdi3.%OBJ% moddi3.%OBJ% muldi3.%OBJ% negdi2.%OBJ% notdi2.%OBJ% qdivrem.%OBJ% ssp.%OBJ% subdi3.%OBJ% ucmpdi2.%OBJ% udivdi3.%OBJ% umoddi3.%OBJ% xordi3.%OBJ%
183
184if not '%doinstall%' == 'true' goto end
185
186md "%PCCDESTDIR%"
187md "%PCCDESTDIR%\bin"
188md "%PCCDESTDIR%\libexec"
189md "%PCCDESTDIR%\man"
190md "%PCCDESTDIR%\man\man1"
191md "%LIBPCCDESTDIR%\lib"
192md "%LIBPCCDESTDIR%\include"
193
194copy pcc.exe "%PCCDESTDIR%\bin"
195copy cpp.exe "%PCCDESTDIR%\libexec"
196copy ccom.exe "%PCCDESTDIR%\libexec"
197
198copy libpcc.a "%LIBPCCDESTDIR%\lib"
199copy "%LIBPCCDIR%\include\*.h" "%LIBPCCDESTDIR%\include"
200
201copy "%CCDIR%\cc.1" "%PCCDESTDIR%\man\man1"
202copy "%CPPDIR%\cpp.1" "%PCCDESTDIR%\man\man1"
203copy "%CCOMDIR%\ccom.1" "%PCCDESTDIR%\man\man1"
204
205:end
206