summaryrefslogtreecommitdiff
path: root/web/glasgow/lit2x-0.16/mkworld/plat-TRIGGERS.ljm
blob: 74fbc927d9c8a07545921d44eb1d550efd553018 (plain)
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
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
%************************************************************************
%*									*
\section[mkworld-plat-TRIGGERS]{Detecting the ``trigger symbol'' for this platform}
%*									*
%************************************************************************

See the end of this section for how to add support for another platform.

Note: Only a handful of platforms have been tested with these
configuration files (ToDo).

You do basically three things here:
\begin{enumerate}
\item
Set @PlatformFile@, etc.
\item
Turn {\em off} any vendor-supplied ``this-is-a-BLAH'' symbol(s).
\item
Turn {\em on} our own ``this-is-a-FOO-Architecture'' symbol(s).
\end{enumerate}

%************************************************************************
%*									*
\subsection[trigger-Sun]{Trigger stuff for Suns}
%*									*
%************************************************************************

\begin{code}
#ifdef sun
#define PlatformFile plat-sun.jm
#define PlatformIncludeFile <plat-sun.jm>

#undef sun
#define SunArchitecture
#endif /* sun */
\end{code}

%************************************************************************
%*									*
\subsection[trigger-Linux]{Trigger stuff for Linux}
%*									*
%************************************************************************

\begin{code}
#ifdef linux
#define PlatformFile plat-linux.jm
#define PlatformIncludeFile <plat-linux.jm>

#undef linux
#define LinuxArchitecture
#endif /* linux */
\end{code}

%************************************************************************
%*									*
\subsection[trigger-Alpha]{Trigger stuff for DEC Alpha running OSF1}
%*									*
%************************************************************************

\begin{code}
#if defined(__alpha) && defined(__osf__)
#define PlatformFile plat-alpha.jm
#define PlatformIncludeFile <plat-alpha.jm>

#undef __alpha
#undef __osf__
#define AlphaArchitecture
#endif /* alpha */
\end{code}

%************************************************************************
%*									*
\subsection[trigger-MIPS-RiscOS]{Trigger stuff for MIPS machines running RISCos}
%*									*
%************************************************************************

OLD: OLD: OLD:

@mipsriscos@ used instead of @riscos@ because another company (Acorn
Computers Ltd in the UK) has a RISC OS...  MIPS RISC/os cpp has no
unique symbol:	build @jmake@ with
@BOOTSTRAPCFLAGS=-Dmipsriscos@

\begin{code}
#ifdef mipsriscos
#define PlatformFile plat-mipsriscos.jm
#define PlatformIncludeFile <plat-mipsriscos.jm>

#undef mipsriscos
#undef mips
#define MipsRiscosArchitecture	/* for OS type */
#define MipsArchitecture	/* for chipset type */
/* now a dubious HostPlatform definition (there are various "mips" machines) ... */

/* ToDo: I admit these are done to suit the Glasgow /bin/arch */
/* It should probably be "umips" or "umipse[bl]", as appropriate */
#ifdef SYSTYPE_SYSV
#define HostPlatform	mips3000
#else
#define HostPlatform	mips
#endif
#endif /* mipsriscos */
\end{code}

%************************************************************************
%*									*
\subsection[triggers-UNTESTED]{Untested trigger stuff for other machines}
%*									*
%************************************************************************

COMPLETELY UNTESTED (and so commented out):

\begin{pseudocode}
#ifdef ultrix
#define PlatformIncludeFile <ultrix.cf>
#define PlatformFile ultrix.cf
#ifdef vax
#undef vax
#define VaxArchitecture
/* hypothetical HostPlatform; we do not have one */
#define HostPlatform	vax
#endif /* vax */
#ifdef mips
#undef mips
#define MipsArchitecture
/* hypothetical HostPlatform; we do not have one */
#define HostPlatform	pmax
#endif /* mips */
#undef ultrix
#define UltrixArchitecture
#endif /* ultrix */

#if defined(vax) && !defined(UltrixArchitecture)
#define PlatformIncludeFile <bsd.cf>
#define PlatformFile bsd.cf
#undef vax
#define VaxArchitecture
#endif
\end{pseudocode}

\begin{pseudocode}
#ifdef hpux
#define PlatformIncludeFile <hp.cf>
#define PlatformFile hp.cf
#undef hpux
#define HPArchitecture
#endif /* hpux */

#ifdef att
#define PlatformIncludeFile <att.cf>
#define PlatformFile att.cf
#undef att
#define ATTArchitecture
#endif /* att */

#ifdef apollo
#define PlatformIncludeFile <apollo.cf>
#define PlatformFile apollo.cf
#undef apollo
#define ApolloArchitecture
#endif /* apollo */

#ifdef sony
#define PlatformIncludeFile <sony.cf>
#define PlatformFile sony.cf
#undef sony
#define SonyArchitecture
#endif /* sony */

#ifdef M4310
#define PlatformIncludeFile <pegasus.cf>
#define PlatformFile pegasus.cf
#undef M4310
#define PegasusArchitecture
#endif /* M4310 */

#ifdef M4330
#define PlatformIncludeFile <m4330.cf>
#define PlatformFile m4330.cf
#undef	M4330
#define M4330Architecture
#endif /* M4330 */

#ifdef macII
/* A/UX cpp has no unique symbol:  build jmake with BOOTSTRAPCFLAGS=-DmacII */
#define PlatformIncludeFile <macII.cf>
#define PlatformFile macII.cf
#undef	macII
#define MacIIArchitecture
#endif /* macII */

#ifdef CRAY
#define PlatformIncludeFile <cray.cf>
#define PlatformFile cray.cf
#undef cray
#undef CRAY
#define CrayArchitecture
#endif /* CRAY */

#ifdef sgi
#define PlatformIncludeFile <sgi.cf>
#define PlatformFile sgi.cf
#undef sgi
#define SGIArchitecture
#undef mips
#define MipsArchitecture
#endif

#ifdef stellar
#define PlatformIncludeFile <stellar.cf>
#define PlatformFile stellar.cf
#undef stellar
#define StellarArchitecture
#endif

/*
 * A convenience for people running on rt's since they define ibm032, and for
 * people running AIX (note that AOS will no longer be supported by IBM).
 */
#if defined(ibm032) && !defined(ibm)
#define ibm
#endif

#if defined(aix) && !defined(ibm)
#define ibm
#endif

#if defined(ibm)
#define PlatformIncludeFile <ibm.cf>
#define PlatformFile ibm.cf
#undef ibm
#define IBMArchitecture
#ifdef i386
#undef i386
#define PS2Architecture
#endif
#ifdef ibm032
#undef ibm032
#define RtArchitecture
#endif
#ifdef aix
#undef aix
#define AIXArchitecture
#endif
#endif /* ibm */
\end{pseudocode}

%************************************************************************
%*									*
\subsection[triggers-failed]{If no trigger symbol worked...}
%*									*
%************************************************************************

We don't allow guessing at the platform: this will bomb gruesomely in
short order; it might mean that @BOOTSTRAPCFLAGS@ was not set when
building @jmake@.
\begin{code}
#ifndef PlatformIncludeFile
#define PlatformFile could-not-determine-the-platform-from-trigger-symbols
#define PlatformIncludeFile PlatformFile
#endif
\end{code}

%************************************************************************
%*									*
\subsection[triggers-adding-platform]{To add support for another platform...}
%*									*
%************************************************************************

\begin{enumerate}
\item
Identify a machine-specific CPP (``trigger'') symbol.  If your preprocessor 
doesn't have any built in, you'll need to add the symbol to the
@cpp_argv@ table in \tr{utils/jmake/jmake.c} and rebuild @jmake@ with the
@BOOTSTRAPCFLAGS@ variable set (see the macII for an example).
  
\item
Add all machine-specific CPP symbols (either defined by you or by
the preprocessor or compiler) to the @predefs@ table in 
@util/makedepend/main.c@.
  
\item
Put a new \tr{#ifdef} block above that defines @PlatformIncludeFile@,
@PlatformFile@, etc., for your new platform and then @#undefs@ the
machine-specific preprocessor symbols (to avoid problems with file
names).
  
\item
Create suitable \tr{*.jm} files (or ``literate'' equivalents).
\end{enumerate}