-
Notifications
You must be signed in to change notification settings - Fork 0
/
makefile.dos
202 lines (164 loc) · 7.19 KB
/
makefile.dos
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
# --------------------------------------------------------------------------
# Microsoft C and QuickC Makefile for MS-DOS version of ATP March 28, 1996
# tested with Microsoft NMAKE version 1.00 and MS Quick C 2.01, and also
# tested with DMAKE 4.0, freeware ftp-able from plg.uwaterloo.ca:/pub/dmake
# NOTE: Unix, D.J.Delore GCC, and Borland must use *other* makefiles!!!
#
# Read all this stuff first running make!
#
# -------------------------------------------------------------------------
# This makefile has been used and tested with NMAKE 1.00, MS Quick C
# 2.01, and also with DMAKE 4.0. It should also work with the standard
# Microsoft C compiler. A couple of cautionary warnings may be generated
# but these are harmless.
#
# This version of ATP is identical to the Unix version except for
# somewhat smaller limits because of MS_DOS memory segmentation
# considerations. In practice this should not be much of a problem since
# even the reduced limits are about an order of magnitude more generous
# than most QWK readers for MS-DOS.
#
# Stack size should be set to at least 4K or more, and this makefile
# assigns it at 6K under 16 bit DOS. If your compiler supports a 32
# bit DOS extender, delete /D_ATP16_ from the CDEFS below. This will
# enable larger data objects, and avoid the limits imposed by 16 bit
# compilers. When using 16 bit compilers, it is suggested that the large
# memory model be used for compilation, and that is how the makefile is
# configured.
#
# Make sure that you have a generous number of files and buffers set in
# your CONFIG.SYS before compiling. About 20 for each is a fine choice.
# Remember that it is nicer to have ANSI.SYS installed when using ATP
# under MSDOS.
# -------------------------------------------------------------------------
BSHELL = command.com /c
CC = qcl
LD = link
AR = lib
RM = $(BSHELL) RMV.BAT
CD = $(BSHELL) CDIR.BAT
MV = $(BSHELL) ren
CP = $(BSHELL) copy
#MAKE = pdmake
MK_FILE = makefile.dos
MK_CMD = $(MAKE) -f $(MK_FILE)
FORCEMAKE = FO.RCE
# -------------------------------------------------------------------------
# Here are the flags to enable or suppress warning messges
#
WARN = /W3
# -------------------------------------------------------------------------
# Attention les francophones!
# Si vous voulez, effacez -DENGLISH dessous et substituez -DFRENCH
LANG = -DENGLISH
#LANG = -DFRENCH
#LANG = -DGERMAN
#---------------------------------------------------------------------------
# compiler and linker flags
#
# uncomment SPAWNO and SPAWNL if you have installed Ralph Brown's SPAWNO libs
#SPAWNO = /DSPAWNO
#SPAWNL = spawnl.lib
#DEBUG = /Zr /Od
OFLAGS = /Ox /Gs
CDEFS = $(LANG) $(SPAWNO) /D_MSC_ /D__MSDOS__ /D_ATP16_ /DDESQVP
CFLAGS = /AL /Za $(CDEFS) $(OFLAGS) $(DEBUG) $(WARN)
LDOPT = /F /PACKC /CP:19000 /EXEP
LDFLAG = /BA /LI /NOI /ST:6144 $(LDOPT)
LIBS = $(SPAWNL) atp.lib editline\libedit.lib
# -------------------------------------------------------------------------
# lint configuration
LINT = tlint
LINTFG = $(LANG) $(SPAWNO) -D__LINT__ -D__MSDOS__ -D_MSC_ -D_QC
LINTLB = -l./editline/libedit.ln
# -------------------------------------------------------------------------
SR1 = read.c readlib.c makemail.c system.c ansi.c qlib.c text.c reply.c
SR2 = chosetag.c atpmain.c rdconfig.c purge.c display.c mkindex.c
OB1 = read.obj readlib.obj makemail.obj system.obj ansi.obj qlib.obj text.obj reply.obj
OB2 = chosetag.obj atpmain.obj rdconfig.obj purge.obj display.obj mkindex.obj
SRC = $(SR1) $(SR2)
OBJ = $(OB1) $(OB2)
# remove the next line if your version of make chokes on the swap directive:
.SWAP :
.SUFFIXES :
.SUFFIXES : .obj .c
.PHONY : clean eline utility $(FORCEMAKE)
.c.obj:
$(CC) $(CFLAGS) -c $<
all : atp.exe utility
atp.exe : eline atp.lib
$(LD) $(LDFLAG) atpmain,ATP,ATP,$(LIBS);
atp.lib : batch $(OBJ)
@$(RM) atp.lib
lib atp +rdconfig +read +qlib +makemail +readlib +text +display ;
lib atp +ansi +mkindex +purge +system +reply +chosetag ;
#---------------------------------------------------------------------------
# utility builds the atp support and diagnostic programs
utility : knowname $(FORCEMAKE)
@$(CD) utils $(MK_CMD) all
# --------------------------------------------------------------------------
# eline builds libedit.lib used for command-line editing and history recall.
eline : knowname $(FORCEMAKE)
@$(CD) editline $(MK_CMD) libedit.lib
# -------------------------------------------------------------------------
# lint and doc targets
lint : elint
$(LINT) $(LINTFG) $(LINTLB) $(SRC) >$(@)
elint : knowname
@$(CD) editline $(MK_CMD) libedit.ln
atp.doc :
groff -man docs\atp.1 | sed -e "s/.//g" >$(@)
manifest : $(FORCEMAKE)
ls -lR > Manifest
# -------------------------------------------------------------------------
# cleaning and housekeeping targets
clean : rmv.bat $(FORCEMAKE)
@$(RM) atp.exe atp.lib $(FORCEMAKE) *.obj *.map *.lst
mclean : knowname clean
@$(RM) atplint
@$(CD) editline $(MK_CMD) $(@)
@$(CD) utils $(MK_CMD) $(@)
clobber : knowname clean
@$(RM) link.atp ansi2knr.exe rot13.exe atpdiag.bat link.atp atplint
@$(RM) *.a *.o *.bak *.cof *.lib *.lst
@$(CD) editline $(MK_CMD) $(@)
@$(CD) utils $(MK_CMD) $(@)
@$(RM) tstmymak.bat cdir.bat
@$(BSHELL) del rmv.bat
mostlyclean : mclean
# -------------------------------------------------------------------------
# support targets and batch files used by make
# does our version of MAKE know it's own name?
knowname : batch $(FORCEMAKE)
@$(BSHELL) tstmymak.bat $(MK_FILE) $(MAKE)
batch : tstmymak.bat cdir.bat rmv.bat
tstmymak.bat : .\utils\batch\tstmymak.in
$(CP) utils\batch\tstmymak.in $(@)
rmv.bat : utils\batch\rmv.in
$(CP) utils\batch\rmv.in $(@)
cdir.bat : utils\batch\cdir.in
$(CP) utils\batch\cdir.in $(@)
# phony rule is used to FORCE unconditional build of targets
$(FORCEMAKE) :
@$(BSHELL) rem
memchk: knowname $(FORCEMAKE)
@$(CD) editline $(MK_CMD) $(@)
# -------------------------------------------------------------------------
# object file depenencies
#
atpmain.obj : atpmain.c system.h atptypes.h globals.h reader.h readlib.h makemail.h qlib.h ansi.h
read.obj : read.c system.h atptypes.h globals.h reader.h readlib.h makemail.h qlib.h ansi.h
readlib.obj : readlib.c system.h atptypes.h globals.h reader.h readlib.h ansi.h
makemail.obj : makemail.c system.h atptypes.h globals.h reader.h readlib.h
system.obj : system.c system.h atptypes.h globals.h reader.h readlib.h ansi.h qlib.h
ansi.obj : ansi.c system.h atptypes.h globals.h reader.h readlib.h ansi.h
qlib.obj : qlib.c system.h atptypes.h globals.h reader.h readlib.h ansi.h qlib.h makemail.h
mkindex.obj : mkindex.c system.h atptypes.h globals.h reader.h readlib.h ansi.h
text.obj : text.c system.h atptypes.h globals.h reader.h readlib.h ansi.h
chosetag.obj : chosetag.c system.h atptypes.h globals.h reader.h readlib.h qlib.h ansi.h makemail.h
purge.obj : purge.c system.h atptypes.h globals.h reader.h readlib.h qlib.h ansi.h makemail.h
display.obj : display.c system.h atptypes.h globals.h reader.h readlib.h makemail.h qlib.h ansi.h
reply.obj : reply.c system.h atptypes.h globals.h reader.h readlib.h ansi.h makemail.h qlib.h
rdconfig.obj : rdconfig.c system.h atptypes.h globals.h reader.h readlib.h makemail.h qlib.h ansi.h
#
# end of makefile ---------------------------------------------------------