Annotation of embedaddon/curl/packages/vms/build_vms.com, revision 1.1

1.1     ! misho       1: $! BUILD_VMS.COM
        !             2: $!
        !             3: $! I've taken the original build_vms.com, supplied by Nico Baggus, if
        !             4: $! memory serves me correctly, and made some modifications.
        !             5: $!
        !             6: $! SSL support is controlled by logical names.  If SSL$INCLUDE is
        !             7: $! defined, then it is assumed that HP's SSL product has been installed.
        !             8: $! If OPENSSL is defined, but SSL$INCLUDE is not, then OpenSSL will be
        !             9: $! used.  If neither logical name is defined, then SSL support will not
        !            10: $! be compiled/linked in.  Command-line options NOHPSSL and NOSSL can be
        !            11: $! specified to override the automatic SSL selection.
        !            12: $!
        !            13: $! Command-line Options:
        !            14: $!
        !            15: $!    CLEAN     Delete product files for this host architecture.  (No
        !            16: $!              build done.)
        !            17: $!    CLEAN_ALL Delete product files for all host architectures.  (No
        !            18: $!              build done.)
        !            19: $!
        !            20: $!    64        Compile with 64-bit pointers.
        !            21: $!              Note, you must match the pointer size that the OpenSSL
        !            22: $!              shared image expects.
        !            23: $!              Currently curl is not building properly with 64 bit pointers
        !            24: $!              on VMS because it is trying to cast pointers to 32 bit
        !            25: $!              integers and some OpenVMS library routines called by curl
        !            26: $!              do not yet support 64 bit pointers.
        !            27: $!    CCQUAL=x  Add "x" to the C compiler qualifiers.
        !            28: $!              Default qualifiers are:
        !            29: $!                  /standard=relaxed
        !            30: $!                  /names=(as_is, shortened)
        !            31: $!                  /repository=[.'arch']
        !            32: $!                  /nested_include_directory=none
        !            33: $!                  /define=(_LARGEFILE=1,_USE_STD_STAT=1) (non-vax)
        !            34: $!                  /float=ieee/ieee_mode=denorm_results (non-vax)
        !            35: $!    DEBUG     Compile debug and nooptimize
        !            36: $!              Alpha/IA64 always compiles /debug.
        !            37: $!              Always link a debug image.
        !            38: $!    NOIEEE    Do not use IEEE floating point.  (Alpha/I64)
        !            39: $!              VAX must always use DFLOAT
        !            40: $!    NOLARGE   Disable large-file support if large file support available.
        !            41: $!              (Non-VAX, VMS >= V7.2.)
        !            42: $!    NOLDAP    Disable LDAP support if LDAP is available.
        !            43: $!    NOKERBEROS   Disable Kerberos support if Kerberos is available.
        !            44: $!    LIST      Create C compiler listings and linker maps.
        !            45: $!                 /list/show=(expan,includ)/machine
        !            46: $!    FULLLIST  Full detailed listing.
        !            47: $!                 /list/show=(all, nomessages)/machine
        !            48: $!    NOHPSSL   Don't use HP SSL, even if available.
        !            49: $!              Note, you must match the pointer size that the OpenSSL
        !            50: $!              shared image expects.  This procedure will select the
        !            51: $!              correct HP OpenSSL image.
        !            52: $!    NOSSL     Don't use any SSL, even if available.
        !            53: $!    OSSLOLB   Use OpenSSL object libraries (.OLB), even if shared
        !            54: $!              images (.EXE) are available.
        !            55: $!    NOZLIB    Don't use GNV$ZLIB shared image even if available.
        !            56: $!    REALCLEAN Delete product files for all host architectures.  (No
        !            57: $!              build done.)  Alias for CLEAN_ALL
        !            58: $!
        !            59: $! DCL Symbols:
        !            60: $!
        !            61: $!    CURL_CCDEFS="c_macro_1=value1 [, c_macro_2=value2 [...]]"
        !            62: $!              Compile with these additional C macros defined.
        !            63: $!
        !            64: $! Revisions:
        !            65: $!
        !            66: $!  2-DEC-2003, MSK, the "original" version.
        !            67: $!                   It works for me.  Your mileage may vary.
        !            68: $! 13-JAN-2004, MSK, moved this procedure to the [.packages.vms] directory
        !            69: $!                   and updated it to do hardware dependent builds.
        !            70: $! 29-JAN-2004, MSK, moved logical defines into defines.com
        !            71: $!  6-FEB-2004, MSK, put in various SSL support bits
        !            72: $!  9-MAR-2004, MSK, the config-vms.h* files are now copied to the lib and
        !            73: $!                   src directories as curl_config.h.
        !            74: $! 15-MAR-2004, MSK, All of the curlmsg*.* files have also been moved to
        !            75: $!                   this build directory.  They will be copied to the src
        !            76: $!                   directory before build.  The .msg file will be compiled
        !            77: $!                   to get the .obj for messages, but the .h and .sdl files
        !            78: $!                   are not automatically created since they partly rely on
        !            79: $!                   the freeware SDL tool.
        !            80: $!  8-FEB-2005, MSK, merged the two config-vms.h* files into one that uses
        !            81: $!                   USE_SSLEAY to define if the target has SSL support built
        !            82: $!                   in.  Changed the cc/define parameter accordingly.
        !            83: $! 11-FEB-2005, MSK, If [--.LIB]AMIGAOS.C and NWLIB.C are there, rename them
        !            84: $! 23-MAR-2005, MSK, relocated cc_qual define so that DEBUG option would work
        !            85: $! 25-APR-2007, STL, allow compilation in 64-bit mode.
        !            86: $! 13-DEC-2009. SMS, Changed to skip unwanted source files without
        !            87: $!                   renaming the original files.
        !            88: $!                   Eliminated needless, persistent logical names.
        !            89: $!                   Added CURL_CCDEFS DCL symbol for user-specified C
        !            90: $!                   macro definitions.
        !            91: $!                   Added CLEAN and CLEAN_ALL options.
        !            92: $!                   Added CCQUAL option for user-specified C compiler
        !            93: $!                   qualifiers.
        !            94: $!                   Added IEEE option for IEEE floating point (Alpha).
        !            95: $!                   Added LARGE option for large-file support.
        !            96: $!                   Added OSSLOLB option, and support for OpenSSL
        !            97: $!                   shared images.
        !            98: $!                   Changed to put listing and map files into lisdir:.
        !            99: $!                   Changed to avoid case confusion on ODS5 disks.
        !           100: $!                   Added more default dev:[dir] save+restore.
        !           101: $!                   Moved remaining "defines.com" code (back) into
        !           102: $!                   here, eliminating the hard-coded OpenSSL nonsense.
        !           103: $!                   Changed to use F$GETSYI("ARCH_NAME") (or
        !           104: $!                   equivalent) to name architecture-specific product
        !           105: $!                   file destination directory, and to create the
        !           106: $!                   directory if needed (obviating inclusion of these
        !           107: $!                   directories and dummy files in the distribution
        !           108: $!                   kit).
        !           109: $!                   Changed the "compile" subroutine to break the CC
        !           110: $!                   command across multiple lines to avoid DCL
        !           111: $!                   line-too-long problems.
        !           112: $!                   Changed "vo_c" messages to show the CC qualifiers
        !           113: $!                   once, not with every compile command.
        !           114: $! 01-Jan-2013  J. Malmberg
        !           115: $!                   VMS build procedures need to be able to work with
        !           116: $!                   the default set to a search list, with created or
        !           117: $!                   modified files only in the first member of the search
        !           118: $!                   list.
        !           119: $!                   Whitespace change to be more compatible with current
        !           120: $!                   practices.
        !           121: $!                   One pass option parsing instead of loop.
        !           122: $!                   GNV ZLIB shared image support.
        !           123: $!                   KERBEROS support where available.
        !           124: $!                   LDAP default to on where available
        !           125: $!                   LARGEFILE default to on where available
        !           126: $!                   IEEE float default to on where available.
        !           127: $!                   Generate the curl_config.h file from system inspection.
        !           128: $!                   Linker finds ldap with out option file.
        !           129: $! 13-Mar-2013, Tom Grace
        !           130: $!                   Added missing slash in cc_full_list.
        !           131: $!                   Removed unwanted extra quotes inside symbol tool_main
        !           132: $!                   for non-VAX architectures that triggered link failure.
        !           133: $!                   Replaced curl_sys_inc with sys_inc.
        !           134: $! 19-Mar-2013, John Malmberg
        !           135: $!                   symbol tool_main needs to be quoted when parse style is
        !           136: $!                   set to exended in versions of VMS greater than 7.3-1.
        !           137: $!                   Remove curlbuild.h generation as it should be pre-built
        !           138: $!                   in the curl release or daily tarball.
        !           139: $! 12-Jul-2013, John Malmberg
        !           140: $!                   Adjust to find and use ZLIB from the Jean-Francois
        !           141: $!                   Pieronne shared image and newer GNV ZLIB kit that
        !           142: $!                   is upward compatible with Jean-Francois's kit.
        !           143: $!                   Remove tabs from file.
        !           144: $!                   Fixed DCL formatting as follows:
        !           145: $!                      * Labels have no space after leading $.
        !           146: $!                      * 1 space after $ for first level.
        !           147: $!                      * 3 spaces after $ for second level.  Line start + 4.
        !           148: $!                      * 7 spaces after $ for third level.  Line start + 8.
        !           149: $!                      * Each level after that indents 4 characters.
        !           150: $!                      * then/else/endif same indentation as if statement.
        !           151: $! 17-Nov-2014, Michael Steve
        !           152: $!                   Modified build to handle new location of the VTLS lib
        !           153: $!                   source within zip archive. Not a pretty fix.
        !           154: $!
        !           155: $!===========================================================================
        !           156: $!
        !           157: $!
        !           158: $! Save the original default dev:[dir], and arrange for its restoration
        !           159: $! at exit.
        !           160: $!------------------------------------------------------------------------
        !           161: $ curl = ""
        !           162: $ orig_def = f$environment("DEFAULT")
        !           163: $ on error then goto Common_Exit
        !           164: $ on control_y then goto Common_Exit
        !           165: $!
        !           166: $ ctrl_y  = 1556
        !           167: $ proc = f$environment("PROCEDURE")
        !           168: $ proc_fid = f$file_attributes(proc, "FID")
        !           169: $ proc_dev = f$parse(proc, , , "DEVICE")
        !           170: $ proc_dir = f$parse(proc, , , "DIRECTORY")
        !           171: $ proc_name = f$parse(proc, , , "NAME")
        !           172: $ proc_type = f$parse(proc, , , "TYPE")
        !           173: $ proc_dev_dir = proc_dev + proc_dir
        !           174: $!
        !           175: $! Have to manually parse the device for a search list.
        !           176: $! Can not use the f$parse() as it will return the first name
        !           177: $! in the search list.
        !           178: $!
        !           179: $ orig_def_dev = f$element(0, ":", orig_def) + ":"
        !           180: $ if orig_def_dev .eqs. "::" then orig_def_dev = "sys$disk:"
        !           181: $ test_proc = orig_def_dev + proc_dir + proc_name + proc_type
        !           182: $!
        !           183: $! If we can find this file using the default directory
        !           184: $! then we know that we should use the original device from the
        !           185: $! default directory which could be a search list.
        !           186: $!
        !           187: $ test_proc_fid = f$file_attributes(test_proc, "FID")
        !           188: $!
        !           189: $ if (test_proc_fid .eq. proc_fid)
        !           190: $ then
        !           191: $   proc_dev_dir = orig_def_dev + proc_dir
        !           192: $ endif
        !           193: $!
        !           194: $!
        !           195: $! Verbose output message stuff.  Define symbol to "write sys$output" or "!".
        !           196: $! vo_c - verbose output for compile
        !           197: $! vo_l - link
        !           198: $! vo_o - object check
        !           199: $!
        !           200: $ vo_c := "write sys$output"
        !           201: $ vo_l := "write sys$output"
        !           202: $ vo_o := "!"
        !           203: $!
        !           204: $! Determine the main distribution directory ("[--]") in an
        !           205: $! ODS5-tolerant (case-insensitive) way.  (We do assume that the only
        !           206: $! "]" or ">" is the one at the end.)
        !           207: $!
        !           208: $! Some non-US VMS installations report ">" for the directory delimiter
        !           209: $! so do not assume that it is "]".
        !           210: $!
        !           211: $ orig_def_len = f$length(orig_def)
        !           212: $ delim = f$extract(orig_def_len - 1, 1, orig_def)
        !           213: $!
        !           214: $ set default 'proc_dev_dir'
        !           215: $ set default [--]
        !           216: $ base_dev_dir = f$environment("default")
        !           217: $ top_dev_dir = base_dev_dir - delim
        !           218: $!
        !           219: $!
        !           220: $!
        !           221: $! Define the architecture-specific product file destination directory
        !           222: $! name(s).
        !           223: $!
        !           224: $ parse_style = "TRADITIONAL"
        !           225: $ if (f$getsyi("HW_MODEL") .lt. 1024)
        !           226: $ then
        !           227: $    arch_name = "VAX"
        !           228: $ else
        !           229: $    arch_name = ""
        !           230: $    arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
        !           231: $    if (arch_name .eqs. "") then arch_name = "UNK"
        !           232: $!
        !           233: $!   Extended parsing option starts with VMS 7.3-1.
        !           234: $!   There is no 7.4, so that simplifies the parse a bit.
        !           235: $!
        !           236: $    node_swvers = f$getsyi("node_swvers")
        !           237: $    version_patch = f$extract(1, f$length(node_swvers), node_swvers)
        !           238: $    maj_ver = f$element(0, ".", version_patch)
        !           239: $    min_ver_patch = f$element(1, ".", version_patch)
        !           240: $    min_ver = f$element(0, "-", min_ver_patch)
        !           241: $    patch = f$element(1, "-", min_ver_patch)
        !           242: $    if patch .eqs. "-" then patch = ""
        !           243: $    parse_x = 0
        !           244: $    if maj_ver .ges. "8"
        !           245: $    then
        !           246: $       parse_x = 1
        !           247: $    else
        !           248: $       if maj_ver .eqs. "7" .and. min_ver .ges. "3" .and. patch .nes. ""
        !           249: $       then
        !           250: $          parse_x = 1
        !           251: $       endif
        !           252: $    endif
        !           253: $    if parse_x
        !           254: $    then
        !           255: $       parse_style = f$getjpi("", "parse_style_perm")
        !           256: $    endif
        !           257: $ endif
        !           258: $!
        !           259: $ exedir = proc_dev_dir - delim + ".''arch_name'" + delim
        !           260: $ lisdir = exedir
        !           261: $ objdir = exedir
        !           262: $!
        !           263: $! When building on a search list, need to do a create to make sure that
        !           264: $! the output directory exists, since the clean procedure tries to delete
        !           265: $! it.
        !           266: $ create/dir 'exedir'/prot=o:rwed
        !           267: $!
        !           268: $! Interpret command-line options.
        !           269: $!
        !           270: $ hpssl = 0
        !           271: $ ldap = 1
        !           272: $ list = 0
        !           273: $ full_list = 0
        !           274: $ nohpssl = 0
        !           275: $ nossl = 0
        !           276: $ openssl = 0
        !           277: $ osslolb = 0
        !           278: $ nozlib = 0
        !           279: $ nokerberos = 0
        !           280: $ cc_names = "/names=(shortened, as_is)/repository='exedir'
        !           281: $ cc_defs = "HAVE_CONFIG_H=1"
        !           282: $ cc_list = "/list='objdir'/show=(expan, includ)/machine
        !           283: $ cc_full_list = "/list='objdir'/show=(all, nomessages)/machine
        !           284: $ link_qual = ""
        !           285: $ if arch_name .eqs. "VAX"
        !           286: $ then
        !           287: $    cc_debug = "/nodebug/optimize"
        !           288: $    !cc_defs = cc_defs + ""
        !           289: $    cc_float = ""
        !           290: $    cc_large = ""
        !           291: $ else
        !           292: $    cc_debug = "/debug/optimize"
        !           293: $    cc_defs = cc_defs + ",_USE_STD_STAT"
        !           294: $    cc_float = "/float=ieee/ieee_mode=denorm_results"
        !           295: $    cc_large = ",_LARGEFILE"
        !           296: $ endif
        !           297: $ cc_qual1 = ""
        !           298: $ cc_qual2 = ""
        !           299: $ if (f$type(CURL_CCDEFS) .nes. "")
        !           300: $ then
        !           301: $    CURL_CCDEFS = f$edit(CURL_CCDEFS, "TRIM")
        !           302: $    cc_defs = cc_defs + ", " + CURL_CCDEFS
        !           303: $ endif
        !           304: $ msg_qual = "/object = ''objdir'"
        !           305: $ ssl_opt = ""
        !           306: $!
        !           307: $! Allow arguments to be grouped together with comma or separated by spaces
        !           308: $! Do no know if we will need more than 8.
        !           309: $ args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + ","
        !           310: $ args = args + p5 + "," + p6 + "," + p7 + "," + p8 + ","
        !           311: $!
        !           312: $! Provide lower case version to simplify parsing.
        !           313: $ args_lower = f$edit(args, "LOWERCASE,COLLAPSE")
        !           314: $!
        !           315: $ args_len = f$length(args)
        !           316: $ args_lower_len = f$length(args_lower)
        !           317: $!
        !           318: $ clean = 0
        !           319: $ if f$locate(",clean,", args_lower) .lt. args_lower_len
        !           320: $ then
        !           321: $   clean = 1
        !           322: $ endif
        !           323: $ clean_all = 0
        !           324: $ if f$locate(",clean_all,", args_lower) .lt. args_lower_len
        !           325: $ then
        !           326: $    clean = 1
        !           327: $    clean_all = 1
        !           328: $ endif
        !           329: $ if f$locate(",realclean,", args_lower) .lt. args_lower_len
        !           330: $ then
        !           331: $    clean = 1
        !           332: $    clean_all = 1
        !           333: $ endif
        !           334: $!
        !           335: $ if clean .ne. 0
        !           336: $ then
        !           337: $   prods = "''exedir'*.*;*"
        !           338: $   if (f$search(prods) .nes. "") then delete /log 'prods'
        !           339: $   prods = proc_dev_dir + arch_name + ".DIR;1"
        !           340: $   if (f$search(prods) .nes. "") then set prot=o:rwed 'prods'
        !           341: $   if (f$search(prods) .nes. "") then delete /log 'prods'
        !           342: $   file = "[]config_vms.h"
        !           343: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           344: $   file = "[]config.h"
        !           345: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           346: $   file = "[]curl-config."
        !           347: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           348: $   file = "[]libcurl.pc"
        !           349: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           350: $   file = "[.lib.cxx_repository]cxx$demangler_db."
        !           351: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           352: $   file = "[.src.cxx_repository]cxx$demangler_db."
        !           353: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           354: $   file = "[.lib]config_vms.h"
        !           355: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           356: $   file = "[...]curl_crtl_init"
        !           357: $   if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
        !           358: $   if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
        !           359: $   file = "[...]gnv$curlmsg"
        !           360: $   if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
        !           361: $   if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
        !           362: $   if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
        !           363: $   file = "[...]curlmsg"
        !           364: $   if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
        !           365: $   if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
        !           366: $   if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
        !           367: $   file = "[...]report_openssl_version"
        !           368: $   if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
        !           369: $   if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
        !           370: $   if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
        !           371: $   file = "[...]hp_ssl_release_info.txt"
        !           372: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           373: $   file = "[...]gnv_libcurl_xfer.mar_exact"
        !           374: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           375: $   file = "[...]gnv_libcurl_xfer"
        !           376: $   if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
        !           377: $   if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
        !           378: $   if f$search("''file'.opt") .nes. "" then delete/log 'file'.opt;*
        !           379: $   file = "[...]curl-*_original_src.bck"
        !           380: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           381: $   file = "[...]curl_d-*_original_src.bck"
        !           382: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           383: $   file = "[...]curl-*_vms_src.bck"
        !           384: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           385: $   file = "[...]curl_d-*_vms_src.bck"
        !           386: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           387: $   file = "[...]curl-*.release_notes"
        !           388: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           389: $   file = "[...]curl_d-*.release_notes"
        !           390: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           391: $   file = "[...]*curl*.pcsi$desc"
        !           392: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           393: $   file = "[...]*curl_d*.pcsi$desc"
        !           394: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           395: $   file = "[...]*curl*.pcsi$text"
        !           396: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           397: $   file = "[...]*curl_d*.pcsi$text"
        !           398: $   if f$search(file) .nes. "" then delete/log 'file';*
        !           399: $!
        !           400: $   if clean_all .eq. 0 then goto Common_Exit
        !           401: $ endif
        !           402: $!
        !           403: $!
        !           404: $ if clean_all .ne. 0
        !           405: $ then
        !           406: $   file = "[...]gnv$libcurl"
        !           407: $   if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
        !           408: $   if f$search("''file'.map") .nes. "" then delete/log 'file'.map;*
        !           409: $   if f$search("''file'.dsf") .nes. "" then delete/log 'file'.dsf;*
        !           410: $   file = "[.src]curl"
        !           411: $   if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
        !           412: $   if f$search("''file'.map") .nes. "" then delete/log 'file'.map;*
        !           413: $   if f$search("''file'.dsf") .nes. "" then delete/log 'file'.dsf;*
        !           414: $   prods = proc_dev_dir - delim + ".ALPHA" + delim + "*.*;*"
        !           415: $   if (f$search(prods) .nes. "") then delete /log 'prods'
        !           416: $   prods = proc_dev_dir + "ALPHA" + ".DIR;1"
        !           417: $   if (f$search(prods) .nes. "") then set prot=o:rwed 'prods'
        !           418: $   if (f$search(prods) .nes. "") then delete /log 'prods'
        !           419: $   prods = proc_dev_dir - delim + ".IA64" + delim + "*.*;*"
        !           420: $   if (f$search(prods) .nes. "") then delete /log 'prods'
        !           421: $   prods = proc_dev_dir + "IA64" + ".DIR;1"
        !           422: $   if (f$search(prods) .nes. "") then set prot=o:rwed 'prods'
        !           423: $   if (f$search(prods) .nes. "") then delete /log 'prods'
        !           424: $   prods = proc_dev_dir - delim + ".VAX" + delim + "*.*;*"
        !           425: $   if (f$search(prods) .nes. "") then delete /log 'prods'
        !           426: $   prods = proc_dev_dir + "VAX"+ ".DIR;1"
        !           427: $   if (f$search(prods) .nes. "") then set prot=o:rwed 'prods'
        !           428: $   if (f$search(prods) .nes. "") then delete /log 'prods'
        !           429: $   file = "[...]macro32_exactcase"
        !           430: $   if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
        !           431: $   if f$search("''file'.jnl") .nes. "" then delete/log 'file'.jnl;*
        !           432: $   goto Common_Exit
        !           433: $ endif
        !           434: $!
        !           435: $ build_64 = 0
        !           436: $ if f$locate(",64,", args_lower) .lt. args_lower_len
        !           437: $ then
        !           438: $   cc_qual1 = cc_qual1 + " /POINTER = 64"
        !           439: $   build_64 = 1
        !           440: $ endif
        !           441: $!
        !           442: $ args_loc = f$locate(",ccqual=", args_lower)
        !           443: $ if args_loc .lt. args_lower_len
        !           444: $ then
        !           445: $   arg = f$extract(args_loc + 1, args_lower_len, args_lower)
        !           446: $   arg_val = f$element(0, ",", arg)
        !           447: $   cc_qual2 = f$element(1, "=", arg_val);
        !           448: $ endif
        !           449: $!
        !           450: $! On Alpha/IA64 no size penalty for compiling /debug/optimize
        !           451: $! by default.
        !           452: $ if f$locate(",debug,", args_lower) .lt. args_lower_len
        !           453: $ then
        !           454: $   cc_debug = "/debug/nooptimize"
        !           455: $ endif
        !           456: $!
        !           457: $! We normally want IEEE float if it is available.  Programs that are
        !           458: $! calling libcurl will typically prefer IEEE behavior, unless on the
        !           459: $! VAX where we have no choice.
        !           460: $!
        !           461: $ if f$locate(",noieee,", args_lower) .lt. args_lower_len
        !           462: $ then
        !           463: $   cc_float = ""
        !           464: $ endif
        !           465: $!
        !           466: $! Normally we want large file if it is available.
        !           467: $ if f$locate(",nolarge,", args_lower) .lt. args_lower_len
        !           468: $ then
        !           469: $   write sys$output "Handling of large files disabled."
        !           470: $   cc_large = ""
        !           471: $ endif
        !           472: $ if cc_large .nes. ""
        !           473: $ then
        !           474: $   cc_defs = cc_defs + cc_large
        !           475: $ endif
        !           476: $!
        !           477: $ if f$locate(",noldap,", args_lower) .lt. args_lower_len
        !           478: $ then
        !           479: $   ldap = 0
        !           480: $ endif
        !           481: $!
        !           482: $ if f$locate(",list,", args_lower) .lt. args_lower_len
        !           483: $ then
        !           484: $   list = 1
        !           485: $ endif
        !           486: $ if f$locate(",fulllist,", args_lower) .lt. args_lower_len
        !           487: $ then
        !           488: $    list = 1
        !           489: $    full_list = 1
        !           490: $ endif
        !           491: $!
        !           492: $ if f$locate(",nohpssl,", args_lower) .lt. args_lower_len
        !           493: $ then
        !           494: $   nohpssl = 1
        !           495: $ endif
        !           496: $!
        !           497: $ if f$locate(",nossl,", args_lower) .lt. args_lower_len
        !           498: $ then
        !           499: $   nossl = 1
        !           500: $ endif
        !           501: $!
        !           502: $ if f$locate(",osslolb,", args_lower) .lt. args_lower_len
        !           503: $ then
        !           504: $    osslolb = 1
        !           505: $ endif
        !           506: $!
        !           507: $ if f$locate(",nozlib,", args_lower) .lt. args_lower_len
        !           508: $ then
        !           509: $   nozlib = 1
        !           510: $ endif
        !           511: $!
        !           512: $ if f$locate(",nokerberos,", args_lower) .lt. args_lower_len
        !           513: $ then
        !           514: $   nokerberos = 1
        !           515: $ endif
        !           516: $!
        !           517: $!
        !           518: $! CC /LIST, LINK /MAP, and MESSAGE /LIST are defaults in batch mode,
        !           519: $! so be explicit when they're not desired.
        !           520: $!
        !           521: $
        !           522: $ if list .eq. 0
        !           523: $ then
        !           524: $   cc_qual1 = cc_qual1 + "/nolist"
        !           525: $   msg_qual = msg_qual + "/nolist"
        !           526: $ else
        !           527: $   msg_qual = msg_qual + "/list='objdir'"
        !           528: $   if (full_list .ne. 0)
        !           529: $   then
        !           530: $       cc_qual1 = cc_qual1 + cc_full_list
        !           531: $   else
        !           532: $       cc_qual1 = cc_qual1 + cc_list
        !           533: $   endif
        !           534: $ endif
        !           535: $ cc_qual1 = cc_qual1 + cc_names + cc_float + cc_debug
        !           536: $!
        !           537: $! Create product directory, if needed.
        !           538: $!
        !           539: $ if (f$search(proc_dev_dir + arch_name + ".DIR;1") .eqs. "")
        !           540: $ then
        !           541: $    create /directory 'exedir'
        !           542: $ endif
        !           543: $!
        !           544: $! Detect available (but not prohibited) SSL software.
        !           545: $!
        !           546: $ libsslshr_line = ""
        !           547: $ libcryptoshr_line = ""
        !           548: $ if (.not. nossl)
        !           549: $ then
        !           550: $   if (f$trnlnm("OPENSSL") .nes. "")
        !           551: $   then
        !           552: $!        cc_defs = cc_defs + ", USE_OPENSSL=1"
        !           553: $        if ((f$trnlnm("SSL$INCLUDE") .nes. "") .and. (.not. nohpssl))
        !           554: $        then
        !           555: $!          Use HP SSL.
        !           556: $           hpssl = 1
        !           557: $!
        !           558: $!          Older SSL only has lib*_shr32 images
        !           559: $!-----------------------------------------------
        !           560: $           libsslshr = "sys$share:ssl$libssl_shr"
        !           561: $           if (f$search("''libsslshr'.exe") .eqs. "") .or. (.not. build_64)
        !           562: $           then
        !           563: $               libsslshr = libsslshr + "32"
        !           564: $           endif
        !           565: $           libcryptoshr = "sys$share:ssl$libcrypto_shr"
        !           566: $           if (f$search("''libcryptoshr'.exe") .eqs. "") .or. (.not. build_64)
        !           567: $           then
        !           568: $               libcryptoshr = libcryptoshr + "32"
        !           569: $           endif
        !           570: $           libsslshr_line = "''libsslshr'.exe/share"
        !           571: $           libcryptoshr_line = "''libcryptoshr'.exe/share"
        !           572: $       else
        !           573: $!          Use OpenSSL.  Assume object libraries, unless shared images
        !           574: $!          are found (and not prohibited).
        !           575: $!          TODO: We do not know how to automatically choose based on the
        !           576: $!          pointer size.
        !           577: $!
        !           578: $           openssl = 1
        !           579: $           libsslshr_line = "ssllib:libssl.olb/lib"
        !           580: $           libcryptoshr_line = "ssllib:libcrypto.olb/lib"
        !           581: $           ssl_opt = ", ssllib:libssl.olb /library" + -
        !           582:                 ", ssllib:libcrypto.olb /library"
        !           583: $           if (osslolb .eq. 0)
        !           584: $           then
        !           585:                 if ((f$search("ssllib:ssl_libcrypto.exe") .nes. "")  .and. -
        !           586:                     (f$search("ssllib:ssl_libssl.exe") .nes. ""))
        !           587: $                then
        !           588: $!                   OpenSSL shared images with "SSL_xxx.EXE names.
        !           589: $                    openssl = 2
        !           590: $                    libsslshr_line = "ssllib:ssl_libssl_shr.exe/share"
        !           591: $                    libcryptoshr_line = "ssllib:ssl_libcrypto_shr.exe/share"
        !           592: $                else
        !           593: $                    if ((f$search("ssllib:libcrypto.exe") .nes. "") .and. -
        !           594:                          (f$search("ssllib:libssl.exe") .nes. ""))
        !           595: $                    then
        !           596: $!                       OpenSSL shared images with "xxx.EXE names.
        !           597: $                        openssl = 3
        !           598: $                        libsslshr_line = "ssllib:libssl_shr.exe/share"
        !           599: $                        libcryptoshr_line = "ssllib:libcrypto_shr.exe/share"
        !           600: $                    endif
        !           601: $                endif
        !           602: $           endif
        !           603: $       endif
        !           604: $   endif
        !           605: $ endif
        !           606: $!
        !           607: $! LDAP.
        !           608: $!
        !           609: $ if f$search("SYS$SHARE:LDAP$SHR.EXE") .eqs. ""
        !           610: $ then
        !           611: $   ldap = 0
        !           612: $ endif
        !           613: $ if (ldap .eq. 0)
        !           614: $ then
        !           615: $!   cc_defs = cc_defs + ", CURL_DISABLE_LDAP=1"
        !           616: $ else
        !           617: $   'vo_c' "%CURL-I-BLDHPLDAP, building with HP LDAP support"
        !           618: $ endif
        !           619: $!
        !           620: $! KERBEROS
        !           621: $ gssrtlshr_line = ""
        !           622: $ try_shr = "sys$share:gss$rtl"
        !           623: $ if f$search("''try_shr'.exe") .eqs. ""
        !           624: $ then
        !           625: $   nokerberos = 1
        !           626: $ endif
        !           627: $ curl_sys_krbinc = ""
        !           628: $ if nokerberos .eq. 0
        !           629: $ then
        !           630: $   'vo_c' "%CURL-I-BLDHPKERBEROS, building with HP KERBEROS support"
        !           631: $   curl_sys_krbinc = "sys$sysroot:[kerberos.include]"
        !           632: $   gssrtlshr_line = "''try_shr'/share"
        !           633: $ endif
        !           634: $!
        !           635: $!
        !           636: $! LIBZ
        !           637: $ libzshr_line = ""
        !           638: $ try_shr = "gnv$libzshr"
        !           639: $ if build_64
        !           640: $ then
        !           641: $!  First look for 64 bit
        !           642: $   if f$search("''try_shr'64") .eqs. ""
        !           643: $   then
        !           644: $!      Second look for the J.F. Pieronne 64 bit shared image
        !           645: $       try_shr = "LIBZ_SHR64"
        !           646: $       if f$search(try_shr) .eqs. "" then nozlib = 1
        !           647: $   endif
        !           648: $ else
        !           649: $!  First look for 32 bit
        !           650: $   if f$search("''try_shr'32") .eqs. ""
        !           651: $   then
        !           652: $!      Second look for old 32 bit image
        !           653: $       if f$search(try_shr) .eqs. ""
        !           654: $       then
        !           655: $!          Third look for the J.F. Pieronne 32 bit shared image
        !           656: $           try_shr = "LIBZ_SHR32"
        !           657: $           if f$search(try_shr) .eqs. "" then nozlib = 1
        !           658: $       endif
        !           659: $   endif
        !           660: $ endif
        !           661: $ if f$search(try_shr) .eqs. ""
        !           662: $ then
        !           663: $   nozlib = 1
        !           664: $ endif
        !           665: $ curl_sys_zlibinc = ""
        !           666: $ if nozlib .eq. 0
        !           667: $ then
        !           668: $   libzshr_line = "''try_shr'/share"
        !           669: $   if f$locate("LIBZ", try_shr) .eq. 0
        !           670: $   then
        !           671: $       'vo_c' "%CURL-I-BLDJFPLIBZ, building with JFP LIBZ support"
        !           672: $       curl_sys_zlibinc = "LIBZ:"
        !           673: $   else
        !           674: $       'vo_c' "%CURL-I-BLDGNVLIBZ, building with GNV LIBZ support"
        !           675: $       curl_sys_zlibinc = "GNV$ZLIB_INCLUDE:"
        !           676: $   endif
        !           677: $ endif
        !           678: $!
        !           679: $! Form CC qualifiers.
        !           680: $!
        !           681: $ cc_defs = "/define = (''cc_defs')"
        !           682: $ cc_qual2 = cc_qual2 + " /object = ''objdir'"
        !           683: $ cc_qual2 = cc_qual2 + "/nested_include_directory=none"
        !           684: $!
        !           685: $ 'vo_c' "CC opts:", -
        !           686:   " ''cc_defs'", -
        !           687:   " ''cc_qual1'", -
        !           688:   " ''cc_qual2'"
        !           689: $!
        !           690: $! Inform the victim of our plans.
        !           691: $!
        !           692: $ if (hpssl)
        !           693: $ then
        !           694: $    'vo_c' "%CURL-I-BLDHPSSL, building with HP SSL support"
        !           695: $ else
        !           696: $    if (openssl .ne. 0)
        !           697: $    then
        !           698: $       if (openssl .eq. 1)
        !           699: $       then
        !           700: $          'vo_c' -
        !           701:  "%CURL-I-BLDOSSL_OLB, building with OpenSSL (object library) support"
        !           702: $       else
        !           703: $          'vo_c' -
        !           704:  "%CURL-I-BLDOSSL_EXE, building with OpenSSL (shared image) support"
        !           705: $       endif
        !           706: $    else
        !           707: $       'vo_c' "%CURL-I-BLDNOSSL, building with NO SSL support"
        !           708: $    endif
        !           709: $ endif
        !           710: $!
        !           711: $! Announce destination and SSL directories.
        !           712: $!
        !           713: $ 'vo_c' "   OBJDIR = ''objdir'"
        !           714: $ 'vo_c' "   EXEDIR = ''exedir'"
        !           715: $!
        !           716: $ if (openssl .ne. 0)
        !           717: $ then
        !           718: $   ssllib = f$trnlnm("ssllib")
        !           719: $   if (ssllib .eqs. "")
        !           720: $   then
        !           721: $       ssllib = "(undefined)"
        !           722: $   endif
        !           723: $   'vo_c' "   SSLLIB = ''ssllib'"
        !           724: $!
        !           725: $! TODO: Why are we translating the logical name?
        !           726: $! The logical aname used to find the shared image should just be used
        !           727: $! as translating it could result in the wrong location at run time.
        !           728: $   if (openssl .eq. 1)
        !           729: $   then
        !           730: $       ossl_lib1 = f$trnlnm("ssllib")+ "LIBSSL.OLB"
        !           731: $       ossl_lib2 = f$trnlnm("ssllib")+ "LIBCRYPTO.OLB"
        !           732: $       msg = "object libraries"
        !           733: $   else
        !           734: $       if (openssl .eq. 2)
        !           735: $       then
        !           736: $           ossl_lib1 = f$trnlnm("ssllib")+ "SSL_LIBSSL.EXE"
        !           737: $           ossl_lib2 = f$trnlnm("ssllib")+ "SSL_LIBCRYPTO.EXE"
        !           738: $       else
        !           739: $           ossl_lib1 = f$trnlnm("ssllib")+ "LIBSSL.EXE"
        !           740: $           ossl_lib2 = f$trnlnm("ssllib")+ "LIBCRYPTO.EXE"
        !           741: $       endif
        !           742: $       msg = "shared images"
        !           743: $   endif
        !           744: $   if ((f$search(ossl_lib1) .eqs. "") .or. -
        !           745:         (f$search(ossl_lib2) .eqs. ""))
        !           746: $   then
        !           747: $       write sys$output "Can't find OpenSSL ''msg':"
        !           748: $       write sys$output "   ''ossl_lib1'"
        !           749: $       write sys$output "   ''ossl_lib2'"
        !           750: $       goto Common_Exit
        !           751: $   endif
        !           752: $ endif
        !           753: $!
        !           754: $! Define the "curl" (process) logical name for "#include <curl/xxx.h>".
        !           755: $!
        !           756: $ curl = f$trnlnm("curl", "LNM$PROCESS")
        !           757: $ if (curl .nes. "")
        !           758: $ then
        !           759: $   write sys$output ""
        !           760: $   write sys$output -
        !           761:  "Process logical name ""curl"" is already defined, but this procedure"
        !           762: $   write sys$output -
        !           763:  "would override that definition.  Use a command like"
        !           764: $   write sys$output -
        !           765:  "      deassign /process curl"
        !           766: $   write sys$output -
        !           767:  "to cancel that logical name definition, and then and re-run this procedure."
        !           768: $   write sys$output ""
        !           769: $   goto Common_Exit
        !           770: $ endif
        !           771: $ curl_logical = top_dev_dir + ".include.curl" + delim
        !           772: $ curl_sys_inc2 = curl_logical
        !           773: $ curl_sys_inc1 = top_dev_dir + ".include" + delim
        !           774: $! define curl 'top_dev_dir'.include.curl'delim'
        !           775: $!
        !           776: $! Generate config file into the product directory.
        !           777: $!
        !           778: $! call MoveIfDiff [.lib]config-vms.h 'objdir'curl_config.h
        !           779: $!
        !           780: $ conf_params = ""
        !           781: $ if nossl .ne. 0 then conf_params = conf_params + ",nossl"
        !           782: $ if nohpssl .ne. 0 then conf_params = conf_params + ",nohpssl,"
        !           783: $ if ldap .eq. 0 then conf_params = conf_params + ",noldap,"
        !           784: $ if nozlib .ne. 0 then conf_params = conf_params + ",nozlib,"
        !           785: $ if nokerberos .ne. 0 then conf_params = conf_params + ",nokerberos"
        !           786: $ conf_params = conf_params - ","
        !           787: $!
        !           788: $!
        !           789: $ new_conf = f$search("''objdir'curl_config.h")
        !           790: $ if new_conf .eqs. ""
        !           791: $ then
        !           792: $!   set ver
        !           793: $   write sys$output "Generating curl custom config_vms.h"
        !           794: $   @'proc_dev_dir'generate_config_vms_h_curl.com ''conf_params'
        !           795: $!
        !           796: $   write sys$output "Generating curl_config.h"
        !           797: $   conf_in = f$search("[.lib]curl_config*.*in")
        !           798: $   if conf_in .eqs. ""
        !           799: $   then
        !           800: $       write sys$output "Can not find [.lib]curl_config*.*in file!"
        !           801: $       goto common_exit
        !           802: $   endif
        !           803: $   @'proc_dev_dir'config_h.com 'conf_in'
        !           804: $   copy config.h 'objdir'curl_config.h
        !           805: $   delete config.h;
        !           806: $!   set nover
        !           807: $ endif
        !           808: $!
        !           809: $!
        !           810: $ on control_y then goto Common_Exit
        !           811: $!
        !           812: $ set default 'proc_dev_dir'
        !           813: $ sys_inc = "''curl_sys_inc1', ''curl_sys_inc2', ''curl_logical'"
        !           814: $ if curl_sys_krbinc .nes. ""
        !           815: $ then
        !           816: $   sys_inc = sys_inc + ",''curl_sys_krbinc'"
        !           817: $ endif
        !           818: $ if curl_sys_zlibinc .nes. ""
        !           819: $ then
        !           820: $   sys_inc = sys_inc + ",''curl_sys_zlibinc'"
        !           821: $ endif
        !           822: $! Build LIB
        !           823: $ cc_include = "/include=([-.lib],[-.lib.vtls],[-.packages.vms]"
        !           824: $ cc_include = cc_include + ",[-.packages.vms.''arch_name'])"
        !           825: $ call build "[--.lib]" "*.c" "''objdir'CURLLIB.OLB" "amigaos, nwlib, nwos"
        !           826: $ if ($status .eq. ctrl_y) then goto Common_Exit
        !           827: $! Build VTLS
        !           828: $ cc_include = "/include=([--.lib.vtls],[--.lib],[--.src]"
        !           829: $ cc_include = cc_include + ",[--.packages.vms],[--.packages.vms.''arch_name'])"
        !           830: $ call build "[--.lib.vtls]" "*.c" "''objdir'CURLLIB.OLB" "amigaos, nwlib, nwos"
        !           831: $! Build SRC
        !           832: $ cc_include = "/include=([-.src],[-.lib],[-.lib.vtls]"
        !           833: $ cc_include = cc_include + ",[-.packages.vms],[-.packages.vms.''arch_name'])"
        !           834: $ call build "[--.src]" "*.c" "''objdir'CURLSRC.OLB"
        !           835: $ if ($status .eq. ctrl_y) then goto Common_Exit
        !           836: $! Build MSG
        !           837: $ call build "[]" "*.msg" "''objdir'CURLSRC.OLB"
        !           838: $ if ($status .eq. ctrl_y) then goto Common_Exit
        !           839: $!
        !           840: $!
        !           841: $ if (openssl .ne. 0)
        !           842: $ then
        !           843: $   if (openssl .eq. 1)
        !           844: $   then
        !           845: $       'vo_l' "%CURL-I-LINK_OSSL, linking with OpenSSL (object library)"
        !           846: $   else
        !           847: $       'vo_l' "%CURL-I-LINK_HPSSL, linking with OpenSSL (shared image)"
        !           848: $   endif
        !           849: $ else
        !           850: $   if (hpssl)
        !           851: $   then
        !           852: $       'vo_l' "%CURL-I-LINK_HPSSL, linking with HP SSL"
        !           853: $   else
        !           854: $       'vo_l' "%CURL-I-LINK_NOSSL, linking with NO SSL support"
        !           855: $   endif
        !           856: $ endif
        !           857: $!
        !           858: $!
        !           859: $! GNV helper files for building the test curl binary.
        !           860: $!-----------------------------------------------
        !           861: $ create 'exedir'gnv$curl.opt
        !           862: $ open/append opt 'exedir'gnv$curl.opt
        !           863: $ if libzshr_line .nes. "" then write opt libzshr_line
        !           864: $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line
        !           865: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
        !           866: $ if libsslshr_line .nes. "" then write opt libsslshr_line
        !           867: $ close opt
        !           868: $!
        !           869: $!
        !           870: $! Create the libcurl
        !           871: $!------------------------------------------------------
        !           872: $ create 'exedir'gnv_libcurl_linker.opt
        !           873: $ open/append opt 'exedir'gnv_libcurl_linker.opt
        !           874: $ if libzshr_line .nes. "" then write opt libzshr_line
        !           875: $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line
        !           876: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
        !           877: $ if libsslshr_line .nes. "" then write opt libsslshr_line
        !           878: $ close opt
        !           879: $!
        !           880: $!
        !           881: $! If we are not on VAX, then we want the debug symbol table in
        !           882: $! a separate file.
        !           883: $! VAX needs the tool_main unquoted in uppercase,
        !           884: $! Alpha and IA64 need tool_main quoted in exact case when parse style is
        !           885: $! extended.
        !           886: $ link_dsf1 = ""
        !           887: $ link_dsf2 = ""
        !           888: $ tool_main = "tool_main"
        !           889: $ if arch_name .nes. "VAX"
        !           890: $ then
        !           891: $   if parse_style .eqs. "EXTENDED"
        !           892: $   then
        !           893: $      tool_main = """tool_main"""
        !           894: $   endif
        !           895: $   link_dsf1 = "/dsf=" + exedir + "CURL.DSF"
        !           896: $   link_dsf2 = "/dsf=" + exedir + "CURL_DEBUG.DSF"
        !           897: $ endif
        !           898: $ if (list .eq. 0)
        !           899: $ then
        !           900: $   link_map1 = "/nomap"
        !           901: $   link_map2 = "/nomap"
        !           902: $ else
        !           903: $   link_map1 = "/map=" + exedir + "CURL.MAP"
        !           904: $   link_map2 = "/map=" + exedir + "CURL_DEBUG.MAP"
        !           905: $ endif
        !           906: $!
        !           907: $!
        !           908: $! Make a normal image.
        !           909: $ set ver
        !           910: $ link 'link_map1' 'link_dsf1' /executable = 'exedir'CURL.EXE -
        !           911:    'objdir'curlsrc.olb /library /include = ('tool_main', curlmsg), -
        !           912:    'objdir'curllib.olb /library, -
        !           913:    'exedir'gnv$curl.opt/opt
        !           914: $!
        !           915: $! Also make a debug copy.
        !           916: $ link/debug 'link_map2' 'link_dsf2' /executable = 'exedir'CURL_DEBUG.EXE -
        !           917:    'objdir'curlsrc.olb /library /include = ('tool_main', curlmsg), -
        !           918:    'objdir'curllib.olb /library, -
        !           919:    'exedir'gnv$curl.opt/opt
        !           920: $ set nover
        !           921: $!
        !           922: $ goto Common_Exit
        !           923: $!
        !           924: $! Subroutine to build everything with a filetype passed in via P2 in
        !           925: $! the directory passed in via P1 and put it in the object library named
        !           926: $! via P3.  Exclude items in P4.
        !           927: $!
        !           928: $build:   subroutine
        !           929: $   build_def = f$environment("default")
        !           930: $   on control_y then goto EndLoop ! SS$_CONTROLY
        !           931: $   sts = 1 ! SS$_NORMAL.
        !           932: $!   set noon
        !           933: $   set default 'p1'
        !           934: $   search = "sys$disk:" + p2
        !           935: $   reset = f$search("reset")
        !           936: $   if f$search( p3) .eqs. ""
        !           937: $   then
        !           938: $       librarian /create /object 'p3'
        !           939: $   endif
        !           940: $   reject_list__ = "," + f$edit(p4, "COLLAPSE, UPCASE") + ","
        !           941: $   reject_list___len = f$length(reject_list__)
        !           942: $   reset = f$search( "reset", 1)
        !           943: $Loop:
        !           944: $   file = f$search( search, 1)
        !           945: $   if file .eqs. "" then goto EndLoop
        !           946: $!  Skip a name if it's in the P4 exclusion list.
        !           947: $   if (p4 .nes. "")
        !           948: $   then
        !           949: $       name__ = "," + -
        !           950:             f$edit(f$parse(file, , , "NAME", "SYNTAX_ONLY"), "UPCASE") + -
        !           951:             ","
        !           952: $       if (f$locate(name__, reject_list__) .lt. reject_list___len)
        !           953: $       then
        !           954: $          goto Loop
        !           955: $       endif
        !           956: $   endif
        !           957: $   objfile = f$parse("''objdir'.OBJ;", file)
        !           958: $   obj = f$search(objfile, 2)
        !           959: $   if (obj .nes. "")
        !           960: $   then
        !           961: $       if (f$cvtime(f$file(file,"rdt")) .gts. f$cvtime(f$file(obj,"rdt")))
        !           962: $       then
        !           963: $           call compile 'file'
        !           964: $           sts = $status
        !           965: $           if .not. sts
        !           966: $           then
        !           967: $               goto EndLoop
        !           968: $           endif
        !           969: $           librarian /object 'p3' 'objfile'
        !           970: $       else
        !           971: $           'vo_o' "%CURL-I-OBJUTD, ", objfile, " is up to date"
        !           972: $       endif
        !           973: $   else
        !           974: $       'vo_o' "%CURL-I-OBJDNE, ", file, " does not exist"
        !           975: $       call compile 'file'
        !           976: $       sts = $status
        !           977: $       if .not. sts
        !           978: $       then
        !           979: $           goto EndLoop
        !           980: $       endif
        !           981: $       librarian /object 'p3' 'objfile'
        !           982: $   endif
        !           983: $   goto Loop
        !           984: $EndLoop:
        !           985: $!!!    purge
        !           986: $   set default 'build_def'
        !           987: $   exit 'sts'
        !           988: $ endsubroutine   ! Build
        !           989: $!
        !           990: $! Based on the file TYPE, do the right compile command.
        !           991: $! Only C and MSG supported.
        !           992: $!
        !           993: $compile:   subroutine
        !           994: $   on control_y then return ctrl_y ! SS$_CONTROLY
        !           995: $!   set noon
        !           996: $   file = p1
        !           997: $   qual = p2+ p3+ p4+ p5+ p6+ p7+ p8
        !           998: $   typ = f$edit(f$parse(file, , , "TYPE"), "UPCASE") - "."
        !           999: $   if (typ .eqs. "C")
        !          1000: $   then
        !          1001: $       'vo_c' "CC (opts) ", file
        !          1002: $       define/user curl 'curl_logical'
        !          1003: $       if curl_sys_krbinc .nes. "" then define/user gssapi 'curl_sys_krbinc'
        !          1004: $       define/user decc$system_include 'sys_inc'
        !          1005: $       CC 'cc_defs' -
        !          1006:          'cc_qual1' -
        !          1007:          'cc_qual2' -
        !          1008:          'cc_include' -
        !          1009:          'file'
        !          1010: $   else
        !          1011: $       cmd_msg = "MESSAGE " + msg_qual
        !          1012: $       x = cmd_'typ'
        !          1013: $       'vo_c' x, " ", file
        !          1014: $       'x' 'file'
        !          1015: $   endif
        !          1016: $ ENDSUBROUTINE   ! Compile
        !          1017: $!
        !          1018: $! Do a diff of the file specified in P1 with that in P2.  If different
        !          1019: $! copy P1 to P2.  This also covers if P2 doesn't exist, but not if P2
        !          1020: $! is an invalid filespec.
        !          1021: $!
        !          1022: $MoveIfDiff:  subroutine
        !          1023: $   set NoOn
        !          1024: $   define /user_mode sys$error nl:
        !          1025: $   define /user_mode sys$output nl:
        !          1026: $   differences 'p1' 'p2'
        !          1027: $   status = $status
        !          1028: $   if (status .ne. %X006C8009) ! if status is not "no diff"
        !          1029: $   then
        !          1030: $       copy 'p1' 'p2'
        !          1031: $       purge /nolog 'p2'
        !          1032: $   endif
        !          1033: $   on control_y then return ctrl_y ! SS$_CONTROLY
        !          1034: $ ENDSUBROUTINE   ! MoveIfDiff
        !          1035: $!
        !          1036: $Common_Exit:
        !          1037: $ set default 'orig_def'
        !          1038: $ exit

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>