patch 9.1.1591: VMS support can be improved

Commit: 
https://github.com/vim/vim/commit/e9d1259111daf9c91b14c252047defc99c03a8de
Author: Zoltan Arpadffy <zoltan.arpad...@gmail.com>
Date:   Fri Jul 25 19:16:09 2025 +0200

    patch 9.1.1591: VMS support can be improved
    
    Problem:  VMS support can be improved
    Solution: Merge chagnes from Steven M. Schweda
              (Zoltan)
    
    closes: #17810
    
    Co-authored-by: Steven M. Schweda <s...@antinode.info>
    Signed-off-by: Zoltan Arpadffy <zoltan.arpad...@gmail.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/Make_vms.mms b/src/Make_vms.mms
index fb247f3ba..8eb2455a8 100644
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -2,7 +2,7 @@
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <zoltan.arpad...@gmail.com>
-# Last change:  2024 Jan 03
+# Last change:  2025-07-04  Steven M. Schweda <s...@antinode.info>
 #
 # This script has been tested on VMS 6.2 to 9.2 on VAX, ALPHA, IA64 and X86_64
 # with MMS and MMK
@@ -11,10 +11,14 @@
 #      vim.exe:        standard (terminal, GUI/Motif, GUI/GTK)
 #      dvim.exe:       debug
 #
+######################################################################
+#
 # Edit the lines in the Configuration section below for fine tuning.
 #
 # To build:    mms/descrip=Make_vms.mms /ignore=warning
 # To clean up: mms/descrip=Make_vms.mms clean
+# To display --help report: mms/descrip=Make_vms.mms help
+# To display --version report: mms/descrip=Make_vms.mms version
 #
 # Hints and detailed description could be found in INSTALLVMS.TXT file.
 #
@@ -22,10 +26,6 @@
 # Configuration section.
 ######################################################################
 
-# Compiler selection.
-# Comment out if you use the VAXC compiler
-DECC = YES
-
 # Build model selection
 # TINY   - No optional features enabled
 # NORMAL - A default selection of features enabled
@@ -53,7 +53,10 @@ MODEL = HUGE
 # NOTE: This part can make some complications if you're using some
 # predefined symbols/flags for your compiler. If does, just leave behind
 # the comment variable CCVER.
-CCVER = YES
+.IFDEF VAXC_OR_FORCE_VAXC       # VAXC_OR_FORCE_VAXC
+.ELSE                           # VAXC_OR_FORCE_VAXC
+CCVER = YES                     # Unreliable with VAX C.
+.ENDIF                          # VAXC_OR_FORCE_VAXC [ELSE]
 
 # Uncomment if want a debug version. Resulting executable is DVIM.EXE
 # Development purpose only! Normally, it should not be defined. !!!
@@ -96,40 +99,172 @@ CCVER = YES
 # You can find some explanation in INSTALLVMS.TXT
 ######################################################################
 
+# Architecture identification and product destination selection.
+
+# Define old MMK architecture macros when using MMS.
+
+.IFDEF MMS$ARCH_NAME            # MMS$ARCH_NAME
+ALPHA_X_ALPHA = 1
+IA64_X_IA64 = 1
+VAX_X_VAX = 1
+X86_64_X_X86_64 = 1
+.IFDEF ARCH                         # ARCH
+ARCH_NAME = $(ARCH)
+.ELSE                               # ARCH
+ARCH_NAME = $(MMS$ARCH_NAME)
+.ENDIF                              # ARCH
+.IFDEF $(ARCH_NAME)_X_ALPHA         # $(ARCH_NAME)_X_ALPHA
+__ALPHA__ = 1
+.ENDIF                              # $(ARCH_NAME)_X_ALPHA
+.IFDEF $(ARCH_NAME)_X_IA64          # $(ARCH_NAME)_X_IA64
+__IA64__ = 1
+.ENDIF                              # $(ARCH_NAME)_X_IA64
+.IFDEF $(ARCH_NAME)_X_VAX           # $(ARCH_NAME)_X_VAX
+__VAX__ = 1
+.ENDIF                              # $(ARCH_NAME)_X_VAX
+.IFDEF $(ARCH_NAME)_X_X86_64        # $(ARCH_NAME)_X_X86_64
+__X86_64__ = 1
+.ENDIF                              # $(ARCH_NAME)_X_X86_64
+.ELSE                           # MMS$ARCH_NAME
+.IFDEF __MMK__                      # __MMK__
+.IFDEF ARCH                             # ARCH
+.IFDEF __$(ARCH)__                          # __$(ARCH)__
+.ELSE                                       # __$(ARCH)__
+__$(ARCH)__ = 1
+.ENDIF                                      # __$(ARCH)__
+.ENDIF                                  # ARCH
+.ENDIF                              # __MMK__
+.ENDIF                          # MMS$ARCH_NAME
+
+# Combine command-line VAX C compiler macros.
+
+.IFDEF VAXC                     # VAXC
+VAXC_OR_FORCE_VAXC = 1
+.ELSE                           # VAXC
+.IFDEF FORCE_VAXC                   # FORCE_VAXC
+VAXC_OR_FORCE_VAXC = 1
+.ENDIF                              # FORCE_VAXC
+.ENDIF                          # VAXC
+
+# Analyze architecture-related and option macros.
+# (Sense x86_64 before IA64 for old MMK and x86_64 cross tools.)
+
+.IFDEF __X86_64__               # __X86_64__
+DECC = 1
+DESTM = X86_64
+.ELSE                           # __X86_64__
+.IFDEF __IA64__                     # __IA64__
+DECC = 1
+DESTM = IA64
+.ELSE                               # __IA64__
+.IFDEF __ALPHA__                        # __ALPHA__
+DECC = 1
+DESTM = ALPHA
+.ELSE                                   # __ALPHA__
+.IFDEF __VAX__                              # __VAX__
+.IFDEF VAXC_OR_FORCE_VAXC                       # VAXC_OR_FORCE_VAXC
+DESTM = VAXV
+.ELSE                                           # VAXC_OR_FORCE_VAXC
+DECC = 1
+DESTM = VAX
+.ENDIF                                          # VAXC_OR_FORCE_VAXC
+.ELSE                                       # __VAX__
+DESTM = UNK
+UNK_DEST = 1
+.ENDIF                                      # __VAX__
+.ENDIF                                  # __ALPHA__
+.ENDIF                              # __IA64__
+.ENDIF                          # __X86_64__
+
+.IFDEF PROD                     # PROD
+DEST = $(PROD)
+.ELSE                           # PROD
+DEST = $(DESTM)
+.ENDIF                          # PROD
+
+.FIRST
+.IFDEF __MMK__                  # __MMK__
+        @ write sys$output ""
+.ENDIF                          # __MMK__
+
+# Create destination directory.
+       @ write sys$output "Destination: [.$(DEST)]"
+       @ write sys$output ""
+       @ if (f$search( "$(DEST).DIR;1") .eqs. "") then -
+         create /directory [.$(DEST)]
+
 # Compiler setup
 
-.IFDEF MMSVAX
-.IFDEF DECC         # VAX with DECC
-CC_DEF  = cc # /decc # some versions require /decc switch but when it is not 
required /ver might fail
-PREFIX  = /prefix=all/name=(upper,short)
-OPTIMIZE= /noopt     # do not optimize on VAX. The compiler has hard time with 
crypto functions
-.ELSE               # VAX with VAXC
-CC_DEF = cc
-PREFIX =
-OPTIMIZE= /noopt
-CCVER  =
-.ENDIF
-.ELSE               # AXP, IA64, X86 with DECC
-CC_DEF  = cc
-PREFIX  = /prefix=all/name=(upper,short)
-OPTIMIZE= /opt
-.IFDEF MMSX86_64
-ARCH_DEF=        # ,__CRTL_VER_OVERRIDE=80400000
-.ENDIF
-.ENDIF
+# Optimization.  The .c.obj rule will override this for specific modules
+# where the VAX C compilers hang.   See VAX_NOOPTIM_LIST, below.
+OPTIMIZE= /optim
+
+.IFDEF __VAX__                  # __VAX__
+
+# List of modules for which "Compaq C V6.4-005 on OpenVMS VAX V7.3"
+# hangs.  Add more as needed (plus-separated).
+VAX_NOOPTIM_LIST = blowfish+regexp+sha256
+
+# Compiler command.
+# Default: CC /DECC.  On non-VAX, or VAX with only DEC C installed,
+# /DECC is harmless.  If both DEC C and VAX C are installed, and VAX C
+# was selected as the default, then /DECC must be specified explicitly. 
+# If both are installed, and DEC C is the default, but VAX C is desired,
+# then define FORCE_VAXC to get VAX C (CC /VAXC).  If only VAX C is
+# installed, then define VAXC to get (plain) CC.
+
+.IFDEF DECC                         # DECC
+CC_DEF = cc /decc
+PREFIX = /prefix=all/name=(upper,short) /repository=[.$(DEST)]
+.ELSE                               # DECC
+.IFDEF FORCE_VAXC                       # FORCE_VAXC
+CC_DEF = cc /vaxc
+.ELSE                                   # FORCE_VAXC
+CC_DEF = cc
+.ENDIF                                  # FORCE_VAXC
+.ENDIF                              # DECC
+.ELSE                           # __VAX__
+
+# Not VAX, therefore DEC C (with /NAMES, /PREFIX, and /REPOSITORY).
+
+CC_DEF = cc /decc
+PREFIX  = /prefix=all/name=(upper,short) /repository=[.$(DEST)]
+
+# These floating-point options are the defaults on IA64 and x86_64.
+# This makes Alpha consistent.
+FLOAT   = /float = ieee_float /ieee_mode = denorm_results
+
+# Large-file support.  Unavailable on VAX and very old Alpha.  To
+# disable, define NOLARGE.
+.IFDEF NOLARGE
+.ELSE
+LARGE_DEF = , "_LARGEFILE"
+.ENDIF # NOLARGE [ELSE]
+
+# .IFDEF MMSX86_64
+# ARCH_DEF=        # ,__CRTL_VER_OVERRIDE=80400000
+# .ENDIF
+
+.ENDIF                          # __VAX__
+
+.IFDEF LIST
+LIST_OPT = /list=[.$(DEST)] /show=(all, nomessages)
+MAP_OPT = /map /cross_reference /full
+.ENDIF # LIST
+
 
 LD_DEF  = link
 C_INC   = [.proto]
 
 .IFDEF DEBUG
 DEBUG_DEF = ,"DEBUG"
-TARGET    = dvim.exe
-CFLAGS    = /debug/noopt$(PREFIX)
-LDFLAGS   = /debug
+TARGET    = [.$(DEST)]dvim.exe
+CFLAGS    = /debug/noopt$(PREFIX)$(FLOAT)$(LIST_OPT)
+LDFLAGS   = /debug $(MAP_OPT)
 .ELSE
-TARGET    = vim.exe
-CFLAGS    = $(OPTIMIZE)$(PREFIX)
-LDFLAGS   =
+TARGET    = [.$(DEST)]vim.exe
+CFLAGS    = $(OPTIMIZE)$(PREFIX)$(FLOAT)$(LIST_OPT)
+LDFLAGS   = $(MAP_OPT)
 .ENDIF
 
 # Predefined VIM directories
@@ -173,7 +308,14 @@ DEFS     = ,"HAVE_CONFIG_H","FEAT_GUI_GTK"
 LIBS     = ,OS_VMS_GTK.OPT/OPT
 GUI_FLAG = /float=ieee/ieee=denorm/WARNINGS=(DISABLE=MACROREDEF)
 GUI_SRC  = gui.c gui_gtk.c gui_gtk_f.c gui_gtk_x11.c gui_beval.c pty.c
-GUI_OBJ  = gui.obj gui_gtk.obj gui_gtk_f.obj gui_gtk_x11.obj gui_beval.obj 
pty.obj
+GUI_OBJ  = \
+[.$(DEST)]gui.obj \
+[.$(DEST)]gui_gtk.obj \
+[.$(DEST)]gui_gtk_f.obj \
+[.$(DEST)]gui_gtk_x11.obj \
+[.$(DEST)]gui_beval.obj \
+[.$(DEST)]pty.obj
+
 GUI_INC  = ,"/gtk_root/gtk","/gtk_root/glib"
 # GUI_INC_VER is used just for :ver information
 # this string should escape from C and DCL in the same time
@@ -191,7 +333,14 @@ XPM_INC  =
 LIBS     = ,OS_VMS_MOTIF.OPT/OPT
 GUI_FLAG = /WARNINGS=(DISABLE=MACROREDEF)
 GUI_SRC  = gui.c gui_motif.c gui_x11.c gui_beval.c gui_xmdlg.c gui_xmebw.c
-GUI_OBJ  = gui.obj gui_motif.obj gui_x11.obj gui_beval.obj gui_xmdlg.obj 
gui_xmebw.obj
+GUI_OBJ  = \
+[.$(DEST)]gui.obj \
+[.$(DEST)]gui_motif.obj \
+[.$(DEST)]gui_x11.obj \
+[.$(DEST)]gui_beval.obj \
+[.$(DEST)]gui_xmdlg.obj \
+[.$(DEST)]gui_xmebw.obj
+
 GUI_INC  =
 .ENDIF
 
@@ -211,7 +360,10 @@ LIBS        =
 PERL    = perl
 PERL_DEF = ,"FEAT_PERL"
 PERL_SRC = if_perlsfio.c if_perl.xs
-PERL_OBJ = if_perlsfio.obj if_perl.obj
+PERL_OBJ = \
+[.$(DEST)]if_perlsfio.obj \
+[.$(DEST)]if_perl.obj
+
 PERL_LIB = ,OS_VMS_PERL.OPT/OPT
 PERL_INC = ,dka0:[perlbuild.perl.lib.vms_axp.5_6_1.core]
 .ENDIF
@@ -220,7 +372,7 @@ PERL_INC = ,dka0:[perlbuild.perl.lib.vms_axp.5_6_1.core]
 # Python related setup.
 PYTHON_DEF = ,"FEAT_PYTHON"
 PYTHON_SRC = if_python.c
-PYTHON_OBJ = if_python.obj
+PYTHON_OBJ = [.$(DEST)]if_python.obj
 PYTHON_LIB = ,OS_VMS_PYTHON.OPT/OPT
 PYTHON_INC = ,PYTHON_INCLUDE
 .ENDIF
@@ -229,7 +381,7 @@ PYTHON_INC = ,PYTHON_INCLUDE
 # Python related setup.
 PYTHON3_DEF = ,"FEAT_PYTHON3"
 PYTHON3_SRC = if_python3.c
-PYTHON3_OBJ = if_python3.obj
+PYTHON3_OBJ = [.$(DEST)]if_python3.obj
 PYTHON3_LIB = ,OS_VMS_PYTHON3.OPT/OPT
 PYTHON3_INC = ,PYTHON3_INCLUDE
 .ENDIF
@@ -239,7 +391,7 @@ PYTHON3_INC = ,PYTHON3_INCLUDE
 # TCL related setup.
 TCL_DEF = ,"FEAT_TCL"
 TCL_SRC = if_tcl.c
-TCL_OBJ = if_tcl.obj
+TCL_OBJ = [.$(DEST)]if_tcl.obj
 TCL_LIB = ,OS_VMS_TCL.OPT/OPT
 TCL_INC = ,dka0:[tcl80.generic]
 .ENDIF
@@ -248,7 +400,7 @@ TCL_INC = ,dka0:[tcl80.generic]
 # RUBY related setup.
 RUBY_DEF = ,"FEAT_RUBY"
 RUBY_SRC = if_ruby.c
-RUBY_OBJ = if_ruby.obj
+RUBY_OBJ = [.$(DEST)]if_ruby.obj
 RUBY_LIB = ,OS_VMS_RUBY.OPT/OPT
 RUBY_INC =
 .ENDIF
@@ -257,7 +409,7 @@ RUBY_INC =
 # LUA related setup.
 LUA_DEF = ,"FEAT_LUA"
 LUA_SRC = if_lua.c
-LUA_OBJ = if_lua.obj
+LUA_OBJ = [.$(DEST)]if_lua.obj
 LUA_LIB = ,OS_VMS_LUA.OPT/OPT
 LUA_INC = ,LUA$ROOT:[INCLUDE]
 .ENDIF
@@ -273,7 +425,7 @@ XIM_DEF = ,"FEAT_XIM"
 # MZSCHEME related setup
 MZSCHEME_DEF = ,"FEAT_MZSCHEME"
 MZSCHEME_SRC = if_mzsch.c
-MZSCHEME_OBJ = if_mzsch.obj
+MZSCHEME_OBJ = [.$(DEST)]if_mzsch.obj
 .ENDIF
 
 .IFDEF VIM_ICONV
@@ -283,7 +435,14 @@ ICONV_DEF = ,"USE_ICONV"
 
 # XDIFF related setup.
 XDIFF_SRC = xdiffi.c,xemit.c,xprepare.c,xutils.c,xhistogram.c,xpatience.c
-XDIFF_OBJ = 
xdiffi.obj,xemit.obj,xprepare.obj,xutils.obj,xhistogram.obj,xpatience.obj
+XDIFF_OBJ = \
+[.$(DEST)]xdiffi.obj,\
+[.$(DEST)]xemit.obj,\
+[.$(DEST)]xprepare.obj,\
+[.$(DEST)]xutils.obj,\
+[.$(DEST)]xhistogram.obj,\
+[.$(DEST)]xpatience.obj
+
 XDIFF_INC = ,[.xdiff]
 
 .IFDEF MODIFIED_BY
@@ -303,371 +462,408 @@ MODEL_DEF = "FEAT_$(MODEL)"
 VIMUSER = "''F$EDIT(F$GETJPI(" ","USERNAME"),"TRIM")'"
 VIMHOST = 
"''F$TRNLNM("SYS$NODE")'''F$TRNLNM("UCX$INET_HOST")'.''F$TRNLNM("UCX$INET_DOMAIN")'"
 
-.SUFFIXES : .obj .c
+.SUFFIXES : .obj .c     # Case problems with old MMS?  Ignore: 
%MMS-I-ALRINSUFFLST
 
-ALL_CFLAGS = 
/def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF)$(PYTHON3_DEF) -
- $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCHEME_DEF) -
- $(ICONV_DEF)$(ARCH_DEF)) -
+ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF) -
+ $(PYTHON_DEF)$(PYTHON3_DEF) $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF) -
+ $(XIM_DEF)$(TAG_DEF)$(MZSCHEME_DEF) $(ICONV_DEF)$(ARCH_DEF) -
+ $(LARGE_DEF)) -
  $(CFLAGS)$(GUI_FLAG) -
- 
/include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(PYTHON3_INC)
 -
- $(TCL_INC)$(XDIFF_INC)$(XPM_INC))
+ /include=([.$(DEST)],$(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC) -
+ $(PYTHON_INC)$(PYTHON3_INC)$(TCL_INC)$(XDIFF_INC)$(XPM_INC))
 
 # CFLAGS displayed in :ver information
 # It is specially formatted for correct display of unix like includes
 # as $(GUI_INC) - replaced with $(GUI_INC_VER)
 # Otherwise should not be any other difference.
-ALL_CFLAGS_VER = 
/def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF)$(PYTHON3_DEF) -
- $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCHEME_DEF) -
- $(ICONV_DEF)$(ARCH_DEF)) -
+ALL_CFLAGS_VER1 = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF) -
+ $(PYTHON_DEF)$(PYTHON3_DEF) -
+ $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCHEME_DEF)
+ALL_CFLAGS_VER2 = $(ICONV_DEF)$(ARCH_DEF)$(LARGE_DEF)) -
  $(CFLAGS)$(GUI_FLAG) -
- 
/include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(PYTHON3_INC)
 -
- $(TCL_INC)$(XDIFF_INC)$(XPM_INC))
+ /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC) -
+ $(PYTHON_INC)$(PYTHON3_INC) $(TCL_INC)$(XDIFF_INC)$(XPM_INC))
 
 ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) $(XPM_LIB)\
           $(PERL_LIB) $(PYTHON_LIB) $(PYTHON3_LIB) $(TCL_LIB) $(RUBY_LIB) 
$(LUA_LIB)
 
 SRC = \
-       alloc.c \
-       arabic.c \
-       arglist.c \
-       autocmd.c \
-       beval.c \
-       blob.c \
-       blowfish.c \
-       buffer.c \
-       bufwrite.c \
-       change.c \
-       channel.c \
-       charset.c \
-       cindent.c \
-       clientserver.c \
-       clipboard.c \
-       cmdexpand.c \
-       cmdhist.c \
-       crypt.c \
-       crypt_zip.c \
-       debugger.c \
-       dict.c \
-       diff.c \
-       digraph.c \
-       drawline.c \
-       drawscreen.c \
-       edit.c \
-       eval.c \
-       evalbuffer.c \
-       evalfunc.c \
-       evalvars.c \
-       evalwindow.c \
-       ex_cmds.c \
-       ex_cmds2.c \
-       ex_docmd.c \
-       ex_eval.c \
-       ex_getln.c \
-       fileio.c \
-       filepath.c, \
-       findfile.c \
-       float.c \
-       fold.c \
-       getchar.c \
-       gc.c \
-       gui_xim.c \
-       hardcopy.c \
-       hashtab.c \
-       help.c \
-       highlight.c \
-       if_cscope.c \
-       if_xcmdsrv.c \
-       indent.c \
-       insexpand.c \
-       job.c \
-       json.c \
-       linematch.c \
-       list.c \
-       locale.c \
-       logfile.c \
-       main.c \
-       map.c \
-       mark.c \
-       match.c \
-       mbyte.c \
-       memfile.c \
-       memline.c \
-       menu.c \
-       message.c \
-       misc1.c \
-       misc2.c \
-       mouse.c \
-       move.c \
-       normal.c \
-       ops.c \
-       option.c \
-       optionstr.c \
-       os_unix.c \
-       os_vms.c \
-       pathdef.c \
-       popupmenu.c \
-       popupwin.c \
-       profiler.c \
-       pty.c \
-       quickfix.c \
-       regexp.c \
-       register.c \
-       screen.c \
-       scriptfile.c \
-       search.c \
-       session.c \
-       sha256.c \
-       sign.c \
-       sound.c \
-       spell.c \
-       spellfile.c \
-       spellsuggest.c \
-       strings.c \
-       syntax.c \
-       tabpanel.c \
-       tag.c \
-       term.c \
-       terminal.c \
-       termlib.c \
-       testing.c \
-       textformat.c \
-       textobject.c \
-       textprop.c \
-       time.c \
-       tuple.c \
-       typval.c \
-       ui.c \
-       undo.c \
-       usercmd.c \
-       userfunc.c \
-       version.c \
-       vim9class.c \
-       vim9cmds.c \
-       vim9compile.c \
-       vim9execute.c \
-       vim9expr.c \
-       vim9generics.c \
-       vim9instr.c \
-       vim9script.c \
-       vim9type.c \
-       viminfo.c \
-       window.c \
-       $(GUI_SRC) \
-       $(XDIFF_SRC) \
-       $(LUA_SRC) \
-       $(MZSCHEME_SRC) \
-       $(PERL_SRC) \
-       $(PYTHON_SRC) \
-       $(PYTHON3_SRC) \
-       $(TCL_SRC) \
-       $(RUBY_SRC)
+ alloc.c \
+ arabic.c \
+ arglist.c \
+ autocmd.c \
+ beval.c \
+ blob.c \
+ blowfish.c \
+ buffer.c \
+ bufwrite.c \
+ change.c \
+ channel.c \
+ charset.c \
+ cindent.c \
+ clientserver.c \
+ clipboard.c \
+ cmdexpand.c \
+ cmdhist.c \
+ crypt.c \
+ crypt_zip.c \
+ debugger.c \
+ dict.c \
+ diff.c \
+ digraph.c \
+ drawline.c \
+ drawscreen.c \
+ edit.c \
+ eval.c \
+ evalbuffer.c \
+ evalfunc.c \
+ evalvars.c \
+ evalwindow.c \
+ ex_cmds.c \
+ ex_cmds2.c \
+ ex_docmd.c \
+ ex_eval.c \
+ ex_getln.c \
+ fileio.c \
+ filepath.c, \
+ findfile.c \
+ float.c \
+ fold.c \
+ getchar.c \
+ gc.c \
+ gui_xim.c \
+ hardcopy.c \
+ hashtab.c \
+ help.c \
+ highlight.c \
+ if_cscope.c \
+ if_xcmdsrv.c \
+ indent.c \
+ insexpand.c \
+ job.c \
+ json.c \
+ linematch.c \
+ list.c \
+ locale.c \
+ logfile.c \
+ main.c \
+ map.c \
+ mark.c \
+ match.c \
+ mbyte.c \
+ memfile.c \
+ memline.c \
+ menu.c \
+ message.c \
+ misc1.c \
+ misc2.c \
+ mouse.c \
+ move.c \
+ normal.c \
+ ops.c \
+ option.c \
+ optionstr.c \
+ os_unix.c \
+ os_vms.c \
+ [.$(DEST)]pathdef.c \
+ popupmenu.c \
+ popupwin.c \
+ profiler.c \
+ pty.c \
+ quickfix.c \
+ regexp.c \
+ register.c \
+ screen.c \
+ scriptfile.c \
+ search.c \
+ session.c \
+ sha256.c \
+ sign.c \
+ sound.c \
+ spell.c \
+ spellfile.c \
+ spellsuggest.c \
+ strings.c \
+ syntax.c \
+ tabpanel.c \
+ tag.c \
+ term.c \
+ terminal.c \
+ termlib.c \
+ testing.c \
+ textformat.c \
+ textobject.c \
+ textprop.c \
+ time.c \
+ tuple.c \
+ typval.c \
+ ui.c \
+ undo.c \
+ usercmd.c \
+ userfunc.c \
+ version.c \
+ vim9class.c \
+ vim9cmds.c \
+ vim9compile.c \
+ vim9execute.c \
+ vim9expr.c \
+ vim9instr.c \
+ vim9generics.c \
+ vim9script.c \
+ vim9type.c \
+ viminfo.c \
+ window.c \
+ $(GUI_SRC) \
+ $(XDIFF_SRC) \
+ $(LUA_SRC) \
+ $(MZSCHEME_SRC) \
+ $(PERL_SRC) \
+ $(PYTHON_SRC) \
+ $(PYTHON3_SRC) \
+ $(TCL_SRC) \
+ $(RUBY_SRC)
 
 OBJ = \
-       alloc.obj \
-       arabic.obj \
-       arglist.obj \
-       autocmd.obj \
-       beval.obj \
-       blob.obj \
-       blowfish.obj \
-       buffer.obj \
-       bufwrite.obj \
-       change.obj \
-       channel.obj \
-       charset.obj \
-       cindent.obj \
-       clientserver.obj \
-       clipboard.obj \
-       cmdexpand.obj \
-       cmdhist.obj \
-       crypt.obj \
-       crypt_zip.obj \
-       debugger.obj \
-       dict.obj \
-       diff.obj \
-       digraph.obj \
-       drawline.obj \
-       drawscreen.obj \
-       edit.obj \
-       eval.obj \
-       evalbuffer.obj \
-       evalfunc.obj \
-       evalvars.obj \
-       evalwindow.obj \
-       ex_cmds.obj \
-       ex_cmds2.obj \
-       ex_docmd.obj \
-       ex_eval.obj \
-       ex_getln.obj \
-       fileio.obj \
-       filepath.obj \
-       findfile.obj \
-       float.obj \
-       fold.obj \
-       getchar.obj \
-       gc.obj \
-       gui_xim.obj \
-       hardcopy.obj \
-       hashtab.obj \
-       help.obj \
-       highlight.obj \
-       if_cscope.obj \
-       if_mzsch.obj \
-       if_xcmdsrv.obj \
-       indent.obj \
-       insexpand.obj \
-       job.obj \
-       json.obj \
-       linematch.obj \
-       list.obj \
-       locale.obj \
-       logfile.obj \
-       main.obj \
-       map.obj \
-       mark.obj \
-       match.obj \
-       mbyte.obj \
-       memfile.obj \
-       memline.obj \
-       menu.obj \
-       message.obj \
-       misc1.obj \
-       misc2.obj \
-       mouse.obj \
-       move.obj \
-       normal.obj \
-       ops.obj \
-       option.obj \
-       optionstr.obj \
-       os_unix.obj \
-       os_vms.obj \
-       pathdef.obj \
-       popupmenu.obj \
-       popupwin.obj \
-       profiler.obj \
-       pty.obj \
-       quickfix.obj \
-       regexp.obj \
-       register.obj \
-       screen.obj \
-       scriptfile.obj \
-       search.obj \
-       session.obj \
-       sha256.obj \
-       sign.obj \
-       sound.obj \
-       spell.obj \
-       spellfile.obj \
-       spellsuggest.obj \
-       strings.obj \
-       syntax.obj \
-       tabpanel.obj \
-       tag.obj \
-       term.obj \
-       terminal.obj \
-       termlib.obj \
-       testing.obj \
-       textformat.obj \
-       textobject.obj \
-       textprop.obj \
-       time.obj \
-       tuple.obj \
-       typval.obj \
-       ui.obj \
-       undo.obj \
-       usercmd.obj \
-       userfunc.obj \
-       version.obj \
-       vim9class.obj \
-       vim9cmds.obj \
-       vim9compile.obj \
-       vim9execute.obj \
-       vim9expr.obj \
-       vim9generics.obj \
-       vim9instr.obj \
-       vim9script.obj \
-       vim9type.obj \
-       viminfo.obj \
-       window.obj \
-       $(GUI_OBJ) \
-       $(XDIFF_OBJ) \
-       $(LUA_OBJ) \
-       $(MZSCHEME_OBJ) \
-       $(PERL_OBJ) \
-       $(PYTHON_OBJ) \
-       $(PYTHON3_OBJ) \
-       $(TCL_OBJ) \
-       $(RUBY_OBJ)
+ [.$(DEST)]alloc.obj \
+ [.$(DEST)]arabic.obj \
+ [.$(DEST)]arglist.obj \
+ [.$(DEST)]autocmd.obj \
+ [.$(DEST)]beval.obj \
+ [.$(DEST)]blob.obj \
+ [.$(DEST)]blowfish.obj \
+ [.$(DEST)]buffer.obj \
+ [.$(DEST)]bufwrite.obj \
+ [.$(DEST)]change.obj \
+ [.$(DEST)]channel.obj \
+ [.$(DEST)]charset.obj \
+ [.$(DEST)]cindent.obj \
+ [.$(DEST)]clientserver.obj \
+ [.$(DEST)]clipboard.obj \
+ [.$(DEST)]cmdexpand.obj \
+ [.$(DEST)]cmdhist.obj \
+ [.$(DEST)]crypt.obj \
+ [.$(DEST)]crypt_zip.obj \
+ [.$(DEST)]debugger.obj \
+ [.$(DEST)]dict.obj \
+ [.$(DEST)]diff.obj \
+ [.$(DEST)]digraph.obj \
+ [.$(DEST)]drawline.obj \
+ [.$(DEST)]drawscreen.obj \
+ [.$(DEST)]edit.obj \
+ [.$(DEST)]eval.obj \
+ [.$(DEST)]evalbuffer.obj \
+ [.$(DEST)]evalfunc.obj \
+ [.$(DEST)]evalvars.obj \
+ [.$(DEST)]evalwindow.obj \
+ [.$(DEST)]ex_cmds.obj \
+ [.$(DEST)]ex_cmds2.obj \
+ [.$(DEST)]ex_docmd.obj \
+ [.$(DEST)]ex_eval.obj \
+ [.$(DEST)]ex_getln.obj \
+ [.$(DEST)]fileio.obj \
+ [.$(DEST)]filepath.obj \
+ [.$(DEST)]findfile.obj \
+ [.$(DEST)]float.obj \
+ [.$(DEST)]fold.obj \
+ [.$(DEST)]getchar.obj \
+ [.$(DEST)]gc.obj \
+ [.$(DEST)]gui_xim.obj \
+ [.$(DEST)]hardcopy.obj \
+ [.$(DEST)]hashtab.obj \
+ [.$(DEST)]help.obj \
+ [.$(DEST)]highlight.obj \
+ [.$(DEST)]if_cscope.obj \
+ [.$(DEST)]if_mzsch.obj \
+ [.$(DEST)]if_xcmdsrv.obj \
+ [.$(DEST)]indent.obj \
+ [.$(DEST)]insexpand.obj \
+ [.$(DEST)]job.obj \
+ [.$(DEST)]json.obj \
+ [.$(DEST)]linematch.obj \
+ [.$(DEST)]list.obj \
+ [.$(DEST)]locale.obj \
+ [.$(DEST)]logfile.obj \
+ [.$(DEST)]main.obj \
+ [.$(DEST)]map.obj \
+ [.$(DEST)]mark.obj \
+ [.$(DEST)]match.obj \
+ [.$(DEST)]mbyte.obj \
+ [.$(DEST)]memfile.obj \
+ [.$(DEST)]memline.obj \
+ [.$(DEST)]menu.obj \
+ [.$(DEST)]message.obj \
+ [.$(DEST)]misc1.obj \
+ [.$(DEST)]misc2.obj \
+ [.$(DEST)]mouse.obj \
+ [.$(DEST)]move.obj \
+ [.$(DEST)]normal.obj \
+ [.$(DEST)]ops.obj \
+ [.$(DEST)]option.obj \
+ [.$(DEST)]optionstr.obj \
+ [.$(DEST)]os_unix.obj \
+ [.$(DEST)]os_vms.obj \
+ [.$(DEST)]pathdef.obj \
+ [.$(DEST)]popupmenu.obj \
+ [.$(DEST)]popupwin.obj \
+ [.$(DEST)]profiler.obj \
+ [.$(DEST)]pty.obj \
+ [.$(DEST)]quickfix.obj \
+ [.$(DEST)]regexp.obj \
+ [.$(DEST)]register.obj \
+ [.$(DEST)]screen.obj \
+ [.$(DEST)]scriptfile.obj \
+ [.$(DEST)]search.obj \
+ [.$(DEST)]session.obj \
+ [.$(DEST)]sha256.obj \
+ [.$(DEST)]sign.obj \
+ [.$(DEST)]sound.obj \
+ [.$(DEST)]spell.obj \
+ [.$(DEST)]spellfile.obj \
+ [.$(DEST)]spellsuggest.obj \
+ [.$(DEST)]strings.obj \
+ [.$(DEST)]syntax.obj \
+ [.$(DEST)]tabpanel.obj \
+ [.$(DEST)]tag.obj \
+ [.$(DEST)]term.obj \
+ [.$(DEST)]terminal.obj \
+ [.$(DEST)]termlib.obj \
+ [.$(DEST)]testing.obj \
+ [.$(DEST)]textformat.obj \
+ [.$(DEST)]textobject.obj \
+ [.$(DEST)]textprop.obj \
+ [.$(DEST)]time.obj \
+ [.$(DEST)]tuple.obj \
+ [.$(DEST)]typval.obj \
+ [.$(DEST)]ui.obj \
+ [.$(DEST)]undo.obj \
+ [.$(DEST)]usercmd.obj \
+ [.$(DEST)]userfunc.obj \
+ [.$(DEST)]version.obj \
+ [.$(DEST)]vim9class.obj \
+ [.$(DEST)]vim9cmds.obj \
+ [.$(DEST)]vim9compile.obj \
+ [.$(DEST)]vim9execute.obj \
+ [.$(DEST)]vim9expr.obj \
+ [.$(DEST)]vim9instr.obj \
+ [.$(DEST)]vim9generics.obj \
+ [.$(DEST)]vim9script.obj \
+ [.$(DEST)]vim9type.obj \
+ [.$(DEST)]viminfo.obj \
+ [.$(DEST)]window.obj \
+ $(GUI_OBJ) \
+ $(XDIFF_OBJ) \
+ $(LUA_OBJ) \
+ $(MZSCHEME_OBJ) \
+ $(PERL_OBJ) \
+ $(PYTHON_OBJ) \
+ $(PYTHON3_OBJ) \
+ $(TCL_OBJ) \
+ $(RUBY_OBJ)
 
 # Default target is making the executable
-all : [.auto]config.h mmk_compat motif_env gtk_env perl_env python_env tcl_env 
ruby_env lua_env $(TARGET)
+all : [.$(DEST)]config.h mmk_compat motif_env gtk_env perl_env \
+      python_env tcl_env ruby_env lua_env $(TARGET)
        ! $@
 
-[.auto]config.h : $(CONFIG_H)
-       copy/nolog $(CONFIG_H) [.auto]config.h
-       -@ open/append ac [.auto]config.h
+[.$(DEST)]config.h : $(CONFIG_H)
+       copy/nolog $(CONFIG_H) [.$(DEST)]config.h
+       -@ open/append ac [.$(DEST)]config.h
         -@ hash[0,8]=35
        -@ quotes[0,8]=34
         -@ if ""$(DEF_MODIFIED)"" .EQS. "YES" then write ac ''hash',"define 
MODIFIED_BY ",''quotes',$(MODIFIED_BY),''quotes'
        -@ close ac
 
 mmk_compat :
-       -@ open/write pd pathdef.c
+       -@ open/write pd [.$(DEST)]pathdef.c
        -@ write pd "/* Empty file to satisfy MMK depend.  */"
-       -@ write pd "/* It will be overwritten later on... */"
+       -@ write pd "/* It will be overwritten later... */"
        -@ close pd
 clean :
-       -@ if "''F$SEARCH("*.exe")'" .NES. "" then delete/noconfirm/nolog 
*.exe;*
-       -@ if "''F$SEARCH("*.obj")'" .NES. "" then delete/noconfirm/nolog 
*.obj;*
-       -@ if "''F$SEARCH("[.auto]config.h")'" .NES. "" then 
delete/noconfirm/nolog [.auto]config.h;*
-       -@ if "''F$SEARCH("pathdef.c")'" .NES. "" then delete/noconfirm/nolog 
pathdef.c;*
-       -@ if "''F$SEARCH("if_perl.c")'" .NES. "" then delete/noconfirm/nolog 
if_perl.c;*
-       -@ if "''F$SEARCH("*.opt")'" .NES. "" then delete/noconfirm/nolog 
*.opt;*
-       -@ if "''F$SEARCH("*.dmp")'" .NES. "" then delete/noconfirm/nolog 
*.dmp;*
+       -@ if (f$search( "[.$(DEST)]*.*") .nes. "") then -
+         delete /noconfirm [.$(DEST)]*.*;*
+       -@ if (f$search( "$(DEST).DIR") .nes. "") then -
+         set protection = w:d $(DEST).DIR;*
+       -@ if (f$search( "$(DEST).DIR") .nes. "") then -
+         delete /noconfirm $(DEST).DIR;*
+
+help :
+       mcr sys$disk:$(TARGET) --help
+
+version :
+       mcr sys$disk:$(TARGET) --version
 
 # Link the target
 $(TARGET) : $(OBJ)
 #     make an OPT file - as the obj file list is too long for one command line
-       -@ DIRECTORY *.OBJ. /BRIEF/COLUMNS=1/NOHEADING/NOTRAILING 
/SELECT=FILE=(NONODE,NODEVICE,NODIRECTORY,NOVERSION)/OUTPUT=ALL_OBJS_LIST.OPT
-       $(LD_DEF) $(LDFLAGS) /exe=$(TARGET) ALL_OBJS_LIST.OPT/OPT $(ALL_LIBS)
+       -@ DIRECTORY [.$(DEST)]*.OBJ. /BRIEF/COLUMNS=1 /NOHEADING -
+            /NOTRAILING /SELECT=FILE=(NONODE,NODEVICE,NODIRECTORY,NOVERSION) -
+            /OUTPUT=[.$(DEST)]ALL_OBJS_LIST.OPT
+       -@ def_dev_dir_orig = f$environment( "default")
+       -@ target_name_type = -
+         f$parse( "$(TARGET)", , , "NAME", "SYNTAX_ONLY")+ -
+         f$parse( "$(TARGET)", , , "TYPE", "SYNTAX_ONLY")
+        -@ set default [.$(DEST)]
+       $(LD_DEF) $(LDFLAGS) /exe = 'target_name_type' -
+         ALL_OBJS_LIST.OPT/OPT $(ALL_LIBS)
+       -@ set default 'def_dev_dir_orig'
 
 .c.obj :
-       $(CC_DEF) $(ALL_CFLAGS) $<
-
-pathdef.c : check_ccver $(CONFIG_H)
+# Override /optimize for selected modules on VAX.
+.IFDEF __VAX__                  # __VAX__
+       @ mod = f$parse( "$@", , , "NAME", "SYNTAX_ONLY")
+       @ mod = "+"+ f$edit( mod, "LOWERCASE")+ "+"
+       @ optim_qual = ""
+       @ if (f$locate( mod, "+$(VAX_NOOPTIM_LIST)+") .lt. -
+         f$length( "+$(VAX_NOOPTIM_LIST)+")) then optim_qual = "/nooptim"
+       @ if (f$locate( mod, "+$(VAX_NOOPTIM_LIST)+") .lt. -
+         f$length( "+$(VAX_NOOPTIM_LIST)+")) then -
+       @ write sys$output -
+          "                *** NOTE: USING SPECIAL /NOOPTIMIZE RULE. ***"
+       $(CC_DEF) $(ALL_CFLAGS) 'optim_qual' $< /object = $@
+.ELSE                           # __VAX__
+       $(CC_DEF) $(ALL_CFLAGS) $< /object = $@
+.ENDIF                          # __VAX__ [ELSE]
+
+[.$(DEST)]pathdef.c : check_ccver $(CONFIG_H)
        -@ write sys$output "creating PATHDEF.C file."
-       -@ open/write pd pathdef.c
+       -@ open/write pd $@
        -@ write pd "/* pathdef.c -- DO NOT EDIT! */"
        -@ write pd "/* This file is automatically created by MAKE_VMS.MMS"
        -@ write pd " * Change the file MAKE_VMS.MMS Only. */"
        -@ write pd "typedef unsigned char   char_u;"
        -@ write pd "char_u *default_vim_dir = (char_u *)"$(VIMLOC)";"
        -@ write pd "char_u *default_vimruntime_dir = (char_u *)"$(VIMRUN)";"
-       -@ write pd "char_u *all_cflags = (char_u 
*)""$(CC_DEF)$(ALL_CFLAGS_VER)"";"
-       -@ write pd "char_u *all_lflags = (char_u *)""$(LD_DEF)$(LDFLAGS) 
/exe=$(TARGET) ALL_OBJS_LIST.OPT/OPT $(ALL_LIBS)"";"
+       -@ write pd "char_u *all_cflags = (char_u *)""$(CC_DEF)"""
+       -@ write pd " ""$(ALL_CFLAGS_VER1)"""
+       -@ write pd " ""$(ALL_CFLAGS_VER2)"";"
+       -@ write pd "char_u *all_lflags = (char_u *)""$(LD_DEF)$(LDFLAGS)"""
+       -@ write pd " ""/exe=$(TARGET) ALL_OBJS_LIST.OPT/OPT $(ALL_LIBS)"";"
        -@ write pd "char_u *compiler_version = (char_u *) ""''CC_VER'"";"
        -@ write pd "char_u *compiled_user = (char_u *) "$(VIMUSER)";"
        -@ write pd "char_u *compiled_sys  = (char_u *) "$(VIMHOST)";"
        -@ write pd "char_u *compiled_arch = (char_u *) ""$(MMSARCH_NAME)"";"
+       -@ write pd "char_u *compiled_vers = (char_u *) """ + -
+            f$getsyi( "version")+ """;"
        -@ close pd
 
-if_perl.c : if_perl.xs
+[.$(DEST)]if_perl.c : if_perl.xs
        -@ $(PERL) PERL_ROOT:[LIB.ExtUtils]xsubpp -prototypes -typemap - 
PERL_ROOT:[LIB.ExtUtils]typemap if_perl.xs >> $@
 
 make_vms.mms :
        -@ write sys$output "The name of the makefile MUST be <MAKE_VMS.MMS> 
!!!"
+# WHY???  (SMS.)
 
 .IFDEF CCVER
 # This part can make some complications if you're using some predefined
 # symbols/flags for your compiler. If does, just comment out CCVER variable
 check_ccver :
-       -@ define sys$output cc_ver.tmp
+       -@ define /user_mode sys$error nl:
+       -@ define /user_mode sys$output [.$(DEST)]cc_ver.tmp
        -@ $(CC_DEF)/version
-       -@ deassign sys$output
-       -@ open/read file cc_ver.tmp
+       -@ open/read file [.$(DEST)]cc_ver.tmp
        -@ read file CC_VER
        -@ close file
-       -@ delete/noconfirm/nolog cc_ver.tmp.*
+       -@ delete/noconfirm/nolog [.$(DEST)]cc_ver.tmp.*
 .ELSE
 check_ccver :
        -@ !
@@ -678,24 +874,21 @@ motif_env :
 .IFDEF XPM
        -@ write sys$output "using DECW/Motif/XPM environment."
         -@ write sys$output "creating OS_VMS_XPM.OPT file."
-       -@ open/write opt_file OS_VMS_XPM.OPT
-.IFDEF MMSVAX
-       -@ write opt_file "[.xpm.vms.vax]libxpm.olb/lib"
-.ENDIF
-.IFDEF MMSALPHA
-       -@ write opt_file "[.xpm.vms.axp]libxpm.olb/lib"
-.ENDIF
-.IFDEF MMSIA64
-       -@ write opt_file "[.xpm.vms.ia64]libxpm.olb/lib"
+       -@ open/write opt_file [.$(DEST)]OS_VMS_XPM.OPT
+.IFDEF __ALPHA__
+ARCH_XPM = axp
+.ELSE
+ARCH_XPM = $(ARCH)
 .ENDIF
+       -@ write opt_file "[.xpm.vms.$(ARCH_XPM)]libxpm.olb/lib"
        -@ close opt_file
 .ELSE
        -@ write sys$output "using DECW/Motif environment."
 .ENDIF
        -@ write sys$output "creating OS_VMS_MOTIF.OPT file."
-       -@ open/write opt_file OS_VMS_MOTIF.OPT
-       -@ write opt_file "sys$share:decw$xmlibshr12.exe/share,-"
-       -@ write opt_file "sys$share:decw$xtlibshrr5.exe/share,-"
+       -@ open/write opt_file [.$(DEST)]OS_VMS_MOTIF.OPT
+       -@ write opt_file "sys$share:decw$xmlibshr12.exe/share"
+       -@ write opt_file "sys$share:decw$xtlibshrr5.exe/share"
        -@ write opt_file "sys$share:decw$xlibshr.exe/share"
        -@ close opt_file
 .ELSE
@@ -711,7 +904,7 @@ gtk_env :
        -@ show logical gtk_root
        -@ write sys$output "    include path: "$(GUI_INC)""
        -@ write sys$output "creating OS_VMS_GTK.OPT file."
-       -@ open/write opt_file OS_VMS_GTK.OPT
+       -@ open/write opt_file [.$(DEST)]OS_VMS_GTK.OPT
        -@ write opt_file "gtk_root:[glib]libglib.exe /share,-"
        -@ write opt_file "gtk_root:[glib.gmodule]libgmodule.exe /share,-"
        -@ write opt_file "gtk_root:[gtk.gdk]libgdk.exe /share,-"
@@ -731,12 +924,12 @@ perl_env :
        -@ show logical PERLSHR
        -@ write sys$output "    include path: ""$(PERL_INC)"""
        -@ show symbol perl
-       -@ open/write pd if_perl.c
+       -@ open/write pd [.$(DEST)]if_perl.c
        -@ write pd "/* Empty file to satisfy MMK depend.  */"
-       -@ write pd "/* It will be overwritten later on... */"
+       -@ write pd "/* It will be overwritten later... */"
        -@ close pd
        -@ write sys$output "creating OS_VMS_PERL.OPT file."
-       -@ open/write opt_file OS_VMS_PERL.OPT
+       -@ open/write opt_file [.$(DEST)]OS_VMS_PERL.OPT
        -@ write opt_file "PERLSHR /share"
        -@ close opt_file
 .ELSE
@@ -750,7 +943,7 @@ python_env :
        -@ show logical PYTHON_INCLUDE
        -@ show logical PYTHON_OLB
        -@ write sys$output "creating OS_VMS_PYTHON.OPT file."
-       -@ open/write opt_file OS_VMS_PYTHON.OPT
+       -@ open/write opt_file [.$(DEST)]OS_VMS_PYTHON.OPT
        -@ write opt_file "PYTHON_OLB:PYTHON.OLB /share"
        -@ close opt_file
 .ELSE
@@ -764,7 +957,7 @@ python3_env :
        -@ show logical PYTHON3_INCLUDE
        -@ show logical PYTHON3_OLB
        -@ write sys$output "creating OS_VMS_PYTHON3.OPT file."
-       -@ open/write opt_file OS_VMS_PYTHON3.OPT
+       -@ open/write opt_file [.$(DEST)]OS_VMS_PYTHON3.OPT
        -@ write opt_file "PYTHON3_OLB:PYTHON3.OLB /share"
        -@ close opt_file
 .ELSE
@@ -778,7 +971,7 @@ tcl_env :
        -@ show logical TCLSHR
        -@ write sys$output "    include path: ""$(TCL_INC)"""
        -@ write sys$output "creating OS_VMS_TCL.OPT file."
-       -@ open/write opt_file OS_VMS_TCL.OPT
+       -@ open/write opt_file [.$(DEST)]OS_VMS_TCL.OPT
        -@ write opt_file "TCLSHR /share"
        -@ close opt_file
 .ELSE
@@ -791,7 +984,7 @@ ruby_env :
        -@ write sys$output "using RUBY environment:"
        -@ write sys$output "    include path: ""$(RUBY_INC)"""
        -@ write sys$output "creating OS_VMS_RUBY.OPT file."
-       -@ open/write opt_file OS_VMS_RUBY.OPT
+       -@ open/write opt_file [.$(DEST)]OS_VMS_RUBY.OPT
        -@ write opt_file "RUBYSHR /share"
        -@ close opt_file
 .ELSE
@@ -804,7 +997,7 @@ lua_env :
        -@ write sys$output "using LUA environment:"
        -@ write sys$output "    include path: ""$(LUA_INC)"""
        -@ write sys$output "creating OS_VMS_LUA.OPT file."
-       -@ open/write opt_file OS_VMS_LUA.OPT
+       -@ open/write opt_file [.$(DEST)]OS_VMS_LUA.OPT
        -@ write opt_file "LUA$ROOT:[LIB]LUA$SHR.EXE /share"
        -@ close opt_file
 .ELSE
@@ -812,467 +1005,467 @@ lua_env :
        -@ !
 .ENDIF
 
-alloc.obj : alloc.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]alloc.obj : alloc.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-arabic.obj : arabic.c vim.h
-arglist.obj : arglist.c vim.h [.auto]config.h feature.h os_unix.h
-autocmd.obj : autocmd.c vim.h [.auto]config.h feature.h os_unix.h
-blowfish.obj : blowfish.c vim.h [.auto]config.h feature.h os_unix.h
-blob.obj : blob.c vim.h [.auto]config.h feature.h os_unix.h
-buffer.obj : buffer.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]arabic.obj : arabic.c vim.h
+[.$(DEST)]arglist.obj : arglist.c vim.h [.$(DEST)]config.h feature.h os_unix.h
+[.$(DEST)]autocmd.obj : autocmd.c vim.h [.$(DEST)]config.h feature.h os_unix.h
+[.$(DEST)]blowfish.obj : blowfish.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h
+[.$(DEST)]blob.obj : blob.c vim.h [.$(DEST)]config.h feature.h os_unix.h
+[.$(DEST)]buffer.obj : buffer.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-bufwrite.obj : bufwrite.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]bufwrite.obj : bufwrite.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-change.obj : change.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]change.obj : change.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-charset.obj : charset.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]charset.obj : charset.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-channel.obj : channel.c vim.h [.auto]config.h feature.h
-cindent.obj : cindent.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]channel.obj : channel.c vim.h [.$(DEST)]config.h feature.h
+[.$(DEST)]cindent.obj : cindent.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-clientserver.obj : clientserver.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]clientserver.obj : clientserver.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-clipboard.obj : clipboard.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]clipboard.obj : clipboard.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-cmdexpand.obj : cmdexpand.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]cmdexpand.obj : cmdexpand.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-cmdhist.obj : cmdhist.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]cmdhist.obj : cmdhist.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-crypt.obj : crypt.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]crypt.obj : crypt.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  errors.h globals.h
-crypt_zip.obj : crypt_zip.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]crypt_zip.obj : crypt_zip.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h
-debugger.obj : debugger.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]debugger.obj : debugger.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-dict.obj : dict.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]dict.obj : dict.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  errors.h globals.h
-diff.obj : diff.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]diff.obj : diff.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-digraph.obj : digraph.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]digraph.obj : digraph.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-drawline.obj : drawline.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]drawline.obj : drawline.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-drawscreen.obj : drawscreen.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]drawscreen.obj : drawscreen.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-edit.obj : edit.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]edit.obj : edit.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-eval.obj : eval.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]eval.obj : eval.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-evalbuffer.obj : evalbuffer.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]evalbuffer.obj : evalbuffer.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h
-evalfunc.obj : evalfunc.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]evalfunc.obj : evalfunc.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h version.h
-evalvars.obj : evalvars.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]evalvars.obj : evalvars.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h version.h
-evalwindow.obj : evalwindow.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]evalwindow.obj : evalwindow.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h
-ex_cmds.obj : ex_cmds.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]ex_cmds.obj : ex_cmds.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-ex_cmds2.obj : ex_cmds2.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]ex_cmds2.obj : ex_cmds2.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-ex_docmd.obj : ex_docmd.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]ex_docmd.obj : ex_docmd.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h ex_cmdidxs.h
-ex_eval.obj : ex_eval.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]ex_eval.obj : ex_eval.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-ex_getln.obj : ex_getln.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]ex_getln.obj : ex_getln.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-fileio.obj : fileio.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]fileio.obj : fileio.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-filepath.obj : filepath.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]filepath.obj : filepath.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-findfile.obj : findfile.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]findfile.obj : findfile.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-float.obj : float.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]float.obj : float.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-fold.obj : fold.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]fold.obj : fold.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-getchar.obj : getchar.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]getchar.obj : getchar.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-gc.obj : gc.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gc.obj : gc.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-gui_xim.obj : gui_xim.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_xim.obj : gui_xim.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-hardcopy.obj : hardcopy.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]hardcopy.obj : hardcopy.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-hashtab.obj : hashtab.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]hashtab.obj : hashtab.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-help.obj : help.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]help.obj : help.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-highlight.obj : highlight.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]highlight.obj : highlight.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-if_cscope.obj : if_cscope.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_cscope.obj : if_cscope.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-if_xcmdsrv.obj : if_xcmdsrv.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_xcmdsrv.obj : if_xcmdsrv.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-if_mzsch.obj : if_mzsch.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_mzsch.obj : if_mzsch.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro ex_cmds.h proto.h \
  errors.h globals.h if_mzsch.h
-indent.obj : indent.c vim.h [.auto]config.h feature.h os_unix.h
-insexpand.obj : insexpand.c vim.h [.auto]config.h feature.h os_unix.h
-job.obj : job.c vim.h [.auto]config.h feature.h os_unix.h
-json.obj : json.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]indent.obj : indent.c vim.h [.$(DEST)]config.h feature.h os_unix.h
+[.$(DEST)]insexpand.obj : insexpand.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h
+[.$(DEST)]job.obj : job.c vim.h [.$(DEST)]config.h feature.h os_unix.h
+[.$(DEST)]json.obj : json.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-linematch.obj : linematch.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]linematch.obj : linematch.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-list.obj : list.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]list.obj : list.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  errors.h globals.h
-locale.obj : locale.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]locale.obj : locale.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  errors.h globals.h
-logfile.obj : logfile.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]logfile.obj : logfile.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  errors.h globals.h
-main.obj : main.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]main.obj : main.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h \
  arabic.c
-map.obj : map.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]map.obj : map.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-mark.obj : mark.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]mark.obj : mark.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-match.obj : match.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]match.obj : match.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-memfile.obj : memfile.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]memfile.obj : memfile.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-memline.obj : memline.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]memline.obj : memline.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-menu.obj : menu.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]menu.obj : menu.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-message.obj : message.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]message.obj : message.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-misc1.obj : misc1.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]misc1.obj : misc1.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h \
  version.h
-misc2.obj : misc2.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]misc2.obj : misc2.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-mouse.obj : mouse.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]mouse.obj : mouse.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-move.obj : move.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]move.obj : move.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-mbyte.obj : mbyte.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]mbyte.obj : mbyte.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-normal.obj : normal.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]normal.obj : normal.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h nv_cmdidxs.h nv_cmds.h
-ops.obj : ops.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]ops.obj : ops.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-option.obj : option.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]option.obj : option.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h optiondefs.h
-optionstr.obj : optionstr.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]optionstr.obj : optionstr.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-os_unix.obj : os_unix.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]os_unix.obj : os_unix.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h os_unixx.h
-os_vms.obj : os_vms.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]os_vms.obj : os_vms.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h os_unixx.h
-pathdef.obj : pathdef.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]pathdef.obj : [.$(DEST)]pathdef.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-popupmenu.obj : popupmenu.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]popupmenu.obj : popupmenu.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-popupwin.obj : popupwin.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]popupwin.obj : popupwin.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-pty.obj : pty.c vim.h [.auto]config.h feature.h os_unix.h
-profiler.obj : profiler.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]pty.obj : pty.c vim.h [.$(DEST)]config.h feature.h os_unix.h
+[.$(DEST)]profiler.obj : profiler.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-quickfix.obj : quickfix.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]quickfix.obj : quickfix.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-regexp.obj : regexp.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]regexp.obj : regexp.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-register.obj : register.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]register.obj : register.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-scriptfile.obj : scriptfile.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]scriptfile.obj : scriptfile.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-screen.obj : screen.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]screen.obj : screen.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-search.obj : search.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]search.obj : search.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-session.obj : session.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]session.obj : session.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-sha256.obj : sha256.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]sha256.obj : sha256.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  errors.h globals.h
-sign.obj : sign.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]sign.obj : sign.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  errors.h globals.h
-sound.obj : sound.c vim.h [.auto]config.h feature.h
-spell.obj : spell.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]sound.obj : sound.c vim.h [.$(DEST)]config.h feature.h
+[.$(DEST)]spell.obj : spell.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-spellfile.obj : spellfile.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]spellfile.obj : spellfile.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h
-spellsuggest.obj : spellsuggest.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]spellsuggest.obj : spellsuggest.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h
-strings.obj : strings.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]strings.obj : strings.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h
-syntax.obj : syntax.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]syntax.obj : syntax.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-tabpanel.obj : tabpanel.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]tabpanel.obj : tabpanel.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-tag.obj : tag.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]tag.obj : tag.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-term.obj : term.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]term.obj : term.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-terminal.obj : terminal.c vim.h [.auto]config.h feature.h os_unix.h
-termlib.obj : termlib.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]terminal.obj : terminal.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h
+[.$(DEST)]termlib.obj : termlib.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
  \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-testing.obj : testing.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]testing.obj : testing.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
  \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-textformat.obj : textformat.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]textformat.obj : textformat.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-textobject.obj : textobject.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]textobject.obj : textobject.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-textprop.obj : textprop.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]textprop.obj : textprop.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-time.obj : time.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]time.obj : time.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-tuple.obj : tuple.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]tuple.obj : tuple.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-typval.obj : typval.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]typval.obj : typval.c vim.h [.$(DEST)]config.h feature.h os_unix.h   
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-ui.obj : ui.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]ui.obj : ui.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-undo.obj : undo.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]undo.obj : undo.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-usercmd.obj : usercmd.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]usercmd.obj : usercmd.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h
-userfunc.obj : userfunc.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]userfunc.obj : userfunc.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
  proto.h errors.h globals.h
-version.obj : version.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]version.obj : version.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-viminfo.obj : viminfo.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]viminfo.obj : viminfo.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9class.obj : vim9class.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9class.obj : vim9class.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9cmds.obj : vim9cmds.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9cmds.obj : vim9cmds.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9compile.obj : vim9compile.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9compile.obj : vim9compile.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9execute.obj : vim9execute.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9execute.obj : vim9execute.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9expr.obj : vim9expr.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9expr.obj : vim9expr.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9generics.obj : vim9generics.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9instr.obj : vim9instr.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9instr.obj : vim9instr.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9generics.obj : vim9generics.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9script.obj : vim9script.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9script.obj : vim9script.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-vim9type.obj : vim9type.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]vim9type.obj : vim9type.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-window.obj : window.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]window.obj : window.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-gui.obj : gui.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]gui.obj : gui.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-gui_gtk.obj : gui_gtk.c gui_gtk_f.h vim.h [.auto]config.h feature.h \
+[.$(DEST)]gui_gtk.obj : gui_gtk.c gui_gtk_f.h vim.h [.$(DEST)]config.h 
feature.h \
  os_unix.h   ascii.h keymap.h termdefs.h macros.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h \
  proto.h errors.h globals.h [-.pixmaps]stock_icons.h
-gui_gtk_f.obj : gui_gtk_f.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_gtk_f.obj : gui_gtk_f.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h gui_gtk_f.h
-gui_motif.obj : gui_motif.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_motif.obj : gui_motif.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h [-.pixmaps]alert.xpm [-.pixmaps]error.xpm \
  [-.pixmaps]generic.xpm [-.pixmaps]info.xpm [-.pixmaps]quest.xpm
-gui_athena.obj : gui_athena.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_athena.obj : gui_athena.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h gui_at_sb.h
-gui_gtk_x11.obj : gui_gtk_x11.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_gtk_x11.obj : gui_gtk_x11.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h gui_gtk_f.h [-.runtime]vim32x32.xpm \
  [-.runtime]vim16x16.xpm [-.runtime]vim48x48.xpm version.h
-gui_x11.obj : gui_x11.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_x11.obj : gui_x11.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h [-.runtime]vim32x32.xpm \
@@ -1292,56 +1485,56 @@ gui_x11.obj : gui_x11.c vim.h [.auto]config.h feature.h 
os_unix.h \
  [-.pixmaps]tb_shell.xpm [-.pixmaps]tb_replace.xpm \
  [-.pixmaps]tb_vsplit.xpm [-.pixmaps]tb_maxwidth.xpm \
  [-.pixmaps]tb_minwidth.xpm
-gui_at_sb.obj : gui_at_sb.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_at_sb.obj : gui_at_sb.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h gui_at_sb.h
-gui_at_fs.obj : gui_at_fs.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_at_fs.obj : gui_at_fs.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h gui_at_sb.h
-pty.obj : pty.c vim.h [.auto]config.h feature.h os_unix.h   \
+[.$(DEST)]pty.obj : pty.c vim.h [.$(DEST)]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
-if_perl.obj : [.auto]if_perl.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_perl.obj : [.auto]if_perl.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-if_perlsfio.obj : if_perlsfio.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_perlsfio.obj : if_perlsfio.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-if_python.obj : if_python.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_python.obj : if_python.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-if_tcl.obj : if_tcl.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_tcl.obj : if_tcl.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-if_ruby.obj : if_ruby.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_ruby.obj : if_ruby.c vim.h [.$(DEST)]config.h feature.h os_unix.h 
\
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-if_lua.obj : if_lua.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]if_lua.obj : if_lua.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  errors.h globals.h version.h
-beval.obj : beval.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]beval.obj : beval.c vim.h [.$(DEST)]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h option.h ex_cmds.h proto.h \
  errors.h globals.h
-gui_beval.obj : gui_beval.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]gui_beval.obj : gui_beval.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
-netbeans.obj : netbeans.c vim.h [.auto]config.h feature.h os_unix.h \
+[.$(DEST)]netbeans.obj : netbeans.c vim.h [.$(DEST)]config.h feature.h 
os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
-gui_xmdlg.obj : gui_xmdlg.c [.auto]config.h vim.h feature.h os_unix.h
-gui_xmebw.obj : gui_xmebw.c [.auto]config.h vim.h feature.h os_unix.h
-xdiffi.obj : [.xdiff]xdiffi.c [.xdiff]xinclude.h [.auto]config.h vim.h 
feature.h os_unix.h
-xemit.obj : [.xdiff]xemit.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h 
os_unix.h
-xprepare.obj : [.xdiff]xprepare.c [.xdiff]xinclude.h [.auto]config.h vim.h 
feature.h os_unix.h
-xutils.obj : [.xdiff]xutils.c [.xdiff]xinclude.h [.auto]config.h vim.h 
feature.h os_unix.h
-xhistogram.obj : [.xdiff]xhistogram.c [.xdiff]xinclude.h [.auto]config.h vim.h 
feature.h os_unix.h
-xpatience.obj : [.xdiff]xpatience.c [.xdiff]xinclude.h [.auto]config.h vim.h 
feature.h os_unix.h
+[.$(DEST)]gui_xmdlg.obj : gui_xmdlg.c [.$(DEST)]config.h vim.h feature.h 
os_unix.h
+[.$(DEST)]gui_xmebw.obj : gui_xmebw.c [.$(DEST)]config.h vim.h feature.h 
os_unix.h
+[.$(DEST)]xdiffi.obj : [.xdiff]xdiffi.c [.xdiff]xinclude.h [.$(DEST)]config.h 
vim.h feature.h os_unix.h
+[.$(DEST)]xemit.obj : [.xdiff]xemit.c [.xdiff]xinclude.h [.$(DEST)]config.h 
vim.h feature.h os_unix.h
+[.$(DEST)]xprepare.obj : [.xdiff]xprepare.c [.xdiff]xinclude.h 
[.$(DEST)]config.h vim.h feature.h os_unix.h
+[.$(DEST)]xutils.obj : [.xdiff]xutils.c [.xdiff]xinclude.h [.$(DEST)]config.h 
vim.h feature.h os_unix.h
+[.$(DEST)]xhistogram.obj : [.xdiff]xhistogram.c [.xdiff]xinclude.h 
[.$(DEST)]config.h vim.h feature.h os_unix.h
+[.$(DEST)]xpatience.obj : [.xdiff]xpatience.c [.xdiff]xinclude.h 
[.$(DEST)]config.h vim.h feature.h os_unix.h
diff --git a/src/globals.h b/src/globals.h
index f8b8ade2f..9e3a68120 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1694,6 +1694,7 @@ extern char_u *all_lflags;
 # ifdef VMS
 extern char_u *compiler_version;
 extern char_u *compiled_arch;
+extern char_u *compiled_vers;
 # endif
 extern char_u *compiled_user;
 extern char_u *compiled_sys;
diff --git a/src/main.c b/src/main.c
index 5c767a21b..34576c3e2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2096,7 +2096,19 @@ command_line_scan(mparm_T *parmp)
        {
            want_argument = FALSE;
            c = argv[0][argv_idx++];
-#ifdef VMS
+#if defined( VMS)
+           /* 2025-05-13  SMS
+            * On sufficiently recent non-VAX systems, case preservation
+            * of the command line is possible/routine.  And quotation
+            * always works, and is the expected method in such cases.
+            * However, leaving this slash-prefix scheme available is
+            * nearly harmless.  But note that it doesn't help with the
+            * case of other command-line arguments, such as file names.
+            * For details, see os_vms.c:vms_init().
+            * On VAX and old non-VAX systems, or with SET PROC/PARSE=TRAD,
+            * DCL upcases the command line, and the C RTL downcases it.
+            * I would not say "only uses upper case command lines".
+            */
            /*
             * VMS only uses upper case command lines.  Interpret "-X" as "-x"
             * and "-/X" as "-X".
@@ -2106,9 +2118,12 @@ command_line_scan(mparm_T *parmp)
                c = argv[0][argv_idx++];
                c = TOUPPER_ASC(c);
            }
-           else
-               c = TOLOWER_ASC(c);
-#endif
+           /* Note that although DCL might upcase things, the C RTL
+            * will only downcase them, so there should be no need for
+            * the following (additional?) downcasing (which spoils the
+            * preserve-case results):
+            */
+#endif /* defined( VMS) */
            switch (c)
            {
            case NUL:           // "vim -"  read from stdin
@@ -3610,9 +3625,10 @@ usage(void)
            break;
        mch_msg(_("
   or:"));
     }
-#ifdef VMS
-    mch_msg(_("
Where case is ignored prepend / to make flag upper case"));
-#endif
+#if defined( VMS)
+    mch_msg(_("
Where command is down-cased, prepend / (like: -/R) to treat flag as 
upper-case."));
+    mch_msg(_("
Or, where supported, SET PROC/PARSE=EXT, or else quote upper-case material."));
+#endif /* defined( VMS) */
 
     mch_msg(_("

Arguments:
"));
     main_msg(_("--                     Only file names after this"));
diff --git a/src/os_vms.c b/src/os_vms.c
index 0a67a6b75..42dbc4b00 100644
--- a/src/os_vms.c
+++ b/src/os_vms.c
@@ -9,7 +9,7 @@
  * See README.txt for an overview of the Vim source code.
  */
 
-#include       "vim.h"
+#include "vim.h"
 
 // define _generic_64 for use in time functions
 #if !defined(VAX) && !defined(PROTO)
@@ -18,11 +18,11 @@
 // based on Alpha's gen64def.h; the file is absent on VAX
 typedef struct _generic_64 {
 #   pragma __nomember_alignment
-    __union  {                         // You can treat me as...
+    __union  {                              // You can treat me as...
        // long long is not available on VAXen
        // unsigned __int64 gen64$q_quadword; ...a single 64-bit value, or
 
-       unsigned int gen64$l_longword [2]; // ...two 32-bit values, or
+       unsigned int gen64$l_longword [2];   // ...two 32-bit values, or
        unsigned short int gen64$w_word [4]; // ...four 16-bit values
     } gen64$r_quad_overlay;
 } GENERIC_64;
@@ -583,7 +583,7 @@ vms_unix_mixed_filespec(char *in, char *out)
        ch = '[';
        SKIP_FOLLOWING_SLASHES(in);
     }
-    else if (EQN(in, "../", 3)) // Unix parent directory?
+    else if (EQN(in, "../", 3))      // Unix parent directory?
     {
        *out++ = '[';
        *out++ = '-';
@@ -593,20 +593,20 @@ vms_unix_mixed_filespec(char *in, char *out)
        SKIP_FOLLOWING_SLASHES(in);
     }
     else
-    {              // not a special character
-       while (EQN(in, "./", 2))        // Ignore Unix "current dir"
+    {                                // not a special character
+       while (EQN(in, "./", 2))     // Ignore Unix "current dir"
        {
            in += 2;
            SKIP_FOLLOWING_SLASHES(in);
     }
-    if (strchr(in, '/') == NULL)  // any more Unix directories ?
+    if (strchr(in, '/') == NULL)     // any more Unix directories ?
     {
-       strcpy(out, in);        // No - get rest of the spec
+       strcpy(out, in);             // No - get rest of the spec
        return;
     }
     else
     {
-       *out++ = '[';       // Yes, denote a Vms subdirectory
+       *out++ = '[';                // Yes, denote a Vms subdirectory
        ch = '.';
        --in;
        }
@@ -627,7 +627,7 @@ vms_unix_mixed_filespec(char *in, char *out)
            ch = '.';
            SKIP_FOLLOWING_SLASHES(in);
            }
-       else if (EQN(in, "../", 3))     // Unix parent directory?
+       else if (EQN(in, "../", 3))     // Unix parent directory?
        {
            *out++ = '-';
            end_of_dir = out;
@@ -637,7 +637,7 @@ vms_unix_mixed_filespec(char *in, char *out)
            }
        else
        {
-           while (EQN(in, "./", 2))  // Ignore Unix "current dir"
+           while (EQN(in, "./", 2))    // Ignore Unix "current dir"
            {
                end_of_dir = out;
                in += 2;
@@ -651,7 +651,7 @@ vms_unix_mixed_filespec(char *in, char *out)
        ++in;
     }
 
-    *out = '
+    *out = '
 
     if (end_of_dir != NULL) // Terminate directory portion
        *end_of_dir = ']';
@@ -725,28 +725,82 @@ vms_fixfilename(void *instring)
  * Remove version number from file name
  * we need it in some special cases as:
  * creating swap file name and writing new file
+ */
+
+/*
+ * 2025-05-13 SMS.
+ * Using $PARSE would be simpler and more accurate, if all-VMS (not
+ * mixed UNIX+VMS) path were ensured.  Meanwhile, to improve (imperfect)
+ * handling of extended name syntax:
+ *     o All characters (up to five (32767)) after semi-colon (or last
+ *       of multiple dots) must be numeric.
+ *     o Caret-escaped semi-colon (^;) or dot (^.) does not delimit
+ *       version.
+ * Whether it makes sense to detect syntax errors here is not entirely
+ * clear.  Currently, many invalid version strings are not treated as
+ * version strings.  (More could be.)
  */
     void
 vms_remove_version(void * fname)
 {
-    char_u     *cp;
-    char_u     *fp;
+    char_u     *dp;            // Dot pointer
+    char_u     *rp;            // Right pointer
+    int                done = 0;
+    int                vdigits = 0;
 
-    if ((cp = vim_strchr( fname, ';')) != NULL) // remove version
-       *cp = '
-    else if ((cp = vim_strrchr( fname, '.')) != NULL )
+    rp = (char_u *)fname+ strlen( (char *)fname)- 1;    // Rightmost char
+    while ((done == 0) && (rp > (char_u *)fname))       // Count digits
     {
-       if      ((fp = vim_strrchr( fname, ']')) != NULL )
-           {;}
-       else if ((fp = vim_strrchr( fname, '>')) != NULL )
-           {;}
+       if (isdigit( *rp))
+       {
+           vdigits++;
+           *rp--;
+       }
        else
-           fp = fname;
+       {
+           done = 1;                                   // Quit at non-digit
+       }
+    } // while (Count digits)
+
+    if (vdigits  <= 5)                  // If likely version digits, check 
delimiter
+    {                                   // (Could check for <= 32767, not just 
five digits or fewer.)
+       if (*rp == (char_u)';')
+       {
+           if ((rp >= (char_u *)fname) && (*(rp- 1) != (char_u)'^'))
+           {                           // Unescaped ";"
+               *rp = '
+           }
+       }
+       else if (*rp == (char_u)'.')    // Last of multiple dots?
+       {
+           if ((rp >= (char_u *)fname) && (*(rp- 1) != '^'))
+           {                           // Unescaped dot.  Version requires 
previous one
+               dp = rp- 1;             // Scan chars before "."
+               done = 0;
+               while ((done == 0) && (dp >= (char_u *)fname))
+               {
+                   if ((*dp == ']') || (*dp == '>') || (*dp == ':') || (*dp == 
'/'))
+                   {                   // Possible VMS dev:[dir] delimiter (or 
UNIX "/")
+                       if ((dp >= (char_u *)fname) && (*(dp- 1) != '^'))
+                       {               // Unescaped dev:[dir] (or /) delimiter
+                           done = 1;   // No previous dot found in name
+                       }
+                   }
+                   else if (*dp == '.')
+                   {                   // Possible dot delimiter
+                       if ((dp >= (char_u *)fname) && (*(dp- 1) != '^'))
+                       {               // Unescaped dot delimiter
+                           done = 1;   // Previous dot found in name
+                           *rp = '
+                       }
+                   }
+                   dp--;               // Next char to right
+               } // while
+           }
+       }
+       // Else no version found to remove
+    } // if (vdigits  <= 5)
 
-       while ( *fp != '
-           if ( *fp++ == '.' )
-               *cp = '
-    }
     return ;
 }
 
@@ -783,23 +837,29 @@ RealWaitForChar(
     if (sec > 0)
     {
        // time-out specified; convert it to absolute time
-       // sec>0 requirement of lib$cvtf_to_internal_time()
+       // sec>0 requirement of lib$cvt[fs]_to_internal_time()
 
        // get current time (number of 100ns ticks since the VMS Epoch)
        status = sys$gettim(&time_curr);
        if (status != SS$_NORMAL)
            return 0; // error
        // construct the delta time
-#if __G_FLOAT==0
-# ifndef VAX
-       // IEEE is default on IA64, but can be used on Alpha too - but not on 
VAX
-       status = lib$cvts_to_internal_time(
-               &convert_operation, &sec, &time_diff);
-# endif
-#else   // default on Alpha and VAX
-       status = lib$cvtf_to_internal_time(
+
+/* On all non-VAX hardware architectures, the "CC /FLOAT=option"
+ * determines the floating-point format.  The default format on Alpha
+ * is VAX; on IA64 and x86_64 it's IEEE.  But, except on VAX, the user
+ * can specify either.   What matters here is the actual floating-point
+ * format being used, not the hardware architecture.  Choose the
+ * appropriate time conversion function accordingly.
+ */
+#if __IEEE_FLOAT
+# define LIB_CVTX_TO_INTERNAL_TIME lib$cvts_to_internal_time // IEEE
+#else
+# define LIB_CVTX_TO_INTERNAL_TIME lib$cvtf_to_internal_time // VAX
+#endif // __IEEE_FLOAT CVTS
+
+       status = LIB_CVTX_TO_INTERNAL_TIME(
                &convert_operation, &sec, &time_diff);
-#endif
        if (status != LIB$_NORMAL)
            return 0; // error
        // add them up
@@ -851,3 +911,130 @@ RealWaitForChar(
        }
     }
 }
+
+#if !defined( __VAX) && (__CRTL_VER >= 70301000)
+
+#include <stdio.h>
+#include <unixlib.h>
+
+// Structure to hold a DECC$* feature name and its desired value
+
+typedef struct
+   {
+   char *name;
+   int value;
+   } decc_feat_t;
+
+int vms_init_done = -1;
+
+decc_feat_t decc_feat_array[] = {
+
+   // Preserve command-line case with SET PROCESS/PARSE_STYLE=EXTENDED
+ { "DECC$ARGV_PARSE_STYLE", 1 },
+
+   // Preserve case for file names on ODS5 disks
+ { "DECC$EFS_CASE_PRESERVE", 1 },
+
+   // Enable multiple dots (and most characters) in ODS5 file names,
+   // while preserving VMS-ness of ";version"
+ { "DECC$EFS_CHARSET", 1 },
+
+   // List terminator
+ { (char *)NULL, 0 } };
+
+
+/* LIB$INITIALIZE initialization.
+ *
+ * On sufficiently recent non-VAX systems, set a collection of C RTL
+ * features without using the DECC$* logical name method.
+ *
+ * Note: Old VAX VMS versions may suffer from a linker complaint like
+ * this:
+ *
+ * %LINK-W-MULPSC, conflicting attributes for psect LIB$INITIALIZE
+ * in module LIB$INITIALIZE file SYS$COMMON:[SYSLIB]STARLET.OLB;1
+ *
+ * Using a LINK options file which includes a line like this one should
+ * stop this complaint:
+ *
+ * PSECT_ATTR=LIB$INITIALIZE,NOPIC
+ */
+
+/* vms_init()
+ *
+ * Uses LIB$INITIALIZE to set a collection of C RTL features without
+ * requiring the user to define the corresponding logical names.
+ *
+ * LIB$INITIALIZE initialization function
+ */
+
+static void
+vms_init(void)
+{
+    // Set the global flag to indicate that LIB$INITIALIZE worked
+
+    vms_init_done = 1;
+
+    int feat_index;
+    int feat_value;
+    int feat_value_max;
+    int feat_value_min;
+    int i;
+    int sts;
+
+    // Loop through all items in the decc_feat_array[]
+    for (i = 0; decc_feat_array[i].name != NULL; i++)
+    {
+       // Get the feature index
+       feat_index = decc$feature_get_index(decc_feat_array[i].name);
+       if (feat_index >= 0)
+       {
+           // Valid item.  Collect its properties
+           feat_value = decc$feature_get_value(feat_index, 1);
+           feat_value_min = decc$feature_get_value(feat_index, 2);
+           feat_value_max = decc$feature_get_value(feat_index, 3);
+
+           if ((decc_feat_array[i].value >= feat_value_min) && 
(decc_feat_array[i].value <= feat_value_max))
+               // Valid value.  Set it if necessary
+               if (feat_value != decc_feat_array[i].value)
+                   sts = decc$feature_set_value(feat_index, 1, 
decc_feat_array[i].value);
+           else
+               // Invalid DECC feature value
+               printf("INVALID DECC FEATURE VALUE, %d: %d <= %s <= %d.
",
+                       feat_value, feat_value_min, decc_feat_array[i].name, 
feat_value_max);
+       }
+       else
+           // Invalid DECC feature name
+           printf("UNKNOWN DECC FEATURE: %s.
", decc_feat_array[i].name);
+    }
+}
+
+
+/* Get "vms_init()" into a valid, loaded LIB$INITIALIZE PSECT. */
+
+#pragma nostandard
+
+/* Establish the LIB$INITIALIZE PSECTs, with proper alignment and
+ * other attributes.  Note that "nopic" is significant only on VAX.
+ */
+#pragma extern_model save
+
+#pragma extern_model strict_refdef "LIB$INITIALIZE" 2, nopic, nowrt
+void (*const x_vms_init)() = vms_init;
+
+#pragma extern_model strict_refdef "LIB$INITIALIZ" 2, nopic, nowrt
+const int spare[ 8] = { 0 };
+
+#pragma extern_model restore
+
+// Fake reference to ensure loading the LIB$INITIALIZE PSECT
+
+#pragma extern_model save
+int LIB$INITIALIZE(void);
+#pragma extern_model strict_refdef
+int dmy_lib$initialize = (int) LIB$INITIALIZE;
+#pragma extern_model restore
+
+#pragma standard
+
+#endif // !defined( __VAX) && (__CRTL_VER >= 70301000)
diff --git a/src/os_vms_conf.h b/src/os_vms_conf.h
index ad19dbef4..c9e75e68c 100644
--- a/src/os_vms_conf.h
+++ b/src/os_vms_conf.h
@@ -9,10 +9,12 @@
 #endif
 #endif
 
+#include <decc$types.h>             // Required early for large-file support
+
 #define CASE_INSENSITIVE_FILENAME   // Open VMS is case insensitive
-#define SPACE_IN_FILENAME          // There could be space between user and 
passwd
+#define SPACE_IN_FILENAME           // There could be space between user and 
passwd
 #define FNAME_ILLEGAL "|*#?%"       // Illegal characters in a file name
-#define BINARY_FILE_IO             // Use binary fileio
+#define BINARY_FILE_IO              // Use binary fileio
 #define USE_GETCWD
 #define USE_SYSTEM
 #define XPMATTRIBUTES_TYPE XpmAttributes
@@ -146,6 +148,15 @@
 #define FEAT_IPV6
 #define FEAT_XTERM_SAVE
 
+#define VIM_SIZEOF_INT  4
+#define VIM_SIZEOF_LONG 4
+
+#if __USE_OFF64_T
+# define SIZEOF_OFF_T 8
+#else
+# define SIZEOF_OFF_T 4
+#endif
+
 // Hardware specific
 #if defined(__VAX) || defined(VAX)
 #undef  HAVE_GETTIMEOFDAY
@@ -156,37 +167,32 @@
 #undef  HAVE_ISNAN
 #undef  HAVE_XOS_R_H
 #define HAVE_NO_LONG_LONG
-#define VIM_SIZEOF_INT  4
-#define VIM_SIZEOF_LONG 4
 #define LONG_LONG_MIN  (-2147483647-1)
 #define LONG_LONG_MAX  (2147483647)
 #define ULONG_LONG_MAX (4294967295U)
 
 #else // ALPHA, IA64, X86_64
+#define HAVE_FSEEKO             /* Use off_t. */
 #define HAVE_GETTIMEOFDAY
 #define HAVE_USLEEP
 #define HAVE_STRCASECMP
 #define HAVE_STRINGS_H
 #define HAVE_SIGSETJMP
-#define HAVE_ISNAN
 #undef  HAVE_XOS_R_H
 #undef  HAVE_NO_LONG_LONG
-#define VIM_SIZEOF_INT  4
-#define VIM_SIZEOF_LONG 8
 #define LONG_LONG_MIN  (-9223372036854775807-1)
 #define LONG_LONG_MAX  (9223372036854775807)
 #define ULONG_LONG_MAX (18446744073709551615U)
 
-#if defined(__x86_64) || defined(__x86_64__)
-#if !defined(X86_64)
-#define X86_64
-#endif
-#define HAVE_ISNAN
+#if defined(__DECC) && (__CRTL_VER >= 80500000) && (__STDC_VERSION__ >= 
199901L) /* C99 */
 #define HAVE_ISINF
-#define HAVE_XOS_R_H
-#endif
+#define HAVE_ISNAN
 #endif
 
+#define HAVE_XOS_R_H
+
+#endif /* VAX [else] */
+
 // Compiler specific
 #if defined(VAXC) || defined(__VAXC)
 #undef  HAVE_SELECT
@@ -218,7 +224,7 @@
 
 // GUI support defines
 #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK)
-#define X_INCLUDE_GRP_H                // To use getgrgid
+#define X_INCLUDE_GRP_H  // To use getgrgid
 #define XUSE_MTSAFE_API
 #define HAVE_X11
 #define WANT_X11
diff --git a/src/po/vim.pot b/src/po/vim.pot
index 4948309af..cdb2e2ea2 100644
--- a/src/po/vim.pot
+++ b/src/po/vim.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION
"
 "Report-Msgid-Bugs-To: 
"
-"POT-Creation-Date: 2025-07-25 18:40+0200
"
+"POT-Creation-Date: 2025-07-25 19:14+0200
"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>
"
 "Language-Team: LANGUAGE <l...@li.org>
"
@@ -1540,7 +1540,13 @@ msgstr ""
 
 msgid ""
 "
"
-"Where case is ignored prepend / to make flag upper case"
+"Where command is down-cased, prepend / (like: -/R) to treat flag as upper-"
+"case."
+msgstr ""
+
+msgid ""
+"
"
+"Or, where supported, SET PROC/PARSE=EXT, or else quote upper-case material."
 msgstr ""
 
 msgid ""
@@ -3386,7 +3392,7 @@ msgstr ""
 
 msgid ""
 "
"
-"OpenVMS version"
+"OpenVMS (build) arch, version"
 msgstr ""
 
 msgid ""
diff --git a/src/version.c b/src/version.c
index d06745272..cb6454639 100644
--- a/src/version.c
+++ b/src/version.c
@@ -719,6 +719,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1591,
 /**/
     1590,
 /**/
@@ -4158,13 +4160,19 @@ list_version(void)
 #endif
 
 #ifdef VMS
-    msg_puts(_("
OpenVMS version"));
+    msg_puts(_("
OpenVMS (build) arch, version"));
 # ifdef HAVE_PATHDEF
     if (*compiled_arch != NUL)
     {
-       msg_puts(" - ");
+       msg_puts(": ");
        msg_puts((char *)compiled_arch);
+       if (*compiled_vers != NUL)
+       {
+           msg_puts(", ");
+           msg_puts((char *)compiled_vers);
+       }
     }
+
 # endif
 
 #endif
diff --git a/src/vim.h b/src/vim.h
index fcadb8912..2c42c2cdd 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -24,7 +24,11 @@
 // ============ the header file puzzle: order matters =========
 
 #ifdef HAVE_CONFIG_H   // GNU autoconf (or something else) was here
-# include "auto/config.h"
+# ifdef VMS
+#  include "config.h"   /* Rely on /INCLUDE to find it. */
+# else
+#  include "auto/config.h"
+# endif /* def VMS [else] */
 # define HAVE_PATHDEF
 
 /*
diff --git a/src/xdiff/xinclude.h b/src/xdiff/xinclude.h
index 6e9f50a2d..1e0fbbaaa 100644
--- a/src/xdiff/xinclude.h
+++ b/src/xdiff/xinclude.h
@@ -25,7 +25,7 @@
 // defines HAVE_ATTRIBUTE_UNUSED
 #ifdef HAVE_CONFIG_H
 # ifdef VMS
-#  include "[.auto]config.h"
+#  include "config.h"
 # else
 #  include "../auto/config.h"
 # endif
diff --git a/src/xxd/Make_vms.mms b/src/xxd/Make_vms.mms
index df6c1af24..41e261bf8 100644
--- a/src/xxd/Make_vms.mms
+++ b/src/xxd/Make_vms.mms
@@ -1,7 +1,10 @@
 # VMS MM[KS] makefile for XXD
 # tested with MMK and MMS as well.
 #
-# Maintained by Zoltan Arpadffy <arpad...@polarhome.com>
+# Maintained by Zoltan Arpadffy <zoltan.arpad...@gmail.com>
+#               2025-05-24  Steven M. Schweda <s...@antinode.info>
+#
+######################################################################
 #
 # Edit the lines in the Configuration section below to select.
 #
@@ -16,12 +19,6 @@
 ######################################################################
 # Configuration section.
 ######################################################################
-# Compiler selection.
-# Comment out if you use the VAXC compiler
-######################################################################
-# DECC = YES
-
-#####################################################################
 # Uncomment if want a debug version. Resulting executable is DVIM.EXE
 ######################################################################
 # DEBUG = YES
@@ -32,41 +29,209 @@
 # Please, do not change anything below without programming experience.
 ######################################################################
 
-CC      = cc
+# Define old MMK architecture macros when using MMS.
+#
+######################################################################
+# Architecture identification and product destination selection.
+# Define old MMK architecture macros when using MMS.
+#
+.IFDEF MMS$ARCH_NAME            # MMS$ARCH_NAME
+ALPHA_X_ALPHA = 1
+IA64_X_IA64 = 1
+VAX_X_VAX = 1
+X86_64_X_X86_64 = 1
+.IFDEF ARCH                         # ARCH
+ARCH_NAME = $(ARCH)
+.ELSE                               # ARCH
+ARCH_NAME = $(MMS$ARCH_NAME)
+.ENDIF                              # ARCH
+.IFDEF $(ARCH_NAME)_X_ALPHA         # $(ARCH_NAME)_X_ALPHA
+__ALPHA__ = 1
+.ENDIF                              # $(ARCH_NAME)_X_ALPHA
+.IFDEF $(ARCH_NAME)_X_IA64          # $(ARCH_NAME)_X_IA64
+__IA64__ = 1
+.ENDIF                              # $(ARCH_NAME)_X_IA64
+.IFDEF $(ARCH_NAME)_X_VAX           # $(ARCH_NAME)_X_VAX
+__VAX__ = 1
+.ENDIF                              # $(ARCH_NAME)_X_VAX
+.IFDEF $(ARCH_NAME)_X_X86_64        # $(ARCH_NAME)_X_X86_64
+__X86_64__ = 1
+.ENDIF                              # $(ARCH_NAME)_X_X86_64
+.ELSE                           # MMS$ARCH_NAME
+.IFDEF __MMK__                      # __MMK__
+.IFDEF ARCH                             # ARCH
+.IFDEF __$(ARCH)__                          # __$(ARCH)__
+.ELSE                                       # __$(ARCH)__
+__$(ARCH)__ = 1
+.ENDIF                                      # __$(ARCH)__                      
+.ENDIF                                  # ARCH
+.ENDIF                              # __MMK__
+.ENDIF                          # MMS$ARCH_NAME
+#
+# Combine command-line VAX C compiler macros.
+#
+.IFDEF VAXC                     # VAXC
+VAXC_OR_FORCE_VAXC = 1
+.ELSE                           # VAXC
+.IFDEF FORCE_VAXC                   # FORCE_VAXC
+VAXC_OR_FORCE_VAXC = 1
+.ENDIF                              # FORCE_VAXC
+.ENDIF                          # VAXC
+#
+# Analyze architecture-related and option macros.
+# (Sense x86_64 before IA64 for old MMK and x86_64 cross tools.)
+#
+.IFDEF __X86_64__               # __X86_64__
+DECC = 1
+DESTM = X86_64
+.ELSE                           # __X86_64__
+.IFDEF __IA64__                     # __IA64__
+DECC = 1
+DESTM = IA64
+.ELSE                               # __IA64__
+.IFDEF __ALPHA__                        # __ALPHA__
+DECC = 1
+DESTM = ALPHA
+.ELSE                                   # __ALPHA__
+.IFDEF __VAX__                              # __VAX__
+.IFDEF VAXC_OR_FORCE_VAXC                       # VAXC_OR_FORCE_VAXC
+DESTM = VAXV
+.ELSE                                           # VAXC_OR_FORCE_VAXC
+DECC = 1
+DESTM = VAX
+.ENDIF                                          # VAXC_OR_FORCE_VAXC
+.ELSE                                       # __VAX__
+DESTM = UNK
+UNK_DEST = 1
+.ENDIF                                      # __VAX__
+.ENDIF                                  # __ALPHA__
+.ENDIF                              # __IA64__
+.ENDIF                          # __X86_64__
+
+.IFDEF PROD                     # PROD
+DEST = $(PROD)
+.ELSE                           # PROD
+DEST = $(DESTM)
+.ENDIF                          # PROD
+
+.FIRST
+.IFDEF __MMK__                  # __MMK__
+       @ write sys$output ""
+.ENDIF                          # __MMK__
+#
+# Create destination directory.
+       @ write sys$output "Destination: [.$(DEST)]"
+       @ write sys$output ""
+       @ if (f$search( "$(DEST).DIR;1") .eqs. "") then -
+         create /directory [.$(DEST)]
+#
+# Compiler setup
+
+# Optimization.  The .c.obj rule will override this for specific modules
+# where the VAX C compilers hang.   See VAX_NOOPTIM_LIST, below.
+OPTIMIZE= /optim
+
+.IFDEF __VAX__                  # __VAX__
 
-.IFDEF DECC
-CC_DEF  = $(CC)/decc
+# List of modules for which "Compaq C V6.4-005 on OpenVMS VAX V7.3"
+# hangs.  Add more as needed (plus-separated).
+VAX_NOOPTIM_LIST = blowfish+regexp+sha256
+
+# Compiler command.
+# Default: CC /DECC.  On non-VAX, or VAX with only DEC C installed,
+# /DECC is harmless.  If both DEC C and VAX C are installed, and VAX C
+# was selected as the default, then /DECC must be specified explicitly. 
+# If both are installed, and DEC C is the default, but VAX C is desired,
+# then define FORCE_VAXC to get VAX C (CC /VAXC).  If only VAX C is
+# installed, then define VAXC to get (plain) CC.
+
+.IFDEF DECC                         # DECC
+CC_DEF = cc /decc
+PREFIX = /prefix=all
+.ELSE                               # DECC
+.IFDEF FORCE_VAXC                       # FORCE_VAXC
+CC_DEF = cc /vaxc
+.ELSE                                   # FORCE_VAXC
+CC_DEF = cc
+.ENDIF                                  # FORCE_VAXC
+.ENDIF                              # DECC
+.ELSE                           # __VAX__
+
+# Not VAX, therefore DEC C (/PREFIX).
+
+CC_DEF = cc /decc
 PREFIX  = /prefix=all
+
+# These floating-point options are the defaults on IA64 and x86_64.
+# This makes Alpha consistent.
+FLOAT   = /float = ieee_float /ieee_mode = denorm_results
+
+# Large-file support.  Unavailable on VAX and very old Alpha.  To
+# disable, define NOLARGE.
+.IFDEF NOLARGE
 .ELSE
-CC_DEF  = $(CC)
-PREFIX  =
-.ENDIF
+LARGE_DEF = , "_LARGEFILE"
+.ENDIF # NOLARGE [ELSE]
+.ENDIF                          # __VAX__ [ELSE]
 
-LD_DEF  = link
+.IFDEF VAXC_OR_FORCE_VAXC       # VAXC_OR_FORCE_VAXC
+.ELSE                           # VAXC_OR_FORCE_VAXC
+CCVER = YES     # Unreliable with VAX C.
+.ENDIF                          # VAXC_OR_FORCE_VAXC [ELSE]
+
+CDEFS = VMS $(LARGE_DEF)
+DEFS = /define = ($(CDEFS))
+
+.IFDEF LIST                     # LIST
+LIST_OPT = /list=[.$(DEST)] /show=(all, nomessages)
+.ENDIF                          # LIST
 
-.IFDEF DEBUG
-TARGET  = dxxd.exe
-CFLAGS  = /debug/noopt$(PREFIX)/cross_reference/include=[]
+.IFDEF DEBUG                    # DEBUG
+TARGET  =  [.$(DEST)]dxxd.exe
+CFLAGS  = /debug/noopt$(PREFIX) $(LIST_OPT) /cross_reference/include=[]
 LDFLAGS = /debug
-.ELSE
-TARGET  = xxd.exe
-CFLAGS  = /opt$(PREFIX)/include=[]
+.ELSE                           # DEBUG
+TARGET  =  [.$(DEST)]xxd.exe
+CFLAGS  = $(OPTIMIZE) $(PREFIX) $(LIST_OPT) /include=[]
+
 LDFLAGS =
-.ENDIF
+.ENDIF                          # DEBUG [ELSE]
+
+CC = $(CC_DEF) $(CFLAGS)
+
+LD_DEF  = link
 
 .SUFFIXES : .obj .c
 
 SOURCES        = xxd.c
-OBJ     = xxd.obj
+OBJ_BASE = xxd.obj
+OBJ     = [.$(DEST)]$(OBJ_BASE)
 
 .c.obj :
-       $(CC_DEF) $(CFLAGS) $<
+       $(CC) $(DEFS) $< /object = $@
 
 $(TARGET) : $(OBJ)
-       $(LD_DEF) $(LDFLAGS) /exe=$(TARGET) $+
+        -@ def_dev_dir_orig = f$environment( "default")
+       -@ target_name_type = -
+         f$parse( "$(TARGET)", , , "NAME", "SYNTAX_ONLY")+ -
+         f$parse( "$(TARGET)", , , "TYPE", "SYNTAX_ONLY")
+       -@ set default [.$(DEST)]
+       $(LD_DEF) $(LDFLAGS) /exe = 'target_name_type' $(OBJ_BASE)
+       -@ set default 'def_dev_dir_orig'
 
 clean :
-       -@ if "''F$SEARCH("*.obj")'" .NES. ""  then delete/noconfirm/nolog 
*.obj;*
-       -@ if "''F$SEARCH("*.exe")'" .NES. ""  then delete/noconfirm/nolog 
*.exe;*
+       -@ if (f$search( "[.$(DEST)]*.*") .nes. "") then -
+         delete /noconfirm [.$(DEST)]*.*;*
+       -@ if (f$search( "$(DEST).DIR") .nes. "") then -
+         set protection = w:d $(DEST).DIR;*
+       -@ if (f$search( "$(DEST).DIR") .nes. "") then -
+         delete /noconfirm $(DEST).DIR;*
+
+help :
+        mcr sys$disk:$(TARGET) -h
+
+version :
+        mcr sys$disk:$(TARGET) -v
+
 
-xxd.obj : xxd.c
+[.$(DEST)]xxd.obj : xxd.c

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1ufMFC-00A0no-Fn%40256bit.org.

Raspunde prin e-mail lui