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