gnv_link_curl.com 25 KB

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