! MAKEFILE for VMS C-Kermit 5A (WERMIT) and labeled file decoder (CKVCVT)
!
! Written by Terry Kennedy (tmk), TERRY@SPCVXA.SPC.EDU,
! Saint Peters College, Jersey City, NJ, USA,
! 13-Apr-1991
!
! To be used with the "make" program for VAX/VMS written by Todd Aven, the
! Software Sweatshop, 564 Laurelton Blvd, Long Beach, NY 11561.
! Rename this file to "MAKEFILE." and then simply type "make" to build
! C-Kermit.  The result will be a file, WERMIT.EXE, which you can run by
! typing "run wermit", and which you can rename to KERMIT.EXE or CKERMIT.EXE
! and install in SYS:.  See CKVINS.DOC for further instructions.
!
! Revision history:
!
! 13-Apr-1991 - tmk - Original version
! 21-Jun-1991 - tmk - Make sure executables are properly accessible
! 05-Nov-1991 - fdc - Add ckuus7.c source module
! 19-Jun-1992 - jrs - (James Sturdevant <STURDJ@a1.medtronic.COM>) Add WIN/TCP
! 29-Jun-1992 - fdc - Add CURSES (SMG) support
! 02-Jul-1992 - jrs - Fix WIN/TCP support
! 04-Jul-1992 - tmk - Don't need VAXCCURSE library any more.
! 12-Jul-1992 - tmk - Add localopts.
! 23-Aug-1992 - fdc - Add KANJI support.
! 13-Oct-1992 - jrs - Add changes from Lee Tibbert for Alpha and DEC TCP/IP
! 13-Oct-1992 - fdc - Add ckvioc.[ch] to DEC TCP/IP build
! 07-Dec-1992 - fdc - Remove /list compiler switch
!
! SITE DEPENDENCIES -
!
! If you have TCP/IP networking (TGV MULTINET or Wollongong WIN/TCP) installed
! on your system, this makefile will detect its presence automatically and
! build Kermit with support for it.  If you wish to build a non-network
! version of Kermit on a network system, or want to read about Kermit's other
! configuration options, read the file CKCINS.DOC and CKVINS.DOC.
!
! Some site options you might want to add:
!  NOPUSH    - Disallow access to DCL from within Kermit.
!  NODEBUG   - Remove all debugging code to make C-Kermit smaller and faster.
!
! The following site options are used in this file as distributed:
!  DYNAMIC   - Allocate packet and other buffers dynamically.
!  NOJC      - Omit Job-Control related code.
!  NOSETBUF  - Don't make console i/o unbuffered.
!  CK_CURSES - Include fullscreen file transfer display.
!  KANJI     - Include Kanji file transfer translation.
!  IFDEBUG   - Avoid calls to debug() if debugging not on: faster execution
!              but bigger .EXE file.  If you don't need debugging, replace
!              this by NODEBUG.
!
wermit.olb(*):	*.c
	call 'hw_arch'_cc $*

siteopts = /define=("DYNAMIC", "NOJC", "NOSETBUF", "CK_CURSES", "KANJI", \
  "IFDEBUG", "''net_option'", "''cc_ver'", "''vms_ver'")
!
! Compiler and linker options
!
link_switches = /map/full/sym
library_switches = /replace
cc_switches = /debug/optimize
!
unconditional_relink = makefile.
!
! Uncomment the next line to force unconditional relinking
!
! unconditional_relink = dummy_target
!
! Define the master target list - these can be rebuilt on any system that
! has VAX C.
!
all :		wermit \
		ckvcvt
!
wermit :	check_stuff \
		wermit_start \
		wermit.exe
  write sys$output "Done rebuilding WERMIT"
!
ckvcvt :	check_stuff \
		ckvcvt_start \
		ckvcvt.exe
  write sys$output "Done rebuilding CKVCVT"
!
! And here are the individual targets
!
check_stuff :
  hw_arch := "VAX" ! Assume VAX
  if (f$getsyi("CPU") .eq. 128) ! 128 means "not a VAX"
   then
    hw_arch := "''f$getsyi("Arch_Name")'"
    if ("''hw_arch'" .nes. "Alpha")
     then
     if (f$locate("ALPHA", f$edit("''hw_arch'","UPCASE")) -
	    .lt. f$length("''hw_arch'"))
      then
       hw_arch := "Alpha" ! Treat as Alpha AXP
      else
       write sys$output "Unknown hardware architecture ''hw_arch'"
       exit %x10000004
      endif ! Unknown
    endif ! String not "Alpha"
   endif ! Not VAX

  cc_ver = "VAXC023"
  if f$search("sys$library:fscndef.h") .nes. "" then cc_ver = "VAXC024"
  if f$search("sys$library:ppl$routines.h") .nes. "" then cc_ver = "VAXC030"
  if f$search("sys$library:xabrudef.h") .nes. "" then cc_ver = "VAXC031"
  sys_ver = f$edit(f$getsyi("version"),"compress")
  if f$extract(0,1,sys_ver) .nes. "V"
  then
    type sys$input
    You appear to be running a Field Test version of VMS. This script will $
    assume that the operating system version is at least V5.0. $
    $
    sys_ver = "V5.0"
  endif
  sys_maj = 0+f$extract(1,1,sys_ver)
  sys_min = 0+f$extract(3,1,sys_ver)
  if sys_maj .lt. 5 then if (sys_min/2)*2 .ne. sys_min then \
    sys_min = sys_min - 1
  vms_ver = "VMS_V''sys_maj'''sys_min'"
  if ("''net_option'" .eqs. "")
  then
    net_option = "NONET"
    if f$search("SYS$LIBRARY:UCX$IPC.OLB") .nes. "" then \
      net_option = "DEC_TCPIP"
    if f$search("multinet:multinet_socket_library.exe") .nes. "" then \
      net_option = "MULTINET"
    if f$search("TWG$COMMON:[NETDIST.LIB]TWGLIB.OLB") .nes. ""
    then
      net_option = "WINTCP"
      define /nolog vaxc$include twg$tcp:[netdist.include],sys$library
      define /nolog sys twg$tcp:[netdist.include.sys]
    endif
    if f$search("multinet:multinet_socket_library.exe") .nes. "" then \
      net_option = "MULTINET"
  endif  !net_option
  if net_option .eqs. "NONET" then net_name = "no"
  if net_option .eqs. "MULTINET" then net_name = "MultiNet"
  if net_option .eqs. "WINTCP" then net_name = "WIN/TCP"
  if net_option .eqs. "DEC_TCPIP" then \
    net_name = "DEC TCP/IP Services for OpenVMS(tm)"
  if sys_maj .lt. 5
  then
    write sys$output "You are running VMS V''sys_ver'."
    type sys$input
    VMS C-Kermit has not been verified to build properly under this version, $
    although pre-built versions will run properly. Please exercise caution $
    until you have verified proper operation. $
    $
  endif
  if cc_ver .nes. "VAXC031"
  then
    type sys$input
    Your system has an older version of the VAX C compiler. VMS C-Kermit was $
    designed to be compiled under VAX C V3.1 or newer. It has not been ver- $
    ified to build properly under this version, although pre-built versions $
    will run properly. Please exercise caution until you have verified proper $
    operation. $
    $
  endif
  VAX_CC: Subroutine
   On Control_Y Then $exit %x10000004
   On Warning Then   $exit $status
   write sys$output "  Compiling ''P1' at ''f$time()"
   cc$(cc_switches)$(siteopts)/obj='P1'.obj 'localopts' 'P1'.c
   library$(library_switches) wermit.olb 'P1'.obj
   delete 'P1'.obj.*
   exit
  EndSubroutine !VAX_CC
  AXP_CC: Subroutine
   On Control_Y Then $exit %x10000004
   On Warning Then   $exit $status

   write sys$output "  Compiling ''P1' at ''f$time()"
   cc/'debug'/standard='lint_standard'/'optimize' -
	/define=("DEBUG", "TLOG", "DYNAMIC", "CK_CURSES", "IFDEBUG", "KANJI", -
	"''net_option'", "''cc_ver'", "''vms_ver'") 'P1'
   exit
  EndSubroutine !AXP_CC
  axp_cc := "DECC_AXP"	! LT personal value, not DEC value
  if (hw_arch .eqs. "Alpha") then cc_ver = "''axp_cc'"
  !debug  := nodebug
  debug  := debug
  Link_Debug  := nodebug
  ! optimize := optimize=level=0 ! level=0 means NoOptimize
  optimize := optimize=level=4   ! level=4 means greatest optimization
  !lint_standard := ANSI89
  lint_standard := VAXC ! Evil living is its own retribution....
!
wermit_start :
  write sys$output "Rebuilding WERMIT with ''net_name' network support"
  if f$type(localopts) .eqs. "" then localopts = ""
!
ckvcvt_start :
  write sys$output "Rebuilding CKVCVT"
!
dummy_target :
  write sys$output ""
!
wermit.olb :	
  if f$search("wermit.olb") .eqs. "" then libr/create/object wermit.olb
!
wermit.exe : 	wermit.olb(ckvioc) wermit.olb(ckcfn2) \
		wermit.olb(ckcfn3) wermit.olb(ckcfns) wermit.olb(ckcmai) \
		wermit.olb(ckcpro) wermit.olb(ckucmd) wermit.olb(ckudia) \
		wermit.olb(ckuscr) wermit.olb(ckuus2) wermit.olb(ckuus3) \
		wermit.olb(ckuus4) wermit.olb(ckuus5) wermit.olb(ckuus6) \
		wermit.olb(ckuus7) wermit.olb(ckuusr) wermit.olb(ckuusx) \
		wermit.olb(ckuusy) wermit.olb(ckcnet) wermit.olb(ckvfio) \
		wermit.olb(ckvtio) wermit.olb(ckuxla) wermit.olb(ckvcon) \
		$(unconditional_relink)
  write sys$output "  Linking WERMIT at ''f$time()"
  if (hw_arch .eqs. "Alpha")
  then
   link/'link_debug' /exec=wermit.exe -
 	ckcmai, ckcfn2, ckcfn3, ckcfns, ckcpro, ckucmd, ckudia, -
	ckuscr, ckuus2, ckuus3, ckuus4, ckuus5, ckuus6, ckuus7, -
	ckuusr, ckuusx, ckuusy, ckuxla, ckvcon, ckcnet, ckvfio, -
	ckvtio, ckvioc
  else
  if net_option .eqs. "MULTINET"
  then
    link$(link_switches) wermit.olb/library/include=(ckcfn2, ckcfn3, ckcfns, \
    ckcmai, ckcpro, ckucmd, ckudia, ckuscr, ckuus2, ckuus3, ckuus4, ckuus5, \
    ckuus6, ckuus7, ckuusr, ckuxla, ckvcon, ckcnet, ckvfio, ckvtio), \
    sys$share:vaxcrtl.olb/library/exec=wermit.exe, sys$input:/options
    multinet:multinet_socket_library.exe/share $
  else
  if net_option .eqs. "WINTCP"
  then
  link/sym wermit.olb/library/include=(ckcfn2, ckcfn3, ckcfns, \
    ckcmai, ckcpro, ckucmd, ckudia, ckuscr, ckuus2, ckuus3, ckuus4, ckuus5, \
    ckuus6, ckuus7, ckuusr, ckuxla, ckvcon, ckcnet, ckvfio, ckvtio), \
    twg$common:[netdist.lib]twglib.olb/library, \
    sys$share:vaxcrtl.olb/library/exec=wermit.exe
  else
  if net_option .eqs. "DEC_TCPIP"
  then
  ! No symbol table     -lt.  1992-08-14
  link wermit.olb/exec=wermit.exe/library -
    /include=(ckcfn2, ckcfn3, ckcfns,-
    ckcmai, ckcpro, ckucmd, ckudia, ckuscr, ckuus2, ckuus3, ckuus4, ckuus5,-
    ckuus6, ckuus7, ckuusr, ckuxla, ckvcon, ckcnet, ckvfio, ckvtio, ckvioc),-
    sys$library:ucx$ipc.olb/library, -
    sys$share:vaxcrtl.olb/library
  else
    link$(link_switches) wermit.olb/library/include=(ckcfn2, ckcfn3, ckcfns, \
    ckcmai, ckcpro, ckucmd, ckudia, ckuscr, ckuus2, ckuus3, ckuus4, ckuus5, \
    ckuus6, ckuus7, ckuusr, ckuxla, ckvcon, ckcnet, ckvfio, ckvtio), \
    sys$share:vaxcrtl.olb/library/exec=wermit.exe
  endif !DEC TCP or none
  endif !WIN/TCP
  endif !MultiNet
  endif	!Alpha
  set file/protection=(g:re,w:re) wermit.exe
!
! First, make sure we have a current CKWART
!
ckwart.exe :		ckwart.c
  write sys$output "  Compiling CKWART at ''f$time()"
  cc$(cc_switches)$(siteopts)/obj=ckwart.obj 'localopts' ckwart.c
  write sys$output "  Linking CKWART at ''f$time()"
  link$(link_switches)/exec=ckwart ckwart.obj, sys$share:vaxcrtl.olb/library
  purge ckwart.obj
!
! Next, see if CKCPRO.C is current
!
ckcpro.c :		ckcpro.w \
			ckwart.exe ckcdeb.h ckcasc.h ckcker.h
  write sys$output "Running CKWART at ''f$time()"
  ckwart = "$" +f$parse("CKWART.EXE",,,"DEVICE") + \
    f$parse("CKWART.EXE",,,"DIRECTORY") + "CKWART"
  ckwart ckcpro.w ckcpro.c
  purge ckcpro.c

wermit.old(ckvioc) :	ckvioc.c ckvioc.h ckcdeb.h

wermit.olb(ckcfn2) :	ckcfn2.c \
			ckcker.h ckcdeb.h ckcsym.h ckcasc.h ckcxla.h ckuxla.h

wermit.olb(ckcfn3) :	ckcfn3.c \
			ckcker.h ckcdeb.h ckcsym.h ckcasc.h ckcxla.h ckuxla.h

wermit.olb(ckcfns) :	ckcfns.c \
			ckcker.h ckcdeb.h ckcsym.h ckcasc.h ckcxla.h ckuxla.h

wermit.olb(ckcmai) :	ckcmai.c \
			ckcker.h ckcdeb.h ckcsym.h ckcasc.h ckcnet.h

wermit.olb(ckcpro) :	ckcpro.c \
			ckcker.h ckcdeb.h ckcasc.h

wermit.olb(ckucmd) :	ckucmd.c \
			ckcasc.h ckucmd.h ckcdeb.h

wermit.olb(ckudia) :	ckudia.c \
			ckcker.h ckcdeb.h ckucmd.h ckcasc.h

wermit.olb(ckuscr) :	ckuscr.c \
			ckcker.h ckcdeb.h ckcasc.h

wermit.olb(ckuus2) :	ckuus2.c \
			ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h \
			ckcasc.h

wermit.olb(ckuus3) :	ckuus3.c \
			ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h \
			ckcasc.h ckcnet.h

wermit.olb(ckuus4) :	ckuus4.c \
			ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h \
			ckcasc.h ckcnet.h

wermit.olb(ckuus5) :	ckuus5.c \
			ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcasc.h

wermit.olb(ckuus6) :	ckuus6.c \
			ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcasc.h

wermit.olb(ckuus7) :	ckuus7.c \
			ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h \
			ckcasc.h ckcnet.h

wermit.olb(ckuusr) :	ckuusr.c \
			ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h \
			ckcasc.h ckcnet.h

wermit.olb(ckuusx) :	ckuusx.c \
			ckcker.h ckuusr.h ckcdeb.h ckcasc.h

wermit.olb(ckuusy) :	ckuusy.c \
			ckcker.h ckcdeb.h ckcasc.h

wermit.olb(ckuxla) :	ckuxla.c \
			ckcker.h ckcdeb.h ckcxla.h ckuxla.h

wermit.olb(ckvcon) :	ckvcon.c \
			ckcdeb.h ckcasc.h ckcker.h ckcnet.h ckvvms.h ckcxla.h

wermit.olb(ckcnet) :	ckcnet.c \
			ckcdeb.h ckcker.h ckcnet.h

wermit.olb(ckvfio) :	ckvfio.c \
			ckcdeb.h ckcasc.h ckcker.h ckvvms.h

wermit.olb(ckvtio) :	ckvtio.c \
			ckcdeb.h ckcasc.h ckcker.h ckvvms.h

ckvcvt.exe :		ckvcvt.c
  write sys$output "  Compiling CKVCVT at ''f$time()"
  cc$(cc_switches)$(siteopts)/obj=ckvcvt.obj 'localopts' ckvcvt.c
  write sys$output "  Linking CKVCVT at ''f$time()"
  link$(link_switches)/exec=ckvcvt ckvcvt.obj, sys$share:vaxcrtl.olb/library
  set file/protection=(g:re,w:re) ckvcvt.exe
  purge ckvcvt.obj
!
! All done...
