$! File: gnv_link_curl.com
$!
$! $Id$
$!
$! File to build images using gnv$libcurl.exe
$!
$! Copyright 2009 - 2020, John Malmberg
$!
$! Permission to use, copy, modify, and/or distribute this software for any
$! purpose with or without fee is hereby granted, provided that the above
$! copyright notice and this permission notice appear in all copies.
$!
$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
$! 10-Jun-2009  J. Malmberg
$!============================================================================
$!
$! Save this so we can get back.
$ default_dir = f$environment("default")
$ define/job gnv_packages_vms 'default_dir'
$!
$ on warning then goto all_exit
$!
$! On VAX, we need to generate a Macro transfer vector.
$ parse_style = "TRADITIONAL"
$ if (f$getsyi("HW_MODEL") .lt. 1024)
$ then
$   @generate_vax_transfer.com
$   arch_name = "VAX"
$ else
$    arch_name = ""
$    arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
$    if (arch_name .eqs. "") then arch_name = "UNK"
$!
$!   Extended parsing option starts with VMS 7.3-1.
$!   There is no 7.4, so that simplifies the parse a bit.
$!
$    node_swvers = f$getsyi("node_swvers")
$    version_patch = f$extract(1, f$length(node_swvers), node_swvers)
$    maj_ver = f$element(0, ".", version_patch)
$    min_ver_patch = f$element(1, ".", version_patch)
$    min_ver = f$element(0, "-", min_ver_patch)
$    patch = f$element(1, "-", min_ver_patch)
$    if patch .eqs. "-" then patch = ""
$    parse_x = 0
$    if maj_ver .ges. "8"
$    then
$       parse_x = 1
$    else
$       if maj_ver .eqs. "7" .and. min_ver .ges. "3" .and. patch .nes. ""
$       then
$          parse_x = 1
$       endif
$    endif
$    if parse_x
$    then
$       parse_style = f$getjpi("", "parse_style_perm")
$    endif
$ endif
$!
$!
$! Move to where the base directories.
$ set def [--]
$!
$!
$! Build the Message file.
$!--------------------------
$ if f$search("[.packages.vms]curlmsg.obj") .eqs. ""
$ then
$   message [.packages.vms]curlmsg.msg/object=[.packages.vms]
$ endif
$ if f$search("gnv$curlmsg.exe") .eqs. ""
$ then
$   link/share=gnv$curlmsg.exe [.packages.vms]curlmsg.obj
$ endif
$!
$!
$! Need to build the common init module.
$!-------------------------------------------
$ cflags = "/list/show=(expan,includ)"
$ init_obj = "[.packages.vms]curl_crtl_init.obj"
$ if f$search(init_obj) .eqs. ""
$ then
$   cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj'
$ endif
$ purge 'init_obj'
$ rename 'init_obj' ;1
$!
$!
$! Need to build the module to test the HP OpenSSL version
$!--------------------------------------------------------
$ if arch_name .nes. "VAX"
$ then
$   rpt_obj = "[.packages.vms]report_openssl_version.obj
$   if f$search(rpt_obj) .eqs. ""
$   then
$       cc'cflags' 'default_dir'report_openssl_version.c/obj='rpt_obj'
$   endif
$   purge 'rpt_obj'
$   rename 'rpt_obj' ;1
$!
$   link/exe='default_dir'report_openssl_version.exe 'rpt_obj'
$   report_openssl_version := $'default_dir'report_openssl_version.exe
$ endif
$!
$!
$ base_link_opt_file = "[.packages.vms.''arch_name']gnv_libcurl_linker.opt"
$ share_link_opt_file = "[.packages.vms.''arch_name']gnv_ssl_libcurl_linker.opt"
$ if f$search(base_link_opt_file) .eqs. ""
$ then
$   base_link_opt_file = "[.packages.vms]gnv_libcurl_linker.opt"
$   share_link_opt_file = "[.packages.vms]gnv_ssl_libcurl_linker.opt"
$   if f$search(base_link_opt_file) .eqs. ""
$   then
$       write sys$output "Can not find base library option file!"
$       goto all_exit
$   endif
$ endif
$!
$! Create the a new option file with special fixup for HP SSL
$! For a shared image, we always want ZLIB and 32 bit HPSSL
$!
$ if f$search("gnv$libzshr32") .eqs. ""
$ then
$   write sys$output "VMSPORTS/GNV LIBZ Shared image not found!"
$   goto all_exit
$ endif
$!
$!
$! Need to check the version of the HP SSL shared image.
$!
$! VAX platform can not be checked this way, it appears symbol lookup
$! was disabled.  VAX has not been updated in a while.
$ if arch_name .eqs. "VAX"
$ then
$   hp_ssl_libcrypto32 = "sys$common:[syslib]ssl$libcrypto_shr32.exe"
$   hp_ssl_libssl32 = "sys$common:[syslib]ssl$libssl_shr32.exe"
$   if f$search(hp_ssl_libcrypto32) .nes. ""
$   then
$       use_hp_ssl = 1
$       curl_ssl_libcrypto32 = hp_ssl_libcrypto32
$       curl_ssl_libssl32 = hp_ssl_libssl32
$       curl_ssl_version = "OpenSSL/0.9.6g"
$   else
$       write sys$output "HP OpenSSL Shared images not found!"
$       goto all_exit
$   endif
$ else
$!
$!   Minimum HP version we can use reports:
$!   "OpenSSL 0.9.8w 23 Apr 2012"
$!
$   use_hp_ssl = 0
$   hp_ssl_libcrypto32 = "sys$share:ssl$libcrypto_shr32.exe"
$   hp_ssl_libssl32 = "sys$share:ssl$libssl_shr32.exe"
$   if f$search(hp_ssl_libcrypto32) .nes. ""
$   then
$       curl_ssl_libcrypto32 = hp_ssl_libcrypto32
$       curl_ssl_libssl32 = hp_ssl_libssl32
$       report_openssl_version 'hp_ssl_libcrypto32' hp_ssl_version
$   endif
$!
$   if f$type(hp_ssl_version) .eqs. "STRING"
$   then
$       curl_ssl_version = hp_ssl_version
$       full_version = f$element(1, " ", hp_ssl_version)
$       ver_maj = f$element(0, ".", full_version)
$       ver_min = f$element(1, ".", full_version)
$       ver_patch = f$element(2, ".", full_version)
$!      ! ver_patch is typically both a number and some letters
$       ver_patch_len = f$length(ver_patch)
$       ver_patchltr = ""
$ver_patch_loop:
$           ver_patchltr_c = f$extract(ver_patch_len - 1, 1, ver_patch)
$           if ver_patchltr_c .les. "9" then goto ver_patch_loop_end
$           ver_patchltr = ver_patchltr_c + ver_patchltr
$           ver_patch_len = ver_patch_len - 1
$           goto ver_patch_loop
$ver_patch_loop_end:
$       ver_patchnum = ver_patch - ver_patchltr
$       if 'ver_maj' .ge. 0
$       then
$           if 'ver_min' .ge. 9
$           then
$               if 'ver_patchnum' .ge. 8
$               then
$                   if ver_patchltr .ges. "w" then use_hp_ssl = 1
$               endif
$           endif
$       endif
$set nover
$       if use_hp_ssl .eq. 0
$       then
$           write sys$output -
   " HP OpenSSL version of ""''hp_ssl_version'"" is too old for shared libcurl!"
$       endif
$   else
$       write sys$output "Unable to get version of HP OpenSSL"
$   endif
$!
$   gnv_ssl_libcrypto32 = "gnv$gnu:[lib]ssl$libcrypto_shr32.exe"
$   gnv_ssl_libssl32 = "gnv$gnu:[lib]ssl$libssl_shr32.exe"
$   if f$search(gnv_ssl_libcrypto32) .nes. ""
$   then
$       report_openssl_version 'gnv_ssl_libcrypto32' gnv_ssl_version
$   endif
$!
$   use_gnv_ssl = 0
$   if f$type(gnv_ssl_version) .eqs. "STRING"
$   then
$       gnv_full_version = f$element(1, " ", gnv_ssl_version)
$       gnv_ver_maj = f$element(0, ".", gnv_full_version)
$       gnv_ver_min = f$element(1, ".", gnv_full_version)
$       gnv_ver_patch = f$element(2, ".", gnv_full_version)
$       gnv_ver_patch_len = f$length(gnv_ver_patch)
$       gnv_ver_patchnum = f$extract(0, gnv_ver_patch_len - 1, gnv_ver_patch)
$       gnv_ver_patchltr = f$extract(gnv_ver_patch_len - 1, 1, gnv_ver_patch)
$       if 'gnv_ver_maj' .ge. 0
$       then
$           if 'gnv_ver_min' .ge. 9
$           then
$               if 'gnv_ver_patchnum' .ge. 8
$               then
$                   if gnv_ver_patchltr .ges. "w" then use_gnv_ssl = 1
$               endif
$           endif
$       endif
$       if use_gnv_ssl .eq. 0
$       then
$           write sys$output -
   "GNV OpenSSL version of ""''gnv_ssl_version'" is too old for shared libcurl!"
$       endif
$!
$!      Prefer to break the tie with the lowest supported version
$!      For simplicity, if the GNV image is present, it will be used.
$!      Version tuple is not a simple compare.
$!
$       if use_gnv_ssl .eq. 1 then
$           curl_ssl_libcrypto32 = gnv_ssl_libcrypto32
$           curl_ssl_libssl32 = gnv_ssl_libssl32
$           curl_ssl_version = gnv_ssl_version
$           use_hp_ssl = 0
$       endif
!$!
$   else
$       write sys$output "Unable to get version of GNV OpenSSL"
$   endif
$!
$!  Need to write a release note section about HP OpenSSL
$!
$create 'default_dir'hp_ssl_release_info.txt
$deck
This package is built on with the OpenSSL version listed below and requires
the shared images from the HP OpenSSL product that is kitted with that
version or a compatible later version.

For Alpha and IA64 platforms, see the url below to register to get the
download URL.  The kit will be HP 1.4-467 or later.
  https://h41379.www4.hpe.com/openvms/products/ssl/ssl.html

For VAX, use the same registration, but remove the kit name from any of the
download URLs provided and put in CPQ-VAXVMS-SSL-V0101-B-1.PCSI-DCX_VAXEXE

If your system can not be upgraded to a compatible version of OpenSSL, then
you can extract the two shared images from the kit and place them in the
[vms$common.gnv.lib]directory of the volume that you are installing GNV and
or GNV compatible components like Curl.

If GNV is installed, you must run the GNV startup procedure before these steps
and before installing Curl.


  1.  make sure that [vms$common.gnv.lib] exists by using the following
      commands.  We want the directory to be in lowercase except on VAX.

    $SET PROCESS/PARSE=extend !If not VAX.
    $CREATE/DIR device:[vms$common.gnv.lib]/prot=w:re

  2. Extract the ssl$crypto_shr32.exe and ssl$libssl_shr32.exe images.

    $PRODUCT EXTRACT FILE -
      /select=(ssl$libcrypto_shr32.exe,ssl$libssl_shr32.exe)-
      /source=device:[dir] -
      /options=noconfirm -
      /destination=device:[vms$common.gnv.lib] SSL

The [vms$common.sys$startup}curl_startup.com procedure will then configure
libcurl to use these shared images instead of the system ones.

When you upgrade SSL on VMS to the newer version of HP SSL, then these copies
should be deleted.

$eod
$!
$ open/append sslr 'default_dir'hp_ssl_release_info.txt
$ write sslr "OpenSSL version used for building this kit: ",curl_ssl_version
$ write sslr ""
$ close sslr
$!
$!
$! LIBZ
$ libzshr_line = ""
$ try_shr = "gnv$libzshr32"
$ if f$search(try_shr) .nes. ""
$ then
$   libzshr_line = "''try_shr'/share"
$ else
$   write sys$output "''try_shr' image not found!"
$   goto all_exit
$ endif
$!
$!
$ gssrtlshr_line = ""
$ if arch_name .nes. "VAX"
$ then
$   try_shr = "sys$share:gss$rtl"
$   if f$search("''try_shr'.exe") .nes. ""
$   then
$       gssrtlshr_line = "''try_shr'/share"
$   else
$       write sys$output "''try_shr' image not found!"
$       goto all_exit
$   endif
$ endif
$!
$!
$!
$ if f$search(share_link_opt_file) .eqs. ""
$ then
$   create 'share_link_opt_file'
$   open/append slopt 'share_link_opt_file'
$   if libzshr_line .nes. "" then write slopt libzshr_line
$   if gssrtlshr_line .nes. "" then write slopt gssrtlshr_line
$   write slopt "gnv$curl_ssl_libcryptoshr32/share"
$   write slopt "gnv$curl_ssl_libsslshr32/share"
$   close slopt
$ endif
$!
$! DCL build puts curllib in architecture directory
$! GNV build uses the makefile.
$ libfile = "[.packages.vms.''arch_name']curllib.olb"
$ if f$search(libfile) .nes. ""
$ then
$   olb_file = libfile
$ else
$   ! GNV based build
$   libfile = "[.lib.^.libs]libcurl.a"
$   if f$search(libfile) .nes. ""
$   then
$       olb_file = libfile
$   else
$       write sys$output -
  "Can not build shared image, libcurl object library not found!"
$       goto all_exit
$   endif
$ endif
$!
$gnv_libcurl_share = "''default_dir'gnv$libcurl.exe"
$!
$ if f$search(gnv_libcurl_share) .eqs. ""
$ then
$   if arch_name .nes. "VAX"
$   then
$       define/user gnv$curl_ssl_libcryptoshr32 'curl_ssl_libcrypto32'
$       define/user gnv$curl_ssl_libsslshr32 'curl_ssl_libssl32'
$       link/dsf='default_dir'gnv$libcurl.dsf/share='gnv_libcurl_share' -
            /map='default_dir'gnv$libcurl.map -
            gnv_packages_vms:gnv_libcurl_symbols.opt/opt,-
            'olb_file'/lib,-
            'share_link_opt_file'/opt
$   else
$!      VAX will not allow the logical name hack for the
$!      SSL libcryto library, it is pulling it in twice if I try it.
$       link/share='gnv_libcurl_share'/map='default_dir'gnv$libcurl.map -
            gnv_packages_vms:gnv_libcurl_xfer.opt/opt,-
            'olb_file'/lib,-
            'base_link_opt_file'/opt
$   endif
$ endif
$!
$!
$ if f$search("[.src]curl-tool_main.o") .nes. ""
$ then
$!  From src/makefile.inc:
$!  # libcurl has sources that provide functions named curlx_* that aren't
$!  # part of the official API, but we re-use the code here to avoid
$!  # duplication.
$!
$!
$   if f$search("[.src]curl.exe") .eqs. ""
$   then
$       define/user gnv$libcurl 'gnv_libcurl_share'
$       link'ldebug'/exe=[.src]curl.exe/dsf=[.src]curl.dsf -
           [.src]curl-tool_main.o, [.src]curl-tool_binmode.o, -
           [.src]curl-tool_bname.o, [.src]curl-tool_cb_dbg.o, -
           [.src]curl-tool_cb_hdr.o, [.src]curl-tool_cb_prg.o, -
           [.src]curl-tool_cb_rea.o, [.src]curl-tool_cb_see.o, -
           [.src]curl-tool_cb_wrt.o, [.src]curl-tool_cfgable.o, -
           [.src]curl-tool_convert.o, [.src]curl-tool_dirhie.o, -
           [.src]curl-tool_doswin.o, [.src]curl-tool_easysrc.o, -
           [.src]curl-tool_formparse.o, [.src]curl-tool_getparam.o, -
           [.src]curl-tool_getpass.o, [.src]curl-tool_help.o, -
           [.src]curl-tool_helpers.o, [.src]curl-tool_homedir.o, -
           [.src]curl-tool_hugehelp.o, [.src]curl-tool_libinfo.o, -
           [.src]curl-tool_metalink.o, [.src]curl-tool_mfiles.o, -
           [.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, -
           [.src]curl-tool_operhlp.o, [.src]curl-tool_panykey.o, -
           [.src]curl-tool_paramhlp.o, [.src]curl-tool_parsecfg.o, -
           [.src]curl-tool_setopt.o, [.src]curl-tool_sleep.o, -
           [.src]curl-tool_urlglob.o, [.src]curl-tool_util.o, -
           [.src]curl-tool_vms.o, [.src]curl-tool_writeenv.o, -
           [.src]curl-tool_writeout.o, [.src]curl-tool_xattr.o, -
           [.src]curl-strtoofft.o, [.src]curl-strdup.o, [.src]curl-strcase.o, -
           [.src]curl-nonblock.o, gnv_packages_vms:curlmsg.obj,-
           sys$input:/opt
gnv$libcurl/share
gnv_packages_vms:curl_crtl_init.obj
$   endif
$ else
$   curl_exe = "[.src]curl.exe"
$   curl_dsf = "[.src]curl.dsf"
$   curl_main = "[.packages.vms.''arch_name']tool_main.obj"
$   curl_src = "[.packages.vms.''arch_name']curlsrc.olb"
$   curl_lib = "[.packages.vms.''arch_name']curllib.olb"
$   strcase = "strcase"
$   nonblock = "nonblock"
$   warnless = "warnless"
$!
$!  Extended parse style requires special quoting
$!
$   if (arch_name .nes. "VAX") .and. (parse_style .eqs. "EXTENDED")
$   then
$       strcase = """strcase"""
$       nonblock = """nonblock"""
$       warnless = """warnless"""
$   endif
$   if f$search(curl_exe) .eqs. ""
$   then
$       define/user gnv$libcurl 'gnv_libcurl_share'
$       link'ldebug'/exe='curl_exe'/dsf='curl_dsf' -
           'curl_main','curl_src'/lib, -
           'curl_lib'/library/include=-
           ('strcase','nonblock','warnless'),-
           gnv_packages_vms:curlmsg.obj,-
           sys$input:/opt
gnv$libcurl/share
gnv_packages_vms:curl_crtl_init.obj
$   endif
$ endif
$!
$!
$!
$! in6addr_missing so skip building:
$! [.server]sws.o
$! [.server]sockfilt.o
$! [.server]tftpd.o
$!
$!
$ target = "10-at-a-time"
$ if f$search("[.docs.examples]''target'.o") .eqs. ""
$ then
$   write sys$output "examples not built"
$   goto all_exit
$ endif
$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
$ then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$ endif
$!
$!
$ target = "anyauthput"
$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
$ then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$ endif
$!
$!
$ target = "certinfo"
$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
$ then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$ endif
$!
$!
$ target = "cookie_interface"
$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
$ then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$ endif
$!
$!
$ target = "debug"
$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
$ then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$ endif
$!
$!
$ target = "fileupload"
$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
$ then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$ endif
$!
$!
$ target = "fopen"
$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
$ then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$ endif
$!
$!
$target = "ftpget"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "ftpgetresp"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "ftpupload"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "getinfo"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "getinmemory"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "http-post"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "httpcustomheader"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "httpput"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "https"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "multi-app"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "multi-debugcallback"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "multi-double"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "multi-post"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "multi-single"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "persistent"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "post-callback"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "postit2"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "sendrecv"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "sepheaders"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "simple"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "simplepost"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$!
$target = "simplessl"
$if f$search("[.docs.examples]''target'.exe") .eqs. ""
$then
$   define/user gnv$libcurl 'gnv_libcurl_share'
$   link'ldebug'/exe=[.docs.examples]'target'.exe-
    /dsf=[.docs.examples]'target'.dsf -
    [.docs.examples]'target'.o,-
    gnv$'target'.opt/opt,-
    sys$input:/opt
gnv$libcurl/share
$endif
$!
$! =============== End of docs/examples =========================
$!
$!
$all_exit:
$set def 'default_dir'
$exit '$status'
$!
