diff options
Diffstat (limited to 'src/Make_vms.mms')
-rw-r--r-- | src/Make_vms.mms | 457 |
1 files changed, 457 insertions, 0 deletions
diff --git a/src/Make_vms.mms b/src/Make_vms.mms new file mode 100644 index 000000000..f1ce93a29 --- /dev/null +++ b/src/Make_vms.mms @@ -0,0 +1,457 @@ +# +# Makefile for Vim on OpenVMS +# +# Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com> +# Last change: 2004 May 04 +# +# This has script been tested on VMS 6.2 to 7.3 on DEC Alpha and VAX +# with MMS and MMK +# +# The following could be built: +# 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 +# To clean up: mms/descrip=Make_vms.mms clean +# +# Hints and detailed description could be found in INSTALLVMS.TXT file. +# +###################################################################### +# Configuration section. +###################################################################### +# Platform selection +# Define this if you will use the VAX platform to build. +# VAX = YES + +# VMS version +# Uncomment if you use VMS version 6.2 or older +# OLD_VMS = YES + +# Compiler selection. +# Comment out if you use the VAXC compiler +DECC = YES + +# Build model selection +# TINY - Almost no features enabled, not even multiple windows +# SMALL - Few features enabled, as basic as possible +# NORMAL - A default selection of features enabled +# BIG - Many features enabled, as rich as possible. (default) +# HUGE - All possible featues enabled. +# Please select one of these alternatives above. +MODEL = BIG + +# GUI or terminal mode executable. +# Comment out if you want just the character terminal mode only. +GUI = YES + +# GUI with GTK +# If you have GTK installed you might want to enable this option. +# GTK = YES + +# Comment out if you want the compiler version with :ver command. +# 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 varialbe CCVER. +CCVER = YES + +# Uncomment if want a debug version. Resulting executable is DVIM.EXE +# Development purpose only! Normally, it should not be defined. !!! +# DEBUG = YES + +# Languages support for Perl, Python, TCL etc. +# If you don't need it really, leave them behind the comment. +# You will need related libraries, include files etc. +# VIM_TCL = YES +# VIM_PERL = YES +# VIM_PYTHON = YES +# VIM_RUBY = YES +# VIM_SNIFF = YES + +# X Input Method. For entering special languages like chinese and +# Japanese. Please define just one: VIM_XIM or VIM_HANGULIN +# If you don't need it really, leave it behind the comment. +# VIM_XIM = YES + +# Internal Hangul input method. GUI only. +# If you don't need it really, leave it behind the comment. +# VIM_HANGULIN = YES + +# Allow any white space to separate the fields in a tags file +# When not defined, only a TAB is allowed. +# VIM_TAG_ANYWHITE = YES + +###################################################################### +# Directory, library and include files configuration section. +# Normally you need not to change anything below. ! +# These may need to be defined if things are not in standard locations +# +# You can find some explanation in INSTALLVMS.TXT +###################################################################### + +# Compiler setup + +.IFDEF VAX +.IFDEF DECC # VAX with DECC +CC_DEF = cc/decc +PREFIX = /prefix=all +.ELSE # VAX with VAXC +CC_DEF = cc +PREFIX = +CCVER = +.ENDIF +.ELSE # AXP wixh DECC +CC_DEF = cc +PREFIX = /prefix=all +.ENDIF + +LD_DEF = link +C_INC = [.proto] + +.IFDEF OLD_VMS +VMS_DEF = ,"OLD_VMS" +.ENDIF + +.IFDEF DEBUG +DEBUG_DEF = ,"DEBUG" +TARGET = dvim.exe +CFLAGS = /debug/noopt$(PREFIX) +LDFLAGS = /debug +.ELSE +TARGET = vim.exe +CFLAGS = /opt$(PREFIX) +LDFLAGS = +.ENDIF + +# Predefined VIM directories +# Please, use $VIM and $VIMRUNTIME logicals instead +VIMLOC = "" +VIMRUN = "" + +CONFIG_H = os_vms_conf.h + +.IFDEF GTK +.IFDEF GUI +.ELSE +GUI = YES +.ENDIF +.ENDIF + +.IFDEF GUI +# X/Motif/GTK executable (also works in terminal mode ) + +.IFDEF GTK +GTK_DIR = ALPHA$DKA0:[GTK128.] +DEFS = "HAVE_CONFIG_H","FEAT_GUI_GTK" +LIBS = ,OS_VMS_GTK.OPT/OPT +GUI_FLAG = /name=(as_is,short)/float=ieee/ieee=denorm +GUI_SRC = gui.c gui_gtk.c gui_gtk_f.c gui_gtk_x11.c pty.c +GUI_OBJ = gui.obj gui_gtk.obj gui_gtk_f.obj gui_gtk_x11.obj 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 +GUI_INC_VER= ,\""/gtk_root/gtk\"",\""/gtk_root/glib\"" +.else +MOTIF = YES +DEFS = "HAVE_CONFIG_H","FEAT_GUI_MOTIF" +LIBS = ,OS_VMS_MOTIF.OPT/OPT +GUI_FLAG = +GUI_SRC = gui.c gui_motif.c gui_x11.c +GUI_OBJ = gui.obj gui_motif.obj gui_x11.obj +GUI_INC = +.ENDIF + +# You need to define these variables if you do not have DECW files +# at standard location +GUI_INC_DIR = ,decw$include: +# GUI_LIB_DIR = ,sys$library: + +.ELSE +# Character terminal only executable +DEFS = "HAVE_CONFIG_H" +LIBS = +.ENDIF + +.IFDEF VIM_PERL +# Perl related setup. +PERL = perl +PERL_DEF = ,"FEAT_PERL" +PERL_SRC = if_perlsfio.c if_perl.xs +PERL_OBJ = if_perlsfio.obj if_perl.obj +PERL_LIB = ,OS_VMS_PERL.OPT/OPT +PERL_INC = ,dka0:[perlbuild.perl.lib.vms_axp.5_6_1.core] +.ENDIF + +.IFDEF VIM_PYTHON +# Python related setup. +PYTHON_DEF = ,"FEAT_PYTHON" +PYTHON_SRC = if_python.c +PYTHON_OBJ = if_python.obj +PYTHON_LIB = ,OS_VMS_PYTHON.OPT/OPT +PYTHON_INC = ,PYTHON_INCLUDE +.ENDIF + +.IFDEF VIM_TCL +# TCL related setup. +TCL_DEF = ,"FEAT_TCL" +TCL_SRC = if_tcl.c +TCL_OBJ = if_tcl.obj +TCL_LIB = ,OS_VMS_TCL.OPT/OPT +TCL_INC = ,dka0:[tcl80.generic] +.ENDIF + +.IFDEF VIM_SNIFF +# SNIFF related setup. +SNIFF_DEF = ,"FEAT_SNIFF" +SNIFF_SRC = if_sniff.c +SNIFF_OBJ = if_sniff.obj +SNIFF_LIB = +SNIFF_INC = +.ENDIF + +.IFDEF VIM_RUBY +# RUBY related setup. +RUBY_DEF = ,"FEAT_RUBY" +RUBY_SRC = if_ruby.c +RUBY_OBJ = if_ruby.obj +RUBY_LIB = ,OS_VMS_RUBY.OPT/OPT +RUBY_INC = +.ENDIF + +.IFDEF VIM_XIM +# XIM related setup. +.IFDEF GUI +XIM_DEF = ,"FEAT_XIM" +.ENDIF +.ENDIF + +.IFDEF VIM_HANGULIN +# HANGULIN related setup. +.IFDEF GUI +HANGULIN_DEF = ,"FEAT_HANGULIN" +HANGULIN_SRC = hangulin.c +HANGULIN_OBJ = hangulin.obj +.ENDIF +.ENDIF + +.IFDEF VIM_TAG_ANYWHITE +# TAG_ANYWHITE related setup. +TAG_DEF = ,"FEAT_TAG_ANYWHITE" +.ENDIF + + +###################################################################### +# End of configuration section. +# Please, do not change anything below without programming experience. +###################################################################### + + +MODEL_DEF = "FEAT_$(MODEL)", + +# These go into pathdef.c +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 + +ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(VMS_DEF)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) - + $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)) - + $(CFLAGS)$(GUI_FLAG) - + /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(TCL_INC)) + +# CFLAGS displayed in :ver information +# It is specially formated 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)$(VMS_DEF)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) - + $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)) - + $(CFLAGS)$(GUI_FLAG) - + /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(TCL_INC)) + +ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \ + $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(SNIFF_LIB) $(RUBY_LIB) + +SRC = buffer.c charset.c diff.c digraph.c edit.c eval.c ex_cmds.c ex_cmds2.c \ + ex_docmd.c ex_eval.c ex_getln.c if_xcmdsrv.c fileio.c fold.c getchar.c \ + main.c mark.c menu.c mbyte.c memfile.c memline.c message.c misc1.c \ + misc2.c move.c normal.c ops.c option.c quickfix.c regexp.c search.c \ + syntax.c tag.c term.c termlib.c ui.c undo.c version.c screen.c \ + window.c os_unix.c os_vms.c pathdef.c \ + $(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) $(SNIFF_SRC) \ + $(RUBY_SRC) $(HANGULIN_SRC) + +OBJ = buffer.obj charset.obj diff.obj digraph.obj edit.obj eval.obj \ + ex_cmds.obj ex_cmds2.obj ex_docmd.obj ex_eval.obj ex_getln.obj \ + if_xcmdsrv.obj fileio.obj fold.obj getchar.obj main.obj mark.obj \ + menu.obj memfile.obj memline.obj message.obj misc1.obj misc2.obj \ + move.obj mbyte.obj normal.obj ops.obj option.obj quickfix.obj \ + regexp.obj search.obj syntax.obj tag.obj term.obj termlib.obj \ + ui.obj undo.obj screen.obj version.obj window.obj os_unix.obj \ + os_vms.obj pathdef.obj \ + $(GUI_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(TCL_OBJ) $(SNIFF_OBJ) \ + $(RUBY_OBJ) $(HANGULIN_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 $(TARGET) + ! $@ + +[.auto]config.h : $(CONFIG_H) + copy/nolog $(CONFIG_H) [.auto]config.h + +mmk_compat : + -@ open/write pd pathdef.c + -@ write pd "/* Empty file to satisfy MMK depend. */" + -@ write pd "/* It will be owerwritten later on... */" + -@ 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;* + +# Link the target +$(TARGET) : $(OBJ) + $(LD_DEF) $(LDFLAGS) /exe=$(TARGET) $+ $(ALL_LIBS) + +.c.obj : + $(CC_DEF) $(ALL_CFLAGS) $< + +pathdef.c : check_ccver $(CONFIG_H) + -@ write sys$output "creating PATHDEF.C file." + -@ open/write pd pathdef.c + -@ 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) *.OBJ $(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)";" + -@ close pd + +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> !!!" + +.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 + -@ $(CC_DEF)/version + -@ deassign sys$output + -@ open/read file cc_ver.tmp + -@ read file CC_VER + -@ close file + -@ delete/noconfirm/nolog cc_ver.tmp.* +.ELSE +check_ccver : + -@ ! +.ENDIF + +.IFDEF MOTIF +motif_env : + -@ write sys$output "using DECW/Motif environment." + -@ 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,-" + -@ write opt_file "sys$share:decw$xlibshr.exe/share" + -@ close opt_file +.ELSE +motif_env : + -@ ! +.ENDIF + + +.IFDEF GTK +gtk_env : + -@ write sys$output "using GTK environment:" + -@ define/nolog gtk_root /trans=conc $(GTK_DIR) + -@ 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 + -@ 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,-" + -@ write opt_file "gtk_root:[gtk.gtk]libgtk.exe /share,-" + -@ 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 +gtk_env : + -@ ! +.ENDIF + +.IFDEF VIM_PERL +perl_env : + -@ write sys$output "using PERL environment:" + -@ show logical PERLSHR + -@ write sys$output " include path: ""$(PERL_INC)""" + -@ show symbol perl + -@ open/write pd if_perl.c + -@ write pd "/* Empty file to satisfy MMK depend. */" + -@ write pd "/* It will be owerwritten later on... */" + -@ close pd + -@ write sys$output "creating OS_VMS_PERL.OPT file." + -@ open/write opt_file OS_VMS_PERL.OPT + -@ write opt_file "PERLSHR /share" + -@ close opt_file +.ELSE +perl_env : + -@ ! +.ENDIF + +.IFDEF VIM_PYTHON +python_env : + -@ write sys$output "using PYTHON environment:" + -@ 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 + -@ write opt_file "PYTHON_OLB:PYTHON.OLB /share" + -@ close opt_file +.ELSE +python_env : + -@ ! +.ENDIF + +.IFDEF VIM_TCL +tcl_env : + -@ write sys$output "using TCL environment:" + -@ 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 + -@ write opt_file "TCLSHR /share" + -@ close opt_file +.ELSE +tcl_env : + -@ ! +.ENDIF + +.IFDEF VIM_RUBY +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 + -@ write opt_file "RUBYSHR /share" + -@ close opt_file +.ELSE +ruby_env : + -@ ! +.ENDIF + + |