gnv_link_curl.com 25 KB

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