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
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
|
INSTALLvms.txt - Installation of Vim on OpenVMS
Maintainer: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Last change: 2023 Nov 29
This file contains instructions for compiling Vim on Openvms.
If you already have an executable version of Vim, you don't need this.
If you skip settings described here, then you will get the default Vim
behavior as it is documented, which should be fine for most users.
The file "feature.h" can be edited to match your preferences, but this file
does not describe possibilities hidden in feature.h acrobatics, however
parameters from MAKE_VMS.MMS actively use and set up parameters in relation
with feature.h
More information and case analysis you can find in os_vms.txt
([runtime.doc]os_vms.txt or :help vms from vim prompt)
Contents:
1. Download files
2. Configuration
3. Compilation DECC
4. Compilation VAXC
5. CTAGS, XXD
6. Deployment
7. GTK and other features
8. Notes
9. Authors
----------------------------------------------------------------------------
1. Download files
1.1. Visit the Vim ftp site (see ftp://ftp.vim.org/pub/vim/MIRRORS)
and obtain the following three files:
unix/vim-X.X-src.tar.gz
unix/vim-X.X-rt.tar.gz
extra/vim-X.X-extra.tar.gz
where X.X is the version number.
You may want to clone the latest source code from https://github/vim/vim
Or the last tested on OpenVMS from http://polarhome.com/vim/files/source/vms/
1.2. Expand the three archives.
1.3. Apply patches if they exist. (Patch files are found in the ftp
site in the "patches" directory.)
1.4. You will need either the DECSET mms utility or the freely available clone
of it called mmk (VMS has no make utility in the standard distribution).
You can download mmk from http://www.openvms.digital.com/freeware/MMK/
1.5. If you want to have Perl, Python or Tcl support in Vim you will need VMS
distributions for them as well.
1.6 If you want to have GTK executable, you need to have properly installed
GTK libraries.
NOTE: procedure in chapter 1 describes source code preparation from multi OS
code, however it is available OpenVMS optimized (and tested) source code from:
ftp://ftp.polarhome.com/pub/vim/source/vms/
(http://www.polarhome.com/vim/files/source/vms/)
Current OpenVMS source code as .zip or .tar.gz file is possible to download
from CVS mirror ftp://ftp.polarhome.com/pub/cvs/SOURCE/
(http://www.polarhome.com/cvs/SOURCE/)
2. Configuration
2.1. Edit vim-X.X/src/feature.h for your preference. (You can skip
this, then you will get the default behavior as is documented,
which should be fine for most people.)
For example, if you want to add the MULTI_BYTE feature, turn on
#define MULTI_BYTE
2.2 Edit vim-X.X/src/Make_vms.mms to customize your Vim. Options are:
Parameter name : MODEL
Description : Build model selection
Options: : TINY - No optional features enabled
NORMAL - A default selection of features enabled
(OpenVMS default)
HUGE - All possible features enabled.
Uncommented - will default to HUGE
Default : MODEL = NORMAL
Parameter name : GUI
Description : GUI or terminal mode executable
Options: : YES - GUI executable
Uncommented - char only
Default : GUI = YES
Parameter name : GTK
Description : Enable GTK in GUI mode.
It enables features as toolbar etc.
Options: : YES - GTK executable
Uncommented - without GTK
Default : Uncommented
Parameter name : XPM
Description : Enable XPM libraries in GUI/Motif mode.
It enables features as toolbar etc.
Options: : YES - GUI executable
Uncommented - without XPM
Default : Uncommented
Parameter name : DECC
Description : Compiler selection
Options: : YES - DECC compiler
Uncommented - VAXC compiler
Default : DECC = YES
Parameter name : CCVER
Description : Compiler version with :ver command
Options: : YES - Compiler version info will be added
Uncommented - will not be added
Default : CCVER = YES
Parameter name : DEBUG
Description : Building a debug version (DVIM.EXE)
Options: : YES - debug version will be built
Uncommented - building normal executable
Default : Uncommented
Parameter name : VIM_TCL
Description : Add Tcl support
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : VIM_PERL
Description : Add Perl support
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : VIM_PYTHON
Description : Add Python support
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : VIM_XIM
Description : X Input Method. For entering special languages
like Chinese and Japanese. Please define just
one: VIM_XIM or VIM_HANGULIN
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : VIM_HANGULIN
Description : Internal Hangul input method. GUI only.
Please define just one: VIM_XIM or VIM_HANGULIN
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : VIM_TAG_ANYWHITE
Description : Allow any white space to separate the fields in a
tags file
When not defined, only a TAB is allowed.
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : VIM_RUBY
Description : Add Ruby support
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : VIM_LUA
Description : Add Lua support
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : VIM_MZSCHEME
Description : Add support for FEATURE_MZSCHEM
Options: : YES - Build with support
Uncommented - build without FEATURE_MZSCHEM.
Default : Uncommented
Parameter name : VIM_ICONV
Description : Build with using the ICONV library
Options: : YES - Build with support
Uncommented - build without support.
Default : Uncommented
Parameter name : MODIFIED_BY
Description : Add note if you modified the code
Options: : YES - Build with adding the MODIFIED_BY define
Uncommented - build without the define
Default : Uncommented
You can edit the *_INC and *_LIB qualifiers, but it is really
not recommended for beginners.
3. Compilation DECC
3.1. If you have MSS on your system, the command
mms /descrip=Make_vms.mms
will start building your own customized version of Vim.
The adequate command for mmk is:
mmk /descrip=Make_vms.mms
NOTE: Because of empty /auto/config.h (needed for Unix configure) build
will fail with very strange messages. Therefore before building, it is
recommended to make one clean up, to prepare everything for OpenVMS
development. The command is:
mms /descrip=Make_vms.mms clean
The build will stop if any error or warning is encontered. In some cases
the warnings can be ignored. Use:
mms /descrip=Make_vms.mms /ignore=warning
4. Compilation VAXC
4.1. VAXC compiler is not fully ANSI C compatible in pre-processor directives
semantics, therefore you have to use a converter program what will do the
lion part of the job.
@os_vms_fix.com *.c *.h <.proto>*.pro
more information can be found in os_vms_fix.com file itself.
NOTE: even if os_vms_fix.com will fix all pre-processor directives it will
leave single (long) line directives. You have to fix them manually.
Known problematic files are option.h and option.c
4.2. After the conversion you can continue building as it has been described
above.
5. CTAGS, XXD
5.1. MMS_VIM.EXE is building together with VIM.EXE, but for CTAGS.EXE and
XXD.EXE you should change to subdirectory <.CTAGS> or <.XXD> and build
them separately.
5.2. In these directories you can find one make file for VMS as well.
Please read the detailed build instructions in the related *.MMS file.
6. Deployment
6.1. Copy over all executables to the deployment directory.
6.2. Vim uses a special directory structure to hold the document and runtime
files:
vim (or wherever)
|-- doc
|-- syntax
vimrc (system rc files)
gvimrc
6.3 Define logicals VIM
define/nolog VIM device:[leading-path-here.vim]
to get vim.exe to find its document, filetype, and syntax files.
Now, if you are lucky you should have one own built, customized and
working Vim.
7. GTK and other features
7.1 General notes
To be able to build external GUI or language support you have to enable
related feature in MAKE_VMS.MMS file. Usually it needs some extra tuning
around include files, shared libraries etc.
Please note, that leading "," are valuable for MMS/MMK syntax.
MAKE_VMS.MMS uses defines as described below:
7.1.1 feature_DEF = ,"SOME_FEATURE"
Submits definition to compiler preprocessor to enable code blocks
defined with
#ifdef SOME_FEATURE
{some code here}
#endif
Example: TCL_DEF = ,"FEAT_TCL"
7.1.2 feature_SRC = code1.c code2.c
Defines source code related with particular feature.
Example: TCL_SRC = if_tcl.c
7.1.3 feature_OBJ = code1.obj code2.obj
Lists objects created from source codes listed in feature_SRC
Example: PERL_OBJ = if_perlsfio.obj if_perl.obj
7.1.4 feature_LIB = ,OS_VMS_TCL.OPT/OPT
Defines the libraries that have to be used for build.
If it is an OPT file then MAKE_VMS.MMS creates OPT files
in gen_feature procedure.
Example:
PERL_LIB = ,OS_VMS_PERL.OPT/OPT
.IFDEF VIM_PERL
perl_env :
-@ write sys$output "creating OS_VMS_PERL.OPT file."
-@ open/write opt_file OS_VMS_PERL.OPT
-@ write opt_file "PERLSHR /share"
-@ close opt_file
.ELSE
perl_env :
-@ !
.ENDIF
7.1.5 feature_INC = ,dka0:[tcl80.generic]
Defines the directory where the necessary include files are.
Example: TCL_INC = ,dka0:[tcl80.generic]
7.2 GTK
To build VIM with GTK you have to install GTK on your OpenVMS.
So far it works just on Alpha and IA64. More information at:
http://www.openvms.compaq.com/openvms/products/ips/gtk.html
You also need the OpenVMS Porting Library:
http://www.openvms.compaq.com/openvms/products/ips/porting.html
Source code for GTK and porting library that is used to build
VMS executables at polarhome.com are at
http://www.polarhome.com/vim/files/source/vms/
Enable GTK in make_vms.mms file with GTK = YES
Define GTK_ROOT that points to your GTK root directory.
You will need to edit GTKDIR variable in order to point
to GTK header files and libraries.
GTK_DIR = ALPHA$DKA0:[GTK128.]
".]" at the end is very important.
Build it as normally.
Used shareable images are:
gtk_root:[glib]libglib.exe /share,-
gtk_root:[glib.gmodule]libgmodule.exe /share,-
gtk_root:[gtk.gdk]libgdk.exe /share,-
gtk_root:[gtk.gtk]libgtk.exe /share
During runtime it is suggested to have all these files installed and
copied to SYS$LIBRARY: to be able to use it without problems.
Also VMS_JACKETS.EXE from OpenVMS Porting Library.
Please note, that GTK uses /name=(as_is,short)/float=ieee/ieee=denorm
compiler directives that is not compatible with "standard" VMS usage,
therefore other external features might fail as PERL, PYTHON and TCL
support.
7.3 PERL
You have to install OpenVMS perl package from:
http://www.openvms.compaq.com/openvms/products/ips/apache/csws_perl_relnotes.html or build on your own from sources downloaded from http://www.perl.org
You need defined PERLSHR logical that points to PERL shareable image
(or you can just copy over to SYS$LIBRARY:)
Enable Perl feature at make_vms.mms with VIM_PERL = YES
Edit PERL_INC = to point to perl includes directory where is extern.h
Build as usual.
7.4 PYTHON
You have to install an OpenVMS python package.
Set up the normal Python work environment.
You have to have defined PYTHON_INCLUDE and PYTHON_OLB logicals.
PYTHON_INCLUDE should point to Python include files where for ex:
python.h is located.
Enable Python feature at make_vms.mms with VIM_PYTHON = YES
Build as usual.
7.5 TCL
You have to install an OpenVMS TCL package.
Set up the normal TCL work environment.
You have to have defined TCLSHR logical that points to shareable image.
Enable TCL feature at make_vms.mms with VIM_TCL = YES
Edit TCL_INC = to point to TCL includes directory where is tcl.h
Build as usual.
8. Notes
8.1. New Compaq C compiler
If you are using Compaq C compiler V6.2 or newer, informational messages
of the type QUESTCOMPARE will be displayed. You should ignore those
messages ; they are generated only because some test comparisons are done
with variables which type vary depending on the OS. Under VMS, those are
"unsigned" and the compiler issue a message whenever the comparison is
done with '<=' to 0. However, the code is correct and will behave as
expected.
( Jerome Lauret <JLAURET@mail.chem.sunysb.edu> Vim 6.0n )
NOTE: from version 6.0ad Vim code has been reviewed and these warnings
have been corrected.
9. Authors
Initial version, 2000 Jul 19, Zoltan Arpadffy <arpadffy@polarhome.com>
|