• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1$! File: gnv_link_curl.com
2$!
3$! $Id$
4$!
5$! File to build images using gnv$libcurl.exe
6$!
7$! Copyright 2009 - 2020, 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 is typically both a number and some letters
177$       ver_patch_len = f$length(ver_patch)
178$       ver_patchltr = ""
179$ver_patch_loop:
180$           ver_patchltr_c = f$extract(ver_patch_len - 1, 1, ver_patch)
181$           if ver_patchltr_c .les. "9" then goto ver_patch_loop_end
182$           ver_patchltr = ver_patchltr_c + ver_patchltr
183$           ver_patch_len = ver_patch_len - 1
184$           goto ver_patch_loop
185$ver_patch_loop_end:
186$       ver_patchnum = ver_patch - ver_patchltr
187$       if 'ver_maj' .ge. 0
188$       then
189$           if 'ver_min' .ge. 9
190$           then
191$               if 'ver_patchnum' .ge. 8
192$               then
193$                   if ver_patchltr .ges. "w" then use_hp_ssl = 1
194$               endif
195$           endif
196$       endif
197$set nover
198$       if use_hp_ssl .eq. 0
199$       then
200$           write sys$output -
201   " HP OpenSSL version of ""''hp_ssl_version'"" is too old for shared libcurl!"
202$       endif
203$   else
204$       write sys$output "Unable to get version of HP OpenSSL"
205$   endif
206$!
207$   gnv_ssl_libcrypto32 = "gnv$gnu:[lib]ssl$libcrypto_shr32.exe"
208$   gnv_ssl_libssl32 = "gnv$gnu:[lib]ssl$libssl_shr32.exe"
209$   if f$search(gnv_ssl_libcrypto32) .nes. ""
210$   then
211$       report_openssl_version 'gnv_ssl_libcrypto32' gnv_ssl_version
212$   endif
213$!
214$   use_gnv_ssl = 0
215$   if f$type(gnv_ssl_version) .eqs. "STRING"
216$   then
217$       gnv_full_version = f$element(1, " ", gnv_ssl_version)
218$       gnv_ver_maj = f$element(0, ".", gnv_full_version)
219$       gnv_ver_min = f$element(1, ".", gnv_full_version)
220$       gnv_ver_patch = f$element(2, ".", gnv_full_version)
221$       gnv_ver_patch_len = f$length(gnv_ver_patch)
222$       gnv_ver_patchnum = f$extract(0, gnv_ver_patch_len - 1, gnv_ver_patch)
223$       gnv_ver_patchltr = f$extract(gnv_ver_patch_len - 1, 1, gnv_ver_patch)
224$       if 'gnv_ver_maj' .ge. 0
225$       then
226$           if 'gnv_ver_min' .ge. 9
227$           then
228$               if 'gnv_ver_patchnum' .ge. 8
229$               then
230$                   if gnv_ver_patchltr .ges. "w" then use_gnv_ssl = 1
231$               endif
232$           endif
233$       endif
234$       if use_gnv_ssl .eq. 0
235$       then
236$           write sys$output -
237   "GNV OpenSSL version of ""''gnv_ssl_version'" is too old for shared libcurl!"
238$       endif
239$!
240$!      Prefer to break the tie with the lowest supported version
241$!      For simplicity, if the GNV image is present, it will be used.
242$!      Version tuple is not a simple compare.
243$!
244$       if use_gnv_ssl .eq. 1 then
245$           curl_ssl_libcrypto32 = gnv_ssl_libcrypto32
246$           curl_ssl_libssl32 = gnv_ssl_libssl32
247$           curl_ssl_version = gnv_ssl_version
248$           use_hp_ssl = 0
249$       endif
250!$!
251$   else
252$       write sys$output "Unable to get version of GNV OpenSSL"
253$   endif
254$!
255$!  Need to write a release note section about HP OpenSSL
256$!
257$create 'default_dir'hp_ssl_release_info.txt
258$deck
259This package is built on with the OpenSSL version listed below and requires
260the shared images from the HP OpenSSL product that is kitted with that
261version or a compatible later version.
262
263For Alpha and IA64 platforms, see the url below to register to get the
264download URL.  The kit will be HP 1.4-467 or later.
265  https://h41379.www4.hpe.com/openvms/products/ssl/ssl.html
266
267For VAX, use the same registration, but remove the kit name from any of the
268download URLs provided and put in CPQ-VAXVMS-SSL-V0101-B-1.PCSI-DCX_VAXEXE
269
270If your system can not be upgraded to a compatible version of OpenSSL, then
271you can extract the two shared images from the kit and place them in the
272[vms$common.gnv.lib]directory of the volume that you are installing GNV and
273or GNV compatible components like Curl.
274
275If GNV is installed, you must run the GNV startup procedure before these steps
276and before installing Curl.
277
278
279  1.  make sure that [vms$common.gnv.lib] exists by using the following
280      commands.  We want the directory to be in lowercase except on VAX.
281
282    $SET PROCESS/PARSE=extend !If not VAX.
283    $CREATE/DIR device:[vms$common.gnv.lib]/prot=w:re
284
285  2. Extract the ssl$crypto_shr32.exe and ssl$libssl_shr32.exe images.
286
287    $PRODUCT EXTRACT FILE -
288      /select=(ssl$libcrypto_shr32.exe,ssl$libssl_shr32.exe)-
289      /source=device:[dir] -
290      /options=noconfirm -
291      /destination=device:[vms$common.gnv.lib] SSL
292
293The [vms$common.sys$startup}curl_startup.com procedure will then configure
294libcurl to use these shared images instead of the system ones.
295
296When you upgrade SSL on VMS to the newer version of HP SSL, then these copies
297should be deleted.
298
299$eod
300$!
301$ open/append sslr 'default_dir'hp_ssl_release_info.txt
302$ write sslr "OpenSSL version used for building this kit: ",curl_ssl_version
303$ write sslr ""
304$ close sslr
305$!
306$!
307$! LIBZ
308$ libzshr_line = ""
309$ try_shr = "gnv$libzshr32"
310$ if f$search(try_shr) .nes. ""
311$ then
312$   libzshr_line = "''try_shr'/share"
313$ else
314$   write sys$output "''try_shr' image not found!"
315$   goto all_exit
316$ endif
317$!
318$!
319$ gssrtlshr_line = ""
320$ if arch_name .nes. "VAX"
321$ then
322$   try_shr = "sys$share:gss$rtl"
323$   if f$search("''try_shr'.exe") .nes. ""
324$   then
325$       gssrtlshr_line = "''try_shr'/share"
326$   else
327$       write sys$output "''try_shr' image not found!"
328$       goto all_exit
329$   endif
330$ endif
331$!
332$!
333$!
334$ if f$search(share_link_opt_file) .eqs. ""
335$ then
336$   create 'share_link_opt_file'
337$   open/append slopt 'share_link_opt_file'
338$   if libzshr_line .nes. "" then write slopt libzshr_line
339$   if gssrtlshr_line .nes. "" then write slopt gssrtlshr_line
340$   write slopt "gnv$curl_ssl_libcryptoshr32/share"
341$   write slopt "gnv$curl_ssl_libsslshr32/share"
342$   close slopt
343$ endif
344$!
345$! DCL build puts curllib in architecture directory
346$! GNV build uses the makefile.
347$ libfile = "[.packages.vms.''arch_name']curllib.olb"
348$ if f$search(libfile) .nes. ""
349$ then
350$   olb_file = libfile
351$ else
352$   ! GNV based build
353$   libfile = "[.lib.^.libs]libcurl.a"
354$   if f$search(libfile) .nes. ""
355$   then
356$       olb_file = libfile
357$   else
358$       write sys$output -
359  "Can not build shared image, libcurl object library not found!"
360$       goto all_exit
361$   endif
362$ endif
363$!
364$gnv_libcurl_share = "''default_dir'gnv$libcurl.exe"
365$!
366$ if f$search(gnv_libcurl_share) .eqs. ""
367$ then
368$   if arch_name .nes. "VAX"
369$   then
370$       define/user gnv$curl_ssl_libcryptoshr32 'curl_ssl_libcrypto32'
371$       define/user gnv$curl_ssl_libsslshr32 'curl_ssl_libssl32'
372$       link/dsf='default_dir'gnv$libcurl.dsf/share='gnv_libcurl_share' -
373            /map='default_dir'gnv$libcurl.map -
374            gnv_packages_vms:gnv_libcurl_symbols.opt/opt,-
375            'olb_file'/lib,-
376            'share_link_opt_file'/opt
377$   else
378$!      VAX will not allow the logical name hack for the
379$!      SSL libcryto library, it is pulling it in twice if I try it.
380$       link/share='gnv_libcurl_share'/map='default_dir'gnv$libcurl.map -
381            gnv_packages_vms:gnv_libcurl_xfer.opt/opt,-
382            'olb_file'/lib,-
383            'base_link_opt_file'/opt
384$   endif
385$ endif
386$!
387$!
388$ if f$search("[.src]curl-tool_main.o") .nes. ""
389$ then
390$!  From src/makefile.inc:
391$!  # libcurl has sources that provide functions named curlx_* that aren't
392$!  # part of the official API, but we re-use the code here to avoid
393$!  # duplication.
394$!
395$!
396$   if f$search("[.src]curl.exe") .eqs. ""
397$   then
398$       define/user gnv$libcurl 'gnv_libcurl_share'
399$       link'ldebug'/exe=[.src]curl.exe/dsf=[.src]curl.dsf -
400           [.src]curl-tool_main.o, [.src]curl-tool_binmode.o, -
401           [.src]curl-tool_bname.o, [.src]curl-tool_cb_dbg.o, -
402           [.src]curl-tool_cb_hdr.o, [.src]curl-tool_cb_prg.o, -
403           [.src]curl-tool_cb_rea.o, [.src]curl-tool_cb_see.o, -
404           [.src]curl-tool_cb_wrt.o, [.src]curl-tool_cfgable.o, -
405           [.src]curl-tool_convert.o, [.src]curl-tool_dirhie.o, -
406           [.src]curl-tool_doswin.o, [.src]curl-tool_easysrc.o, -
407           [.src]curl-tool_formparse.o, [.src]curl-tool_getparam.o, -
408           [.src]curl-tool_getpass.o, [.src]curl-tool_help.o, -
409           [.src]curl-tool_helpers.o, [.src]curl-tool_homedir.o, -
410           [.src]curl-tool_hugehelp.o, [.src]curl-tool_libinfo.o, -
411           [.src]curl-tool_metalink.o, [.src]curl-tool_mfiles.o, -
412           [.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, -
413           [.src]curl-tool_operhlp.o, [.src]curl-tool_panykey.o, -
414           [.src]curl-tool_paramhlp.o, [.src]curl-tool_parsecfg.o, -
415           [.src]curl-tool_setopt.o, [.src]curl-tool_sleep.o, -
416           [.src]curl-tool_urlglob.o, [.src]curl-tool_util.o, -
417           [.src]curl-tool_vms.o, [.src]curl-tool_writeenv.o, -
418           [.src]curl-tool_writeout.o, [.src]curl-tool_xattr.o, -
419           [.src]curl-strtoofft.o, [.src]curl-strdup.o, [.src]curl-strcase.o, -
420           [.src]curl-nonblock.o, gnv_packages_vms:curlmsg.obj,-
421           sys$input:/opt
422gnv$libcurl/share
423gnv_packages_vms:curl_crtl_init.obj
424$   endif
425$ else
426$   curl_exe = "[.src]curl.exe"
427$   curl_dsf = "[.src]curl.dsf"
428$   curl_main = "[.packages.vms.''arch_name']tool_main.obj"
429$   curl_src = "[.packages.vms.''arch_name']curlsrc.olb"
430$   curl_lib = "[.packages.vms.''arch_name']curllib.olb"
431$   strcase = "strcase"
432$   nonblock = "nonblock"
433$   warnless = "warnless"
434$!
435$!  Extended parse style requires special quoting
436$!
437$   if (arch_name .nes. "VAX") .and. (parse_style .eqs. "EXTENDED")
438$   then
439$       strcase = """strcase"""
440$       nonblock = """nonblock"""
441$       warnless = """warnless"""
442$   endif
443$   if f$search(curl_exe) .eqs. ""
444$   then
445$       define/user gnv$libcurl 'gnv_libcurl_share'
446$       link'ldebug'/exe='curl_exe'/dsf='curl_dsf' -
447           'curl_main','curl_src'/lib, -
448           'curl_lib'/library/include=-
449           ('strcase','nonblock','warnless'),-
450           gnv_packages_vms:curlmsg.obj,-
451           sys$input:/opt
452gnv$libcurl/share
453gnv_packages_vms:curl_crtl_init.obj
454$   endif
455$ endif
456$!
457$!
458$!
459$! in6addr_missing so skip building:
460$! [.server]sws.o
461$! [.server]sockfilt.o
462$! [.server]tftpd.o
463$!
464$!
465$ target = "10-at-a-time"
466$ if f$search("[.docs.examples]''target'.o") .eqs. ""
467$ then
468$   write sys$output "examples not built"
469$   goto all_exit
470$ endif
471$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
472$ then
473$   define/user gnv$libcurl 'gnv_libcurl_share'
474$   link'ldebug'/exe=[.docs.examples]'target'.exe-
475    /dsf=[.docs.examples]'target'.dsf -
476    [.docs.examples]'target'.o,-
477    gnv$'target'.opt/opt,-
478    sys$input:/opt
479gnv$libcurl/share
480$ endif
481$!
482$!
483$ target = "anyauthput"
484$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
485$ then
486$   define/user gnv$libcurl 'gnv_libcurl_share'
487$   link'ldebug'/exe=[.docs.examples]'target'.exe-
488    /dsf=[.docs.examples]'target'.dsf -
489    [.docs.examples]'target'.o,-
490    gnv$'target'.opt/opt,-
491    sys$input:/opt
492gnv$libcurl/share
493$ endif
494$!
495$!
496$ target = "certinfo"
497$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
498$ then
499$   define/user gnv$libcurl 'gnv_libcurl_share'
500$   link'ldebug'/exe=[.docs.examples]'target'.exe-
501    /dsf=[.docs.examples]'target'.dsf -
502    [.docs.examples]'target'.o,-
503    gnv$'target'.opt/opt,-
504    sys$input:/opt
505gnv$libcurl/share
506$ endif
507$!
508$!
509$ target = "cookie_interface"
510$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
511$ then
512$   define/user gnv$libcurl 'gnv_libcurl_share'
513$   link'ldebug'/exe=[.docs.examples]'target'.exe-
514    /dsf=[.docs.examples]'target'.dsf -
515    [.docs.examples]'target'.o,-
516    gnv$'target'.opt/opt,-
517    sys$input:/opt
518gnv$libcurl/share
519$ endif
520$!
521$!
522$ target = "debug"
523$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
524$ then
525$   define/user gnv$libcurl 'gnv_libcurl_share'
526$   link'ldebug'/exe=[.docs.examples]'target'.exe-
527    /dsf=[.docs.examples]'target'.dsf -
528    [.docs.examples]'target'.o,-
529    gnv$'target'.opt/opt,-
530    sys$input:/opt
531gnv$libcurl/share
532$ endif
533$!
534$!
535$ target = "fileupload"
536$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
537$ then
538$   define/user gnv$libcurl 'gnv_libcurl_share'
539$   link'ldebug'/exe=[.docs.examples]'target'.exe-
540    /dsf=[.docs.examples]'target'.dsf -
541    [.docs.examples]'target'.o,-
542    gnv$'target'.opt/opt,-
543    sys$input:/opt
544gnv$libcurl/share
545$ endif
546$!
547$!
548$ target = "fopen"
549$ if f$search("[.docs.examples]''target'.exe") .eqs. ""
550$ then
551$   define/user gnv$libcurl 'gnv_libcurl_share'
552$   link'ldebug'/exe=[.docs.examples]'target'.exe-
553    /dsf=[.docs.examples]'target'.dsf -
554    [.docs.examples]'target'.o,-
555    gnv$'target'.opt/opt,-
556    sys$input:/opt
557gnv$libcurl/share
558$ endif
559$!
560$!
561$target = "ftpget"
562$if f$search("[.docs.examples]''target'.exe") .eqs. ""
563$then
564$   define/user gnv$libcurl 'gnv_libcurl_share'
565$   link'ldebug'/exe=[.docs.examples]'target'.exe-
566    /dsf=[.docs.examples]'target'.dsf -
567    [.docs.examples]'target'.o,-
568    gnv$'target'.opt/opt,-
569    sys$input:/opt
570gnv$libcurl/share
571$endif
572$!
573$!
574$target = "ftpgetresp"
575$if f$search("[.docs.examples]''target'.exe") .eqs. ""
576$then
577$   define/user gnv$libcurl 'gnv_libcurl_share'
578$   link'ldebug'/exe=[.docs.examples]'target'.exe-
579    /dsf=[.docs.examples]'target'.dsf -
580    [.docs.examples]'target'.o,-
581    gnv$'target'.opt/opt,-
582    sys$input:/opt
583gnv$libcurl/share
584$endif
585$!
586$!
587$target = "ftpupload"
588$if f$search("[.docs.examples]''target'.exe") .eqs. ""
589$then
590$   define/user gnv$libcurl 'gnv_libcurl_share'
591$   link'ldebug'/exe=[.docs.examples]'target'.exe-
592    /dsf=[.docs.examples]'target'.dsf -
593    [.docs.examples]'target'.o,-
594    gnv$'target'.opt/opt,-
595    sys$input:/opt
596gnv$libcurl/share
597$endif
598$!
599$!
600$target = "getinfo"
601$if f$search("[.docs.examples]''target'.exe") .eqs. ""
602$then
603$   define/user gnv$libcurl 'gnv_libcurl_share'
604$   link'ldebug'/exe=[.docs.examples]'target'.exe-
605    /dsf=[.docs.examples]'target'.dsf -
606    [.docs.examples]'target'.o,-
607    gnv$'target'.opt/opt,-
608    sys$input:/opt
609gnv$libcurl/share
610$endif
611$!
612$!
613$target = "getinmemory"
614$if f$search("[.docs.examples]''target'.exe") .eqs. ""
615$then
616$   define/user gnv$libcurl 'gnv_libcurl_share'
617$   link'ldebug'/exe=[.docs.examples]'target'.exe-
618    /dsf=[.docs.examples]'target'.dsf -
619    [.docs.examples]'target'.o,-
620    gnv$'target'.opt/opt,-
621    sys$input:/opt
622gnv$libcurl/share
623$endif
624$!
625$!
626$target = "http-post"
627$if f$search("[.docs.examples]''target'.exe") .eqs. ""
628$then
629$   define/user gnv$libcurl 'gnv_libcurl_share'
630$   link'ldebug'/exe=[.docs.examples]'target'.exe-
631    /dsf=[.docs.examples]'target'.dsf -
632    [.docs.examples]'target'.o,-
633    gnv$'target'.opt/opt,-
634    sys$input:/opt
635gnv$libcurl/share
636$endif
637$!
638$!
639$target = "httpcustomheader"
640$if f$search("[.docs.examples]''target'.exe") .eqs. ""
641$then
642$   define/user gnv$libcurl 'gnv_libcurl_share'
643$   link'ldebug'/exe=[.docs.examples]'target'.exe-
644    /dsf=[.docs.examples]'target'.dsf -
645    [.docs.examples]'target'.o,-
646    gnv$'target'.opt/opt,-
647    sys$input:/opt
648gnv$libcurl/share
649$endif
650$!
651$!
652$target = "httpput"
653$if f$search("[.docs.examples]''target'.exe") .eqs. ""
654$then
655$   define/user gnv$libcurl 'gnv_libcurl_share'
656$   link'ldebug'/exe=[.docs.examples]'target'.exe-
657    /dsf=[.docs.examples]'target'.dsf -
658    [.docs.examples]'target'.o,-
659    gnv$'target'.opt/opt,-
660    sys$input:/opt
661gnv$libcurl/share
662$endif
663$!
664$!
665$target = "https"
666$if f$search("[.docs.examples]''target'.exe") .eqs. ""
667$then
668$   define/user gnv$libcurl 'gnv_libcurl_share'
669$   link'ldebug'/exe=[.docs.examples]'target'.exe-
670    /dsf=[.docs.examples]'target'.dsf -
671    [.docs.examples]'target'.o,-
672    gnv$'target'.opt/opt,-
673    sys$input:/opt
674gnv$libcurl/share
675$endif
676$!
677$!
678$target = "multi-app"
679$if f$search("[.docs.examples]''target'.exe") .eqs. ""
680$then
681$   define/user gnv$libcurl 'gnv_libcurl_share'
682$   link'ldebug'/exe=[.docs.examples]'target'.exe-
683    /dsf=[.docs.examples]'target'.dsf -
684    [.docs.examples]'target'.o,-
685    gnv$'target'.opt/opt,-
686    sys$input:/opt
687gnv$libcurl/share
688$endif
689$!
690$!
691$target = "multi-debugcallback"
692$if f$search("[.docs.examples]''target'.exe") .eqs. ""
693$then
694$   define/user gnv$libcurl 'gnv_libcurl_share'
695$   link'ldebug'/exe=[.docs.examples]'target'.exe-
696    /dsf=[.docs.examples]'target'.dsf -
697    [.docs.examples]'target'.o,-
698    gnv$'target'.opt/opt,-
699    sys$input:/opt
700gnv$libcurl/share
701$endif
702$!
703$!
704$target = "multi-double"
705$if f$search("[.docs.examples]''target'.exe") .eqs. ""
706$then
707$   define/user gnv$libcurl 'gnv_libcurl_share'
708$   link'ldebug'/exe=[.docs.examples]'target'.exe-
709    /dsf=[.docs.examples]'target'.dsf -
710    [.docs.examples]'target'.o,-
711    gnv$'target'.opt/opt,-
712    sys$input:/opt
713gnv$libcurl/share
714$endif
715$!
716$!
717$target = "multi-post"
718$if f$search("[.docs.examples]''target'.exe") .eqs. ""
719$then
720$   define/user gnv$libcurl 'gnv_libcurl_share'
721$   link'ldebug'/exe=[.docs.examples]'target'.exe-
722    /dsf=[.docs.examples]'target'.dsf -
723    [.docs.examples]'target'.o,-
724    gnv$'target'.opt/opt,-
725    sys$input:/opt
726gnv$libcurl/share
727$endif
728$!
729$!
730$target = "multi-single"
731$if f$search("[.docs.examples]''target'.exe") .eqs. ""
732$then
733$   define/user gnv$libcurl 'gnv_libcurl_share'
734$   link'ldebug'/exe=[.docs.examples]'target'.exe-
735    /dsf=[.docs.examples]'target'.dsf -
736    [.docs.examples]'target'.o,-
737    gnv$'target'.opt/opt,-
738    sys$input:/opt
739gnv$libcurl/share
740$endif
741$!
742$!
743$target = "persistent"
744$if f$search("[.docs.examples]''target'.exe") .eqs. ""
745$then
746$   define/user gnv$libcurl 'gnv_libcurl_share'
747$   link'ldebug'/exe=[.docs.examples]'target'.exe-
748    /dsf=[.docs.examples]'target'.dsf -
749    [.docs.examples]'target'.o,-
750    gnv$'target'.opt/opt,-
751    sys$input:/opt
752gnv$libcurl/share
753$endif
754$!
755$!
756$target = "post-callback"
757$if f$search("[.docs.examples]''target'.exe") .eqs. ""
758$then
759$   define/user gnv$libcurl 'gnv_libcurl_share'
760$   link'ldebug'/exe=[.docs.examples]'target'.exe-
761    /dsf=[.docs.examples]'target'.dsf -
762    [.docs.examples]'target'.o,-
763    gnv$'target'.opt/opt,-
764    sys$input:/opt
765gnv$libcurl/share
766$endif
767$!
768$!
769$target = "postit2"
770$if f$search("[.docs.examples]''target'.exe") .eqs. ""
771$then
772$   define/user gnv$libcurl 'gnv_libcurl_share'
773$   link'ldebug'/exe=[.docs.examples]'target'.exe-
774    /dsf=[.docs.examples]'target'.dsf -
775    [.docs.examples]'target'.o,-
776    gnv$'target'.opt/opt,-
777    sys$input:/opt
778gnv$libcurl/share
779$endif
780$!
781$!
782$target = "sendrecv"
783$if f$search("[.docs.examples]''target'.exe") .eqs. ""
784$then
785$   define/user gnv$libcurl 'gnv_libcurl_share'
786$   link'ldebug'/exe=[.docs.examples]'target'.exe-
787    /dsf=[.docs.examples]'target'.dsf -
788    [.docs.examples]'target'.o,-
789    gnv$'target'.opt/opt,-
790    sys$input:/opt
791gnv$libcurl/share
792$endif
793$!
794$!
795$target = "sepheaders"
796$if f$search("[.docs.examples]''target'.exe") .eqs. ""
797$then
798$   define/user gnv$libcurl 'gnv_libcurl_share'
799$   link'ldebug'/exe=[.docs.examples]'target'.exe-
800    /dsf=[.docs.examples]'target'.dsf -
801    [.docs.examples]'target'.o,-
802    gnv$'target'.opt/opt,-
803    sys$input:/opt
804gnv$libcurl/share
805$endif
806$!
807$!
808$target = "simple"
809$if f$search("[.docs.examples]''target'.exe") .eqs. ""
810$then
811$   define/user gnv$libcurl 'gnv_libcurl_share'
812$   link'ldebug'/exe=[.docs.examples]'target'.exe-
813    /dsf=[.docs.examples]'target'.dsf -
814    [.docs.examples]'target'.o,-
815    gnv$'target'.opt/opt,-
816    sys$input:/opt
817gnv$libcurl/share
818$endif
819$!
820$!
821$target = "simplepost"
822$if f$search("[.docs.examples]''target'.exe") .eqs. ""
823$then
824$   define/user gnv$libcurl 'gnv_libcurl_share'
825$   link'ldebug'/exe=[.docs.examples]'target'.exe-
826    /dsf=[.docs.examples]'target'.dsf -
827    [.docs.examples]'target'.o,-
828    gnv$'target'.opt/opt,-
829    sys$input:/opt
830gnv$libcurl/share
831$endif
832$!
833$!
834$target = "simplessl"
835$if f$search("[.docs.examples]''target'.exe") .eqs. ""
836$then
837$   define/user gnv$libcurl 'gnv_libcurl_share'
838$   link'ldebug'/exe=[.docs.examples]'target'.exe-
839    /dsf=[.docs.examples]'target'.dsf -
840    [.docs.examples]'target'.o,-
841    gnv$'target'.opt/opt,-
842    sys$input:/opt
843gnv$libcurl/share
844$endif
845$!
846$! =============== End of docs/examples =========================
847$!
848$!
849$all_exit:
850$set def 'default_dir'
851$exit '$status'
852$!
853