oops.. only build it when it _is_ valid.
[AROS-Contrib.git] / regina / makefile.win32.mingw
blob3cbf68269df5c41a099c1fe9f56fe9f02cb8624e
1 #\r
2 # Makefile for building Regina with MingW32 compiler\r
3 #\r
4 # make -C MingW32-gcc-3.4.0-MT-DYNAMIC-DEBUG -f $(SRCDIR)/makefile.win32.mingw DEBUG=Y > MingW32-gcc-3.4.0-MT-DYNAMIC-DEBUG/make-out.log 2>&1\r
5 # make -C MingW32-gcc-3.4.0-MT-DYNAMIC-RELEASE -f $(SRCDIR)/makefile.win32.mingw > MingW32-gcc-3.4.0-MT-DYNAMIC-RELEASE/make-out.log 2>&1\r
6 #\r
7 # Run with -r switch\r
8 # eg make -r -f ..\makefile.win32.mingw\r
9 #\r
11 SRCDIR=$(REGINA_SRCDIR)\r
12 COMMONSRCDIR=$(SRCDIR)\common\r
14 include $(SRCDIR)/regina.ver\r
16 VERDOT = $(VER_DOT)\r
17 VERDATE = $(VER_DATE)\r
19 VEXTRA = -DREGINA_VERSION_DATE=\"$(VER_DATE)\" -DREGINA_VERSION_MAJOR=\"$(VER_MAJOR)\" -DREGINA_VERSION_MINOR=\"$(VER_MINOR)\" -DREGINA_VERSION_SUPP=\"$(VER_SUPP)\"\r
21 CC = gcc\r
23 ifeq ($(DEBUG),Y)\r
24 OPTIMIZE = -g -fbounds-checking -Wall\r
25 else\r
26 OPTIMIZE = -O3 -Wall -DNDEBUG\r
27 endif\r
29 ifeq ($(TRACEMEM),Y)\r
30 MEMTRACE = -DTRACEMEM\r
31 else\r
32 MEMTRACE =\r
33 endif\r
35 ifeq ($(FLISTS),N)\r
36 USEFLISTS = -DNOFLISTS\r
37 else\r
38 USEFLISTS =\r
39 endif\r
41 ifdef ($(SOCKET))\r
42 REXXSOCKET = "-DRXSOCKET=$(SOCKET)"\r
43 endif\r
45 THREADING = -mthreads\r
46 MT_FILE = mt_win32.o\r
47 LDFLAGS = -mwindows -mthreads\r
48 LDFLAGS1 = -mconsole -mthreads\r
50 ifeq ($(GCI),N)\r
51 GCI_SHO =\r
52 HAVE_GCI =\r
53 else\r
54 GCI_SHO = gci_call.ts.o gci_convert.ts.o gci_execute.ts.o gci_helper.ts.o gci_prepare.ts.o \\r
55           gci_reginabridge.ts.o gci_rxfuncdefine.ts.o gci_tree.ts.o\r
56 HAVE_GCI = -DHAVE_GCI -I$(SRCDIR)/gci -I.\r
57 endif\r
59 DYN_COMP = -DDYNAMIC -D__REGINA_DLL\r
60 SHL_TARGETS = rxqueue.exe rxstack.exe regina.exe rxtest1.dll rxtest2.dll\r
61 LD_RXLIB_PRE = $(CC) -shared -mwindows -mthreads\r
62 LD_RXLIB1 = -o rxtest1.dll -Wl,--export-all-symbols -Wl,--kill-at regina.a $(TCPLIBS)\r
63 LD_RXLIB2 = -o rxtest2.dll -Wl,--export-all-symbols -Wl,--kill-at regina.a $(TCPLIBS)\r
65 .SUFFIXES:\r
67 VPATH=$(SRCDIR)/ $(SRCDIR)/gci $(SRCDIR)/ntservice\r
69 OFILES =    funcs.o builtin.o error.o variable.o interprt.o debug.o dbgfuncs.o memory.o parsing.o   \\r
70             files.o misc.o unxfuncs.o arxfuncs.o cmsfuncs.o os2funcs.o shell.o rexxext.o stack.o    \\r
71             extstack.o tracing.o interp.o cmath.o convert.o strings.o library.o strmath.o signals.o \\r
72             macros.o envir.o expr.o instore.o rexxbif.o yaccsrc.o lexsrc.o options.o os_win.o       \\r
73             wrappers.o os_other.o $(MT_FILE)\r
75 TSFILES =   funcs.ts.o builtin.ts.o error.ts.o variable.ts.o extstack.ts.o rexxbif.ts.o interprt.ts.o \\r
76             debug.ts.o dbgfuncs.ts.o memory.ts.o parsing.ts.o files.ts.o misc.ts.o unxfuncs.ts.o      \\r
77             arxfuncs.ts.o cmsfuncs.ts.o os2funcs.ts.o shell.ts.o rexxext.ts.o stack.ts.o tracing.ts.o \\r
78             interp.ts.o cmath.ts.o convert.ts.o strings.ts.o library.ts.o strmath.ts.o signals.ts.o   \\r
79             macros.ts.o envir.ts.o expr.ts.o instore.ts.o yaccsrc.ts.o lexsrc.ts.o wrappers.ts.o      \\r
80             options.ts.o os_win.ts.o os_other.ts.o rexx.ts.o client.ts.o rexxsaa.ts.o mt_win32.ts.o      \\r
81             $(GCI_SHO)\r
83 MTSSRC =    $(SRCDIR)/en.mts $(SRCDIR)/pt.mts $(SRCDIR)/no.mts $(SRCDIR)/de.mts $(SRCDIR)/es.mts $(SRCDIR)/pl.mts $(SRCDIR)/tr.mts $(SRCDIR)/sv.mts\r
85 CEXTRA = $(REXXSOCKET) $(HAVE_GCI) $(VEXTRA) -funsigned-char\r
86 COPT = -MMD $(OPTIMIZE) $(CEXTRA) -I$(SRCDIR)/ $(MEMTRACE) $(NOFLISTS) $(THREADING)\r
87 COPTDYN = -MMD $(OPTIMIZE) $(CEXTRA) -I$(SRCDIR)/ $(MEMTRACE) $(NOFLISTS) $(DYN_COMP) $(THREADING)\r
88 TCPLIBS = -lwsock32\r
90 #%.c: *.l\r
91 #       echo\r
92 #$(SRCDIR)/yaccsrc.h $(SRCDIR)/yaccsrc.c: $(SRCDIR)/yaccsrc.y\r
93 #       bison -p__regina -o$(SRCDIR)/yaccsrc.c -d $(SRCDIR)/yaccsrc.y\r
95 #$(SRCDIR)/lexsrc.c: $(SRCDIR)/lexsrc.l\r
96 #       flex -P__regina -Scontrib/flex.skl -8 -o$(SRCDIR)/lexsrc.c $(SRCDIR)/lexsrc.l\r
98 %.o: %.c\r
99         $(CC) -c $(COPT) -o $@ $<\r
100         \r
101 %.ts.o: %.c\r
102         $(CC) -c $(COPTDYN) -o $@ $<\r
104 ifdef ($(HAVE_GCI))\r
105 all: gci_convert.h rexx.exe rexx.a execiser.exe $(SHL_TARGETS) rxstack.exe rxqueue.exe threader.exe mtb_files\r
106 else\r
107 all: rexx.exe rexx.a execiser.exe $(SHL_TARGETS) rxstack.exe rxqueue.exe threader.exe mtb_files\r
108 endif\r
110 rexx.exe : $(OFILES) rexx.o rexxw32exe.o nosaa.o\r
111         $(CC) $(LDFLAGS1) -o rexx.exe $(OFILES) rexx.o rexxw32exe.o nosaa.o $(TCPLIBS)\r
113 regina.exe : regina.dll regina.o reginaw32exe.o\r
114         $(CC) $(LDFLAGS1) -o regina.exe regina.o regina.a reginaw32exe.o $(TCPLIBS)\r
116 execiser.exe : execiser.o regina.dll\r
117         $(CC) $(LDFLAGS1) -o execiser.exe execiser.o regina.a\r
119 rxqueue.exe : rxqueue.o erexxbif.o eextstack.o rxqueuew32exe.o\r
120         $(CC) $(LDFLAGS1) -o rxqueue.exe rxqueue.o erexxbif.o eextstack.o rxqueuew32exe.o $(TCPLIBS)\r
122 rxstack.exe : rxstack.o erexxbif_mt.o eextstack_mt.o service.o rxstackw32exe.o\r
123         $(CC) $(LDFLAGS1) -o rxstack.exe rxstack.o erexxbif_mt.o eextstack_mt.o service.o rxstackw32exe.o $(TCPLIBS)\r
125 threader.exe : threader.o regina.dll\r
126         $(CC) $(LDFLAGS1) -o threader.exe threader.o regina.a\r
128 rexx.a: $(OFILES) client.o drexx.o rexxsaa.o\r
129         ar rc rexx.a $(OFILES) client.o drexx.o rexxsaa.o\r
131 regina.dll: gci_convert.h $(TSFILES) reginaw32dll.o\r
132         $(CC) -shared $(LDFLAGS) -o regina.dll \\r
133   -Wl,--out-implib,regina.a -Wl,-Map,regina.dll.map -Wl,--cref \\r
134   rexx.a reginaw32dll.o *.ts.o $(TCPLIBS) $(SRCDIR)/regina_w32_mingw_dll.def\r
136 test1.o: $(SRCDIR)/test1.c\r
137         $(CC) -c $(COPTDYN) -U__REGINA_DLL -o test1.o $(SRCDIR)/test1.c\r
139 rxtest1.dll: test1.o regina.dll\r
140         $(LD_RXLIB_PRE) test1.o $(LD_RXLIB1)\r
142 test2.o: $(SRCDIR)/test2.c\r
143         $(CC) -c $(COPTDYN) -U__REGINA_DLL -o test2.o $(SRCDIR)/test2.c\r
145 rxtest2.dll: test2.o regina.dll\r
146         $(LD_RXLIB_PRE) test2.o $(LD_RXLIB2)\r
148 drexx.o: $(SRCDIR)/rexx.c\r
149         $(CC) -c $(COPT) -DRXLIB -o drexx.o $(SRCDIR)/rexx.c\r
151 rexx.ts.o: $(SRCDIR)/rexx.c\r
152         $(CC) -c $(COPTDYN) -DRXLIB -o rexx.ts.o $(SRCDIR)/rexx.c\r
154 rxqueue.o: $(SRCDIR)/rxqueue.c\r
155         $(CC) -c $(COPT) -DEXTERNAL_TO_REGINA -o rxqueue.o $(SRCDIR)/rxqueue.c\r
157 rxstack.o: $(SRCDIR)/rxstack.c\r
158         $(CC) -c $(COPT) -I$(SRCDIR)/ntservice -DEXTERNAL_TO_REGINA -DBUILD_NT_SERVICE -o rxstack.o $(SRCDIR)/rxstack.c\r
160 erexxbif_mt.o: $(SRCDIR)/rexxbif.c\r
161         $(CC) -c $(COPT) -DEXTERNAL_TO_REGINA -o erexxbif_mt.o $(SRCDIR)/rexxbif.c\r
163 erexxbif.o: $(SRCDIR)/rexxbif.c\r
164         $(CC) -c $(COPT) -DEXTERNAL_TO_REGINA -o erexxbif.o $(SRCDIR)/rexxbif.c\r
166 eextstack_mt.o: $(SRCDIR)/extstack.c\r
167         $(CC) -c $(COPT) -DEXTERNAL_TO_REGINA -o eextstack_mt.o $(SRCDIR)/extstack.c\r
169 eextstack.o: $(SRCDIR)/extstack.c\r
170         $(CC) -c $(COPT) -DEXTERNAL_TO_REGINA -o eextstack.o $(SRCDIR)/extstack.c\r
172 extstack.o: $(SRCDIR)/extstack.c\r
173         $(CC) -c $(COPT) -o extstack.o $(SRCDIR)/extstack.c\r
175 yaccsrc.o: $(SRCDIR)/yaccsrc.c\r
176         $(CC) -c $(COPT) -DYYMAXDEPTH=10000 -o yaccsrc.o $(SRCDIR)/yaccsrc.c\r
178 yaccsrc.ts.o: $(SRCDIR)/yaccsrc.c\r
179         $(CC) -c $(COPTDYN) -DYYMAXDEPTH=10000 -o yaccsrc.ts.o $(SRCDIR)/yaccsrc.c\r
181 threader.o: $(SRCDIR)/threader.c\r
182         $(CC) -c $(COPT) -DWIN32_THREADS -o threader.o $(SRCDIR)/threader.c\r
184 gci_convert.h: $(SRCDIR)/gci/gci_convert.win32.vc\r
185         copy $(SRCDIR)\gci\gci_convert.win32.vc gci_convert.h\r
187 mtb_files: msgcmp.exe $(MTSSRC)\r
188         msgcmp $(MTSSRC)\r
190 msgcmp.exe: msgcmp.o\r
191         $(CC) -o msgcmp.exe msgcmp.o\r
193 msgcmp.o: $(SRCDIR)/msgcmp.c\r
194         $(CC) $(COPT) -o msgcmp.o -c $(SRCDIR)/msgcmp.c\r
197 # Rules for resource files and version details\r
198 # We assume we have an already functional regina.exe\r
200 reginaw32dll.rc: $(SRCDIR)\regina.ver $(SRCDIR)\reginaw32dll.rc\r
201         regina $(COMMONSRCDIR)\fixrc.rexx $(SRCDIR)\reginaw32dll.rc $@ $(VERDOT) $(VERDATE)\r
202 reginaw32exe.rc: $(SRCDIR)\regina.ver $(SRCDIR)\reginaw32exe.rc\r
203         regina $(COMMONSRCDIR)\fixrc.rexx $(SRCDIR)\reginaw32exe.rc $@ $(VERDOT) $(VERDATE)\r
204 rxstackw32exe.rc: $(SRCDIR)\regina.ver $(SRCDIR)\rxstackw32exe.rc\r
205         regina $(COMMONSRCDIR)\fixrc.rexx $(SRCDIR)\rxstackw32exe.rc $@ $(VERDOT) $(VERDATE)\r
206 rxqueuew32exe.rc: $(SRCDIR)\regina.ver $(SRCDIR)\rxqueuew32exe.rc\r
207         regina $(COMMONSRCDIR)\fixrc.rexx $(SRCDIR)\rxqueuew32exe.rc $@ $(VERDOT) $(VERDATE)\r
208 rexxw32exe.rc: $(SRCDIR)\regina.ver $(SRCDIR)\rexxw32exe.rc\r
209         regina $(COMMONSRCDIR)\fixrc.rexx $(SRCDIR)\rexxw32exe.rc $@ $(VERDOT) $(VERDATE)\r
211 reginaw32dll.o: reginaw32dll.rc\r
212         copy $(SRCDIR)\reginaw32.ico .\r
213         windres --include=$(SRCDIR)/ reginaw32dll.rc reginaw32dll.res\r
214         windres reginaw32dll.res reginaw32dll.o\r
216 reginatsw32dll.o: reginatsw32dll.rc\r
217         copy $(SRCDIR)\reginaw32.ico .\r
218         windres --include=$(SRCDIR)/ reginatsw32dll.rc reginatsw32dll.res\r
219         windres reginatsw32dll.res reginatsw32dll.o\r
221 reginaw32exe.o: reginaw32exe.rc\r
222         copy $(SRCDIR)\reginaw32.ico .\r
223         windres --include=$(SRCDIR)/ reginaw32exe.rc reginaw32exe.res\r
224         windres reginaw32exe.res reginaw32exe.o\r
226 rexxw32exe.o: rexxw32exe.rc\r
227         copy $(SRCDIR)\reginaw32.ico .\r
228         windres --include=$(SRCDIR)/ rexxw32exe.rc rexxw32exe.res\r
229         windres rexxw32exe.res rexxw32exe.o\r
231 rxstackw32exe.o: rxstackw32exe.rc\r
232         copy $(SRCDIR)\reginaw32.ico .\r
233         windres --include=$(SRCDIR)/ rxstackw32exe.rc rxstackw32exe.res\r
234         windres rxstackw32exe.res rxstackw32exe.o\r
236 rxqueuew32exe.o: rxqueuew32exe.rc\r
237         copy $(SRCDIR)\reginaw32.ico .\r
238         windres --include=$(SRCDIR)/ rxqueuew32exe.rc rxqueuew32exe.res\r
239         windres rxqueuew32exe.res rxqueuew32exe.o\r
241 zip:\r
242         zip -9r regina-mingw$(VER).zip * -x MingW32-gcc-3.4.0-MT-DYNAMIC-DEBUG/* -x MingW32-gcc-3.4.0-MT-DYNAMIC-RELEASE/*\r
245 # Build NSIS package...\r
247 dist: all\r
248         cp $(SRCDIR)/rexxsaa.h .\r
249         cp -r $(SRCDIR)/demo .\r
250         cp $(SRCDIR)/README.W32 .\r
251         cp $(SRCDIR)/README.33 .\r
252         cp $(SRCDIR)\COPYING-LIB .\r
253         cp $(SRCDIR)/regina_ss.ini .\r
254         cp $(SRCDIR)/regina_fa.ini .\r
255         cp $(SRCDIR)/regina_mt.ini .\r
256         cp $(SRCDIR)/regina_mingw.nsi .\r
257         cp $(SRCDIR)/common/isnt.nsh .\r
258         cp $(SRCDIR)/common/path.nsh .\r
259         cp $(SRCDIR)/common/WriteEnv.nsh .\r
260         cp $(SRCDIR)/common/uninstall.ico .\r
261         C:/Program\ Files/NSIS/makensis.exe /DVERSION=$(VERDOT) /DNODOTVER=$(VER) /DSRCDIR=. regina_mingw.nsi\r
263 DEPS := $(wildcard *.d)\r
264 ifneq ($(DEPS),)\r
265 include $(DEPS)\r
266 endif\r