2 # Makefile for building Regina with MingW32 compiler
\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
8 # eg make -r -f ..\makefile.win32.mingw
\r
11 SRCDIR=$(REGINA_SRCDIR)
\r
12 COMMONSRCDIR=$(SRCDIR)\common
\r
14 include $(SRCDIR)/regina.ver
\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
24 OPTIMIZE = -g -fbounds-checking -Wall
\r
26 OPTIMIZE = -O3 -Wall -DNDEBUG
\r
29 ifeq ($(TRACEMEM),Y)
\r
30 MEMTRACE = -DTRACEMEM
\r
36 USEFLISTS = -DNOFLISTS
\r
42 REXXSOCKET = "-DRXSOCKET=$(SOCKET)"
\r
45 THREADING = -mthreads
\r
46 MT_FILE = mt_win32.o
\r
47 LDFLAGS = -mwindows -mthreads
\r
48 LDFLAGS1 = -mconsole -mthreads
\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
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
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
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
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
99 $(CC) -c $(COPT) -o $@ $<
\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
107 all: rexx.exe rexx.a execiser.exe $(SHL_TARGETS) rxstack.exe rxqueue.exe threader.exe mtb_files
\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
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
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
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