! CKVKER.MMS, 30-Apr-1991 ! ! WARNING: This is a pre-Beta test release. Use at your own risk. ! ! -- Makefile to build C-Kermit 5A for VAX/VMS systems for use with MMS -- ! ! Author: Piet W. Plomp, Interdisciplinary Center for ! the Development of Computer Coaches and Expert Systems [ICCE], ! Groningen University, The Netherlands, ! Internet: piet@icce.rug.nl (preferred) or PWPLOMP@RUG.NL. ! ! For more info in C-Kermit 5A please contact: ! Frank da Cruz, Columbia University Center for Computing Activities ! 612 West 115th Street, New York, NY 10025, USA. Phone (212) 854-5126. ! e-mail: fdc@watsun.cc.columbia.edu, fdc@columbia.edu, or FDCCU@CUVMA.BITNET. ! ! INSTALLATION NOTES: ! ! Before proceeding, read the instructions below, and also read the files ! ckuker.bwr (the C-Kermit "beware file") and ckvker.bwr (VMS-specific ! bewares). Then: ! - Make sure you have at least 5000 blocks file space available (this ! includes space for the sources). ! - Make sure you have all required sources (ckc*.c, cku*.c, ckv*.c plus ! corresponding ck*.h files as well as ckwart.c and ckcpro.w) in the ! current directory. ! - Rename this file to "DESCRIP.MMS" and put it in the current directory. ! - Issue the "MMS" or "MMS WERMIT" command. ! If MMS aborts, e.g. because it cannot find a file, you can restart ! MMS using MMS/SKIP to skip files that are already up-to-date. ! ! After WERMIT was built successfully you can run "MMS CLEANUP" ! to remove all .obj files, ckcpro.c and wart.exe. ! ! This file does not contain support for VMS versions below 5.0 and ! VAX C versions below 3.0, because pre-VMS 5.0 versions do not have ! the MMS product. ! ! This description file was developed and tested on a VAX 8650 running ! VAX/VMS 5.2. using MMS version 2.5 (type MMS/IDENT to show the version ! and find out if MMS is installed on your VMS system). ! The C-compiler had version 3.1. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! As an alternative for systems without MMS, C-Kermit can be built ! by the VMS MAKE product. VMS MAKE has the same legal status as kermit ! and is available together with the C-Kermit sources. ! Refer to the corresponding makefile ckvker.mak for details. ! ! C-Kermit can also be built for many other systems. ! Refer to ck?ker.mak for details. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! Implementation notes: ! ! Presence of TGV MultiNet detected automatically (not tested). ! MMS action lines can't be expand to more than one line: no goto/label, ! no if-then-else-endif allowed. No quotes within quotes. ! MMS builds a smaller executable than MAKE (reason as yet unknown). ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! Initialization Section: ! Note: wermit has it's own wermit_first and wermit_last sections ! There is no .LAST in this file ! .FIRST @ ! echo: write to stdout; tab: some spacing @ echo = "write sys$output" @ tab = " " @ warning = "WARNING: " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! Macro Section: ! ! CC: use default rule ! CCDEFS = /DEFINE=("DEBUG","TLOG","DYNAMIC",'net_option,'cc_ver,'vms_ver) CCFLAGS = - /NOLIST/OBJECT=$(MMS$TARGET) /DEBUG=TRACE/OPTIMIZE $(CCDEFS) - $(MMS$SOURCE) OBJECT_MODULES = ckcmai.obj, - ckcfns.obj, ckcfn2.obj, ckcfn3.obj, ckcnet.obj, ckcpro.obj, - ckuusr.obj, ckuus2.obj, ckuus3.obj, ckuus4.obj, ckuus5.obj, ckuus6.obj, - ckuusx.obj, ckuusy.obj, ckucmd.obj, ckudia.obj, ckuscr.obj, ckuxla.obj, - ckvcon.obj, ckvfio.obj, ckvtio.obj !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! Rule Section: ! .C.OBJ @ echo tab + "Compiling $(MMS$SOURCE)" @ $(CC) $(CCFLAGS) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! Dependencies Section: ! wermit : wermit_first wermit.exe wermit_last @ continue wermit.exe : $(OBJECT_MODULES) @ echo tab + "Linking $(MMS$TARGET_NAME)" @ if net_option .eqs. "NONET" then - $(LINK) $(LINKFLAGS) $(OBJECT_MODULES) @ if net_option .eqs. "MULTINET" then - $(LINK) $(LINKFLAGS) $(OBJECT_MODULES), - multinet:multinet_socket_library.exe/share ckvfio.obj : ckvfio.c ckcdeb.h ckcfil.h ckuver.h ckvtio.obj : ckvtio.c ckcdeb.h ckcnet.h ckuver.h ckvcon.obj : ckvcon.c ckcker.h ckcdeb.h ckcasc.h ckcnet.h ckwart.obj : ckwart.c wart.exe : ckwart.obj @ echo tab + "Linking $(MMS$TARGET_NAME)" @ link /exec=wart.exe ckwart.obj ckcpro.obj : ckcpro.c ckcker.h ckcdeb.h ckcasc.h ckcpro.c : ckcpro.w wart.exe ckcdeb.h ckcasc.h ckcker.h @ echo tab + "Compiling $(MMS$SOURCE) (running WART)" @ wart = "$" + f$parse("WART.EXE",,,"DEVICE") + - f$parse("WART.EXE",,,"DIRECTORY") + "WART" @ wart ckcpro.w ckcpro.c ckcmai.obj : ckcmai.c ckcker.h ckcdeb.h ckcsym.h ckcasc.h ckcnet.h ckcfil.h ckcnet.obj : ckcnet.c ckcker.h ckcdeb.h ckcnet.h ckcfns.obj : ckcfns.c ckcker.h ckcdeb.h ckcsym.h ckcasc.h ckcfil.h ckcfn2.obj : ckcfn2.c ckcker.h ckcdeb.h ckcsym.h ckcasc.h ckcfn3.obj : ckcfn3.c ckcker.h ckcdeb.h ckcsym.h ckcasc.h ckcfil.h ckuxla.obj : ckuxla.c ckcker.h ckcdeb.h ckcxla.h ckuxla.h ckuusr.obj : ckuusr.c - ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h - ckcasc.h ckcnet.h ckuus2.obj : ckuus2.c - ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h ckcasc.h ckuus3.obj : ckuus3.c - ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h - ckcasc.h ckcnet.h ckcfil.h ckuus4.obj : ckuus4.c - ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h - ckcasc.h ckcnet.h ckuus5.obj : ckuus5.c - ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcxla.h ckuxla.h ckcasc.h ckuus6.obj : ckuus6.c - ckucmd.h ckcker.h ckuusr.h ckcdeb.h ckcasc.h ckuusx.obj : ckuusx.c ckcker.h ckuusr.h ckcdeb.h ckcasc.h ckuusy.obj : ckuusy.c ckcker.h ckcfil.h ckcdeb.h ckcasc.h ckucmd.obj : ckucmd.c ckcasc.h ckucmd.h ckcdeb.h ckudia.obj : ckudia.c ckcker.h ckcdeb.h ckucmd.h ckcasc.h ckuscr.obj : ckuscr.c ckcker.h ckcdeb.h ckcasc.h wermit_first : @ ! check for the C runtime-library (VAXC 2 up only) @ if (f$search("sys$library:vaxcrtl.olb")) .nes. "" then - define lnk$library sys$library:VAXCRTL ! set symbol for link @ ! detect and decide on operating system version @ _osversion = f$edit(f$getsyi("version"),"compress") @ os_fieldtest = "F" @ if f$extract(0,1,_osversion) .nes. "V" then os_fieldtest = "T" @ if os_fieldtest .eqs. "T" then echo warning + - "You appear to be running a Field Test version of VMS." @ if os_fieldtest .eqs. "T" then echo tab + - "This description file will assume that the operating system" @ if os_fieldtest .eqs. "T" then echo tab + - "version is at least v5.0." @ if os_fieldtest .eqs. "T" then echo "" @ if os_fieldtest .eqs. "T" then _osversion = "V5.0" @ del/sym os_fieldtest @ ! end of if os_fieldtest checks @ _osmajor = 0+f$extract(1,1,_osversion) @ _osminor = 0+f$extract(3,1,_osversion) @ vms_ver = "VMS_V" + f$string(_osmajor) + f$string(_osminor) @ ! detect and decide on C compiler version @ cc_ver = "VAXC030" @ if f$search("sys$library:xabrudef.h") .nes. "" then cc_ver = "VAXC031" @ old_compiler = "F" @ if cc_ver .nes. "VAXC031" then old_compiler = "T" @ if old_compiler .eqs. "T" then echo warning + - "Your system has an older version of the VAX C compiler." @ if old_compiler .eqs. "T" then echo tab + - "VMS C-Kermit was designed to be compiled under VAX C 3.1 or newer." @ if old_compiler .eqs. "T" then echo tab + - "It has not been verified to build properly under this version." @ if old_compiler .eqs. "T" then echo tab + - "Please exercise caution until you've verified proper operation." @ if old_compiler .eqs. "T" then echo "" @ del/sym old_compiler @ ! detect and decide on network support @ net_option = "NONET" @ net_name = "no" @ if f$search("multinet:multinet_socket_library.exe") .nes. "" then - net_option = "MULTINET" @ if net_option .eqs. "MULTINET" then net_name = "MultiNet" @ echo "Building WERMIT for VAX/VMS ", _osversion, - " with ", net_name, " network support" wermit_last : @ echo "C-Kermit compilation complete" cleanup : @ if f$search("wart.exe") .nes. "" then del wart.exe;* @ if f$search("*.obj") .nes. "" then del *.obj;* @ if f$search("ckcpro.c") .nes. "" then del ckcpro.c;* @ echo "Cleanup done" @ echo ""