# 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 = ()] 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