-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathcompile_MINGW.BAT
316 lines (241 loc) · 8.23 KB
/
compile_MINGW.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
@echo off
rem
rem $Id: compile_mingw.bat $
rem
:COMPILE_MINGW
if "%HG_ROOT%" == "" goto ERROR1
if "%HG_HRB%" == "" goto ERROR1
if "%HG_MINGW%" == "" goto ERROR1
if "%LIB_GUI%" == "" goto ERROR1
if "%LIB_HRB%" == "" goto ERROR1
if "%BIN_HRB%" == "" goto ERROR1
:CHECK
if "%1" == "" goto ERROR2
set HG_FILE=%1
if exist %1.prg goto CLEAN_EXE
set HG_FILE=%~n1
if /I "%~x1" == ".PRG" goto CLEAN_EXE
set HG_FILE=
goto ERROR3
:CLEAN_EXE
if exist %HG_FILE%.exe del %HG_FILE%.exe
if exist %HG_FILE%.exe goto ERROR4
if exist _temp.rc del _temp.rc
if exist _temp.rc goto ERROR5
if exist oohglog.txt del oohglog.txt
:MORE_SETS
rem *** Force static linking ***
set HG_STATIC_LIBS=-static -static-libgcc %HG_ADDSTATIC%
rem *** Set PATH ***
set "HG_PATH=%PATH%"
set "PATH=%HG_MINGW%\bin;%HG_HRB%\%BIN_HRB%"
:PARSE_SWITCHES
set HG_C_FLAGS=
set HG_C_LIBS=
set HG_C_LOG=1^>nul
set HG_COMP_TYPE=STD
set HG_DEFINES=
set HG_EXTRA=
set HG_FILE=%HG_FILE%
set HG_NO_RUN=FALSE
set HG_PRG_LOG=
set HG_SEARCH=
set HG_STRIP=-s
set HG_USE_RC=TRUE
set HG_W_LIBS=
:LOOP_START
if "%2" == "" goto LOOP_END
if /I "%2" == "/C" goto SW_CONSOLE
if /I "%2" == "/D" goto SW_DEBUG
if /I "%2" == "/GTWIN" goto SW_CONSOLE
if /I "%2" == "/L" goto SW_USELOG
if /I "%2" == "/LOG" goto SW_USELOG
if /I "%2" == "/NORC" goto SW_NORC
if /I "%2" == "/NOSTRIP" goto SW_NOSTRIP
if /I "%2" == "/NR" goto SW_NORUN
if /I "%2" == "/P" goto SW_PPO
if /I "%2" == "/S" goto SW_SILENT
if /I "%2" == "/SL" goto SW_SILENT
if /I "%2" == "/V" goto SW_VERBOSE
if /I "%2" == "/W3" goto SW_W3
if /I "%2" == "-C" goto SW_CONSOLE
if /I "%2" == "-D" goto SW_DEBUG
if /I "%2" == "-GTWIN" goto SW_CONSOLE
if /I "%2" == "-L" goto SW_USELOG
if /I "%2" == "-LOG" goto SW_USELOG
if /I "%2" == "-NORC" goto SW_NORC
if /I "%2" == "-NOSTRIP" goto SW_NOSTRIP
if /I "%2" == "-NR" goto SW_NORUN
if /I "%2" == "-P" goto SW_PPO
if /I "%2" == "-S" goto SW_SILENT
if /I "%2" == "-SL" goto SW_SILENT
if /I "%2" == "-V" goto SW_VERBOSE
if /I "%2" == "-W3" goto SW_W3
set HG_EXTRA=%HG_EXTRA% %2
shift
goto LOOP_START
:SW_CONSOLE
set HG_COMP_TYPE=CONSOLE
set HG_DEFINES=-D_OOHG_CONSOLEMODE_
shift
goto LOOP_START
:SW_DEBUG
set HG_COMP_TYPE=DEBUG
set HG_DEFINES=-D_OOHG_CONSOLEMODE_
shift
goto LOOP_START
:SW_NORC
set HG_USE_RC=FALSE
shift
goto LOOP_START
:SW_NORUN
set HG_NO_RUN=TRUE
shift
goto LOOP_START
:SW_NOSTRIP
set HG_STRIP=
shift
goto LOOP_START
:SW_PPO
set HG_EXTRA=%HG_EXTRA% -p
shift
goto LOOP_START
:SW_SILENT
set HG_PRG_LOG=1^>nul 2^>^&1
set HG_C_LOG=1^>nul 2^>^&1
shift
goto LOOP_START
:SW_USELOG
set HG_PRG_LOG=-q 1^>^>oohglog.txt 2^>^>^&1
set HG_C_LOG=1^>^>oohglog.txt 2^>^>^&1
shift
goto LOOP_START
:SW_VERBOSE
set HG_PRG_LOG=
set HG_C_LOG=
shift
goto LOOP_START
:SW_W3
set HG_EXTRA=%HG_EXTRA% -w3
shift
goto LOOP_START
:LOOP_END
echo #define oohgpath %HG_ROOT%\RESOURCES > _oohg_resconfig.h
set HG_OBJS=%HG_FILE%.o
if "%HG_USE_RC%" == "FALSE" goto WITHOUT_HG_RC
echo. > %HG_ROOT%\resources\filler
if exist %HG_FILE%.rc copy /b %HG_FILE%.rc + %HG_ROOT%\resources\filler + %HG_ROOT%\resources\oohg.rc _temp.rc %HG_C_LOG%
if not exist %HG_FILE%.rc copy /b %HG_ROOT%\resources\oohg.rc _temp.rc %HG_C_LOG%
windres.exe -I %HG_ROOT%\INCLUDE -i _temp.rc -o _temp.o %HG_C_LOG%
if errorlevel 1 set HG_NO_RUN=TRUE
if errorlevel 1 echo Error compiling resources! %HG_PRG_LOG%
if errorlevel 1 goto CLEANUP
set HG_OBJS=%HG_OBJS% _temp.o
goto COMPILE_PRG
:WITHOUT_HG_RC
if not exist %HG_FILE%.rc goto COMPILE_PRG
copy /b %HG_FILE%.rc _temp.rc %HG_C_LOG%
windres.exe -I %HG_ROOT%\INCLUDE -i _temp.rc -o _temp.o %HG_C_LOG%
if errorlevel 1 set HG_NO_RUN=TRUE
if errorlevel 1 echo Error compiling resources! %HG_PRG_LOG%
if errorlevel 1 goto CLEANUP
set HG_OBJS=%HG_OBJS% _temp.o
:COMPILE_PRG
if "%HG_COMP_TYPE%" == "DEBUG" echo OPTIONS NORUNATSTARTUP > init.cld
if "%HG_COMP_TYPE%" == "DEBUG" set %HG_EXTRA%=-b %HG_EXTRA%
set HG_SEARCH=-i%HG_HRB%\include;%HG_ROOT%\include;.
if not "%HG_INC_HRB%" == "" set HG_SEARCH=%HG_SEARCH%;%HG_INC_HRB%
%HG_HRB%\%BIN_HRB%\harbour %HG_FILE%.prg -n %HG_EXTRA% %HG_SEARCH% %HG_DEFINES% %HG_PRG_LOG%
if errorlevel 1 set HG_NO_RUN=TRUE
if errorlevel 1 goto CLEANUP
:COMPILE_C
set HG_SEARCH=-I. -I%HG_HRB%\include -I%HG_ROOT%\include %HG_INC_CCOMP%
gcc %HG_SEARCH% -Wall -c %HG_FILE%.c -o %HG_FILE%.o %HG_C_LOG%
if errorlevel 1 set HG_NO_RUN=TRUE
if errorlevel 1 echo Error compiling %HG_FILE%.c! %HG_PRG_LOG%
if errorlevel 1 goto CLEANUP
:CHECK_COMP_TYPE
if "%HG_COMP_TYPE%" == "CONSOLE" goto CONSOLE_COMP
if "%HG_COMP_TYPE%" == "DEBUG" goto CONSOLE_COMP
:STD_COMP
set HG_C_FLAGS=-Wall -mwindows
if not exist %HG_HRB%\%LIB_HRB%\mainwin.o goto LIBS_HARBOUR
set HG_OBJS=%HG_HRB%\%LIB_HRB%\mainwin.o %HG_OBJS%
goto LIBS_XHARBOUR
:CONSOLE_COMP
set HG_C_FLAGS=-Wall -mconsole
if not exist %HG_HRB%\%LIB_HRB%\mainstd.o goto LIBS_HARBOUR
set HG_OBJS=%HG_HRB%\%LIB_HRB%\mainstd.o %HG_OBJS%
:LIBS_XHARBOUR
set HG_C_LIBS=-lgtgui -lgtwin
if "%HG_COMP_TYPE%" == "DEBUG" set HG_C_LIBS=-lgtwin -lgtgui -ldebug
if "%HG_COMP_TYPE%" == "CONSOLE" set HG_C_LIBS=-lgtwin -lgtgui
set HG_C_LIBS=%HG_C_LIBS% -lrtl -lvmmt -lrdd -lcodepage -lcommon -lct -ldbfcdx -ldbffpt
set HG_C_LIBS=%HG_C_LIBS% -ldbfntx -lhbsix -lhsx -llang -lmacro -lpp %HG_ADDLIBS%
set HG_C_LIBS=%HG_C_LIBS% -lfilemem -llibmisc -lhbmzip -ltip -lhbzebra
set HG_C_LIBS=%HG_C_LIBS% -lhbzip -lrddsql -lsevenzip
set HG_C_LIBS=%HG_C_LIBS% -lhbhpdf -llibharu -lpng
goto OTHER_LIBS
:LIBS_HARBOUR
set HG_C_LIBS=-lgtgui -lgtwin
if "%HG_COMP_TYPE%" == "DEBUG" set HG_C_LIBS=-lgtwin -lgtgui -lhbdebug
if "%HG_COMP_TYPE%" == "CONSOLE" set HG_C_LIBS=-lgtwin -lgtgui
set HG_C_LIBS=%HG_C_LIBS% -lhbrtl -lhbvmmt -lhbrdd -lhbcpage -lhbcommon -lhbct -lrddcdx -lrddfpt
set HG_C_LIBS=%HG_C_LIBS% -lrddntx -lhbsix -lhbhsx -lhblang -lhbmacro -lhbpp %HG_ADDLIBS%
set HG_C_LIBS=%HG_C_LIBS% -lhbmemio -lhbmisc -lhbmzip -lhbtip -lhbzebra
set HG_C_LIBS=%HG_C_LIBS% -lrddsql -lhbziparc -lminizip
rem hbhpdf must precede hbwin, png and xhb
set HG_C_LIBS=%HG_C_LIBS% -lhbhpdf -llibhpdf -lhbwin -lpng -lxhb
:OTHER_LIBS
rem oohg.lib must be linked first to avoid "multiple definition of hb_gtsys" error
set HG_C_LIBS=-looHG %HG_C_LIBS% -lbostaurus -lhbprinter -lminiprint
set HG_C_LIBS=%HG_C_LIBS% -luser32 -lwinspool -lgdi32 -lcomctl32 -lcomdlg32 -lole32 -loleaut32 -luuid
set HG_C_LIBS=%HG_C_LIBS% -lmpr -lwsock32 -lws2_32 -lmapi32 -lwinmm -lvfw32 -lmsimg32 -liphlpapi
:LINK
set HG_SEARCH=-L. -L%HG_ROOT%\%LIB_GUI% -L%HG_HRB%\%LIB_HRB% -L%HG_MINGW%\lib
set HG_C_LIBS=-Wl,--start-group %HG_C_LIBS% -Wl,--end-group
gcc -o %HG_FILE%.exe %HG_OBJS% %HG_C_FLAGS% %HG_STRIP% %HG_SEARCH% %HG_C_LIBS% %HG_STATIC_LIBS%
if errorlevel 1 set HG_NO_RUN=TRUE
if errorlevel 1 echo Error linking %HG_FILE%.exe! %HG_PRG_LOG%
:CLEANUP
set HG_C_FLAGS=
set HG_C_LIBS=
set HG_SEARCH=
if exist %HG_FILE%.o del %HG_FILE%.o
if exist %HG_FILE%.c del %HG_FILE%.c
for %%a in ( _temp.* ) do del %%a
if exist _oohg_resconfig.h del _oohg_resconfig.h
set HG_OBJS=
set HG_C_LOG=
set HG_PRG_LOG=
set HG_USE_RC=
set HG_EXTRA=
set HG_DEFINES=
set "PATH=%HG_PATH%"
set HG_PATH=
set HG_STATIC_LIBS=
set HG_W_LIBS=
rem *** Run ***
if "%HG_NO_RUN%" == "FALSE" if "%HG_COMP_TYPE%" == "CONSOLE" %HG_FILE%
if "%HG_NO_RUN%" == "FALSE" if not "%HG_COMP_TYPE%" == "CONSOLE" start %HG_FILE%
set HG_COMP_TYPE=
set HG_FILE=
set HG_NO_RUN=
if exist init.cld del init.cld
goto END
:ERROR1
echo This file must be called from COMPILE.BAT !!!
goto END
:ERROR2
echo COMPILE ERROR: No file specified !!!
goto END
:ERROR3
echo File %HG_FILE%.prg not found !!!
goto END
:ERROR4
echo COMPILE ERROR: Is %HG_FILE%.exe running ?
goto END
:ERROR5
echo Cant't delete _temp.rc file !!!
goto END
:END