INSTALLvms.txt - Installation of Vim on OpenVMS

Maintainer:   Zoltan Arpadffy <arpadffy@polarfox.com>
Last change:  2002 Aug 27

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 files
does not describe possibilities hidden in feature.h acrobatics, however 
parameters from MAKE_VMS.MMS actively uses and sets up parameters in relation
with feature.h

More information and case analysis you can found 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.

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 oprimized (and tested) source code from:
ftp://ftp.polarhome.com/pub/vim/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/ 


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    - Almost no features enabled, not even 
			  multiple windows
                          SMALL   - Few features enabled, as basic as possible
                          NORMAL  - A default selection of features enabled
                          BIG     - Many features enabled, as rich as possible.
			  (OpenVMS default)
                          HUGE    - All possible featues enabled.
                          Uncommented - will default to BIG
        Default         : MODEL = BIG

        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  : 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
        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

     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

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 singe (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 found 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 wyo have to enable
     related feature in MAKE_VMS.MMS file. Usually it need soem 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 neccessary 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 Alphas. More information at:
     http://www.openvms.compaq.com/openvms/products/ips/gtk.html
     
     You need also the OpenVMS Porting Library:
     http://www.openvms.compaq.com/openvms/products/ips/porting.html

     Enable GTK in make_vms.mms file with GTK = YES 
     Define GTK_ROOT that points to your GTK root directory.
     
     Build it as normally.
     
     Used sharable 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 
     copyed 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
     complier 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 usually. 
     
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 usually.

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 usually.

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@polarfox.com>
