2
0

gnv_link_curl.com 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852
  1. $! File: gnv_link_curl.com
  2. $!
  3. $! File to build images using gnv$libcurl.exe
  4. $!
  5. $! Copyright (C) John Malmberg
  6. $!
  7. $! Permission to use, copy, modify, and/or distribute this software for any
  8. $! purpose with or without fee is hereby granted, provided that the above
  9. $! copyright notice and this permission notice appear in all copies.
  10. $!
  11. $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  12. $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  13. $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  14. $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  15. $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  16. $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
  17. $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  18. $!
  19. $! SPDX-License-Identifier: ISC
  20. $!
  21. $!============================================================================
  22. $!
  23. $! Save this so we can get back.
  24. $ default_dir = f$environment("default")
  25. $ define/job gnv_packages_vms 'default_dir'
  26. $!
  27. $ on warning then goto all_exit
  28. $!
  29. $! On VAX, we need to generate a Macro transfer vector.
  30. $ parse_style = "TRADITIONAL"
  31. $ if (f$getsyi("HW_MODEL") .lt. 1024)
  32. $ then
  33. $ @generate_vax_transfer.com
  34. $ arch_name = "VAX"
  35. $ else
  36. $ arch_name = ""
  37. $ arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
  38. $ if (arch_name .eqs. "") then arch_name = "UNK"
  39. $!
  40. $! Extended parsing option starts with VMS 7.3-1.
  41. $! There is no 7.4, so that simplifies the parse a bit.
  42. $!
  43. $ node_swvers = f$getsyi("node_swvers")
  44. $ version_patch = f$extract(1, f$length(node_swvers), node_swvers)
  45. $ maj_ver = f$element(0, ".", version_patch)
  46. $ min_ver_patch = f$element(1, ".", version_patch)
  47. $ min_ver = f$element(0, "-", min_ver_patch)
  48. $ patch = f$element(1, "-", min_ver_patch)
  49. $ if patch .eqs. "-" then patch = ""
  50. $ parse_x = 0
  51. $ if maj_ver .ges. "8"
  52. $ then
  53. $ parse_x = 1
  54. $ else
  55. $ if maj_ver .eqs. "7" .and. min_ver .ges. "3" .and. patch .nes. ""
  56. $ then
  57. $ parse_x = 1
  58. $ endif
  59. $ endif
  60. $ if parse_x
  61. $ then
  62. $ parse_style = f$getjpi("", "parse_style_perm")
  63. $ endif
  64. $ endif
  65. $!
  66. $!
  67. $! Move to where the base directories.
  68. $ set def [--]
  69. $!
  70. $!
  71. $! Build the Message file.
  72. $!--------------------------
  73. $ if f$search("[.packages.vms]curlmsg.obj") .eqs. ""
  74. $ then
  75. $ message [.packages.vms]curlmsg.msg/object=[.packages.vms]
  76. $ endif
  77. $ if f$search("gnv$curlmsg.exe") .eqs. ""
  78. $ then
  79. $ link/share=gnv$curlmsg.exe [.packages.vms]curlmsg.obj
  80. $ endif
  81. $!
  82. $!
  83. $! Need to build the common init module.
  84. $!-------------------------------------------
  85. $ cflags = "/list/show=(expan,includ)"
  86. $ init_obj = "[.packages.vms]curl_crtl_init.obj"
  87. $ if f$search(init_obj) .eqs. ""
  88. $ then
  89. $ cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj'
  90. $ endif
  91. $ purge 'init_obj'
  92. $ rename 'init_obj' ;1
  93. $!
  94. $!
  95. $! Need to build the module to test the HP OpenSSL version
  96. $!--------------------------------------------------------
  97. $ if arch_name .nes. "VAX"
  98. $ then
  99. $ rpt_obj = "[.packages.vms]report_openssl_version.obj
  100. $ if f$search(rpt_obj) .eqs. ""
  101. $ then
  102. $ cc'cflags' 'default_dir'report_openssl_version.c/obj='rpt_obj'
  103. $ endif
  104. $ purge 'rpt_obj'
  105. $ rename 'rpt_obj' ;1
  106. $!
  107. $ link/exe='default_dir'report_openssl_version.exe 'rpt_obj'
  108. $ report_openssl_version := $'default_dir'report_openssl_version.exe
  109. $ endif
  110. $!
  111. $!
  112. $ base_link_opt_file = "[.packages.vms.''arch_name']gnv_libcurl_linker.opt"
  113. $ share_link_opt_file = "[.packages.vms.''arch_name']gnv_ssl_libcurl_linker.opt"
  114. $ if f$search(base_link_opt_file) .eqs. ""
  115. $ then
  116. $ base_link_opt_file = "[.packages.vms]gnv_libcurl_linker.opt"
  117. $ share_link_opt_file = "[.packages.vms]gnv_ssl_libcurl_linker.opt"
  118. $ if f$search(base_link_opt_file) .eqs. ""
  119. $ then
  120. $ write sys$output "Can not find base library option file!"
  121. $ goto all_exit
  122. $ endif
  123. $ endif
  124. $!
  125. $! Create the a new option file with special fixup for HP SSL
  126. $! For a shared image, we always want ZLIB and 32 bit HPSSL
  127. $!
  128. $ if f$search("gnv$libzshr32") .eqs. ""
  129. $ then
  130. $ write sys$output "VMSPORTS/GNV LIBZ Shared image not found!"
  131. $ goto all_exit
  132. $ endif
  133. $!
  134. $!
  135. $! Need to check the version of the HP SSL shared image.
  136. $!
  137. $! VAX platform can not be checked this way, it appears symbol lookup
  138. $! was disabled. VAX has not been updated in a while.
  139. $ if arch_name .eqs. "VAX"
  140. $ then
  141. $ hp_ssl_libcrypto32 = "sys$common:[syslib]ssl$libcrypto_shr32.exe"
  142. $ hp_ssl_libssl32 = "sys$common:[syslib]ssl$libssl_shr32.exe"
  143. $ if f$search(hp_ssl_libcrypto32) .nes. ""
  144. $ then
  145. $ use_hp_ssl = 1
  146. $ curl_ssl_libcrypto32 = hp_ssl_libcrypto32
  147. $ curl_ssl_libssl32 = hp_ssl_libssl32
  148. $ curl_ssl_version = "OpenSSL/0.9.6g"
  149. $ else
  150. $ write sys$output "HP OpenSSL Shared images not found!"
  151. $ goto all_exit
  152. $ endif
  153. $ else
  154. $!
  155. $! Minimum HP version we can use reports:
  156. $! "OpenSSL 0.9.8w 23 Apr 2012"
  157. $!
  158. $ use_hp_ssl = 0
  159. $ hp_ssl_libcrypto32 = "sys$share:ssl$libcrypto_shr32.exe"
  160. $ hp_ssl_libssl32 = "sys$share:ssl$libssl_shr32.exe"
  161. $ if f$search(hp_ssl_libcrypto32) .nes. ""
  162. $ then
  163. $ curl_ssl_libcrypto32 = hp_ssl_libcrypto32
  164. $ curl_ssl_libssl32 = hp_ssl_libssl32
  165. $ report_openssl_version 'hp_ssl_libcrypto32' hp_ssl_version
  166. $ endif
  167. $!
  168. $ if f$type(hp_ssl_version) .eqs. "STRING"
  169. $ then
  170. $ curl_ssl_version = hp_ssl_version
  171. $ full_version = f$element(1, " ", hp_ssl_version)
  172. $ ver_maj = f$element(0, ".", full_version)
  173. $ ver_min = f$element(1, ".", full_version)
  174. $ ver_patch = f$element(2, ".", full_version)
  175. $! ! ver_patch is typically both a number and some letters
  176. $ ver_patch_len = f$length(ver_patch)
  177. $ ver_patchltr = ""
  178. $ver_patch_loop:
  179. $ ver_patchltr_c = f$extract(ver_patch_len - 1, 1, ver_patch)
  180. $ if ver_patchltr_c .les. "9" then goto ver_patch_loop_end
  181. $ ver_patchltr = ver_patchltr_c + ver_patchltr
  182. $ ver_patch_len = ver_patch_len - 1
  183. $ goto ver_patch_loop
  184. $ver_patch_loop_end:
  185. $ ver_patchnum = ver_patch - ver_patchltr
  186. $ if 'ver_maj' .ge. 0
  187. $ then
  188. $ if 'ver_min' .ge. 9
  189. $ then
  190. $ if 'ver_patchnum' .ge. 8
  191. $ then
  192. $ if ver_patchltr .ges. "w" then use_hp_ssl = 1
  193. $ endif
  194. $ endif
  195. $ endif
  196. $set nover
  197. $ if use_hp_ssl .eq. 0
  198. $ then
  199. $ write sys$output -
  200. " HP OpenSSL version of ""''hp_ssl_version'"" is too old for shared libcurl!"
  201. $ endif
  202. $ else
  203. $ write sys$output "Unable to get version of HP OpenSSL"
  204. $ endif
  205. $!
  206. $ gnv_ssl_libcrypto32 = "gnv$gnu:[lib]ssl$libcrypto_shr32.exe"
  207. $ gnv_ssl_libssl32 = "gnv$gnu:[lib]ssl$libssl_shr32.exe"
  208. $ if f$search(gnv_ssl_libcrypto32) .nes. ""
  209. $ then
  210. $ report_openssl_version 'gnv_ssl_libcrypto32' gnv_ssl_version
  211. $ endif
  212. $!
  213. $ use_gnv_ssl = 0
  214. $ if f$type(gnv_ssl_version) .eqs. "STRING"
  215. $ then
  216. $ gnv_full_version = f$element(1, " ", gnv_ssl_version)
  217. $ gnv_ver_maj = f$element(0, ".", gnv_full_version)
  218. $ gnv_ver_min = f$element(1, ".", gnv_full_version)
  219. $ gnv_ver_patch = f$element(2, ".", gnv_full_version)
  220. $ gnv_ver_patch_len = f$length(gnv_ver_patch)
  221. $ gnv_ver_patchnum = f$extract(0, gnv_ver_patch_len - 1, gnv_ver_patch)
  222. $ gnv_ver_patchltr = f$extract(gnv_ver_patch_len - 1, 1, gnv_ver_patch)
  223. $ if 'gnv_ver_maj' .ge. 0
  224. $ then
  225. $ if 'gnv_ver_min' .ge. 9
  226. $ then
  227. $ if 'gnv_ver_patchnum' .ge. 8
  228. $ then
  229. $ if gnv_ver_patchltr .ges. "w" then use_gnv_ssl = 1
  230. $ endif
  231. $ endif
  232. $ endif
  233. $ if use_gnv_ssl .eq. 0
  234. $ then
  235. $ write sys$output -
  236. "GNV OpenSSL version of ""''gnv_ssl_version'" is too old for shared libcurl!"
  237. $ endif
  238. $!
  239. $! Prefer to break the tie with the lowest supported version
  240. $! For simplicity, if the GNV image is present, it will be used.
  241. $! Version tuple is not a simple compare.
  242. $!
  243. $ if use_gnv_ssl .eq. 1 then
  244. $ curl_ssl_libcrypto32 = gnv_ssl_libcrypto32
  245. $ curl_ssl_libssl32 = gnv_ssl_libssl32
  246. $ curl_ssl_version = gnv_ssl_version
  247. $ use_hp_ssl = 0
  248. $ endif
  249. !$!
  250. $ else
  251. $ write sys$output "Unable to get version of GNV OpenSSL"
  252. $ endif
  253. $!
  254. $! Need to write a release note section about HP OpenSSL
  255. $!
  256. $create 'default_dir'hp_ssl_release_info.txt
  257. $deck
  258. This package is built on with the OpenSSL version listed below and requires
  259. the shared images from the HP OpenSSL product that is kitted with that
  260. version or a compatible later version.
  261. For Alpha and IA64 platforms, see the url below to register to get the
  262. download URL. The kit will be HP 1.4-467 or later.
  263. https://h41379.www4.hpe.com/openvms/products/ssl/ssl.html
  264. For VAX, use the same registration, but remove the kit name from any of the
  265. download URLs provided and put in CPQ-VAXVMS-SSL-V0101-B-1.PCSI-DCX_VAXEXE
  266. If your system can not be upgraded to a compatible version of OpenSSL, then
  267. you can extract the two shared images from the kit and place them in the
  268. [vms$common.gnv.lib]directory of the volume that you are installing GNV and
  269. or GNV compatible components like Curl.
  270. If GNV is installed, you must run the GNV startup procedure before these steps
  271. and before installing Curl.
  272. 1. make sure that [vms$common.gnv.lib] exists by using the following
  273. commands. We want the directory to be in lowercase except on VAX.
  274. $SET PROCESS/PARSE=extend !If not VAX.
  275. $CREATE/DIR device:[vms$common.gnv.lib]/prot=w:re
  276. 2. Extract the ssl$crypto_shr32.exe and ssl$libssl_shr32.exe images.
  277. $PRODUCT EXTRACT FILE -
  278. /select=(ssl$libcrypto_shr32.exe,ssl$libssl_shr32.exe)-
  279. /source=device:[dir] -
  280. /options=noconfirm -
  281. /destination=device:[vms$common.gnv.lib] SSL
  282. The [vms$common.sys$startup}curl_startup.com procedure will then configure
  283. libcurl to use these shared images instead of the system ones.
  284. When you upgrade SSL on VMS to the newer version of HP SSL, then these copies
  285. should be deleted.
  286. $eod
  287. $!
  288. $ open/append sslr 'default_dir'hp_ssl_release_info.txt
  289. $ write sslr "OpenSSL version used for building this kit: ",curl_ssl_version
  290. $ write sslr ""
  291. $ close sslr
  292. $!
  293. $!
  294. $! LIBZ
  295. $ libzshr_line = ""
  296. $ try_shr = "gnv$libzshr32"
  297. $ if f$search(try_shr) .nes. ""
  298. $ then
  299. $ libzshr_line = "''try_shr'/share"
  300. $ else
  301. $ write sys$output "''try_shr' image not found!"
  302. $ goto all_exit
  303. $ endif
  304. $!
  305. $!
  306. $ gssrtlshr_line = ""
  307. $ if arch_name .nes. "VAX"
  308. $ then
  309. $ try_shr = "sys$share:gss$rtl"
  310. $ if f$search("''try_shr'.exe") .nes. ""
  311. $ then
  312. $ gssrtlshr_line = "''try_shr'/share"
  313. $ else
  314. $ write sys$output "''try_shr' image not found!"
  315. $ goto all_exit
  316. $ endif
  317. $ endif
  318. $!
  319. $!
  320. $!
  321. $ if f$search(share_link_opt_file) .eqs. ""
  322. $ then
  323. $ create 'share_link_opt_file'
  324. $ open/append slopt 'share_link_opt_file'
  325. $ if libzshr_line .nes. "" then write slopt libzshr_line
  326. $ if gssrtlshr_line .nes. "" then write slopt gssrtlshr_line
  327. $ write slopt "gnv$curl_ssl_libcryptoshr32/share"
  328. $ write slopt "gnv$curl_ssl_libsslshr32/share"
  329. $ close slopt
  330. $ endif
  331. $!
  332. $! DCL build puts curllib in architecture directory
  333. $! GNV build uses the makefile.
  334. $ libfile = "[.packages.vms.''arch_name']curllib.olb"
  335. $ if f$search(libfile) .nes. ""
  336. $ then
  337. $ olb_file = libfile
  338. $ else
  339. $ ! GNV based build
  340. $ libfile = "[.lib.^.libs]libcurl.a"
  341. $ if f$search(libfile) .nes. ""
  342. $ then
  343. $ olb_file = libfile
  344. $ else
  345. $ write sys$output -
  346. "Can not build shared image, libcurl object library not found!"
  347. $ goto all_exit
  348. $ endif
  349. $ endif
  350. $!
  351. $gnv_libcurl_share = "''default_dir'gnv$libcurl.exe"
  352. $!
  353. $ if f$search(gnv_libcurl_share) .eqs. ""
  354. $ then
  355. $ if arch_name .nes. "VAX"
  356. $ then
  357. $ define/user gnv$curl_ssl_libcryptoshr32 'curl_ssl_libcrypto32'
  358. $ define/user gnv$curl_ssl_libsslshr32 'curl_ssl_libssl32'
  359. $ link/dsf='default_dir'gnv$libcurl.dsf/share='gnv_libcurl_share' -
  360. /map='default_dir'gnv$libcurl.map -
  361. gnv_packages_vms:gnv_libcurl_symbols.opt/opt,-
  362. 'olb_file'/lib,-
  363. 'share_link_opt_file'/opt
  364. $ else
  365. $! VAX will not allow the logical name hack for the
  366. $! SSL libcryto library, it is pulling it in twice if I try it.
  367. $ link/share='gnv_libcurl_share'/map='default_dir'gnv$libcurl.map -
  368. gnv_packages_vms:gnv_libcurl_xfer.opt/opt,-
  369. 'olb_file'/lib,-
  370. 'base_link_opt_file'/opt
  371. $ endif
  372. $ endif
  373. $!
  374. $!
  375. $ if f$search("[.src]curl-tool_main.o") .nes. ""
  376. $ then
  377. $! From src/makefile.inc:
  378. $! # libcurl has sources that provide functions named curlx_* that aren't
  379. $! # part of the official API, but we reuse the code here to avoid
  380. $! # duplication.
  381. $!
  382. $!
  383. $ if f$search("[.src]curl.exe") .eqs. ""
  384. $ then
  385. $ define/user gnv$libcurl 'gnv_libcurl_share'
  386. $ link'ldebug'/exe=[.src]curl.exe/dsf=[.src]curl.dsf -
  387. [.src]curl-tool_main.o, [.src]curl-tool_binmode.o, -
  388. [.src]curl-tool_bname.o, [.src]curl-tool_cb_dbg.o, -
  389. [.src]curl-tool_cb_hdr.o, [.src]curl-tool_cb_prg.o, -
  390. [.src]curl-tool_cb_rea.o, [.src]curl-tool_cb_see.o, -
  391. [.src]curl-tool_cb_soc.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_mfiles.o, -
  400. [.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, -
  401. [.src]curl-tool_operhlp.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. $!