2 # Makefile for Regina REXX Interpreter
4 # Using C Set/2 under OS/2
5 # FIXME, FGC: How to set "unsigned char" as default char type?
12 EEXTRA = /DEBUG /MAP:FULL
15 EEXTRA = /PACKCODE /PACKDATA
16 DEBUGFLAG = -DNDEBUG /Ti- /O+
19 DYN_COMP = /Ge- /DDYNAMIC
21 SHL_TARGETS= regina.exe rxtest1.dll rxtest2.dll
23 LIBFLAGS = /OUT:rexx.lib
27 LD_RXLIB1=link386 $@ /DEF:$(SRCDIR)\$*.def
34 # Include the common rules for the interpreter
38 # Some settings that you may wish to change, these are used only
39 # for the 'install' target:
41 # TOPDIR The top of the directory hierarchy in which to install
42 # BINDIR Where to install the compiled 'rexx' program
43 # LIBDIR Where to install the 'regina' library
44 # MANEXT The extention of the manual page
45 # MANDIR Where to install the manual page
46 # PROGNAME What to call the compiled program
48 BINDIR = $(TOPDIR)/bin
49 LIBDIR = $(TOPDIR)/lib
54 MISCDEFS = -DFGC -I$(SRCDIR)
56 COPT = $(DEBUGFLAG) $(CEXTRA) $(MISCDEFS)
58 OTHERCOPT = $(DEBUGFLAG) $(CEXTRA) $(MISCDEFS)
60 README = $(SRCDIR)/README.??? COPYING-LIB
62 FILES = funcs builtin error variable interprt debug dbgfuncs \
63 memory parsing files misc unxfuncs os2funcs cmsfuncs shell rexxext stack \
64 tracing interp cmath convert strings library strmath signals \
65 macros envir wrappers options os_os2
67 CSRCFILES = $(SRCDIR)/funcs.c $(SRCDIR)/builtin.c $(SRCDIR)/error.c $(SRCDIR)/variable.c \
68 $(SRCDIR)/interprt.c $(SRCDIR)/debug.c $(SRCDIR)/dbgfuncs.c $(SRCDIR)/memory.c $(SRCDIR)/parsing.c $(SRCDIR)/files.c \
69 $(SRCDIR)/misc.c $(SRCDIR)/unxfuncs.c $(SRCDIR)/cmsfuncs.c $(SRCDIR)/os2funcs.c $(SRCDIR)/shell.c $(SRCDIR)/rexxext.c $(SRCDIR)/stack.c \
70 $(SRCDIR)/tracing.c $(SRCDIR)/interp.c $(SRCDIR)/cmath.c $(SRCDIR)/convert.c $(SRCDIR)/strings.c $(SRCDIR)/library.c \
71 $(SRCDIR)/strmath.c $(SRCDIR)/signals.c $(SRCDIR)/macros.c $(SRCDIR)/envir.c $(SRCDIR)/expr.c \
72 $(SRCDIR)/wrappers.c $(SRCDIR)/options.c $(SRCDIR)/os_os2.c
74 OFILES = funcs.obj builtin.obj error.obj variable.obj \
75 interprt.obj debug.obj dbgfuncs.obj memory.obj parsing.obj files.obj \
76 misc.obj unxfuncs.obj cmsfuncs.obj shell.obj os2funcs.obj rexxext.obj stack.obj \
77 tracing.obj interp.obj cmath.obj convert.obj strings.obj library.obj \
78 strmath.obj signals.obj macros.obj envir.obj expr.obj \
79 yaccsrc.obj lexsrc.obj options.obj os_os2.obj wrappers.obj
81 SHOFILES = $(DLLDIR)\funcs.obj $(DLLDIR)\builtin.obj $(DLLDIR)\error.obj $(DLLDIR)\variable.obj \
82 $(DLLDIR)\interprt.obj $(DLLDIR)\debug.obj $(DLLDIR)\dbgfuncs.obj $(DLLDIR)\memory.obj $(DLLDIR)\parsing.obj $(DLLDIR)\files.obj \
83 $(DLLDIR)\misc.obj $(DLLDIR)\unxfuncs.obj $(DLLDIR)\cmsfuncs.obj $(DLLDIR)\os2funcs.obj $(DLLDIR)\shell.obj $(DLLDIR)\rexxext.obj $(DLLDIR)\stack.obj \
84 $(DLLDIR)\tracing.obj $(DLLDIR)\interp.obj $(DLLDIR)\cmath.obj $(DLLDIR)\convert.obj $(DLLDIR)\strings.obj $(DLLDIR)\library.obj \
85 $(DLLDIR)\strmath.obj $(DLLDIR)\signals.obj $(DLLDIR)\macros.obj $(DLLDIR)\envir.obj $(DLLDIR)\expr.obj \
86 $(DLLDIR)\yaccsrc.obj $(DLLDIR)\lexsrc.obj $(DLLDIR)\wrappers.obj $(DLLDIR)\options.obj $(DLLDIR)\os_os2.obj \
87 $(DLLDIR)\rexx.obj $(DLLDIR)\client.obj $(DLLDIR)\rexxsaa.obj
89 DEMODIR = $(SRCDIR)/demo
90 DEMOFILES = $(DEMODIR)/*
91 TRIPDIR = $(SRCDIR)/trip
92 TRIPFILES = $(TRIPDIR)/*
93 UNIXFILES = $(SRCDIR)/*.in $(SRCDIR)/configure $(SRCDIR)/config.sub \
94 $(SRCDIR)/config.guess $(SRCDIR)/aclocal.m4 $(SRCDIR)/install-sh \
95 $(SRCDIR)/INSTALL $(SRCDIR)/yaccsrc.y $(SRCDIR)/lexsrc.l
97 ALLSRC = $(CFILES) $(HFILES)
99 HFILES = $(SRCDIR)/rexx.h $(SRCDIR)/defs.h $(SRCDIR)/extern.h $(SRCDIR)/regina_t.h \
100 $(SRCDIR)/config.h $(SRCDIR)/strings.h $(SRCDIR)/configur.h $(SRCDIR)/yaccsrc.h \
101 $(SRCDIR)/rxiface.h $(SRCDIR)/rexxsaa.h $(SRCDIR)/utsname.h
102 CFILES = $(SRCDIR)/yaccsrc.c $(SRCDIR)/lexsrc.c $(CSRCFILES) $(SRCDIR)/execiser.c \
103 $(SRCDIR)/rexxsaa.c $(SRCDIR)/rexx.c $(SRCDIR)/regina.c $(SRCDIR)/client.c \
104 $(SRCDIR)/r2perl.c $(SRCDIR)/test1.c $(SRCDIR)/test2.c
106 #.SUFFIXES: .sho $(SUFFIXES)
108 # Do not use default suffixes rule
112 all : rexx.exe execiser.exe $(SHL_TARGETS)
114 $(CSRCFILES) : $(SRCDIR)/rexx.h
116 $(SRCDIR)/rexx.h : $(SRCDIR)/extern.h $(SRCDIR)/strings.h $(SRCDIR)/defs.h $(SRCDIR)/regina_t.h
121 rexx.exe : $(OFILES) rexx.obj
122 $(LD) $(LINKOPT) $(STATIC_LDFLAGS) /OUT:rexx.exe $(OFILES) rexx.obj $(LIBS)
124 regina.exe : regina.dll regina.obj reginaw32exe.obj
125 $(LD) $(LINKOPT) $(DYNAMIC_LDFLAGS) /OUT:regina.exe regina.obj reginaw32exe.obj $(LINKSHL) $(LIBS) $(SHLIBS)
127 execiser.exe : execiser.obj regina.dll
128 $(LD) $(LINKOPT) /OUT:execiser.exe execiser.obj $(LIBLINK) $(SHLIBS)
130 rexx.lib: $(OFILES) client.obj drexx.obj rexxsaa.obj
131 lib $(LIBFLAGS) $(OBJECTS) client.obj drexx.obj rexxsaa.obj
133 regina.dll: $(SHOFILES) reginaw32dll.obj
134 link $(EEXTRA) /NOLOGO /DLL /OUT:regina.dll /IMPLIB:regina.lib /DEF:$(SRCDIR)\regina.def reginaw32dll.obj $(DLLDIR)\*.obj
137 # Rules for static objects
139 funcs.obj : $(SRCDIR)/funcs.c
140 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/funcs.c
142 builtin.obj : $(SRCDIR)/builtin.c
143 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/builtin.c
145 error.obj : $(SRCDIR)/error.c
146 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/error.c
148 variable.obj :$(SRCDIR)/variable.c
149 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/variable.c
151 interprt.obj :$(SRCDIR)/interprt.c
152 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/interprt.c
154 debug.obj : $(SRCDIR)/debug.c
155 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/debug.c
157 dbgfuncs.obj :$(SRCDIR)/dbgfuncs.c
158 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/dbgfuncs.c
160 memory.obj : $(SRCDIR)/memory.c
161 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/memory.c
163 parsing.obj : $(SRCDIR)/parsing.c
164 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/parsing.c
166 files.obj : $(SRCDIR)/files.c
167 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/files.c
169 misc.obj : $(SRCDIR)/misc.c
170 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/misc.c
172 unxfuncs.obj :$(SRCDIR)/unxfuncs.c
173 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/unxfuncs.c
175 os2funcs.obj :$(SRCDIR)/os2funcs.c
176 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/os2funcs.c
178 cmsfuncs.obj :$(SRCDIR)/cmsfuncs.c
179 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/cmsfuncs.c
181 shell.obj : $(SRCDIR)/shell.c
182 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/shell.c
184 rexxext.obj : $(SRCDIR)/rexxext.c
185 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/rexxext.c
187 stack.obj : $(SRCDIR)/stack.c
188 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/stack.c
190 tracing.obj : $(SRCDIR)/tracing.c
191 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/tracing.c
193 interp.obj : $(SRCDIR)/interp.c
194 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/interp.c
196 cmath.obj : $(SRCDIR)/cmath.c
197 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/cmath.c
199 convert.obj : $(SRCDIR)/convert.c
200 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/convert.c
202 strings.obj : $(SRCDIR)/strings.c
203 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/strings.c
205 library.obj : $(SRCDIR)/library.c
206 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/library.c
208 strmath.obj : $(SRCDIR)/strmath.c
209 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/strmath.c
211 signals.obj : $(SRCDIR)/signals.c
212 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/signals.c
214 macros.obj : $(SRCDIR)/macros.c
215 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/macros.c
217 envir.obj : $(SRCDIR)/envir.c
218 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/envir.c
220 expr.obj : $(SRCDIR)/expr.c
221 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/expr.c
223 wrappers.obj :$(SRCDIR)/wrappers.c
224 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/wrappers.c
226 options.obj : $(SRCDIR)/options.c
227 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/options.c
229 os_os2.obj : $(SRCDIR)/os_os2.c
230 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/os_os2.c
232 rexx.obj : $(SRCDIR)/rexx.c
233 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/rexx.c
235 client.obj : $(SRCDIR)/client.c
236 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/client.c
238 rexxsaa.obj : $(SRCDIR)/rexxsaa.c $(SRCDIR)\rexxsaa.h
239 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/rexxsaa.c
241 regina.obj : $(SRCDIR)/regina.c
242 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/regina.c
244 drexx.obj : $(SRCDIR)/rexx.c
245 $(CC) $(COPT) -c -DRXLIB $(CC2O) $(SRCDIR)/rexx.c
247 lexsrc.obj : $(SRCDIR)/lexsrc.c $(SRCDIR)/rexx.h $(SRCDIR)/yaccsrc.h
248 $(CC) $(OTHERCOPT) $(CC2O) -c $(SRCDIR)/lexsrc.c
250 yaccsrc.obj : $(SRCDIR)/yaccsrc.c $(SRCDIR)/defs.h $(SRCDIR)/rexx.h
251 $(CC) $(OTHERCOPT) $(CC2O) -c -DYYMAXDEPTH=10000 $(SRCDIR)/yaccsrc.c
253 execiser.obj : $(SRCDIR)/execiser.c $(SRCDIR)/rexx.h
254 $(CC) $(COPT) $(CC2O) -c $(SRCDIR)/execiser.c
257 # Rules for shared objects
259 $(DLLDIR)\funcs.obj : $(SRCDIR)/funcs.c $(DLLDIR)
260 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/funcs.c
262 $(DLLDIR)\builtin.obj : $(SRCDIR)/builtin.c $(DLLDIR)
263 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/builtin.c
265 $(DLLDIR)\error.obj : $(SRCDIR)/error.c $(DLLDIR)
266 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/error.c
268 $(DLLDIR)\variable.obj :$(SRCDIR)/variable.c $(DLLDIR)
269 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/variable.c
271 $(DLLDIR)\interprt.obj :$(SRCDIR)/interprt.c $(DLLDIR)
272 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/interprt.c
274 $(DLLDIR)\debug.obj : $(SRCDIR)/debug.c $(DLLDIR)
275 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/debug.c
277 $(DLLDIR)\dbgfuncs.obj :$(SRCDIR)/dbgfuncs.c $(DLLDIR)
278 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/dbgfuncs.c
280 $(DLLDIR)\memory.obj : $(SRCDIR)/memory.c $(DLLDIR)
281 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/memory.c
283 $(DLLDIR)\parsing.obj : $(SRCDIR)/parsing.c $(DLLDIR)
284 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/parsing.c
286 $(DLLDIR)\files.obj : $(SRCDIR)/files.c $(DLLDIR)
287 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/files.c
289 $(DLLDIR)\misc.obj : $(SRCDIR)/misc.c $(DLLDIR)
290 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/misc.c
292 $(DLLDIR)\unxfuncs.obj :$(SRCDIR)/unxfuncs.c $(DLLDIR)
293 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/unxfuncs.c
295 $(DLLDIR)\os2funcs.obj :$(SRCDIR)/os2funcs.c $(DLLDIR)
296 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/os2funcs.c
298 $(DLLDIR)\cmsfuncs.obj :$(SRCDIR)/cmsfuncs.c $(DLLDIR)
299 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/cmsfuncs.c
301 $(DLLDIR)\shell.obj : $(SRCDIR)/shell.c $(DLLDIR)
302 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/shell.c
304 $(DLLDIR)\rexxext.obj : $(SRCDIR)/rexxext.c $(DLLDIR)
305 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/rexxext.c
307 $(DLLDIR)\stack.obj : $(SRCDIR)/stack.c $(DLLDIR)
308 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/stack.c
310 $(DLLDIR)\tracing.obj : $(SRCDIR)/tracing.c $(DLLDIR)
311 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/tracing.c
313 $(DLLDIR)\interp.obj : $(SRCDIR)/interp.c $(DLLDIR)
314 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/interp.c
316 $(DLLDIR)\cmath.obj : $(SRCDIR)/cmath.c $(DLLDIR)
317 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/cmath.c
319 $(DLLDIR)\convert.obj : $(SRCDIR)/convert.c $(DLLDIR)
320 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/convert.c
322 $(DLLDIR)\strings.obj : $(SRCDIR)/strings.c $(DLLDIR)
323 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/strings.c
325 $(DLLDIR)\library.obj : $(SRCDIR)/library.c $(DLLDIR)
326 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/library.c
328 $(DLLDIR)\strmath.obj : $(SRCDIR)/strmath.c $(DLLDIR)
329 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/strmath.c
331 $(DLLDIR)\signals.obj : $(SRCDIR)/signals.c $(DLLDIR)
332 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/signals.c
334 $(DLLDIR)\macros.obj : $(SRCDIR)/macros.c $(DLLDIR)
335 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/macros.c
337 $(DLLDIR)\envir.obj : $(SRCDIR)/envir.c $(DLLDIR)
338 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/envir.c
340 $(DLLDIR)\expr.obj : $(SRCDIR)/expr.c $(DLLDIR)
341 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/expr.c
343 $(DLLDIR)\wrappers.obj :$(SRCDIR)/wrappers.c $(DLLDIR)
344 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/wrappers.c
346 $(DLLDIR)\options.obj : $(SRCDIR)/options.c $(DLLDIR)
347 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/options.c
349 $(DLLDIR)\os_os2.obj : $(SRCDIR)/os_os2.c $(DLLDIR)
350 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/os_os2.c
352 $(DLLDIR)\client.obj : $(SRCDIR)/client.c $(DLLDIR)
353 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/client.c
355 $(DLLDIR)\rexxsaa.obj : $(SRCDIR)/rexxsaa.c $(SRCDIR)\rexxsaa.h $(DLLDIR)
356 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/rexxsaa.c
358 $(DLLDIR)\rexx.obj : $(SRCDIR)/rexx.c $(DLLDIR)
359 $(CC) $(COPT) $(CC2O) $(DYN_COMP) -c -DRXLIB $(SRCDIR)/rexx.c
361 $(DLLDIR)\lexsrc.obj : $(SRCDIR)/lexsrc.c $(SRCDIR)/rexx.h $(SRCDIR)/yaccsrc.h $(DLLDIR)
362 $(CC) $(OTHERCOPT) $(CC2O) $(DYN_COMP) -c $(SRCDIR)/lexsrc.c
364 $(DLLDIR)\yaccsrc.obj : $(SRCDIR)/yaccsrc.c $(SRCDIR)/defs.h $(SRCDIR)/rexx.h $(DLLDIR)
365 $(CC) $(OTHERCOPT) $(CC2O) $(DYN_COMP) -c -DYYMAXDEPTH=10000 $(SRCDIR)/yaccsrc.c
368 # Rules for sample programs
370 test1.obj: $(SRCDIR)/test1.c
371 $(CC) -c $(COPT) $(CC2O) $(DYN_COMP) $(SRCDIR)/test1.c
373 rxtest1.dll: test1.obj regina.dll
374 $(LD_RXLIB1) test1.obj $(LD_RXLIB2)
376 test2.obj: $(SRCDIR)/test2.c
377 $(CC) -c $(COPT) $(CC2O) $(DYN_COMP) $(SRCDIR)/test2.c
379 rxtest2.dll: test2.obj regina.dll
380 $(LD_RXLIB1) test2.obj $(LD_RXLIB2)
383 # Rules for resources
385 reginaw32dll.obj reginaw32dll.res: $(SRCDIR)/reginaw32dll.rc
386 copy $(SRCDIR)\reginaw32.ico .
387 rc /r /foreginaw32dll.res /i$(SRCDIR) $(SRCDIR)\reginaw32dll.rc
388 cvtres /MACHINE:IX86 /NOLOGO /OUT:reginaw32dll.obj reginaw32dll.res
390 reginaw32exe.obj reginaw32exe.res: $(SRCDIR)/reginaw32exe.rc
391 copy $(SRCDIR)\reginaw32.ico .
392 rc /r /foreginaw32exe.res /i$(SRCDIR)\ $(SRCDIR)\reginaw32exe.rc
393 cvtres /MACHINE:IX86 /NOLOGO /OUT:reginaw32exe.obj reginaw32exe.res
396 ARCHIVE_FILES = $(ALLSRC) $(README) $(SRCDIR)/makefile* $(SRCDIR)/*.rsp \
397 $(SRCDIR)/*.def $(DEMOFILES) $(TRIPFILES) $(UNIXFILES)
400 tar -cvf - $(ARCHIVE_FILES) | gzip > Regina_$(VERDOT).tar.gz
403 tar -cvf - $(ARCHIVE_FILES) | compress > Regina_$(VERDOT).tar.Z
406 zip regna$(VER) $(ARCHIVE_FILES)