##############################################################################
##############################################################################
##
##  ARCHIVE HEADER INFORMATION
##
##  @MMS-Description-File{
##      FILENAME    = "descrip.mms",
##      VERSION     = "1.00",
##      DATE        = "",
##      TIME        = "",
##
##      AUTHOR      = "Niel Kempson",
##      ADDRESS     = "25 Whitethorn Drive, Cheltenham, GL52 5LL, England",
##      TELEPHONE   = "+44-242 579105",
##      EMAIL       = "[email protected] (Internet)",
##
##      SUPPORTED   = "yes",
##      ARCHIVED    = "tex.ac.uk, ftp.tex.ac.uk",
##      KEYWORDS    = "VVcode",
##
##      CODETABLE   = "ISO/ASCII",
##      CHECKSUM    = "51492 1481 5732 57976",
##
##      DOCSTRING   = { This is the VVCODE description file for use with
##                      the VAX/VMS Module Management System (MMS) - DEC's
##                      equivalent to Make.
##                  }
##  }
##
##  MODULE CONTENTS
##
##      [tbs]
##
##  COPYRIGHT
##
##      Copyright (c) 1991-1993 by Niel Kempson <[email protected]>
##
##      This program is free software; you can redistribute it and/or
##      modify it under the terms of the GNU General Public License as
##      published by the Free Software Foundation; either version 1, or
##      (at your option) any later version.
##
##      This program is distributed in the hope that it will be useful,
##      but WITHOUT ANY WARRANTY; without even the implied warranty of
##      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
##      General Public License for more details.
##
##      You should have received a copy of the GNU General Public License
##      along with this program; if not, write to the Free Software
##      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
##      In other words, you are welcome to use, share and improve this
##      program.  You are forbidden to forbid anyone else to use, share
##      and improve what you give them.   Help stamp out software-hoarding!
##
##  CHANGE LOG
##
##############################################################################
##############################################################################


##############################################################################
#
# Local definitions for file types and compilation / linking.
#
# If your system is already supported it should not be necessary to modify
# any part of the description file except the local definitions below.
#
# COMPILER/LINKER
#
#   CC              the command used to invoke the C compiler
#   CFLAGS          compiler command line flags to be used
#   CCDEFINES       symbols to be #defined when compiling
#
#   LINK            the command used to invoke the linker
#   LINKFLAGS       linker command line flags to be used
#
# The definitions are used to compile and link as shown below:
#
#   Compiling C programs (e.g. xx.c)
#
#       $(CC)  $(CFLAGS)  $(CCDEFINES)  xx.c
#
#   Linking object files (e.g. xx.obj, yy.obj & zz.obj)
#
#       $(LINK)  $(LINKFLAGS)  xx.obj,yy.obj,zz.obj,vvcode.opt/OPTION
#
#       where vvcode.opt contains the single line:
#
#           SYS$LIBRARY:VAXCRTL/SHAREABLE
#
#   Here are some examples known to work.
#
#   VAX/VMS C v3.1
#
#       CC          = cc
#       CFLAGS      = /WARNINGS /STANDARD=PORTABLE /DEBUG /NOOPTIMIZE
#       CCDEFINES   =
#
#       LINK        = LINK /TRACEBACK /NODEBUG
#       LINKFLAGS   = /TRACEBACK
#
##############################################################################
# Start of local definitions.
##############################################################################
CC          = cc
CFLAGS      = /WARNINGS /STANDARD=PORTABLE /DEBUG /NOOPTIMIZE
CCDEFINES   =

LINK        = LINK /TRACEBACK /NODEBUG
LINKFLAGS   = /TRACEBACK
##############################################################################
# End of local definitions.
##############################################################################


#############################################################################=
# File types and default rule for compilation
##############################################################################
EXE             = .exe
OBJ             = .obj

SUFFIXES       .c .h $(OBJ) $(EXE)

c.obj:
       $(CC)  $(CFLAGS)  $*.c

##############################################################################
# Target Groupings
##############################################################################
HDRFILES        = checkos.h machine.h local.h globals.h specific.h vvutils.h

OBJFILES        = vvencode$(OBJ) vvdecode$(OBJ) vveparse$(OBJ) -
                 vvutils$(OBJ) vaxvms$(OBJ)

EXEFILES        = vvencode$(EXE)  vvdecode$(EXE)


##############################################################################
# Top level targets
##############################################################################
vvcode :                $(EXEFILES)
       @ WRITE SYS$OUTPUT "VVcode built at ''F$TIME()'"

clean :
       @ WRITE SYS$OUTPUT "Cleaning up at ''F$TIME()'"
       PURGE
       IF F$SEARCH ("*.dia;*") .NES. "" THEN $ DELETE *.dia;*
       IF F$SEARCH ("*.exe;*") .NES. "" THEN $ DELETE *.exe;*
       IF F$SEARCH ("*.lis;*") .NES. "" THEN $ DELETE *.lis;*
       IF F$SEARCH ("*.obj;*") .NES. "" THEN $ DELETE *.obj;*


##############################################################################
# Dependencies for executables
##############################################################################
vvencode$(EXE) :    vvencode$(OBJ) vvutils$(OBJ) vaxvms$(OBJ) vvcode.opt
       $(LINK)  $(LINKFLAGS) vvencode$(OBJ), vvutils$(OBJ), vaxvms$(OBJ), -
                             vvcode.opt/OPTION

vvdecode$(EXE) :    vvdecode$(OBJ) vveparse$(OBJ) vvutils$(OBJ) -
                   vaxvms$(OBJ) vvcode.opt
       $(LINK)  $(LINKFLAGS)  vvdecode$(OBJ), vveparse$(OBJ), -
                              vvutils$(OBJ), vaxvms$(OBJ), -
                              vvcode.opt/OPTION

##############################################################################
# Dependencies for the linker option file
##############################################################################
vvcode.opt :
       OPEN /WRITE options_file vvcode.opt
       WRITE options_file "SYS$LIBRARY:VAXCRTL /SHAREABLE"
       CLOSE options_file

##############################################################################
# Dependencies for object files
##############################################################################
vvencode$(OBJ) :    vvencode.c  $(HDRFILES)

vvdecode$(OBJ) :    vvdecode.c  $(HDRFILES) vveparse.h

vveparse$(OBJ) :    vveparse.c  $(HDRFILES) vveparse.h

vvutils$(OBJ) :     vvutils.c  $(HDRFILES)

vaxvms$(OBJ) :      vaxvms.c  $(HDRFILES)