vmssrcdir=@srcdir_dev@:[@srcdir_dir@.vms]
startupdir=SYS$COMMON:[SYS$STARTUP]
sys_includes=@sys_includes@
! and, if you need it
x_includes=@x_includes@

...

# setup MUST come first, or several things might fail.
all : setup setup_config ...
	@ !

setup : descrip.mms [.vms]
	if "$(sys_includes)" .nes. "" then -
		define /nolog sys $(sys_includes),$(srcdir),sys$disk:[]
	if "$(sys_includes)" .eqs. "" then -
		define /nolog sys $(srcdir),sys$disk:[]
	if "$(x_includes)" .nes. "" then -
		define /nolog X11 $(x_includes)
	extra_defs = ""
	extra_includes = ""

...

[.vms] : FRC.vms
	set def [.vms]
	$(MMS) $(MMSQUALIFIERS) all ! you might want change `all' to some else
	set def [-]

FRC.vms :
	@ !

setup_config : descrip.mms [.vms]vmslink.opt
	@ write sys$output "Producing `[.vms]config.dat'."
	@ open/write foo [.vms]config.dat_tmp
	@ write foo "@"+"version"+"@"
	@ write foo "$(version)"
	@ write foo "@"+"bindir"+"@"
	@ write foo "$(bindir)"
	@ write foo "@"+"mandir"+"@"
	@ write foo "$(mandir)"
	@ write foo "@"+"all_logicals"+"@"
	@ __result = ""
	@ __mode = ""
	@ delete/symbol/local __result
	@ delete/symbol/local __mode
	@ lnm = f$parse("$(bindir)",,,"DEVICE") - ":"
	@ @$(vmssrcdir)decomplnm 'lnm' __result DIRS,ATTRIBUTES __mode
	@ flag := no
	@ if __result .nes. "" then flag := yes
	@ if flag then write foo " D\",lnm,"\",__mode,"\ -"
	@ if flag then @$(vmssrcdir)loop_sym v __result "," "if next_v .nes. "","" then write foo ""    "",v,"",-"";if next_v .eqs. "","" then write foo ""    "",v" ";" next_v
	@ lnm = f$parse("$(mandir)",,,"DEVICE") - ":"
	@ @$(vmssrcdir)decomplnm 'lnm' __result DIRS,ATTRIBUTES __mode
	@ flag := no
	@ if __result .nes. "" then flag := yes
	@ if flag then write foo " D\",lnm,"\",__mode,"\ -"
	@ if flag then @$(vmssrcdir)loop_sym v __result "," "if next_v .nes. "","" then write foo ""    "",v,"",-"";if next_v .eqs. "","" then write foo ""    "",v" ";" next_v
	@ lnm = f$parse("$(srcdir)",,,"DEVICE") - ":"
	@ @$(vmssrcdir)decomplnm 'lnm' __result DIRS,ATTRIBUTES __mode
	@ flag := no
	@ if __result .nes. "" then flag := yes
	@ if flag then write foo " D\",lnm,"\",__mode,"\ -"
	@ if flag then @$(vmssrcdir)loop_sym v __result "," "if next_v .nes. "","" then write foo ""    "",v,"",-"";if next_v .eqs. "","" then write foo ""    "",v" ";" next_v
	@ ! You might want to define more (or less) things.
	@ close foo
	@ @$(vmssrcdir)move-if-change [.vms]config.dat_tmp [.vms]config.dat
	@ open/read/write foo [.vms]config.dat
	@ close foo

[.vms]vmslink.opt :
	@ write sys$output "Producing `[.vms]vmslink.opt'."
	@ open/write foo [.vms]vmslink.opt_tmp
	@ @$(vmssrcdir)loop_args lib "$(LIBS)" " " "write foo lib" ";"
	@ close foo
	@ @$(vmssrcdir)move-if-change [.vms]vmslink.opt_tmp [.vms]vmslink.opt

[.vms]routines.tpu$section : $(vmssrcdir)routines.tpu
	@ save_mesg = f$environment("MESSAGE")
	@ set message/nofacility/noidentification/noseverity/notext
	@ edit/tpu/nosect/nodisp -
		/command=$(vmssrcdir)routines.tpu -
		/out=[.vms]routines.tpu$section
	@ set message'save_mesg'

###-------------------- Installation ------------------------

install : installbin installman installdatabase
	@ !

installdatabase : [.vms]foo_startup.com
	@ @$(vmssrcdir)gnu_install_startup foo $(version) -
		[.vms]foo_startup.com $(startupdir) DATABASE

install_no_database : installbin installman installstartup
	@ !

installstartup : [.vms]foo_startup.com
	@$(vmssrcdir)gnu_install_startup foo $(version) -
		[.vms]foo_startup.com $(startupdir) NODATABASE

[.vms]foo_startup.com : [.vms]foo_startup.dat
	@ write sys$output "Producing `[.vms]foo_startup.com' from `$(vmssrcdir)foo_startup.dat'."
	@ @$(vmssrcdir)gnu_generate_script [.vms]foo_startup.dat -
		[.vms]foo_startup.com_tmp
	@ @$(vmssrcdir)move-if-change [.vms]foo_startup.com_tmp [.vms]foo_startup.com

[.vms]foo_startup.dat : [.vms]config.dat
	@ write sys$output "Producing `[.vms]foo_startup.dat' from `$(vmssrcdir)foo_startup.dat_in' and `[.vms]config.dat'."
	@ @$(vmssrcdir)gnu_generate_data $(vmssrcdir)foo_startup.dat_in -
		[.vms]config.dat [.vms]foo_startup.dat_tmp
	@ @$(vmssrcdir)move-if-change [.vms]foo_startup.dat_tmp -
		[.vms]foo_startup.dat
