$! File: gnv_link_curl.com $! $! $Id$ $! $! File to build images using gnv$libcurl.exe $! $! Copyright 2009, 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' $!