1# Makefile for make7 and gcc from MinGW. Commands executed by: cmd.exe
2# To compile use a Windows console and call:
3#   ..\bin\make7 -f mk_mingc.mak depend
4#   ..\bin\make7 -f mk_mingc.mak
5# When your make utility uses Unix commands, you should use mk_msys.mak instead.
6# When the nmake utility from Windows is available, you can use mk_nmake.mak instead.
7# When you are using the MSYS console from MinGW you should use mk_msys.mak instead.
8
9# CFLAGS = -O2 -fomit-frame-pointer -funroll-loops -Wall
10# CFLAGS = -O2 -fomit-frame-pointer -Wall -Wstrict-prototypes -Winline -Wconversion -Wshadow -Wpointer-arith
11# CFLAGS = -O2 -g -ffunction-sections -fdata-sections $(INCLUDE_OPTIONS) $(CC_OPT_LINK_TIME_OPTIMIZATION) -Wall -Wstrict-prototypes -Winline -Wconversion -Wshadow -Wpointer-arith
12CFLAGS = -O2 -g -ffunction-sections -fdata-sections $(INCLUDE_OPTIONS) $(CC_OPT_LINK_TIME_OPTIMIZATION)
13# CFLAGS = -O2 -g -pg -Wall -Wstrict-prototypes -Winline -Wconversion -Wshadow -Wpointer-arith
14# CFLAGS = -O2 -Wall -Wstrict-prototypes -Winline -Wconversion -Wshadow -Wpointer-arith
15# CFLAGS = -O2 -pg -Wall -Wstrict-prototypes -Winline -Wconversion -Wshadow -Wpointer-arith
16# CFLAGS = -O2 -funroll-loops -Wall -pg
17LDFLAGS = -Wl,--gc-sections,--stack,8388608
18# LDFLAGS = -Wl,--gc-sections,--stack,8388608,--subsystem,windows
19# LDFLAGS = -pg
20# LDFLAGS = -pg -lc_p
21SYSTEM_LIBS = -lws2_32
22# SYSTEM_LIBS = -lm -lws2_32 -lgmp
23# SYSTEM_BIGINT_LIBS is defined in the file "macros". The program chkccomp.c writes it to "macros" when doing "make depend".
24SYSTEM_CONSOLE_LIBS =
25# SYSTEM_DATABASE_LIBS is defined in the file "macros". The program chkccomp.c writes it to "macros" when doing "make depend".
26SYSTEM_DRAW_LIBS = -lgdi32
27SYSTEM_MATH_LIBS = -lm
28ALL_SYSTEM_LIBS = $(SYSTEM_LIBS) $(SYSTEM_BIGINT_LIBS) $(SYSTEM_CONSOLE_LIBS) $(SYSTEM_DATABASE_LIBS) $(SYSTEM_DRAW_LIBS) $(SYSTEM_MATH_LIBS)
29SEED7_LIB = seed7_05.a
30DRAW_LIB = s7_draw.a
31CONSOLE_LIB = s7_con.a
32DATABASE_LIB = s7_db.a
33COMP_DATA_LIB = s7_data.a
34COMPILER_LIB = s7_comp.a
35ALL_S7_LIBS = ..\bin\$(COMPILER_LIB) ..\bin\$(COMP_DATA_LIB) ..\bin\$(DRAW_LIB) ..\bin\$(CONSOLE_LIB) ..\bin\$(DATABASE_LIB) ..\bin\$(SEED7_LIB)
36# CC = g++
37CC = ..\bin\call_gcc
38AR = ..\bin\call_ar
39
40MOBJ = s7.o
41POBJ = runerr.o option.o primitiv.o
42LOBJ = actlib.o arrlib.o biglib.o binlib.o blnlib.o bstlib.o chrlib.o cmdlib.o conlib.o dcllib.o \
43       drwlib.o enulib.o fillib.o fltlib.o hshlib.o intlib.o itflib.o kbdlib.o lstlib.o pcslib.o \
44       pollib.o prclib.o prglib.o reflib.o rfllib.o sctlib.o setlib.o soclib.o sqllib.o strlib.o \
45       timlib.o typlib.o ut8lib.o
46EOBJ = exec.o doany.o objutl.o
47AOBJ = act_comp.o prg_comp.o analyze.o syntax.o token.o parser.o name.o type.o \
48       expr.o atom.o object.o scanner.o literal.o numlit.o findid.o \
49       error.o infile.o libpath.o symbol.o info.o stat.o fatal.o match.o
50GOBJ = syvarutl.o traceutl.o actutl.o executl.o blockutl.o \
51       entutl.o identutl.o chclsutl.o arrutl.o
52ROBJ = arr_rtl.o bln_rtl.o bst_rtl.o chr_rtl.o cmd_rtl.o con_rtl.o dir_rtl.o drw_rtl.o fil_rtl.o \
53       flt_rtl.o hsh_rtl.o int_rtl.o itf_rtl.o pcs_rtl.o set_rtl.o soc_rtl.o sql_rtl.o str_rtl.o \
54       tim_rtl.o ut8_rtl.o heaputl.o numutl.o sigutl.o striutl.o
55DOBJ = big_rtl.o big_gmp.o cmd_win.o dir_win.o dll_win.o fil_win.o pcs_win.o pol_sel.o soc_none.o \
56       stat_win.o tim_win.o
57OBJ = $(MOBJ)
58SEED7_LIB_OBJ = $(ROBJ) $(DOBJ)
59DRAW_LIB_OBJ = gkb_rtl.o drw_win.o gkb_win.o
60CONSOLE_LIB_OBJ = kbd_rtl.o con_win.o
61DATABASE_LIB_OBJ = sql_base.o sql_db2.o sql_fire.o sql_lite.o sql_my.o sql_oci.o sql_odbc.o \
62                   sql_post.o sql_srv.o sql_tds.o
63COMP_DATA_LIB_OBJ = typ_data.o rfl_data.o ref_data.o listutl.o flistutl.o typeutl.o datautl.o
64COMPILER_LIB_OBJ = $(POBJ) $(LOBJ) $(EOBJ) $(AOBJ) $(GOBJ)
65
66MSRC = s7.c
67PSRC = runerr.c option.c primitiv.c
68LSRC = actlib.c arrlib.c biglib.c binlib.c blnlib.c bstlib.c chrlib.c cmdlib.c conlib.c dcllib.c \
69       drwlib.c enulib.c fillib.c fltlib.c hshlib.c intlib.c itflib.c kbdlib.c lstlib.c pcslib.c \
70       pollib.c prclib.c prglib.c reflib.c rfllib.c sctlib.c setlib.c soclib.c sqllib.c strlib.c \
71       timlib.c typlib.c ut8lib.c
72ESRC = exec.c doany.c objutl.c
73ASRC = act_comp.c prg_comp.c analyze.c syntax.c token.c parser.c name.c type.c \
74       expr.c atom.c object.c scanner.c literal.c numlit.c findid.c \
75       error.c infile.c libpath.c symbol.c info.c stat.c fatal.c match.c
76GSRC = syvarutl.c traceutl.c actutl.c executl.c blockutl.c \
77       entutl.c identutl.c chclsutl.c arrutl.c
78RSRC = arr_rtl.c bln_rtl.c bst_rtl.c chr_rtl.c cmd_rtl.c con_rtl.c dir_rtl.c drw_rtl.c fil_rtl.c \
79       flt_rtl.c hsh_rtl.c int_rtl.c itf_rtl.c pcs_rtl.c set_rtl.c soc_rtl.c sql_rtl.c str_rtl.c \
80       tim_rtl.c ut8_rtl.c heaputl.c numutl.c sigutl.c striutl.c
81DSRC = big_rtl.c big_gmp.c cmd_win.c dir_win.c dll_win.c fil_win.c pcs_win.c pol_sel.c soc_none.c \
82       stat_win.c tim_win.c
83SRC = $(MSRC)
84SEED7_LIB_SRC = $(RSRC) $(DSRC)
85DRAW_LIB_SRC = gkb_rtl.c drw_win.c gkb_win.c
86CONSOLE_LIB_SRC = kbd_rtl.c con_win.c
87DATABASE_LIB_SRC_STD_INCL = sql_base.c sql_fire.c sql_lite.c sql_my.c sql_oci.c sql_odbc.c \
88                            sql_post.c sql_tds.c
89DATABASE_LIB_SRC = $(DATABASE_LIB_SRC_STD_INCL) sql_db2.c sql_srv.c
90COMP_DATA_LIB_SRC = typ_data.c rfl_data.c ref_data.c listutl.c flistutl.c typeutl.c datautl.c
91COMPILER_LIB_SRC = $(PSRC) $(LSRC) $(ESRC) $(ASRC) $(GSRC)
92
93s7: ..\bin\s7.exe ..\prg\s7.exe
94	..\bin\s7 -l ..\lib level
95
96s7c: ..\bin\s7c.exe ..\prg\s7c.exe
97
98..\bin\s7.exe: levelup.exe next_lvl $(OBJ) $(ALL_S7_LIBS)
99	$(CC) $(LDFLAGS) $(OBJ) $(ALL_S7_LIBS) $(ALL_SYSTEM_LIBS) -o ..\bin\s7
100	del next_lvl
101
102..\prg\s7.exe: ..\bin\s7.exe
103	copy ..\bin\s7.exe ..\prg /Y
104
105..\bin\s7c.exe: ..\prg\s7c.exe
106	copy ..\prg\s7c.exe ..\bin /Y
107
108..\prg\s7c.exe: ..\prg\s7c.sd7 $(ALL_S7_LIBS)
109	..\bin\s7 -l ..\lib ..\prg\s7c -l ..\lib -b ..\bin -O2 ..\prg\s7c
110
111levelup.exe: levelup.c
112	$(CC) levelup.c -w -o levelup
113
114next_lvl: levelup.exe
115	.\levelup.exe
116	echo X > next_lvl
117
118sql_db2.o: sql_db2.c
119	$(CC) -c $(CPPFLAGS) $(DB2_INCLUDE_OPTION) $(CFLAGS) $<
120
121sql_srv.o: sql_srv.c
122	$(CC) -c $(CPPFLAGS) $(SQL_SERVER_INCLUDE_OPTION) $(CFLAGS) $<
123
124all: depend
125	$(MAKE) -f mk_mingc.mak s7 s7c
126
127clear: clean
128
129clean:
130	del *.o
131	del ..\bin\*.a
132	del ..\bin\s7.exe
133	del ..\bin\s7c.exe
134	del ..\prg\s7.exe
135	del ..\prg\s7c.exe
136	del depend
137	del macros
138	del chkccomp.h
139	del base.h
140	del settings.h
141	del version.h
142	del setwpath.exe
143	del wrdepend.exe
144	del sudo.exe
145	del levelup.exe
146	del next_lvl
147
148clean_utils:
149	del ..\bin\bas7.exe
150	del ..\bin\bigfiles.exe
151	del ..\bin\calc7.exe
152	del ..\bin\cat.exe
153	del ..\bin\comanche.exe
154	del ..\bin\db7.exe
155	del ..\bin\diff7.exe
156	del ..\bin\find7.exe
157	del ..\bin\findchar.exe
158	del ..\bin\ftp7.exe
159	del ..\bin\ftpserv.exe
160	del ..\bin\hd.exe
161	del ..\bin\ide7.exe
162	del ..\bin\make7.exe
163	del ..\bin\pv7.exe
164	del ..\bin\sql7.exe
165	del ..\bin\sydir7.exe
166	del ..\bin\tar7.exe
167	del ..\bin\toutf8.exe
168	del ..\bin\which.exe
169
170distclean: clean clean_utils
171	copy level_bk.h level.h /Y
172	del vers_mingc.h
173
174test:
175	..\bin\s7 -l ..\lib ..\prg\chk_all build
176
177install: setwpath.exe
178	.\sudo .\setwpath.exe add ..\bin
179
180uninstall: setwpath.exe
181	.\sudo .\setwpath.exe remove ..\bin
182
183dep: depend
184
185strip:
186	strip ..\bin\s7.exe
187
188chkccomp.h:
189	echo #define LIST_DIRECTORY_CONTENTS "dir" > chkccomp.h
190	echo #define TEST_C_COMPILER "../bin/call_gcc" >> chkccomp.h
191	echo #define LINKER_OPT_STATIC_LINKING "-static" >> chkccomp.h
192	echo #define CC_OPT_LINK_TIME_OPTIMIZATION "-flto" >> chkccomp.h
193	echo #define LINKER_OPT_NO_LTO "-fno-lto" >> chkccomp.h
194	echo #define POSTGRESQL_USE_DLL >> chkccomp.h
195
196base.h:
197	echo #define PATH_DELIMITER '\\' > base.h
198	echo #define OS_STRI_WCHAR >> base.h
199	echo #define QUOTE_WHOLE_SHELL_COMMAND >> base.h
200	echo #define OBJECT_FILE_EXTENSION ".o" >> base.h
201	echo #define EXECUTABLE_FILE_EXTENSION ".exe" >> base.h
202	echo #define C_COMPILER_SCRIPT "call_gcc" >> base.h
203	echo #define CC_OPT_VERSION_INFO "--version" >> base.h
204	echo #define CC_FLAGS "-ffunction-sections -fdata-sections" >> base.h
205	echo #define CC_ERROR_FILEDES 2 >> base.h
206	echo #define CC_VERSION_INFO_FILEDES 1 >> base.h
207	echo #define LINKER_OPT_OUTPUT_FILE "-o " >> base.h
208	echo #define ARCHIVER "..\\bin\\call_ar" >> base.h
209	echo #define ARCHIVER_OPT_REPLACE "r " >> base.h
210	echo #define FORMAT_LL_TRIGGERS_WARNINGS 1 >> base.h
211	echo #define SYSTEM_LIBS "$(SYSTEM_LIBS)" >> base.h
212	echo #define SYSTEM_MATH_LIBS "$(SYSTEM_MATH_LIBS)" >> base.h
213
214settings.h:
215	echo #define MAKE_UTILITY_NAME "$(MAKE)" > settings.h
216	echo #define MAKEFILE_NAME "mk_mingc.mak" >> settings.h
217	echo #define SEARCH_PATH_DELIMITER ';' >> settings.h
218	echo #define CONSOLE_WCHAR >> settings.h
219	echo #define os_getch _getwch >> settings.h
220	echo #define LIBRARY_FILE_EXTENSION ".a" >> settings.h
221	echo #define CC_OPT_DEBUG_INFO "-g" >> settings.h
222	echo #define CC_OPT_NO_WARNINGS "-w" >> settings.h
223	echo #define LINKER_OPT_NO_DEBUG_INFO "-Wl,--strip-debug" >> settings.h
224	echo #define LINKER_FLAGS "$(LDFLAGS)" >> settings.h
225	echo #define SYSTEM_CONSOLE_LIBS "$(SYSTEM_CONSOLE_LIBS)" >> settings.h
226	echo #define SYSTEM_DRAW_LIBS "$(SYSTEM_DRAW_LIBS)" >> settings.h
227	echo #define SEED7_LIB "$(SEED7_LIB)" >> settings.h
228	echo #define DRAW_LIB "$(DRAW_LIB)" >> settings.h
229	echo #define CONSOLE_LIB "$(CONSOLE_LIB)" >> settings.h
230	echo #define DATABASE_LIB "$(DATABASE_LIB)" >> settings.h
231	echo #define COMP_DATA_LIB "$(COMP_DATA_LIB)" >> settings.h
232	echo #define COMPILER_LIB "$(COMPILER_LIB)" >> settings.h
233
234version.h: chkccomp.h base.h settings.h
235	$(CC) chkccomp.c -w -o chkccomp
236	.\chkccomp.exe version.h
237	del chkccomp.exe
238	$(CC) setpaths.c -w -o setpaths
239	.\setpaths.exe "S7_LIB_DIR=$(S7_LIB_DIR)" "SEED7_LIBRARY=$(SEED7_LIBRARY)" >> version.h
240	del setpaths.exe
241	$(CC) setwpath.c -w -o setwpath
242	$(CC) wrdepend.c -w -o wrdepend
243	$(CC) sudo.c -w -o sudo
244	copy version.h vers_mingc.h /Y
245
246depend: version.h
247	.\wrdepend.exe OPTION=INCLUDE_OPTIONS $(CFLAGS) -M $(SRC) "> depend"
248	.\wrdepend.exe OPTION=INCLUDE_OPTIONS $(CFLAGS) -M $(SEED7_LIB_SRC) ">> depend"
249	.\wrdepend.exe OPTION=INCLUDE_OPTIONS $(CFLAGS) -M $(DRAW_LIB_SRC) ">> depend"
250	.\wrdepend.exe OPTION=INCLUDE_OPTIONS $(CFLAGS) -M $(CONSOLE_LIB_SRC) ">> depend"
251	.\wrdepend.exe OPTION=INCLUDE_OPTIONS $(CFLAGS) -M $(DATABASE_LIB_SRC_STD_INCL) ">> depend"
252	.\wrdepend.exe OPTION=DB2_INCLUDE_OPTION $(CFLAGS) -M sql_db2.c ">> depend"
253	.\wrdepend.exe OPTION=SQL_SERVER_INCLUDE_OPTION $(CFLAGS) -M sql_srv.c ">> depend"
254	.\wrdepend.exe OPTION=INCLUDE_OPTIONS $(CFLAGS) -M $(COMP_DATA_LIB_SRC) ">> depend"
255	.\wrdepend.exe OPTION=INCLUDE_OPTIONS $(CFLAGS) -M $(COMPILER_LIB_SRC) ">> depend"
256
257..\bin\$(SEED7_LIB): $(SEED7_LIB_OBJ)
258	$(AR) r ..\bin\$(SEED7_LIB) $(SEED7_LIB_OBJ)
259
260..\bin\$(DRAW_LIB): $(DRAW_LIB_OBJ)
261	$(AR) r ..\bin\$(DRAW_LIB) $(DRAW_LIB_OBJ)
262
263..\bin\$(CONSOLE_LIB): $(CONSOLE_LIB_OBJ)
264	$(AR) r ..\bin\$(CONSOLE_LIB) $(CONSOLE_LIB_OBJ)
265
266..\bin\$(DATABASE_LIB): $(DATABASE_LIB_OBJ)
267	$(AR) r ..\bin\$(DATABASE_LIB) $(DATABASE_LIB_OBJ)
268
269..\bin\$(COMP_DATA_LIB): $(COMP_DATA_LIB_OBJ)
270	$(AR) r ..\bin\$(COMP_DATA_LIB) $(COMP_DATA_LIB_OBJ)
271
272..\bin\$(COMPILER_LIB): $(COMPILER_LIB_OBJ)
273	$(AR) r ..\bin\$(COMPILER_LIB) $(COMPILER_LIB_OBJ)
274
275..\bin\%.exe: ..\prg\%.sd7 ..\bin\s7c.exe
276	..\bin\s7c.exe -l ..\lib -b ..\bin -O3 -oc3 $<
277	move /Y $(<:.sd7=.exe) ..\bin
278
279bas7: ..\bin\bas7.exe
280bigfiles: ..\bin\bigfiles.exe
281calc7: ..\bin\calc7.exe
282cat: ..\bin\cat.exe
283comanche: ..\bin\comanche.exe
284db7: ..\bin\db7.exe
285diff7: ..\bin\diff7.exe
286find7: ..\bin\find7.exe
287findchar: ..\bin\findchar.exe
288ftp7: ..\bin\ftp7.exe
289ftpserv: ..\bin\ftpserv.exe
290hd: ..\bin\hd.exe
291ide7: ..\bin\ide7.exe
292make7: ..\bin\make7.exe
293pv7: ..\bin\pv7.exe
294sql7: ..\bin\sql7.exe
295sydir7: ..\bin\sydir7.exe
296tar7: ..\bin\tar7.exe
297toutf8: ..\bin\toutf8.exe
298which: ..\bin\which.exe
299
300utils: ..\bin\bas7.exe ..\bin\bigfiles.exe ..\bin\calc7.exe ..\bin\cat.exe ..\bin\comanche.exe ..\bin\db7.exe \
301       ..\bin\diff7.exe ..\bin\find7.exe ..\bin\findchar.exe ..\bin\ftp7.exe ..\bin\ftpserv.exe ..\bin\hd.exe ..\bin\ide7.exe \
302       ..\bin\make7.exe ..\bin\pv7.exe ..\bin\sql7.exe ..\bin\sydir7.exe ..\bin\tar7.exe ..\bin\toutf8.exe ..\bin\which.exe
303
304wc: $(SRC)
305	@echo SRC:
306	wc $(SRC)
307	@echo SEED7_LIB_SRC:
308	wc $(SEED7_LIB_SRC)
309	@echo DRAW_LIB_SRC:
310	wc $(DRAW_LIB_SRC)
311	@echo CONSOLE_LIB_SRC:
312	wc $(CONSOLE_LIB_SRC)
313	@echo DATABASE_LIB_SRC:
314	wc $(DATABASE_LIB_SRC)
315	@echo COMP_DATA_LIB_SRC:
316	wc $(COMP_DATA_LIB_SRC)
317	@echo COMPILER_LIB_SRC:
318	wc $(COMPILER_LIB_SRC)
319
320lint: $(SRC)
321	lint -p $(SRC) $(ALL_SYSTEM_LIBS)
322
323lint2: $(SRC)
324	lint -Zn2048 $(SRC) $(ALL_SYSTEM_LIBS)
325
326ifeq (depend,$(wildcard depend))
327include depend
328endif
329
330ifeq (macros,$(wildcard macros))
331include macros
332endif
333