wget/vms/DESCRIP.MMS
2010-01-09 15:24:02 -08:00

536 lines
15 KiB
Plaintext

# 23 September 2009. SMS.
#
# Wget 1.12 for VMS - MMS (or MMK) Description File.
#
# Usage:
#
# SET DEFAULT [.directory] ! [.VMS] to build all products.
# MMS /DESCRIPTION = [-.VMS] [/MACRO = (<see_below>)] target
#
# Optional macros:
#
# CCOPTS=xxx Compile with CC options xxx. For example:
# "CCOPTS=/ARCH=HOST"
#
# CDEFS_USER=xxx Compile with C macro definition(s) xxx.
#
# DASHD=1 Compile with "-d" option enabled.
#
# DBG=1 Compile with /DEBUG /NOOPTIMIZE.
# Link with /DEBUG /TRACEBACK.
# (Default is /NOTRACEBACK.)
#
# HPSSL=1 Enable HTTPS (and NTLM) support using HP SSL.
#
# LARGE=1 Enable large-file (>2GB) support. Non-VAX only.
#
# LINKOPTS=xxx Link with LINK options xxx. For example:
# "LINKOPTS=/NOINFO"
#
# LIST=1 Compile with /LIST /SHOW = (ALL, NOMESSAGES).
# Link with /MAP /CROSS_REFERENCE /FULL.
#
# ODS2DU=1 Look for multi-dot file names (like
# "[.lib]getopt^.in.h") using VMSTAR-compatible,
# dot-under, ODS2-conforming names (like
# "[.lib]getopt.in_h"). See also ODS2Z, below.
#
# ODS2UD=1 Look for multi-dot file names (like
# "[.lib]getopt^.in.h") using [Un]Zip-compatible,
# under-dot ODS2-conforming names (like
# "[.lib]getopt_in.h"). Also use this macro if the
# source kit was extracted using VMSTAR with the
# /UNDERDOT ("-u") option.
#
# OSSL=1 Enable HTTPS (and NTLM) support using OpenSSL.
#
#
# The default target, ALL, builds all the product executables.
#
# Other targets:
#
# CLEAN deletes architecture-specific files, but leaves any
# individual source dependency files.
#
# CLEAN_ALL deletes all generated files, except the main (collected)
# source dependency files.
#
# CLEAN_EXE deletes only the architecture-specific executables.
# Handy if all you wish to do is re-link the executables.
#
# CLEAN_OLB deletes only the architecture-specific object libraries.
#
# HELP creates the HELP library, [.vms]WGET.HLB.
#
# Example commands:
#
# To build the conventional small-file product using the DEC/Compaq/HP C
# compiler (Note: DESCRIP.MMS is the default description file name.):
#
# MMS
#
# To get the large-file executables (on a non-VAX system):
#
# MMS /MACRO = (DASHD=1, LARGE=1)
#
# To delete the architecture-specific generated files for this system
# type:
#
# MMS /MACRO = (LARGE=1) CLEAN ! Large-file.
# or
# MMS CLEAN ! Small-file.
#
# To build a complete small-file product for debug with compiler
# listings and link maps:
#
# MMS CLEAN
# MMS /MACRO = (DBG=1, LIST=1)
#
########################################################################
# Include primary product description file.
INCL_DESCRIP_SRC = 1
.INCLUDE descrip_src.mms
# Required command procedures.
CONFIG_EXTRACT_COM = [-.$(DIR_VMS)]CONFIG_EXTRACT.COM
# Generated header files.
# Products.
LIB_GETOPT_H = $(DIR_LIB_DEST)GETOPT.H
SRC_CONFIG_H = $(DIR_SRC_DEST)CONFIG.H
# Sources.
LIB_GETOPT_H_SRC_DD = [-.$(DIR_LIB)]getopt^.in.h
LIB_GETOPT_H_SRC_DU = [-.$(DIR_LIB)]getopt.in_h
LIB_GETOPT_H_SRC_UD = [-.$(DIR_LIB)]getopt_in.h
.IFDEF ODS2DU # ODS2DU
LIB_GETOPT_H_SRC = $(LIB_GETOPT_H_SRC_DU)
.ELSE # ODS2DU
.IFDEF ODS2UD # ODS2UD
LIB_GETOPT_H_SRC = $(LIB_GETOPT_H_SRC_UD)
.ELSE # ODS2UD
LIB_GETOPT_H_SRC = $(LIB_GETOPT_H_SRC_DD)
.ENDIF # ODS2UD [else]
.ENDIF # ODS2DU [else]
SRC_CONFIG_H_SRC = [-.$(DIR_VMS)]CONFIG.H_VMS
# TARGETS.
# Default subsidiary targets.
# Build LIB object library (default target).
.IFDEF TARGET_LIB # TARGET_LIB
SUBSIDIARY = 1
LIBLIB : $(LIB_LIB)
@ write sys$output ""
@ write sys$output " LIBLIB done."
@ write sys$output ""
$(LIB_LIB) : $(LIB_LIB)($(MODS_OBJS_LIB_LIB))
@ write sys$output "$(MMS$TARGET) updated."
.ENDIF # TARGET_LIB
# Build MD5 object library (default target).
.IFDEF TARGET_MD5 # TARGET_MD5
SUBSIDIARY = 1
LIBMD5 : $(LIB_MD5)
@ write sys$output ""
@ write sys$output " LIBMD5 done."
@ write sys$output ""
$(LIB_MD5) : $(LIB_MD5)($(MODS_OBJS_LIB_MD5))
@ write sys$output "$(MMS$TARGET) updated."
# Special rules for MD5.C on VAX where Compaq C V6.4-005
# (like, probably, other versions) loops with /optimize = disjoint.
.IFDEF __VAX__ # __VAX__
[.$(DEST)]MD5.OBJ : MD5.C
@ write sys$output "***************************************"
@ write sys$output "* Note: Exceptional rule in use here: *"
@ write sys$output "***************************************"
$(CC) $(CFLAGS) /optimize = nodisjoint /define = ($(CDEFS)) -
$(MMS$SOURCE)
.ENDIF # __VAX__
.ENDIF # TARGET_MD5
# Build Wget executable or SRC object library (default target).
.IFDEF TARGET_SRC # TARGET_SRC
SUBSIDIARY = 1
EXES : $(EXES)
@ write sys$output ""
@ write sys$output " Wget done."
@ write sys$output ""
$(LIB_SRC) : $(LIB_SRC)($(MODS_OBJS_LIB_SRC))
@ write sys$output "$(MMS$TARGET) updated."
$(WGET_EXE) : $(LIB_MD5) $(LIB_LIB) $(LIB_SRC)
$(LINK) $(LINKFLAGS) -
$(LIB_SRC) /library /include = (main), -
$(LIB_LIB) /library, -
$(LIB_MD5) /library -
$(SSL_LINK_OPT)
$(LFLAGS_ARCH)
$(DECC_VER_EXE) : $(DECC_VER_OBJ)
$(LINK) $(LINKFLAGS) -
$(DECC_VER_OBJ) -
$(LFLAGS_ARCH)
$(DECC_VER_OBJ) : [-.$(DIR_SRC)]DECC_VER.C
.ENDIF # TARGET_SRC
# Default global target.
ALL : $(EXES)
@ show time
@ write sys$output ""
@ write sys$output " ALL done."
@ write sys$output ""
# Global rules for executables and object libraries.
.IFDEF TARGET_LIB # TARGET_LIB
.ELSE # TARGET_LIB
$(LIB_LIB) :
dev_dir = f$environment( "DEFAULT")
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_LIB)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
$(LIB_LIB)
set default 'dev_dir'
show default
@ write sys$output ""
.ENDIF # TARGET_LIB [else]
.IFDEF TARGET_MD5 # TARGET_MD5
.ELSE # TARGET_MD5
$(LIB_MD5) :
dev_dir = f$environment( "DEFAULT")
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_MD5)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
$(LIB_MD5)
set default 'dev_dir'
show default
@ write sys$output ""
.ENDIF # TARGET_MD5 [else]
.IFDEF TARGET_SRC # TARGET_SRC
.ELSE # TARGET_SRC
$(LIB_SRC) :
dev_dir = f$environment( "DEFAULT")
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_SRC)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
$(LIB_SRC)
set default 'dev_dir'
show default
@ write sys$output ""
$(WGET_EXE) :
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_SRC)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
$(WGET_EXE)
$(DECC_VER_EXE) :
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_SRC)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
$(DECC_VER_EXE)
.ENDIF # TARGET_SRC [else]
# CLEAN target. Delete the [.$(DEST)] directory and everything in it.
.IFDEF SUBSIDIARY # SUBSIDIARY
CLEAN :
if (f$search( "[.$(DEST)]*.*") .nes. "") then -
delete [.$(DEST)]*.*;*
if (f$search( "$(DEST).dir", 1) .nes. "") then -
set protection = w:d $(DEST).dir;*
if (f$search( "$(DEST).dir", 2) .nes. "") then -
delete $(DEST).dir;*
# CLEAN_ALL target. Delete:
# The [...$(DEST)] directories and everything in them.
# All individual C dependency files.
# Also mention:
# Comprehensive dependency file.
CLEAN_ALL :
@ write sys$output " SUBS - CLEAN_ALL"
show default
@ write sys$output ""
if (f$search( "[...ALPHA*]*.*") .nes. "") then -
delete [...ALPHA*]*.*;*
if (f$search( "[...]ALPHA*.dir", 1) .nes. "") then -
set protection = w:d [...]ALPHA*.dir;*
if (f$search( "[...]ALPHA*.dir", 2) .nes. "") then -
delete [...]ALPHA*.dir;*
if (f$search( "[...IA64*]*.*") .nes. "") then -
delete [...IA64*]*.*;*
if (f$search( "[...]IA64*.dir", 1) .nes. "") then -
set protection = w:d [...]IA64*.dir;*
if (f$search( "[...]IA64*.dir", 2) .nes. "") then -
delete [...]IA64*.dir;*
if (f$search( "[...VAX*]*.*") .nes. "") then -
delete [...VAX*]*.*;*
if (f$search( "[...]VAX*.dir", 1) .nes. "") then -
set protection = w:d [...]VAX*.dir;*
if (f$search( "[...]VAX*.dir", 2) .nes. "") then -
delete [...]VAX*.dir;*
if (f$search( "[...]*.MMSD") .nes. "") then -
delete [...]*.MMSD;*
@ write sys$output ""
@ write sys$output "Note: This procedure will not"
@ write sys$output " DELETE DESCRIP_DEPS.MMS;*"
@ write sys$output -
"You may choose to, but a recent version of MMS (V3.5 or newer?) is"
@ write sys$output -
"needed to regenerate it. (It may also be recovered from the original"
@ write sys$output -
"distribution kit.) See DESCRIP_MKDEPS.MMS for instructions on"
@ write sys$output -
"generating DESCRIP_DEPS.MMS."
@ write sys$output ""
# CLEAN_EXE target. Delete the executables in [.$(DEST)].
CLEAN_EXE :
if (f$search( "[.$(DEST)]*.EXE") .nes. "") then -
delete [.$(DEST)]*.EXE;*
# CLEAN_OLB target. Delete the object libraries in [.$(DEST)].
CLEAN_OLB :
if (f$search( "[.$(DEST)]*.OLB") .nes. "") then -
delete [.$(DEST)]*.OLB;*
.ELSE # SUBSIDIARY
.IFDEF MMSTARGETS # MMSTARGETS
#
# MMS (or MMK) with the MMSTARGETS macro needs only one real CLEAN rule.
#
CLEAN, CLEAN_ALL, CLEAN_EXE, CLEAN_OLB :
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_LIB)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
$(MMSTARGETS)
set default [-.$(DIR_MD5)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
$(MMSTARGETS)
set default [-.$(DIR_SRC)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
$(MMSTARGETS)
.ELSE # MMSTARGETS
#
# MMK without the MMSTARGETS macro needs more rules.
#
CLEAN :
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_LIB)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN
set default [-.$(DIR_MD5)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN
set default [-.$(DIR_SRC)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN
CLEAN_ALL :
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_LIB)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_ALL
set default [-.$(DIR_MD5)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_ALL
set default [-.$(DIR_SRC)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_ALL
CLEAN_EXE :
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_LIB)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_EXE
set default [-.$(DIR_MD5)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_EXE
set default [-.$(DIR_SRC)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_EXE
CLEAN_OLB :
set default 'f$parse( "$(MMSDESCRIPTION_FILE)", , , "DIRECTORY")'
set default [-.$(DIR_LIB)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_OLB
set default [-.$(DIR_MD5)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_OLB
set default [-.$(DIR_SRC)]
show default
@ write sys$output ""
$(MMS) /description = $(MMSDESCRIPTION_FILE) $(MMSQUALIFIERS) -
CLEAN_OLB
.ENDIF # MMSTARGETS [else]
.ENDIF # SUBSIDIARY
DEFAULT :
@ write sys$output "No target, specified or default."
HELP : $(WGET_HLB)
@ write sys$output ""
@ write sys$output " ""$<"" is ready."
@ write sys$output ""
$(WGET_HLB) : $(WGET_HLP)
LIBRARY /CREATE /HELP $(MMS$TARGET) $(MMS$SOURCE)
# Default C compile rule.
.C.OBJ :
$(CC) $(CFLAGS) /define = ($(CDEFS)) $(MMS$SOURCE)
# Generated header files.
GENERATED_HEADERS : $(LIB_GETOPT_H) $(SRC_CONFIG_H)
@ write sys$output "$(MMS$TARGET) updated."
# Simply copy "lib/getopt.in.h".
$(LIB_GETOPT_H) : $(LIB_GETOPT_H_SRC)
copy $(LIB_GETOPT_H_SRC) $(MMS$TARGET)
# Copy "vms/config.h_vms", and append:
# Wget version, and other information extracted from "configure.ac",
# Current OS ("VMS"), host architecture, and OS version.
$(SRC_CONFIG_H) : $(SRC_CONFIG_H_SRC) $(CONFIG_EXTRACT_COM)
@ @$(CONFIG_EXTRACT_COM) [-]CONFIGURE.AC wget_name wget_vers wget_email
@ copy $(SRC_CONFIG_H_SRC) $(MMS$TARGET)
@ open /append config_h $(MMS$TARGET)
@ write config_h ""
@ write config_h "/* Data extracted from ""configure.ac"": */"
@ write config_h ""
@ write config_h "#define PACKAGE "+ -
"""''f$trnlnm( "wget_name")'"""
@ write config_h "#define PACKAGE_BUGREPORT "+ -
"""''f$trnlnm( "wget_email")'"""
@ write config_h "#define PACKAGE_NAME "+ -
"""''f$trnlnm( "wget_name")'"""
@ write config_h "#define PACKAGE_STRING "+ -
"""''f$trnlnm( "wget_name")' ''f$trnlnm( "wget_vers")'"""
@ write config_h "#define PACKAGE_TARNAME "+ -
"""''f$trnlnm( "wget_name")'"""
@ write config_h "#define PACKAGE_VERSION "+ -
"""''f$trnlnm( "wget_vers")'"""
@ write config_h "#define VERSION "+ -
"""''f$trnlnm( "wget_vers")'"""
@ write config_h ""
@ write config_h "/* Build-time info: */"
@ write config_h ""
@ if (f$getsyi( "hw_model") .lt. 1024) then arch_name = "VAX"
@ if (f$getsyi( "hw_model") .ge. 1024) then -
arch_name = f$getsyi( "arch_name")
@ write config_h "#define OS_TYPE "+ -
"""VMS ''arch_name' ''f$edit( f$getsyi( ""version""), ""trim"")'"""
@ write config_h ""
@ close config_h
# Include generated source dependencies.
.IFDEF SUBSIDIARY # SUBSIDIARY
INCL_DESCRIP_DEPS = 1
.INCLUDE descrip_deps.mms
.ENDIF # SUBSIDIARY