                             _   _ ____  _
                         ___| | | |  _ \| |
                        / __| | | | |_) | |
                       ( (__| |_| |  _ <| |___
                        \___|\___/|_| \_\_____|
                             for OpenVMS

History:

 9-MAR-2004, Created this readme. file.  Marty Kuhrt (MSK).
15-MAR-2004, MSK, Updated to reflect the new files in this directory.
14-FEB-2005, MSK, removed config-vms.h_with* file comments
10-FEB-2010, SMS. General update.

Prerequisites:

OpenVMS V7.0 or later (any platform)
DECC V6.5 or later
OpenSSL or hp SSL, if you want SSL support

What is Here:

This directory contains the following files:

build_vms.com           Build procedure.
config-vms.h            VMS-specific config.h.
curlmsg.h               C header defining cURL status code macros.
curlmsg.msg             Error message source for curlmsg.h and curlmsg.sdl.
curlmsg.sdl             SDL source defining cURL status code constants.
curlmsg_vms.h           Mapping of cURL status codes to VMS-form codes.
hpssl_alpha.opt         LINK options file for HP SSL on Alpha.
hpssl_ia64.opt          LINK options file for HP SSL on IA64.
hpssl_vax.opt           LINK options file for HP SSL on VAX.
ldap.opt                LINK options file for LDAP.
Makefile.am             cURL kit file list for this directory.
Makefile.in             cURL kit makefile source for this directory.
openssl_alpha.opt       LINK options file for OpenSSL on Alpha.
openssl_ia64.opt        LINK options file for OpenSSL on IA64.
openssl_ssl_alpha.opt   LINK options file for OpenSSL (SSL_ prefix) on Alpha.
openssl_ssl_ia64.opt    LINK options file for OpenSSL (SSL_ prefix) on IA64.
openssl_ssl_vax.opt     LINK options file for OpenSSL (SSL_ prefix) on VAX.
openssl_vax.opt         LINK options file for OpenSSL on VAX.
readme.                 This file.


How to Build:

The (brute-force) builder is [.packages.vms]build_vms.com.  Comments in
this procedure describe various optional parameters which enable or
disable optional program features, or which control the build in other
ways.  Product files (.EXE, .H, .LIS, .MAP, .OBJ, .OLB, ...) should be
produced in an architecture-specific subdirectory under this directory
([.ALPHA], [.IA64], [.VAX]).

   Example build commands:

      @ [.packages.vms]build_vms.com CLEAN
      @ [.packages.vms]build_vms.com LARGE LDAP
      submit /noprint [.packages.vms]build_vms.com /param = (LARGE, LDAP)


Other Notes:

The test suites are not supported as of 7.11.0.

The curlmsg.sdl and curlmsg.h files are generated from curlmsg.msg.
This is not done automatically, since the .MSG file is a hand edit
of the relevant stuff from the curl.h file.  If you want to do this
yourself you'll need the SDL package from the freeware collection.

