• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1$! File: gnv_link_curl.com
2$!
3$! File to build images using gnv$libcurl.exe
4$!
5$! Copyright (C) John Malmberg
6$!
7$! Permission to use, copy, modify, and/or distribute this software for any
8$! purpose with or without fee is hereby granted, provided that the above
9$! copyright notice and this permission notice appear in all copies.
10$!
11$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
17$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18$!
19$! SPDX-License-Identifier: ISC
20$!
21$!============================================================================
22$!
23$! Save this so we can get back.
24$ default_dir = f$environment("default")
25$ define/job gnv_packages_vms 'default_dir'
26$!
27$ on warning then goto all_exit
28$!
29$! On VAX, we need to generate a Macro transfer vector.
30$ parse_style = "TRADITIONAL"
31$ if (f$getsyi("HW_MODEL") .lt. 1024)
32$ then
33$   @generate_vax_transfer.com
34$   arch_name = "VAX"
35$ else
36$    arch_name = ""
37$    arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
38$    if (arch_name .eqs. "") then arch_name = "UNK"
39$!
40$!   Extended parsing option starts with VMS 7.3-1.
41$!   There is no 7.4, so that simplifies the parse a bit.
42$!
43$    node_swvers = f$getsyi("node_swvers")
44$    version_patch = f$extract(1, f$length(node_swvers), node_swvers)
45$    maj_ver = f$element(0, ".", version_patch)
46$    min_ver_patch = f$element(1, ".", version_patch)
47$    min_ver = f$element(0, "-", min_ver_patch)
48$    patch = f$element(1, "-", min_ver_patch)
49$    if patch .eqs. "-" then patch = ""
50$    parse_x = 0
51$    if maj_ver .ges. "8"
52$    then
53$       parse_x = 1
54$    else
55$       if maj_ver .eqs. "7" .and. min_ver .ges. "3" .and. patch .nes. ""
56$       then
57$          parse_x = 1
58$       endif
59$    endif
60$    if parse_x
61$    then
62$       parse_style = f$getjpi("", "parse_style_perm")
63$    endif
64$ endif
65$!
66$!
67$! Move to where the base directories.
68$ set def [--]
69$!
70$!
71$! Build the Message file.
72$!--------------------------
73$ if f$search("[.packages.vms]curlmsg.obj") .eqs. ""
74$ then
75$   message [.packages.vms]curlmsg.msg/object=[.packages.vms]
76$ endif
77$ if f$search("gnv$curlmsg.exe") .eqs. ""
78$ then
79$   link/share=gnv$curlmsg.exe [.packages.vms]curlmsg.obj
80$ endif
81$!
82$!
83$! Need to build the common init module.
84$!-------------------------------------------
85$ cflags = "/list/show=(expan,includ)"
86$ init_obj = "[.packages.vms]curl_crtl_init.obj"
87$ if f$search(init_obj) .eqs. ""
88$ then
89$   cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj'
90$ endif
91$ purge 'init_obj'
92$ rename 'init_obj' ;1
93$!
94$!
95$! Need to build the module to test the HP OpenSSL version
96$!--------------------------------------------------------
97$ if arch_name .nes. "VAX"
98$ then
99$   rpt_obj = "[.packages.vms]report_openssl_version.obj
100$   if f$search(rpt_obj) .eqs. ""
101$   then
102$       cc'cflags' 'default_dir'report_openssl_version.c/obj='rpt_obj'
103$   endif
104$   purge 'rpt_obj'
105$   rename 'rpt_obj' ;1
106$!
107$   link/exe='default_dir'report_openssl_version.exe 'rpt_obj'
108$   report_openssl_version := $'default_dir'report_openssl_version.exe
109$ endif
110$!
111$!
112$ base_link_opt_file = "[.packages.vms.''arch_name']gnv_libcurl_linker.opt"
113$ share_link_opt_file = "[.packages.vms.''arch_name']gnv_ssl_libcurl_linker.opt"
114$ if f$search(base_link_opt_file) .eqs. ""
115$ then
116$   base_link_opt_file = "[.packages.vms]gnv_libcurl_linker.opt"
117$   share_link_opt_file = "[.packages.vms]gnv_ssl_libcurl_linker.opt"
118$   if f$search(base_link_opt_file) .eqs. ""
119$   then
120$       write sys$output "Can not find base library option file!"
121$       goto all_exit
122$   endif
123$ endif
124$!
125$! Create the a new option file with special fixup for HP SSL
126$! For a shared image, we always want ZLIB and 32 bit HPSSL
127$!
128$ if f$search("gnv$libzshr32") .eqs. ""
129$ then
130$   write sys$output "VMSPORTS/GNV LIBZ Shared image not found!"
131$   goto all_exit
132$ endif
133$!
134$!
135$! Need to check the version of the HP SSL shared image.
136$!
137$! VAX platform can not be checked this way, it appears symbol lookup
138$! was disabled.  VAX has not been updated in a while.
139$ if arch_name .eqs. "VAX"
140$ then
141$   hp_ssl_libcrypto32 = "sys$common:[syslib]ssl$libcrypto_shr32.exe"
142$   hp_ssl_libssl32 = "sys$common:[syslib]ssl$libssl_shr32.exe"
143$   if f$search(hp_ssl_libcrypto32) .nes. ""
144$   then
145$       use_hp_ssl = 1
146$       curl_ssl_libcrypto32 = hp_ssl_libcrypto32
147$       curl_ssl_libssl32 = hp_ssl_libssl32
148$       curl_ssl_version = "OpenSSL/0.9.6g"
149$   else
150$       write sys$output "HP OpenSSL Shared images not found!"
151$       goto all_exit
152$   endif
153$ else
154$!
155$!   Minimum HP version we can use reports:
156$!   "OpenSSL 0.9.8w 23 Apr 2012"
157$!
158$   use_hp_ssl = 0
159$   hp_ssl_libcrypto32 = "sys$share:ssl$libcrypto_shr32.exe"
160$   hp_ssl_libssl32 = "sys$share:ssl$libssl_shr32.exe"
161$   if f$search(hp_ssl_libcrypto32) .nes. ""
162$   then
163$       curl_ssl_libcrypto32 = hp_ssl_libcrypto32
164$       curl_ssl_libssl32 = hp_ssl_libssl32
165$       report_openssl_version 'hp_ssl_libcrypto32' hp_ssl_version
166$   endif
167$!
168$   if f$type(hp_ssl_version) .eqs. "STRING"
169$   then
170$       curl_ssl_version = hp_ssl_version
171$       full_version = f$element(1, " ", hp_ssl_version)
172$       ver_maj = f$element(0, ".", full_version)
173$       ver_min = f$element(1, ".", full_version)
174$       ver_patch = f$element(2, ".", full_version)
175$!      ! ver_patch is typically both a number and some letters
176$       ver_patch_len = f$length(ver_patch)
177$       ver_patchltr = ""
178$ver_patch_loop:
179$           ver_patchltr_c = f$extract(ver_patch_len - 1, 1, ver_patch)
180$           if ver_patchltr_c .les. "9" then goto ver_patch_loop_end
181$           ver_patchltr = ver_patchltr_c + ver_patchltr
182$           ver_patch_len = ver_patch_len - 1
183$           goto ver_patch_loop
184$ver_patch_loop_end:
185$       ver_patchnum = ver_patch - ver_patchltr
186$       if 'ver_maj' .ge. 0
187$       then
188$           if 'ver_min' .ge. 9
189$           then
190$               if 'ver_patchnum' .ge. 8
191$               then
192$                   if ver_patchltr .ges. "w" then use_hp_ssl = 1
193$               endif
194$           endif
195$       endif
196$set nover
197$       if use_hp_ssl .eq. 0
198$       then
199$           write sys$output -
200   " HP OpenSSL version of ""''hp_ssl_version'"" is too old for shared libcurl!"
201$       endif
202$   else
203$       write sys$output "Unable to get version of HP OpenSSL"
204$   endif
205$!
206$   gnv_ssl_libcrypto32 = "gnv$gnu:[lib]ssl$libcrypto_shr32.exe"
207$   gnv_ssl_libssl32 = "gnv$gnu:[lib]ssl$libssl_shr32.exe"
208$   if f$search(gnv_ssl_libcrypto32) .nes. ""
209$   then
210$       report_openssl_version 'gnv_ssl_libcrypto32' gnv_ssl_version
211$   endif
212$!
213$   use_gnv_ssl = 0
214$   if f$type(gnv_ssl_version) .eqs. "STRING"
215$   then
216$       gnv_full_version = f$element(1, " ", gnv_ssl_version)
217$       gnv_ver_maj = f$element(0, ".", gnv_full_version)
218$       gnv_ver_min = f$element(1, ".", gnv_full_version)
219$       gnv_ver_patch = f$element(2, ".", gnv_full_version)
220$       gnv_ver_patch_len = f$length(gnv_ver_patch)
221$       gnv_ver_patchnum = f$extract(0, gnv_ver_patch_len - 1, gnv_ver_patch)
222$       gnv_ver_patchltr = f$extract(gnv_ver_patch_len - 1, 1, gnv_ver_patch)
223$       if 'gnv_ver_maj' .ge. 0
224$       then
225$           if 'gnv_ver_min' .ge. 9
226$           then
227$               if 'gnv_ver_patchnum' .ge. 8
228$               then
229$                   if gnv_ver_patchltr .ges. "w" then use_gnv_ssl = 1
230$               endif
231$           endif
232$       endif
233$       if use_gnv_ssl .eq. 0
234$       then
235$           write sys$output -
236   "GNV OpenSSL version of ""''gnv_ssl_version'" is too old for shared libcurl!"
237$       endif
238$!
239$!      Prefer to break the tie with the lowest supported version
240$!      For simplicity, if the GNV image is present, it will be used.
241$!      Version tuple is not a simple compare.
242$!
243$       if use_gnv_ssl .eq. 1 then
244$           curl_ssl_libcrypto32 = gnv_ssl_libcrypto32
245$           curl_ssl_libssl32 = gnv_ssl_libssl32
246$           curl_ssl_version = gnv_ssl_version
247$           use_hp_ssl = 0
248$       endif
249!$!
250$   else
251$       write sys$output "Unable to get version of GNV OpenSSL"
252$   endif
253$!
254$!  Need to write a release note section about HP OpenSSL
255$!
256$create 'default_dir'hp_ssl_release_info.txt
257$deck
258This package is built on with the OpenSSL version listed below and requires
259the shared images from the HP OpenSSL product that is kitted with that
260version or a compatible later version.
261
262For Alpha and IA64 platforms, see the url below to register to get the
263download URL.  The kit will be HP 1.4-467 or later.
264  https://h41379.www4.hpe.com/openvms/products/ssl/ssl.html
265
266For VAX, use the same registration, but remove the kit name from any of the
267download URLs provided and put in CPQ-VAXVMS-SSL-V0101-B-1.PCSI-DCX_VAXEXE
268
269If your system can not be upgraded to a compatible version of OpenSSL, then
270you can extract the two shared images from the kit and place them in the
271[vms$common.gnv.lib]directory of the volume that you are installing GNV and
272or GNV compatible components like Curl.
273
274If GNV is installed, you must run the GNV startup procedure before these steps
275and before installing Curl.
276
277
278  1.  make sure that [vms$common.gnv.lib] exists by using the following
279      commands.  We want the directory to be in lowercase except on VAX.
280
281    $SET PROCESS/PARSE=extend !If not VAX.
282    $CREATE/DIR device:[vms$common.gnv.lib]/prot=w:re
283
284  2. Extract the ssl$crypto_shr32.exe and ssl$libssl_shr32.exe images.
285
286    $PRODUCT EXTRACT FILE -
287      /select=(ssl$libcrypto_shr32.exe,ssl$libssl_shr32.exe)-
288      /source=device:[dir] -
289      /options=noconfirm -
290      /destination=device:[vms$common.gnv.lib] SSL
291
292The [vms$common.sys$startup}curl_startup.com procedure will then configure
293libcurl to use these shared images instead of the system ones.
294
295When you upgrade SSL on VMS to the newer version of HP SSL, then these copies
296should be deleted.
297
298$eod
299$!
300$ open/append sslr 'default_dir'hp_ssl_release_info.txt
301$ write sslr "OpenSSL version used for building this kit: ",curl_ssl_version
302$ write sslr ""
303$ close sslr
304$!
305$!
306$! LIBZ
307$ libzshr_line = ""
308$ try_shr = "gnv$libzshr32"
309$ if f$search(try_shr) .nes. ""
310$ then
311$   libzshr_line = "''try_shr'/share"
312$ else
313$   write sys$output "''try_shr' image not found!"
314$   goto all_exit
315$ endif
316$!
317$!
318$ gssrtlshr_line = ""
319$ if arch_name .nes. "VAX"
320$ then
321$   try_shr = "sys$share:gss$rtl"
322$   if f$search("''try_shr'.exe") .nes. ""
323$   then
324$       gssrtlshr_line = "''try_shr'/share"
325$   else
326$       write sys$output "''try_shr' image not found!"
327$       goto all_exit
328$   endif
329$ endif
330$!
331$!
332$!
333$ if f$search(share_link_opt_file) .eqs. ""
334$ then
335$   create 'share_link_opt_file'
336$   open/append slopt 'share_link_opt_file'
337$   if libzshr_line .nes. "" then write slopt libzshr_line
338$   if gssrtlshr_line .nes. "" then write slopt gssrtlshr_line
339$   write slopt "gnv$curl_ssl_libcryptoshr32/share"
340$   write slopt "gnv$curl_ssl_libsslshr32/share"
341$   close slopt
342$ endif
343$!
344$! DCL build puts curllib in architecture directory
345$! GNV build uses the makefile.
346$ libfile = "[.packages.vms.''arch_name']curllib.olb"
347$ if f$search(libfile) .nes. ""
348$ then
349$   olb_file = libfile
350$ else
351$   ! GNV based build
352$   libfile = "[.lib.^.libs]libcurl.a"
353$   if f$search(libfile) .nes. ""
354$   then
355$       olb_file = libfile
356$   else
357$       write sys$output -
358  "Can not build shared image, libcurl object library not found!"
359$       goto all_exit
360$   endif
361$ endif
362$!
363$gnv_libcurl_share = "''default_dir'gnv$libcurl.exe"
364$!
365$ if f$search(gnv_libcurl_share) .eqs. ""
366$ then
367$   if arch_name .nes. "VAX"
368$   then
369$       define/user gnv$curl_ssl_libcryptoshr32 'curl_ssl_libcrypto32'
370$       define/user gnv$curl_ssl_libsslshr32 'curl_ssl_libssl32'
371$       link/dsf='default_dir'gnv$libcurl.dsf/share='gnv_libcurl_share' -
372            /map='default_dir'gnv$libcurl.map -
373            gnv_packages_vms:gnv_libcurl_symbols.opt/opt,-
374            'olb_file'/lib,-
375            'share_link_opt_file'/opt
376$   else
377$!      VAX will not allow the logical name hack for the
378$!      SSL libcryto library, it is pulling it in twice if I try it.
379$       link/share='gnv_libcurl_share'/map='default_dir'gnv$libcurl.map -
380            gnv_packages_vms:gnv_libcurl_xfer.opt/opt,-
381            'olb_file'/lib,-
382            'base_link_opt_file'/opt
383$   endif
384$ endif
385$!
386$!
387$ if f$search("[.src]curl-tool_main.o") .nes. ""
388$ then
389$!  From src/makefile.inc:
390$!  # libcurl has sources that provide functions named curlx_* that aren't
391$!  # part of the official API, but we re-use the code here to avoid
392$!  # duplication.
393$!
394$!
395$   if f$search("[.src]curl.exe") .eqs. ""
396$   then
397$       define/user gnv$libcurl 'gnv_libcurl_share'
398$       link'ldebug'/exe=[.src]curl.exe/dsf=[.src]curl.dsf -
399           [.src]curl-tool_main.o, [.src]curl-tool_binmode.o, -
400           [.src]curl-tool_bname.o, [.src]curl-tool_cb_dbg.o, -
401           [.src]curl-tool_cb_hdr.o, [.src]curl-tool_cb_prg.o, -
402           [.src]curl-tool_cb_rea.o, [.src]curl-tool_cb_see.o, -
403           [.src]curl-tool_cb_wrt.o, [.src]curl-tool_cfgable.o, -
404           [.src]curl-tool_convert.o, [.src]curl-tool_dirhie.o, -
405           [.src]curl-tool_doswin.o, [.src]curl-tool_easysrc.o, -
406           [.src]curl-tool_formparse.o, [.src]curl-tool_getparam.o, -
407           [.src]curl-tool_getpass.o, [.src]curl-tool_help.o, -
408           [.src]curl-tool_helpers.o, [.src]curl-tool_homedir.o, -
409           [.src]curl-tool_hugehelp.o, [.src]curl-tool_libinfo.o, -
410           [.src]curl-tool_mfiles.o, -
411           [.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, -
412           [.src]curl-tool_operhlp.o, -
413           [.src]curl-tool_paramhlp.o, [.src]curl-tool_parsecfg.o, -
414           [.src]curl-tool_setopt.o, [.src]curl-tool_sleep.o, -
415           [.src]curl-tool_urlglob.o, [.src]curl-tool_util.o, -
416           [.src]curl-tool_vms.o, [.src]curl-tool_writeenv.o, -
417           [.src]curl-tool_writeout.o, [.src]curl-tool_xattr.o, -
418           [.src]curl-strtoofft.o, [.src]curl-strdup.o, [.src]curl-strcase.o, -
419           [.src]curl-nonblock.o, gnv_packages_vms:curlmsg.obj,-
420           sys$input:/opt
421gnv$libcurl/share
422gnv_packages_vms:curl_crtl_init.obj
423$   endif
424$ else
425$   curl_exe = "[.src]curl.exe"
426$   curl_dsf = "[.src]curl.dsf"
427$   curl_main = "[.packages.vms.''arch_name']tool_main.obj"
428$   curl_src = "[.packages.vms.''arch_name']curlsrc.olb"
429$   curl_lib = "[.packages.vms.''arch_name']curllib.olb"
430$   strcase = "strcase"
431$   nonblock = "nonblock"
432$   warnless = "warnless"
433$!
434$!  Extended parse style requires special quoting
435$!
436$   if (arch_name .nes. "VAX") .and. (parse_style .eqs. "EXTENDED")
437$   then
438$       strcase = """strcase"""
439$       nonblock = """nonblock"""
440$       warnless = """warnless"""
441$   endif
442$   if f$search(curl_exe) .eqs. ""
443$   then
444$       define/user gnv$libcurl 'gnv_libcurl_share'
445$       link'ldebug'/exe='curl_exe'/dsf='curl_dsf' -
446           'curl_main','curl_src'/lib, -
447           'curl_lib'/library/include=-
448           ('strcase','nonblock','warnless'),-
449           gnv_packages_vms:curlmsg.obj,-
450           sys$input:/opt
451gnv$libcurl/share
452gnv_packages_vms:curl_crtl_init.obj
453$   endif
454$ endif
455$!
456$!
457$!
458$! in6addr_missing so skip building:
459$! [.server]sws.o
460$! [.server]sockfilt.o
461$! [.server]tftpd.o
462$!
463$!
464$ target = "10-at-a-time"
465$ if f$search("[.docs.examples]''target'.o") .eqs. ""
466$ then
467$   write sys$output "examples not built"
468$   goto all_exit
469$ endif
470$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
471$ then
472$   define/user gnv$libcurl 'gnv_libcurl_share'
473$   link'ldebug'/exe=[.docs.examples]'target'.exe-
474    /dsf=[.docs.examples]'target'.dsf -
475    [.docs.examples]'target'.o,-
476    gnv$'target'.opt/opt,-
477    sys$input:/opt
478gnv$libcurl/share
479$ endif
480$!
481$!
482$ target = "anyauthput"
483$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
484$ then
485$   define/user gnv$libcurl 'gnv_libcurl_share'
486$   link'ldebug'/exe=[.docs.examples]'target'.exe-
487    /dsf=[.docs.examples]'target'.dsf -
488    [.docs.examples]'target'.o,-
489    gnv$'target'.opt/opt,-
490    sys$input:/opt
491gnv$libcurl/share
492$ endif
493$!
494$!
495$ target = "certinfo"
496$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
497$ then
498$   define/user gnv$libcurl 'gnv_libcurl_share'
499$   link'ldebug'/exe=[.docs.examples]'target'.exe-
500    /dsf=[.docs.examples]'target'.dsf -
501    [.docs.examples]'target'.o,-
502    gnv$'target'.opt/opt,-
503    sys$input:/opt
504gnv$libcurl/share
505$ endif
506$!
507$!
508$ target = "cookie_interface"
509$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
510$ then
511$   define/user gnv$libcurl 'gnv_libcurl_share'
512$   link'ldebug'/exe=[.docs.examples]'target'.exe-
513    /dsf=[.docs.examples]'target'.dsf -
514    [.docs.examples]'target'.o,-
515    gnv$'target'.opt/opt,-
516    sys$input:/opt
517gnv$libcurl/share
518$ endif
519$!
520$!
521$ target = "debug"
522$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
523$ then
524$   define/user gnv$libcurl 'gnv_libcurl_share'
525$   link'ldebug'/exe=[.docs.examples]'target'.exe-
526    /dsf=[.docs.examples]'target'.dsf -
527    [.docs.examples]'target'.o,-
528    gnv$'target'.opt/opt,-
529    sys$input:/opt
530gnv$libcurl/share
531$ endif
532$!
533$!
534$ target = "fileupload"
535$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
536$ then
537$   define/user gnv$libcurl 'gnv_libcurl_share'
538$   link'ldebug'/exe=[.docs.examples]'target'.exe-
539    /dsf=[.docs.examples]'target'.dsf -
540    [.docs.examples]'target'.o,-
541    gnv$'target'.opt/opt,-
542    sys$input:/opt
543gnv$libcurl/share
544$ endif
545$!
546$!
547$ target = "fopen"
548$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
549$ then
550$   define/user gnv$libcurl 'gnv_libcurl_share'
551$   link'ldebug'/exe=[.docs.examples]'target'.exe-
552    /dsf=[.docs.examples]'target'.dsf -
553    [.docs.examples]'target'.o,-
554    gnv$'target'.opt/opt,-
555    sys$input:/opt
556gnv$libcurl/share
557$ endif
558$!
559$!
560$target = "ftpget"
561$if f$search("[.docs.examples]''target'.exe") .eqs. ""
562$then
563$   define/user gnv$libcurl 'gnv_libcurl_share'
564$   link'ldebug'/exe=[.docs.examples]'target'.exe-
565    /dsf=[.docs.examples]'target'.dsf -
566    [.docs.examples]'target'.o,-
567    gnv$'target'.opt/opt,-
568    sys$input:/opt
569gnv$libcurl/share
570$endif
571$!
572$!
573$target = "ftpgetresp"
574$if f$search("[.docs.examples]''target'.exe") .eqs. ""
575$then
576$   define/user gnv$libcurl 'gnv_libcurl_share'
577$   link'ldebug'/exe=[.docs.examples]'target'.exe-
578    /dsf=[.docs.examples]'target'.dsf -
579    [.docs.examples]'target'.o,-
580    gnv$'target'.opt/opt,-
581    sys$input:/opt
582gnv$libcurl/share
583$endif
584$!
585$!
586$target = "ftpupload"
587$if f$search("[.docs.examples]''target'.exe") .eqs. ""
588$then
589$   define/user gnv$libcurl 'gnv_libcurl_share'
590$   link'ldebug'/exe=[.docs.examples]'target'.exe-
591    /dsf=[.docs.examples]'target'.dsf -
592    [.docs.examples]'target'.o,-
593    gnv$'target'.opt/opt,-
594    sys$input:/opt
595gnv$libcurl/share
596$endif
597$!
598$!
599$target = "getinfo"
600$if f$search("[.docs.examples]''target'.exe") .eqs. ""
601$then
602$   define/user gnv$libcurl 'gnv_libcurl_share'
603$   link'ldebug'/exe=[.docs.examples]'target'.exe-
604    /dsf=[.docs.examples]'target'.dsf -
605    [.docs.examples]'target'.o,-
606    gnv$'target'.opt/opt,-
607    sys$input:/opt
608gnv$libcurl/share
609$endif
610$!
611$!
612$target = "getinmemory"
613$if f$search("[.docs.examples]''target'.exe") .eqs. ""
614$then
615$   define/user gnv$libcurl 'gnv_libcurl_share'
616$   link'ldebug'/exe=[.docs.examples]'target'.exe-
617    /dsf=[.docs.examples]'target'.dsf -
618    [.docs.examples]'target'.o,-
619    gnv$'target'.opt/opt,-
620    sys$input:/opt
621gnv$libcurl/share
622$endif
623$!
624$!
625$target = "http-post"
626$if f$search("[.docs.examples]''target'.exe") .eqs. ""
627$then
628$   define/user gnv$libcurl 'gnv_libcurl_share'
629$   link'ldebug'/exe=[.docs.examples]'target'.exe-
630    /dsf=[.docs.examples]'target'.dsf -
631    [.docs.examples]'target'.o,-
632    gnv$'target'.opt/opt,-
633    sys$input:/opt
634gnv$libcurl/share
635$endif
636$!
637$!
638$target = "httpcustomheader"
639$if f$search("[.docs.examples]''target'.exe") .eqs. ""
640$then
641$   define/user gnv$libcurl 'gnv_libcurl_share'
642$   link'ldebug'/exe=[.docs.examples]'target'.exe-
643    /dsf=[.docs.examples]'target'.dsf -
644    [.docs.examples]'target'.o,-
645    gnv$'target'.opt/opt,-
646    sys$input:/opt
647gnv$libcurl/share
648$endif
649$!
650$!
651$target = "httpput"
652$if f$search("[.docs.examples]''target'.exe") .eqs. ""
653$then
654$   define/user gnv$libcurl 'gnv_libcurl_share'
655$   link'ldebug'/exe=[.docs.examples]'target'.exe-
656    /dsf=[.docs.examples]'target'.dsf -
657    [.docs.examples]'target'.o,-
658    gnv$'target'.opt/opt,-
659    sys$input:/opt
660gnv$libcurl/share
661$endif
662$!
663$!
664$target = "https"
665$if f$search("[.docs.examples]''target'.exe") .eqs. ""
666$then
667$   define/user gnv$libcurl 'gnv_libcurl_share'
668$   link'ldebug'/exe=[.docs.examples]'target'.exe-
669    /dsf=[.docs.examples]'target'.dsf -
670    [.docs.examples]'target'.o,-
671    gnv$'target'.opt/opt,-
672    sys$input:/opt
673gnv$libcurl/share
674$endif
675$!
676$!
677$target = "multi-app"
678$if f$search("[.docs.examples]''target'.exe") .eqs. ""
679$then
680$   define/user gnv$libcurl 'gnv_libcurl_share'
681$   link'ldebug'/exe=[.docs.examples]'target'.exe-
682    /dsf=[.docs.examples]'target'.dsf -
683    [.docs.examples]'target'.o,-
684    gnv$'target'.opt/opt,-
685    sys$input:/opt
686gnv$libcurl/share
687$endif
688$!
689$!
690$target = "multi-debugcallback"
691$if f$search("[.docs.examples]''target'.exe") .eqs. ""
692$then
693$   define/user gnv$libcurl 'gnv_libcurl_share'
694$   link'ldebug'/exe=[.docs.examples]'target'.exe-
695    /dsf=[.docs.examples]'target'.dsf -
696    [.docs.examples]'target'.o,-
697    gnv$'target'.opt/opt,-
698    sys$input:/opt
699gnv$libcurl/share
700$endif
701$!
702$!
703$target = "multi-double"
704$if f$search("[.docs.examples]''target'.exe") .eqs. ""
705$then
706$   define/user gnv$libcurl 'gnv_libcurl_share'
707$   link'ldebug'/exe=[.docs.examples]'target'.exe-
708    /dsf=[.docs.examples]'target'.dsf -
709    [.docs.examples]'target'.o,-
710    gnv$'target'.opt/opt,-
711    sys$input:/opt
712gnv$libcurl/share
713$endif
714$!
715$!
716$target = "multi-post"
717$if f$search("[.docs.examples]''target'.exe") .eqs. ""
718$then
719$   define/user gnv$libcurl 'gnv_libcurl_share'
720$   link'ldebug'/exe=[.docs.examples]'target'.exe-
721    /dsf=[.docs.examples]'target'.dsf -
722    [.docs.examples]'target'.o,-
723    gnv$'target'.opt/opt,-
724    sys$input:/opt
725gnv$libcurl/share
726$endif
727$!
728$!
729$target = "multi-single"
730$if f$search("[.docs.examples]''target'.exe") .eqs. ""
731$then
732$   define/user gnv$libcurl 'gnv_libcurl_share'
733$   link'ldebug'/exe=[.docs.examples]'target'.exe-
734    /dsf=[.docs.examples]'target'.dsf -
735    [.docs.examples]'target'.o,-
736    gnv$'target'.opt/opt,-
737    sys$input:/opt
738gnv$libcurl/share
739$endif
740$!
741$!
742$target = "persistent"
743$if f$search("[.docs.examples]''target'.exe") .eqs. ""
744$then
745$   define/user gnv$libcurl 'gnv_libcurl_share'
746$   link'ldebug'/exe=[.docs.examples]'target'.exe-
747    /dsf=[.docs.examples]'target'.dsf -
748    [.docs.examples]'target'.o,-
749    gnv$'target'.opt/opt,-
750    sys$input:/opt
751gnv$libcurl/share
752$endif
753$!
754$!
755$target = "post-callback"
756$if f$search("[.docs.examples]''target'.exe") .eqs. ""
757$then
758$   define/user gnv$libcurl 'gnv_libcurl_share'
759$   link'ldebug'/exe=[.docs.examples]'target'.exe-
760    /dsf=[.docs.examples]'target'.dsf -
761    [.docs.examples]'target'.o,-
762    gnv$'target'.opt/opt,-
763    sys$input:/opt
764gnv$libcurl/share
765$endif
766$!
767$!
768$target = "postit2"
769$if f$search("[.docs.examples]''target'.exe") .eqs. ""
770$then
771$   define/user gnv$libcurl 'gnv_libcurl_share'
772$   link'ldebug'/exe=[.docs.examples]'target'.exe-
773    /dsf=[.docs.examples]'target'.dsf -
774    [.docs.examples]'target'.o,-
775    gnv$'target'.opt/opt,-
776    sys$input:/opt
777gnv$libcurl/share
778$endif
779$!
780$!
781$target = "sendrecv"
782$if f$search("[.docs.examples]''target'.exe") .eqs. ""
783$then
784$   define/user gnv$libcurl 'gnv_libcurl_share'
785$   link'ldebug'/exe=[.docs.examples]'target'.exe-
786    /dsf=[.docs.examples]'target'.dsf -
787    [.docs.examples]'target'.o,-
788    gnv$'target'.opt/opt,-
789    sys$input:/opt
790gnv$libcurl/share
791$endif
792$!
793$!
794$target = "sepheaders"
795$if f$search("[.docs.examples]''target'.exe") .eqs. ""
796$then
797$   define/user gnv$libcurl 'gnv_libcurl_share'
798$   link'ldebug'/exe=[.docs.examples]'target'.exe-
799    /dsf=[.docs.examples]'target'.dsf -
800    [.docs.examples]'target'.o,-
801    gnv$'target'.opt/opt,-
802    sys$input:/opt
803gnv$libcurl/share
804$endif
805$!
806$!
807$target = "simple"
808$if f$search("[.docs.examples]''target'.exe") .eqs. ""
809$then
810$   define/user gnv$libcurl 'gnv_libcurl_share'
811$   link'ldebug'/exe=[.docs.examples]'target'.exe-
812    /dsf=[.docs.examples]'target'.dsf -
813    [.docs.examples]'target'.o,-
814    gnv$'target'.opt/opt,-
815    sys$input:/opt
816gnv$libcurl/share
817$endif
818$!
819$!
820$target = "simplepost"
821$if f$search("[.docs.examples]''target'.exe") .eqs. ""
822$then
823$   define/user gnv$libcurl 'gnv_libcurl_share'
824$   link'ldebug'/exe=[.docs.examples]'target'.exe-
825    /dsf=[.docs.examples]'target'.dsf -
826    [.docs.examples]'target'.o,-
827    gnv$'target'.opt/opt,-
828    sys$input:/opt
829gnv$libcurl/share
830$endif
831$!
832$!
833$target = "simplessl"
834$if f$search("[.docs.examples]''target'.exe") .eqs. ""
835$then
836$   define/user gnv$libcurl 'gnv_libcurl_share'
837$   link'ldebug'/exe=[.docs.examples]'target'.exe-
838    /dsf=[.docs.examples]'target'.dsf -
839    [.docs.examples]'target'.o,-
840    gnv$'target'.opt/opt,-
841    sys$input:/opt
842gnv$libcurl/share
843$endif
844$!
845$! =============== End of docs/examples =========================
846$!
847$!
848$all_exit:
849$set def 'default_dir'
850$exit '$status'
851$!
852