gnv_link_curl.com 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851
  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 re-use 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_wrt.o, [.src]curl-tool_cfgable.o, -
  392. [.src]curl-tool_convert.o, [.src]curl-tool_dirhie.o, -
  393. [.src]curl-tool_doswin.o, [.src]curl-tool_easysrc.o, -
  394. [.src]curl-tool_formparse.o, [.src]curl-tool_getparam.o, -
  395. [.src]curl-tool_getpass.o, [.src]curl-tool_help.o, -
  396. [.src]curl-tool_helpers.o, [.src]curl-tool_homedir.o, -
  397. [.src]curl-tool_hugehelp.o, [.src]curl-tool_libinfo.o, -
  398. [.src]curl-tool_mfiles.o, -
  399. [.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, -
  400. [.src]curl-tool_operhlp.o, -
  401. [.src]curl-tool_paramhlp.o, [.src]curl-tool_parsecfg.o, -
  402. [.src]curl-tool_setopt.o, [.src]curl-tool_sleep.o, -
  403. [.src]curl-tool_urlglob.o, [.src]curl-tool_util.o, -
  404. [.src]curl-tool_vms.o, [.src]curl-tool_writeenv.o, -
  405. [.src]curl-tool_writeout.o, [.src]curl-tool_xattr.o, -
  406. [.src]curl-strtoofft.o, [.src]curl-strdup.o, [.src]curl-strcase.o, -
  407. [.src]curl-nonblock.o, gnv_packages_vms:curlmsg.obj,-
  408. sys$input:/opt
  409. gnv$libcurl/share
  410. gnv_packages_vms:curl_crtl_init.obj
  411. $ endif
  412. $ else
  413. $ curl_exe = "[.src]curl.exe"
  414. $ curl_dsf = "[.src]curl.dsf"
  415. $ curl_main = "[.packages.vms.''arch_name']tool_main.obj"
  416. $ curl_src = "[.packages.vms.''arch_name']curlsrc.olb"
  417. $ curl_lib = "[.packages.vms.''arch_name']curllib.olb"
  418. $ strcase = "strcase"
  419. $ nonblock = "nonblock"
  420. $ warnless = "warnless"
  421. $!
  422. $! Extended parse style requires special quoting
  423. $!
  424. $ if (arch_name .nes. "VAX") .and. (parse_style .eqs. "EXTENDED")
  425. $ then
  426. $ strcase = """strcase"""
  427. $ nonblock = """nonblock"""
  428. $ warnless = """warnless"""
  429. $ endif
  430. $ if f$search(curl_exe) .eqs. ""
  431. $ then
  432. $ define/user gnv$libcurl 'gnv_libcurl_share'
  433. $ link'ldebug'/exe='curl_exe'/dsf='curl_dsf' -
  434. 'curl_main','curl_src'/lib, -
  435. 'curl_lib'/library/include=-
  436. ('strcase','nonblock','warnless'),-
  437. gnv_packages_vms:curlmsg.obj,-
  438. sys$input:/opt
  439. gnv$libcurl/share
  440. gnv_packages_vms:curl_crtl_init.obj
  441. $ endif
  442. $ endif
  443. $!
  444. $!
  445. $!
  446. $! in6addr_missing so skip building:
  447. $! [.server]sws.o
  448. $! [.server]sockfilt.o
  449. $! [.server]tftpd.o
  450. $!
  451. $!
  452. $ target = "10-at-a-time"
  453. $ if f$search("[.docs.examples]''target'.o") .eqs. ""
  454. $ then
  455. $ write sys$output "examples not built"
  456. $ goto all_exit
  457. $ endif
  458. $ if f$search("[.docs.examples]''target'.exe") .eqs. ""
  459. $ then
  460. $ define/user gnv$libcurl 'gnv_libcurl_share'
  461. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  462. /dsf=[.docs.examples]'target'.dsf -
  463. [.docs.examples]'target'.o,-
  464. gnv$'target'.opt/opt,-
  465. sys$input:/opt
  466. gnv$libcurl/share
  467. $ endif
  468. $!
  469. $!
  470. $ target = "anyauthput"
  471. $ if f$search("[.docs.examples]''target'.exe") .eqs. ""
  472. $ then
  473. $ define/user gnv$libcurl 'gnv_libcurl_share'
  474. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  475. /dsf=[.docs.examples]'target'.dsf -
  476. [.docs.examples]'target'.o,-
  477. gnv$'target'.opt/opt,-
  478. sys$input:/opt
  479. gnv$libcurl/share
  480. $ endif
  481. $!
  482. $!
  483. $ target = "certinfo"
  484. $ if f$search("[.docs.examples]''target'.exe") .eqs. ""
  485. $ then
  486. $ define/user gnv$libcurl 'gnv_libcurl_share'
  487. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  488. /dsf=[.docs.examples]'target'.dsf -
  489. [.docs.examples]'target'.o,-
  490. gnv$'target'.opt/opt,-
  491. sys$input:/opt
  492. gnv$libcurl/share
  493. $ endif
  494. $!
  495. $!
  496. $ target = "cookie_interface"
  497. $ if f$search("[.docs.examples]''target'.exe") .eqs. ""
  498. $ then
  499. $ define/user gnv$libcurl 'gnv_libcurl_share'
  500. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  501. /dsf=[.docs.examples]'target'.dsf -
  502. [.docs.examples]'target'.o,-
  503. gnv$'target'.opt/opt,-
  504. sys$input:/opt
  505. gnv$libcurl/share
  506. $ endif
  507. $!
  508. $!
  509. $ target = "debug"
  510. $ if f$search("[.docs.examples]''target'.exe") .eqs. ""
  511. $ then
  512. $ define/user gnv$libcurl 'gnv_libcurl_share'
  513. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  514. /dsf=[.docs.examples]'target'.dsf -
  515. [.docs.examples]'target'.o,-
  516. gnv$'target'.opt/opt,-
  517. sys$input:/opt
  518. gnv$libcurl/share
  519. $ endif
  520. $!
  521. $!
  522. $ target = "fileupload"
  523. $ if f$search("[.docs.examples]''target'.exe") .eqs. ""
  524. $ then
  525. $ define/user gnv$libcurl 'gnv_libcurl_share'
  526. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  527. /dsf=[.docs.examples]'target'.dsf -
  528. [.docs.examples]'target'.o,-
  529. gnv$'target'.opt/opt,-
  530. sys$input:/opt
  531. gnv$libcurl/share
  532. $ endif
  533. $!
  534. $!
  535. $ target = "fopen"
  536. $ if f$search("[.docs.examples]''target'.exe") .eqs. ""
  537. $ then
  538. $ define/user gnv$libcurl 'gnv_libcurl_share'
  539. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  540. /dsf=[.docs.examples]'target'.dsf -
  541. [.docs.examples]'target'.o,-
  542. gnv$'target'.opt/opt,-
  543. sys$input:/opt
  544. gnv$libcurl/share
  545. $ endif
  546. $!
  547. $!
  548. $target = "ftpget"
  549. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  550. $then
  551. $ define/user gnv$libcurl 'gnv_libcurl_share'
  552. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  553. /dsf=[.docs.examples]'target'.dsf -
  554. [.docs.examples]'target'.o,-
  555. gnv$'target'.opt/opt,-
  556. sys$input:/opt
  557. gnv$libcurl/share
  558. $endif
  559. $!
  560. $!
  561. $target = "ftpgetresp"
  562. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  563. $then
  564. $ define/user gnv$libcurl 'gnv_libcurl_share'
  565. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  566. /dsf=[.docs.examples]'target'.dsf -
  567. [.docs.examples]'target'.o,-
  568. gnv$'target'.opt/opt,-
  569. sys$input:/opt
  570. gnv$libcurl/share
  571. $endif
  572. $!
  573. $!
  574. $target = "ftpupload"
  575. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  576. $then
  577. $ define/user gnv$libcurl 'gnv_libcurl_share'
  578. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  579. /dsf=[.docs.examples]'target'.dsf -
  580. [.docs.examples]'target'.o,-
  581. gnv$'target'.opt/opt,-
  582. sys$input:/opt
  583. gnv$libcurl/share
  584. $endif
  585. $!
  586. $!
  587. $target = "getinfo"
  588. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  589. $then
  590. $ define/user gnv$libcurl 'gnv_libcurl_share'
  591. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  592. /dsf=[.docs.examples]'target'.dsf -
  593. [.docs.examples]'target'.o,-
  594. gnv$'target'.opt/opt,-
  595. sys$input:/opt
  596. gnv$libcurl/share
  597. $endif
  598. $!
  599. $!
  600. $target = "getinmemory"
  601. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  602. $then
  603. $ define/user gnv$libcurl 'gnv_libcurl_share'
  604. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  605. /dsf=[.docs.examples]'target'.dsf -
  606. [.docs.examples]'target'.o,-
  607. gnv$'target'.opt/opt,-
  608. sys$input:/opt
  609. gnv$libcurl/share
  610. $endif
  611. $!
  612. $!
  613. $target = "http-post"
  614. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  615. $then
  616. $ define/user gnv$libcurl 'gnv_libcurl_share'
  617. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  618. /dsf=[.docs.examples]'target'.dsf -
  619. [.docs.examples]'target'.o,-
  620. gnv$'target'.opt/opt,-
  621. sys$input:/opt
  622. gnv$libcurl/share
  623. $endif
  624. $!
  625. $!
  626. $target = "httpcustomheader"
  627. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  628. $then
  629. $ define/user gnv$libcurl 'gnv_libcurl_share'
  630. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  631. /dsf=[.docs.examples]'target'.dsf -
  632. [.docs.examples]'target'.o,-
  633. gnv$'target'.opt/opt,-
  634. sys$input:/opt
  635. gnv$libcurl/share
  636. $endif
  637. $!
  638. $!
  639. $target = "httpput"
  640. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  641. $then
  642. $ define/user gnv$libcurl 'gnv_libcurl_share'
  643. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  644. /dsf=[.docs.examples]'target'.dsf -
  645. [.docs.examples]'target'.o,-
  646. gnv$'target'.opt/opt,-
  647. sys$input:/opt
  648. gnv$libcurl/share
  649. $endif
  650. $!
  651. $!
  652. $target = "https"
  653. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  654. $then
  655. $ define/user gnv$libcurl 'gnv_libcurl_share'
  656. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  657. /dsf=[.docs.examples]'target'.dsf -
  658. [.docs.examples]'target'.o,-
  659. gnv$'target'.opt/opt,-
  660. sys$input:/opt
  661. gnv$libcurl/share
  662. $endif
  663. $!
  664. $!
  665. $target = "multi-app"
  666. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  667. $then
  668. $ define/user gnv$libcurl 'gnv_libcurl_share'
  669. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  670. /dsf=[.docs.examples]'target'.dsf -
  671. [.docs.examples]'target'.o,-
  672. gnv$'target'.opt/opt,-
  673. sys$input:/opt
  674. gnv$libcurl/share
  675. $endif
  676. $!
  677. $!
  678. $target = "multi-debugcallback"
  679. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  680. $then
  681. $ define/user gnv$libcurl 'gnv_libcurl_share'
  682. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  683. /dsf=[.docs.examples]'target'.dsf -
  684. [.docs.examples]'target'.o,-
  685. gnv$'target'.opt/opt,-
  686. sys$input:/opt
  687. gnv$libcurl/share
  688. $endif
  689. $!
  690. $!
  691. $target = "multi-double"
  692. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  693. $then
  694. $ define/user gnv$libcurl 'gnv_libcurl_share'
  695. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  696. /dsf=[.docs.examples]'target'.dsf -
  697. [.docs.examples]'target'.o,-
  698. gnv$'target'.opt/opt,-
  699. sys$input:/opt
  700. gnv$libcurl/share
  701. $endif
  702. $!
  703. $!
  704. $target = "multi-post"
  705. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  706. $then
  707. $ define/user gnv$libcurl 'gnv_libcurl_share'
  708. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  709. /dsf=[.docs.examples]'target'.dsf -
  710. [.docs.examples]'target'.o,-
  711. gnv$'target'.opt/opt,-
  712. sys$input:/opt
  713. gnv$libcurl/share
  714. $endif
  715. $!
  716. $!
  717. $target = "multi-single"
  718. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  719. $then
  720. $ define/user gnv$libcurl 'gnv_libcurl_share'
  721. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  722. /dsf=[.docs.examples]'target'.dsf -
  723. [.docs.examples]'target'.o,-
  724. gnv$'target'.opt/opt,-
  725. sys$input:/opt
  726. gnv$libcurl/share
  727. $endif
  728. $!
  729. $!
  730. $target = "persistent"
  731. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  732. $then
  733. $ define/user gnv$libcurl 'gnv_libcurl_share'
  734. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  735. /dsf=[.docs.examples]'target'.dsf -
  736. [.docs.examples]'target'.o,-
  737. gnv$'target'.opt/opt,-
  738. sys$input:/opt
  739. gnv$libcurl/share
  740. $endif
  741. $!
  742. $!
  743. $target = "post-callback"
  744. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  745. $then
  746. $ define/user gnv$libcurl 'gnv_libcurl_share'
  747. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  748. /dsf=[.docs.examples]'target'.dsf -
  749. [.docs.examples]'target'.o,-
  750. gnv$'target'.opt/opt,-
  751. sys$input:/opt
  752. gnv$libcurl/share
  753. $endif
  754. $!
  755. $!
  756. $target = "postit2"
  757. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  758. $then
  759. $ define/user gnv$libcurl 'gnv_libcurl_share'
  760. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  761. /dsf=[.docs.examples]'target'.dsf -
  762. [.docs.examples]'target'.o,-
  763. gnv$'target'.opt/opt,-
  764. sys$input:/opt
  765. gnv$libcurl/share
  766. $endif
  767. $!
  768. $!
  769. $target = "sendrecv"
  770. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  771. $then
  772. $ define/user gnv$libcurl 'gnv_libcurl_share'
  773. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  774. /dsf=[.docs.examples]'target'.dsf -
  775. [.docs.examples]'target'.o,-
  776. gnv$'target'.opt/opt,-
  777. sys$input:/opt
  778. gnv$libcurl/share
  779. $endif
  780. $!
  781. $!
  782. $target = "sepheaders"
  783. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  784. $then
  785. $ define/user gnv$libcurl 'gnv_libcurl_share'
  786. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  787. /dsf=[.docs.examples]'target'.dsf -
  788. [.docs.examples]'target'.o,-
  789. gnv$'target'.opt/opt,-
  790. sys$input:/opt
  791. gnv$libcurl/share
  792. $endif
  793. $!
  794. $!
  795. $target = "simple"
  796. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  797. $then
  798. $ define/user gnv$libcurl 'gnv_libcurl_share'
  799. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  800. /dsf=[.docs.examples]'target'.dsf -
  801. [.docs.examples]'target'.o,-
  802. gnv$'target'.opt/opt,-
  803. sys$input:/opt
  804. gnv$libcurl/share
  805. $endif
  806. $!
  807. $!
  808. $target = "simplepost"
  809. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  810. $then
  811. $ define/user gnv$libcurl 'gnv_libcurl_share'
  812. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  813. /dsf=[.docs.examples]'target'.dsf -
  814. [.docs.examples]'target'.o,-
  815. gnv$'target'.opt/opt,-
  816. sys$input:/opt
  817. gnv$libcurl/share
  818. $endif
  819. $!
  820. $!
  821. $target = "simplessl"
  822. $if f$search("[.docs.examples]''target'.exe") .eqs. ""
  823. $then
  824. $ define/user gnv$libcurl 'gnv_libcurl_share'
  825. $ link'ldebug'/exe=[.docs.examples]'target'.exe-
  826. /dsf=[.docs.examples]'target'.dsf -
  827. [.docs.examples]'target'.o,-
  828. gnv$'target'.opt/opt,-
  829. sys$input:/opt
  830. gnv$libcurl/share
  831. $endif
  832. $!
  833. $! =============== End of docs/examples =========================
  834. $!
  835. $!
  836. $all_exit:
  837. $set def 'default_dir'
  838. $exit '$status'
  839. $!