makevms.com 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567
  1. $!
  2. $! MAKEVMS.COM
  3. $! Original Author: UNKNOWN
  4. $! Rewritten By: Robert Byer
  5. $! Vice-President
  6. $! A-Com Computing, Inc.
  7. $! byer@mail.all-net.net
  8. $!
  9. $! Changes by Richard Levitte <richard@levitte.org>
  10. $! Zoltan Arpadffy <zoli@polarhome.com>
  11. $!
  12. $! This procedure creates the SSL libraries of "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB"
  13. $! "[.xxx.EXE.SSL]LIBSSL.OLB"
  14. $! The "xxx" denotes the machine architecture of ALPHA, IA64 or VAX.
  15. $!
  16. $! This procedures accepts two command line options listed below.
  17. $!
  18. $! P1 specifies one of the following build options:
  19. $!
  20. $! ALL Just build "everything".
  21. $! CONFIG Just build the "[.CRYPTO._xxx]OPENSSLCONF.H" file.
  22. $! BUILDINF Just build the "[.CRYPTO._xxx]BUILDINF.H" file.
  23. $! SOFTLINKS Just fix the Unix soft links.
  24. $! BUILDALL Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done.
  25. $! CRYPTO Just build the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
  26. $! CRYPTO/x Just build the x part of the
  27. $! "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
  28. $! SSL Just build the "[.xxx.EXE.SSL]LIBSSL.OLB" library.
  29. $! TEST Just build the "[.xxx.EXE.TEST]" test programs for OpenSSL.
  30. $! APPS Just build the "[.xxx.EXE.APPS]" application programs for OpenSSL.
  31. $! ENGINES Just build the "[.xxx.EXE.ENGINES]" application programs for OpenSSL.
  32. $!
  33. $! P2, if defined, specifies the C pointer size. Ignored on VAX.
  34. $! ("64=ARGV" gives more efficient code with HP C V7.3 or newer.)
  35. $! Supported values are:
  36. $!
  37. $! "" Compile with default (/NOPOINTER_SIZE).
  38. $! 32 Compile with /POINTER_SIZE=32 (SHORT).
  39. $! 64 Compile with /POINTER_SIZE=64[=ARGV] (LONG[=ARGV]).
  40. $! (Automatically select ARGV if compiler supports it.)
  41. $! 64= Compile with /POINTER_SIZE=64 (LONG).
  42. $! 64=ARGV Compile with /POINTER_SIZE=64=ARGV (LONG=ARGV).
  43. $!
  44. $! P3 specifies DEBUG or NODEBUG, to compile with or without debugging
  45. $! information.
  46. $!
  47. $! P4 specifies which compiler to try to compile under.
  48. $!
  49. $! VAXC For VAX C.
  50. $! DECC For DEC C.
  51. $! GNUC For GNU C.
  52. $! LINK To only link the programs from existing object files.
  53. $! (not yet implemented)
  54. $!
  55. $! If you don't specify a compiler, it will try to determine which
  56. $! "C" compiler to use.
  57. $!
  58. $! P5, if defined, sets a TCP/IP library to use, through one of the following
  59. $! keywords:
  60. $!
  61. $! UCX for UCX or UCX emulation
  62. $! TCPIP for TCP/IP Services or TCP/IP Services emulation
  63. $! (this is prefered over UCX)
  64. $! SOCKETSHR for SOCKETSHR+NETLIB
  65. $! NONE to avoid specifying which TCP/IP implementation to
  66. $! use at build time (this works with DEC C). This is
  67. $! the default.
  68. $!
  69. $! P6, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up).
  70. $!
  71. $! P7, if defined, specifies a directory where ZLIB files (zlib.h,
  72. $! libz.olb) may be found. Optionally, a non-default object library
  73. $! name may be included ("dev:[dir]libz_64.olb", for example).
  74. $!
  75. $!
  76. $! Announce/identify.
  77. $!
  78. $ proc = f$environment( "procedure")
  79. $ write sys$output "@@@ "+ -
  80. f$parse( proc, , , "name")+ f$parse( proc, , , "type")
  81. $!
  82. $ DEF_ORIG = F$ENVIRONMENT( "DEFAULT")
  83. $ ON ERROR THEN GOTO TIDY
  84. $ ON CONTROL_C THEN GOTO TIDY
  85. $!
  86. $! Check if we're in a batch job, and make sure we get to
  87. $! the directory this script is in
  88. $!
  89. $ IF F$MODE() .EQS. "BATCH"
  90. $ THEN
  91. $ COMNAME=F$ENVIRONMENT("PROCEDURE")
  92. $ COMPATH=F$PARSE("A.;",COMNAME) - "A.;"
  93. $ SET DEF 'COMPATH'
  94. $ ENDIF
  95. $!
  96. $! Check What Architecture We Are Using.
  97. $!
  98. $ IF (F$GETSYI("CPU").LT.128)
  99. $ THEN
  100. $!
  101. $! The Architecture Is VAX.
  102. $!
  103. $ ARCH = "VAX"
  104. $!
  105. $! Else...
  106. $!
  107. $ ELSE
  108. $!
  109. $! The Architecture Is Alpha, IA64 or whatever comes in the future.
  110. $!
  111. $ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
  112. $ IF (ARCH .EQS. "") THEN ARCH = "UNK"
  113. $!
  114. $! End The Architecture Check.
  115. $!
  116. $ ENDIF
  117. $!
  118. $ ARCHD = ARCH
  119. $ LIB32 = "32"
  120. $ POINTER_SIZE = ""
  121. $!
  122. $! Get VMS version.
  123. $!
  124. $ VMS_VERSION = f$edit( f$getsyi( "VERSION"), "TRIM")
  125. $!
  126. $! Check To Make Sure We Have Valid Command Line Parameters.
  127. $!
  128. $ GOSUB CHECK_OPTIONS
  129. $!
  130. $! Check To See What We Are To Do.
  131. $!
  132. $ IF (BUILDCOMMAND.EQS."ALL")
  133. $ THEN
  134. $!
  135. $! Start with building the OpenSSL configuration file.
  136. $!
  137. $ GOSUB CONFIG
  138. $!
  139. $! Create The "BUILDINF.H" Include File.
  140. $!
  141. $ GOSUB BUILDINF
  142. $!
  143. $! Fix The Unix Softlinks.
  144. $!
  145. $ GOSUB SOFTLINKS
  146. $!
  147. $ ENDIF
  148. $!
  149. $ IF (BUILDCOMMAND.EQS."ALL".OR.BUILDCOMMAND.EQS."BUILDALL")
  150. $ THEN
  151. $!
  152. $! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
  153. $!
  154. $ GOSUB CRYPTO
  155. $!
  156. $! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
  157. $!
  158. $ GOSUB SSL
  159. $!
  160. $! Build The [.xxx.EXE.TEST] OpenSSL Test Utilities.
  161. $!
  162. $ GOSUB TEST
  163. $!
  164. $! Build The [.xxx.EXE.APPS] OpenSSL Application Utilities.
  165. $!
  166. $ GOSUB APPS
  167. $!
  168. $! Build The [.xxx.EXE.ENGINES] OpenSSL Shareable Engines.
  169. $!
  170. $ GOSUB ENGINES
  171. $!
  172. $! Else...
  173. $!
  174. $ ELSE
  175. $!
  176. $! Build Just What The User Wants Us To Build.
  177. $!
  178. $ GOSUB 'BUILDCOMMAND'
  179. $!
  180. $ ENDIF
  181. $!
  182. $! Time To EXIT.
  183. $!
  184. $ GOTO TIDY
  185. $!
  186. $! Rebuild The [.CRYPTO._xxx]OPENSSLCONF.H" file.
  187. $!
  188. $ CONFIG:
  189. $!
  190. $! Tell The User We Are Creating The [.CRYPTO._xxx]OPENSSLCONF.H File.
  191. $!
  192. $ WRITE SYS$OUTPUT "Creating [.CRYPTO.''ARCHD']OPENSSLCONF.H Include File."
  193. $!
  194. $! First, make sure the directory exists.
  195. $!
  196. $ IF F$PARSE("SYS$DISK:[.CRYPTO.''ARCHD']") .EQS. "" THEN -
  197. CREATE/DIRECTORY SYS$DISK:[.CRYPTO.'ARCHD']
  198. $!
  199. $! Different tar/UnZip versions/option may have named the file differently
  200. $ IF F$SEARCH("[.crypto]opensslconf.h_in") .NES. ""
  201. $ THEN
  202. $ OPENSSLCONF_H_IN = "[.crypto]opensslconf.h_in"
  203. $ ELSE
  204. $ IF F$SEARCH( "[.crypto]opensslconf_h.in") .NES. ""
  205. $ THEN
  206. $ OPENSSLCONF_H_IN = "[.crypto]opensslconf_h.in"
  207. $ ELSE
  208. $ ! For ODS-5
  209. $ IF F$SEARCH( "[.crypto]opensslconf.h.in") .NES. ""
  210. $ THEN
  211. $ OPENSSLCONF_H_IN = "[.crypto]opensslconf.h.in"
  212. $ ELSE
  213. $ WRITE SYS$ERROR "Couldn't find a [.crypto]opensslconf.h.in. Exiting!"
  214. $ $STATUS = %X00018294 ! "%RMS-F-FNF, file not found".
  215. $ GOTO TIDY
  216. $ ENDIF
  217. $ ENDIF
  218. $ ENDIF
  219. $!
  220. $! Create The [.CRYPTO._xxx]OPENSSLCONF.H File.
  221. $! Make sure it has the right format.
  222. $!
  223. $ OSCH_NAME = "SYS$DISK:[.CRYPTO.''ARCHD']OPENSSLCONF.H"
  224. $ CREATE /FDL=SYS$INPUT: 'OSCH_NAME'
  225. RECORD
  226. FORMAT stream_lf
  227. $ OPEN /APPEND H_FILE 'OSCH_NAME'
  228. $!
  229. $! Write The [.CRYPTO._xxx]OPENSSLCONF.H File.
  230. $!
  231. $ WRITE H_FILE "/* This file was automatically built using makevms.com */"
  232. $ WRITE H_FILE "/* and ''OPENSSLCONF_H_IN' */"
  233. $!
  234. $! Write a few macros that indicate how this system was built.
  235. $!
  236. $ WRITE H_FILE ""
  237. $ WRITE H_FILE "#ifndef OPENSSL_SYS_VMS"
  238. $ WRITE H_FILE "# define OPENSSL_SYS_VMS"
  239. $ WRITE H_FILE "#endif"
  240. $
  241. $!
  242. $! Defined the full SDIRS here. It will be pruned depending on configuration.
  243. $! This is an exact copy of what's found in Makefile.org, with spaces replaced
  244. $! with commas.
  245. $!
  246. $ SDIRS := -
  247. objects,-
  248. md2,md4,md5,sha,mdc2,hmac,ripemd,whrlpool,-
  249. des,aes,rc2,rc4,rc5,idea,bf,cast,camellia,seed,modes,-
  250. bn,ec,rsa,dsa,ecdsa,dh,ecdh,dso,engine,-
  251. buffer,bio,stack,lhash,rand,err,-
  252. evp,asn1,pem,x509,x509v3,conf,txt_db,pkcs7,pkcs12,comp,ocsp,ui,-
  253. cms,pqueue,ts,jpake,srp,store,cmac
  254. $
  255. $! One of the best way to figure out what the list should be is to do
  256. $! the following on a Unix system:
  257. $! grep OPENSSL_NO_ crypto/include/internal/*.h crypto/*/*.h ssl/*.h engines/*.h engines/*/*.h|grep ':# *if'|sed -e 's/^.*def //'|sort|uniq
  258. $! For that reason, the list will also always end up in alphabetical order
  259. $ CONFIG_LOGICALS := AES,-
  260. ASM,INLINE_ASM,-
  261. BF,-
  262. CAMELLIA,-
  263. CAST,-
  264. CMS,-
  265. COMP,-
  266. DEPRECATED,-
  267. DES,-
  268. DGRAM,-
  269. DH,-
  270. DSA,-
  271. EC,-
  272. EC2M,-
  273. ECDH,-
  274. ECDSA,-
  275. EC_NISTP_64_GCC_128,-
  276. ENGINE,-
  277. ERR,-
  278. GMP,-
  279. GOST,-
  280. HEARTBEATS,-
  281. HMAC,-
  282. IDEA,-
  283. JPAKE,-
  284. MD2,-
  285. MD4,-
  286. MD5,-
  287. MDC2,-
  288. NEXTPROTONEG,-
  289. OCB,-
  290. OCSP,-
  291. PSK,-
  292. RC2,-
  293. RC4,-
  294. RC5,-
  295. RMD160,-
  296. RSA,-
  297. SCTP,-
  298. SEED,-
  299. SOCK,-
  300. SRP,-
  301. SRTP,-
  302. SSL3_METHOD,-
  303. SSL_TRACE,-
  304. STATIC_ENGINE,-
  305. STDIO,-
  306. STORE,-
  307. UNIT_TEST,-
  308. WHIRLPOOL
  309. $ CONFIG_EXPERIMENTAL := JPAKE,-
  310. STORE
  311. $! The following rules, which dictate how some algorithm choices affect
  312. $! others, are picked from Configure.
  313. $! Quick syntax:
  314. $! list = item[ ; list]
  315. $! item = algos / dependents
  316. $! algos = algo [, algos]
  317. $! dependents = dependent [, dependents]
  318. $! When a list of algos is specified in one item, it means that they must
  319. $! all be disabled for the rule to apply.
  320. $! When a list of dependents is specified in one item, it means that they
  321. $! will all be disabled if the rule applies.
  322. $! Rules are checked sequentially. If a rule disables an algorithm, it will
  323. $! affect all following rules that depend on that algorithm being disabled.
  324. $! To force something to be enabled or disabled, have no algorithms in the
  325. $! algos part.
  326. $ CONFIG_DISABLE_RULES := RIJNDAEL/AES;-
  327. RMD160/RIPEMD;-
  328. DES/MDC2;-
  329. EC/ECDSA,ECDH;-
  330. MD5/SSL3,TLS1;-
  331. SHA/SSL3,TLS1;-
  332. RSA,DSA/SSL3,TLS1;-
  333. DH/SSL3,TLS1;-
  334. EC/GOST;-
  335. DSA/GOST;-
  336. DH/GOST;-
  337. /STATIC_ENGINE;-
  338. /DEPRECATED;-
  339. /EC_NISTP_64_GCC_128;-
  340. /GMP;-
  341. /MD2;-
  342. /RC5;-
  343. /RFC3779;-
  344. /SCTP;-
  345. /SSL_TRACE;-
  346. /UNIT_TEST
  347. $ CONFIG_ENABLE_RULES := ZLIB_DYNAMIC/ZLIB;-
  348. /THREADS
  349. $
  350. $! Architecture specific rule addtions
  351. $ IF ARCH .EQS. "VAX"
  352. $ THEN
  353. $ ! Disable algorithms that require 64-bit integers in C
  354. $ CONFIG_DISABLE_RULES = CONFIG_DISABLE_RULES + -
  355. ";/GOST" + -
  356. ";/WHIRLPOOL"
  357. $ ENDIF
  358. $
  359. $! Keep track of things to remove from SDIRS, have the items surrounded
  360. $! with commas
  361. $ SKIP_SDIRS = ","
  362. $
  363. $ CONFIG_LOG_I = 0
  364. $ CONFIG_LOG_LOOP11:
  365. $ CONFIG_LOG_E = F$EDIT(F$ELEMENT(CONFIG_LOG_I,",",CONFIG_LOGICALS),"TRIM")
  366. $ CONFIG_LOG_I = CONFIG_LOG_I + 1
  367. $ IF CONFIG_LOG_E .EQS. "" THEN GOTO CONFIG_LOG_LOOP11
  368. $ IF CONFIG_LOG_E .EQS. "," THEN GOTO CONFIG_LOG_LOOP11_END
  369. $ IF F$TRNLNM("OPENSSL_NO_"+CONFIG_LOG_E)
  370. $ THEN
  371. $ CONFIG_DISABLED_'CONFIG_LOG_E' := YES
  372. $ CONFIG_ENABLED_'CONFIG_LOG_E' := NO
  373. $ CONFIG_CHANGED_'CONFIG_LOG_E' := YES
  374. $ IF (SKIP_SDIRS - (","+CONFIG_LOG_E+",")) .EQS. SKIP_SDIRS THEN -
  375. SKIP_SDIRS = SKIP_SDIRS + CONFIG_LOG_E + ","
  376. $ ELSE
  377. $ CONFIG_DISABLED_'CONFIG_LOG_E' := NO
  378. $ CONFIG_ENABLED_'CONFIG_LOG_E' := YES
  379. $ ! Because all non-experimental algorithms are assumed
  380. $ ! enabled by default
  381. $ CONFIG_CHANGED_'CONFIG_LOG_E' := NO
  382. $ IF (SKIP_SDIRS - (","+CONFIG_LOG_E+",")) .NES. SKIP_SDIRS THEN -
  383. SKIP_SDIRS = SKIP_SDIRS - (CONFIG_LOG_E + ",")
  384. $ ENDIF
  385. $ GOTO CONFIG_LOG_LOOP11
  386. $ CONFIG_LOG_LOOP11_END:
  387. $
  388. $ CONFIG_LOG_I = 0
  389. $ CONFIG_LOG_LOOP12:
  390. $ CONFIG_LOG_E = F$EDIT(F$ELEMENT(CONFIG_LOG_I,",",CONFIG_EXPERIMENTAL),"TRIM")
  391. $ CONFIG_LOG_I = CONFIG_LOG_I + 1
  392. $ IF CONFIG_LOG_E .EQS. "" THEN GOTO CONFIG_LOG_LOOP12
  393. $ IF CONFIG_LOG_E .EQS. "," THEN GOTO CONFIG_LOG_LOOP12_END
  394. $ IF F$TRNLNM("OPENSSL_EXPERIMENTAL_"+CONFIG_LOG_E)
  395. $ THEN
  396. $ CONFIG_DISABLED_'CONFIG_LOG_E' := NO
  397. $ CONFIG_ENABLED_'CONFIG_LOG_E' := YES
  398. $ CONFIG_CHANGED_'CONFIG_LOG_E' := YES
  399. $ IF (SKIP_SDIRS - (","+CONFIG_LOG_E+",")) .NES. SKIP_SDIRS THEN -
  400. SKIP_SDIRS = SKIP_SDIRS - (CONFIG_LOG_E + ",")
  401. $ ELSE
  402. $ CONFIG_DISABLED_'CONFIG_LOG_E' := YES
  403. $ CONFIG_ENABLED_'CONFIG_LOG_E' := NO
  404. $ ! Because all experimental algorithms are assumed
  405. $ ! disabled by default
  406. $ CONFIG_CHANGED_'CONFIG_LOG_E' := NO
  407. $ IF (SKIP_SDIRS - (","+CONFIG_LOG_E+",")) .EQS. SKIP_SDIRS THEN -
  408. SKIP_SDIRS = SKIP_SDIRS + CONFIG_LOG_E + ","
  409. $ ENDIF
  410. $ GOTO CONFIG_LOG_LOOP12
  411. $ CONFIG_LOG_LOOP12_END:
  412. $
  413. $! Apply cascading disable rules
  414. $ CONFIG_DISABLE_I = 0
  415. $ CONFIG_DISABLE_LOOP0:
  416. $ CONFIG_DISABLE_E = F$EDIT(F$ELEMENT(CONFIG_DISABLE_I,";", -
  417. CONFIG_DISABLE_RULES),"TRIM")
  418. $ CONFIG_DISABLE_I = CONFIG_DISABLE_I + 1
  419. $ IF CONFIG_DISABLE_E .EQS. "" THEN GOTO CONFIG_DISABLE_LOOP0
  420. $ IF CONFIG_DISABLE_E .EQS. ";" THEN GOTO CONFIG_DISABLE_LOOP0_END
  421. $
  422. $ CONFIG_DISABLE_ALGOS = F$EDIT(F$ELEMENT(0,"/",CONFIG_DISABLE_E),"TRIM")
  423. $ CONFIG_DISABLE_DEPENDENTS = F$EDIT(F$ELEMENT(1,"/",CONFIG_DISABLE_E),"TRIM")
  424. $ TO_DISABLE := YES
  425. $ CONFIG_ALGO_I = 0
  426. $ CONFIG_DISABLE_LOOP1:
  427. $ CONFIG_ALGO_E = F$EDIT(F$ELEMENT(CONFIG_ALGO_I,",", -
  428. CONFIG_DISABLE_ALGOS),"TRIM")
  429. $ CONFIG_ALGO_I = CONFIG_ALGO_I + 1
  430. $ IF CONFIG_ALGO_E .EQS. "" THEN GOTO CONFIG_DISABLE_LOOP1
  431. $ IF CONFIG_ALGO_E .EQS. "," THEN GOTO CONFIG_DISABLE_LOOP1_END
  432. $ IF F$TYPE(CONFIG_DISABLED_'CONFIG_ALGO_E') .EQS. ""
  433. $ THEN
  434. $ TO_DISABLE := NO
  435. $ ELSE
  436. $ IF .NOT. CONFIG_DISABLED_'CONFIG_ALGO_E' THEN TO_DISABLE := NO
  437. $ ENDIF
  438. $ GOTO CONFIG_DISABLE_LOOP1
  439. $ CONFIG_DISABLE_LOOP1_END:
  440. $
  441. $ IF TO_DISABLE
  442. $ THEN
  443. $ CONFIG_DEPENDENT_I = 0
  444. $ CONFIG_DISABLE_LOOP2:
  445. $ CONFIG_DEPENDENT_E = F$EDIT(F$ELEMENT(CONFIG_DEPENDENT_I,",", -
  446. CONFIG_DISABLE_DEPENDENTS),"TRIM")
  447. $ CONFIG_DEPENDENT_I = CONFIG_DEPENDENT_I + 1
  448. $ IF CONFIG_DEPENDENT_E .EQS. "" THEN GOTO CONFIG_DISABLE_LOOP2
  449. $ IF CONFIG_DEPENDENT_E .EQS. "," THEN GOTO CONFIG_DISABLE_LOOP2_END
  450. $ CONFIG_DISABLED_'CONFIG_DEPENDENT_E' := YES
  451. $ CONFIG_ENABLED_'CONFIG_DEPENDENT_E' := NO
  452. $ ! Better not to assume defaults at this point...
  453. $ CONFIG_CHANGED_'CONFIG_DEPENDENT_E' := YES
  454. $ IF (SKIP_SDIRS - (","+CONFIG_DEPENDENT_E+",")) .EQS. SKIP_SDIRS THEN -
  455. SKIP_SDIRS = SKIP_SDIRS + CONFIG_DEPENDENT_E + ","
  456. $ WRITE SYS$ERROR -
  457. "''CONFIG_DEPENDENT_E' disabled by rule ''CONFIG_DISABLE_E'"
  458. $ GOTO CONFIG_DISABLE_LOOP2
  459. $ CONFIG_DISABLE_LOOP2_END:
  460. $ ENDIF
  461. $ GOTO CONFIG_DISABLE_LOOP0
  462. $ CONFIG_DISABLE_LOOP0_END:
  463. $
  464. $! Apply cascading enable rules
  465. $ CONFIG_ENABLE_I = 0
  466. $ CONFIG_ENABLE_LOOP0:
  467. $ CONFIG_ENABLE_E = F$EDIT(F$ELEMENT(CONFIG_ENABLE_I,";", -
  468. CONFIG_ENABLE_RULES),"TRIM")
  469. $ CONFIG_ENABLE_I = CONFIG_ENABLE_I + 1
  470. $ IF CONFIG_ENABLE_E .EQS. "" THEN GOTO CONFIG_ENABLE_LOOP0
  471. $ IF CONFIG_ENABLE_E .EQS. ";" THEN GOTO CONFIG_ENABLE_LOOP0_END
  472. $
  473. $ CONFIG_ENABLE_ALGOS = F$EDIT(F$ELEMENT(0,"/",CONFIG_ENABLE_E),"TRIM")
  474. $ CONFIG_ENABLE_DEPENDENTS = F$EDIT(F$ELEMENT(1,"/",CONFIG_ENABLE_E),"TRIM")
  475. $ TO_ENABLE := YES
  476. $ CONFIG_ALGO_I = 0
  477. $ CONFIG_ENABLE_LOOP1:
  478. $ CONFIG_ALGO_E = F$EDIT(F$ELEMENT(CONFIG_ALGO_I,",", -
  479. CONFIG_ENABLE_ALGOS),"TRIM")
  480. $ CONFIG_ALGO_I = CONFIG_ALGO_I + 1
  481. $ IF CONFIG_ALGO_E .EQS. "" THEN GOTO CONFIG_ENABLE_LOOP1
  482. $ IF CONFIG_ALGO_E .EQS. "," THEN GOTO CONFIG_ENABLE_LOOP1_END
  483. $ IF F$TYPE(CONFIG_ENABLED_'CONFIG_ALGO_E') .EQS. ""
  484. $ THEN
  485. $ TO_ENABLE := NO
  486. $ ELSE
  487. $ IF .NOT. CONFIG_ENABLED_'CONFIG_ALGO_E' THEN TO_ENABLE := NO
  488. $ ENDIF
  489. $ GOTO CONFIG_ENABLE_LOOP1
  490. $ CONFIG_ENABLE_LOOP1_END:
  491. $
  492. $ IF TO_ENABLE
  493. $ THEN
  494. $ CONFIG_DEPENDENT_I = 0
  495. $ CONFIG_ENABLE_LOOP2:
  496. $ CONFIG_DEPENDENT_E = F$EDIT(F$ELEMENT(CONFIG_DEPENDENT_I,",", -
  497. CONFIG_ENABLE_DEPENDENTS),"TRIM")
  498. $ CONFIG_DEPENDENT_I = CONFIG_DEPENDENT_I + 1
  499. $ IF CONFIG_DEPENDENT_E .EQS. "" THEN GOTO CONFIG_ENABLE_LOOP2
  500. $ IF CONFIG_DEPENDENT_E .EQS. "," THEN GOTO CONFIG_ENABLE_LOOP2_END
  501. $ CONFIG_DISABLED_'CONFIG_DEPENDENT_E' := NO
  502. $ CONFIG_ENABLED_'CONFIG_DEPENDENT_E' := YES
  503. $ ! Better not to assume defaults at this point...
  504. $ CONFIG_CHANGED_'CONFIG_DEPENDENT_E' := YES
  505. $ IF (SKIP_SDIRS - (","+CONFIG_DEPENDENT_E+",")) .NES. SKIP_SDIRS THEN -
  506. SKIP_SDIRS = SKIP_SDIRS - (CONFIG_DEPENDENT_E + ",")
  507. $ WRITE SYS$ERROR -
  508. "''CONFIG_DEPENDENT_E' enabled by rule ''CONFIG_ENABLE_E'"
  509. $ GOTO CONFIG_ENABLE_LOOP2
  510. $ CONFIG_ENABLE_LOOP2_END:
  511. $ ENDIF
  512. $ GOTO CONFIG_ENABLE_LOOP0
  513. $ CONFIG_ENABLE_LOOP0_END:
  514. $
  515. $! Fix SDIRS
  516. $ SDIRS = ","+F$EDIT(SDIRS,"COLLAPSE")+","
  517. $ CONFIG_SKIP_I = 0
  518. $ CONFIG_SDIRS_LOOP1:
  519. $ CONFIG_SKIP_E = F$EDIT(F$ELEMENT(CONFIG_SKIP_I,",",SKIP_SDIRS),"TRIM")
  520. $ CONFIG_SKIP_I = CONFIG_SKIP_I + 1
  521. $ IF CONFIG_SKIP_E .EQS. "" THEN GOTO CONFIG_SDIRS_LOOP1
  522. $ IF CONFIG_SKIP_E .EQS. "," THEN GOTO CONFIG_SDIRS_LOOP1_END
  523. $ IF (SDIRS - (","+CONFIG_SKIP_E+",")) .NES. SDIRS THEN -
  524. SDIRS = SDIRS - (CONFIG_SKIP_E+",")
  525. $ GOTO CONFIG_SDIRS_LOOP1
  526. $ CONFIG_SDIRS_LOOP1_END:
  527. $
  528. $! Write to the configuration
  529. $ CONFIG_LOG_I = 0
  530. $ CONFIG_LOG_LOOP2:
  531. $ CONFIG_LOG_E = F$EDIT(F$ELEMENT(CONFIG_LOG_I,",",CONFIG_LOGICALS),"TRIM")
  532. $ CONFIG_LOG_I = CONFIG_LOG_I + 1
  533. $ IF CONFIG_LOG_E .EQS. "" THEN GOTO CONFIG_LOG_LOOP2
  534. $ IF CONFIG_LOG_E .EQS. "," THEN GOTO CONFIG_LOG_LOOP2_END
  535. $ IF CONFIG_DISABLED_'CONFIG_LOG_E'
  536. $ THEN
  537. $ WRITE H_FILE "#ifndef OPENSSL_NO_",CONFIG_LOG_E
  538. $ WRITE H_FILE "# define OPENSSL_NO_",CONFIG_LOG_E
  539. $ WRITE H_FILE "#endif"
  540. $ ELSE
  541. $ IF CONFIG_CHANGED_'CONFIG_LOG_E'
  542. $ THEN
  543. $ WRITE H_FILE "#ifndef OPENSSL_EXPERIMENTAL_",CONFIG_LOG_E
  544. $ WRITE H_FILE "# ifndef OPENSSL_NO_",CONFIG_LOG_E
  545. $ WRITE H_FILE "# define OPENSSL_NO_",CONFIG_LOG_E
  546. $ WRITE H_FILE "# endif"
  547. $ WRITE H_FILE "#endif"
  548. $
  549. $ IF F$TYPE(USER_CCDEFS) .NES. ""
  550. $ THEN
  551. $ USER_CCDEFS = USER_CCDEFS + ",OPENSSL_EXPERIMENTAL_" + CONFIG_LOG_E
  552. $ ELSE
  553. $ USER_CCDEFS = "OPENSSL_EXPERIMENTAL_" + CONFIG_LOG_E
  554. $ ENDIF
  555. $ ENDIF
  556. $ ENDIF
  557. $ GOTO CONFIG_LOG_LOOP2
  558. $ CONFIG_LOG_LOOP2_END:
  559. $
  560. $ WRITE/SYMBOL SYS$ERROR "SDIRS = """,SDIRS,""""
  561. $!
  562. $ WRITE H_FILE ""
  563. $ WRITE H_FILE "/* STCP support comes with TCPIP 5.7 ECO 2 "
  564. $ WRITE H_FILE " * enable on newer systems / 2012-02-24 arpadffy */"
  565. $ WRITE H_FILE "#define OPENSSL_NO_SCTP"
  566. $ WRITE H_FILE ""
  567. $!
  568. $! Add in the common "crypto/opensslconf.h.in".
  569. $!
  570. $ TYPE 'OPENSSLCONF_H_IN' /OUTPUT=H_FILE:
  571. $!
  572. $ IF ARCH .NES. "VAX"
  573. $ THEN
  574. $!
  575. $! Write the non-VAX specific data
  576. $!
  577. $ WRITE H_FILE "#if defined(HEADER_RC4_H)"
  578. $ WRITE H_FILE "#undef RC4_INT"
  579. $ WRITE H_FILE "#define RC4_INT unsigned int"
  580. $ WRITE H_FILE "#undef RC4_CHUNK"
  581. $ WRITE H_FILE "#define RC4_CHUNK unsigned long long"
  582. $ WRITE H_FILE "#endif"
  583. $!
  584. $ WRITE H_FILE "#if defined(HEADER_DES_LOCL_H)"
  585. $ WRITE H_FILE "#undef DES_LONG"
  586. $ WRITE H_FILE "#define DES_LONG unsigned int"
  587. $ WRITE H_FILE "#undef DES_PTR"
  588. $ WRITE H_FILE "#define DES_PTR"
  589. $ WRITE H_FILE "#undef DES_RISC1"
  590. $ WRITE H_FILE "#undef DES_RISC2"
  591. $ WRITE H_FILE "#define DES_RISC1"
  592. $ WRITE H_FILE "#undef DES_UNROLL"
  593. $ WRITE H_FILE "#define DES_UNROLL"
  594. $ WRITE H_FILE "#endif"
  595. $!
  596. $ WRITE H_FILE "#if defined(HEADER_BN_H)"
  597. $ WRITE H_FILE "#undef BN_LLONG" ! Never define with SIXTY_FOUR_BIT
  598. $ WRITE H_FILE "#undef SIXTY_FOUR_BIT_LONG"
  599. $ WRITE H_FILE "#undef SIXTY_FOUR_BIT"
  600. $ WRITE H_FILE "#define SIXTY_FOUR_BIT"
  601. $ WRITE H_FILE "#undef THIRTY_TWO_BIT"
  602. $ WRITE H_FILE "#undef SIXTEEN_BIT"
  603. $ WRITE H_FILE "#undef EIGHT_BIT"
  604. $ WRITE H_FILE "#endif"
  605. $
  606. $ WRITE H_FILE "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION"
  607. $!
  608. $! Else...
  609. $!
  610. $ ELSE
  611. $!
  612. $! Write the VAX specific data
  613. $!
  614. $ WRITE H_FILE "#if defined(HEADER_RC4_H)"
  615. $ WRITE H_FILE "#undef RC4_INT"
  616. $ WRITE H_FILE "#define RC4_INT unsigned char"
  617. $ WRITE H_FILE "#undef RC4_CHUNK"
  618. $ WRITE H_FILE "#define RC4_CHUNK unsigned long"
  619. $ WRITE H_FILE "#endif"
  620. $!
  621. $ WRITE H_FILE "#if defined(HEADER_DES_LOCL_H)"
  622. $ WRITE H_FILE "#undef DES_LONG"
  623. $ WRITE H_FILE "#define DES_LONG unsigned long"
  624. $ WRITE H_FILE "#undef DES_PTR"
  625. $ WRITE H_FILE "#define DES_PTR"
  626. $ WRITE H_FILE "#undef DES_RISC1"
  627. $ WRITE H_FILE "#undef DES_RISC2"
  628. $ WRITE H_FILE "#undef DES_UNROLL"
  629. $ WRITE H_FILE "#endif"
  630. $!
  631. $ WRITE H_FILE "#if defined(HEADER_BN_H)"
  632. $ WRITE H_FILE "#undef BN_LLONG" ! VAX C/DEC C doesn't have long long
  633. $ WRITE H_FILE "#undef SIXTY_FOUR_BIT_LONG"
  634. $ WRITE H_FILE "#undef SIXTY_FOUR_BIT"
  635. $ WRITE H_FILE "#undef THIRTY_TWO_BIT"
  636. $ WRITE H_FILE "#define THIRTY_TWO_BIT"
  637. $ WRITE H_FILE "#undef SIXTEEN_BIT"
  638. $ WRITE H_FILE "#undef EIGHT_BIT"
  639. $ WRITE H_FILE "#endif"
  640. $!
  641. $ WRITE H_FILE "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION"
  642. $ WRITE H_FILE "#define OPENSSL_EXPORT_VAR_AS_FUNCTION"
  643. $!
  644. $! End
  645. $!
  646. $ ENDIF
  647. $!
  648. $! Close the [.CRYPTO._xxx]OPENSSLCONF.H file
  649. $!
  650. $ CLOSE H_FILE
  651. $!
  652. $! Purge The [.CRYPTO._xxx]OPENSSLCONF.H file
  653. $!
  654. $ PURGE SYS$DISK:[.CRYPTO.'ARCHD']OPENSSLCONF.H
  655. $!
  656. $! That's All, Time To RETURN.
  657. $!
  658. $ RETURN
  659. $!
  660. $! Rebuild The "[.CRYPTO._xxx]BUILDINF.H" file.
  661. $!
  662. $ BUILDINF:
  663. $!
  664. $! Tell The User We Are Creating The [.CRYPTO._xxx]BUILDINF.H File.
  665. $!
  666. $ WRITE SYS$OUTPUT "Creating [.CRYPTO.''ARCHD']BUILDINF.H Include File."
  667. $!
  668. $! Create The [.CRYPTO._xxx]BUILDINF.H File.
  669. $!
  670. $ BIH_NAME = "SYS$DISK:[.CRYPTO.''ARCHD']BUILDINF.H"
  671. $ CREATE /FDL=SYS$INPUT: 'BIH_NAME'
  672. RECORD
  673. FORMAT stream_lf
  674. $!
  675. $ OPEN /APPEND H_FILE 'bih_name'
  676. $!
  677. $! Get The Current Date & Time.
  678. $!
  679. $ TIME = F$TIME()
  680. $!
  681. $! Write The [.CRYPTO._xxx]BUILDINF.H File.
  682. $!
  683. $ CFLAGS = ""
  684. $ if (POINTER_SIZE .nes. "")
  685. $ then
  686. $ CFLAGS = CFLAGS+ "/POINTER_SIZE=''POINTER_SIZE'"
  687. $ endif
  688. $ if (ZLIB .nes. "")
  689. $ then
  690. $ if (CFLAGS .nes. "") then CFLAGS = CFLAGS+ " "
  691. $ CFLAGS = CFLAGS+ "/DEFINE=ZLIB"
  692. $ endif
  693. $!
  694. $ WRITE H_FILE "#define CFLAGS ""''CFLAGS'"""
  695. $ WRITE H_FILE "#define PLATFORM ""VMS ''ARCHD' ''VMS_VERSION'"""
  696. $ WRITE H_FILE "#define DATE ""''TIME'"" "
  697. $!
  698. $! Close The [.CRYPTO._xxx]BUILDINF.H File.
  699. $!
  700. $ CLOSE H_FILE
  701. $!
  702. $! Purge The [.CRYPTO._xxx]BUILDINF.H File.
  703. $!
  704. $ PURGE SYS$DISK:[.CRYPTO.'ARCHD']BUILDINF.H
  705. $!
  706. $! Delete [.CRYPTO]BUILDINF.H File, as there might be some residue from Unix.
  707. $!
  708. $ IF F$SEARCH("[.CRYPTO]BUILDINF.H") .NES. "" THEN -
  709. DELETE SYS$DISK:[.CRYPTO]BUILDINF.H;*
  710. $!
  711. $! That's All, Time To RETURN.
  712. $!
  713. $ RETURN
  714. $!
  715. $! Copy a lot of files around.
  716. $!
  717. $ SOFTLINKS:
  718. $!
  719. $!!!! Tell The User We Are Partly Rebuilding The [.APPS] Directory.
  720. $!!!!
  721. $!!! WRITE SYS$OUTPUT "Rebuilding The '[.APPS]MD4.C', '[.APPS]MD5.C' And '[.APPS]RD160.C' Files."
  722. $!!!!
  723. $!!! DELETE SYS$DISK:[.APPS]MD4.C;*,MD5.C;*,RMD160.C;*
  724. $!!!!
  725. $!!!! Copy MD4.C from [.CRYPTO.MD4] into [.APPS]
  726. $!!!!
  727. $!!! COPY SYS$DISK:[.CRYPTO.MD4]MD4.C SYS$DISK:[.APPS]
  728. $!!!!
  729. $!!!! Copy MD5.C from [.CRYPTO.MD5] into [.APPS]
  730. $!!!! Tell The User We Are Rebuilding The [.include.openssl] Directory.
  731. $!!!!
  732. $!!!! Copy RMD160.C from [.CRYPTO.RIPEMD] into [.APPS]
  733. $!!!!
  734. $!!! COPY SYS$DISK:[.CRYPTO.RIPEMD]RMD160.C SYS$DISK:[.APPS]
  735. $!
  736. $! Ensure that the [.include.openssl] directory contains a full set of
  737. $! real header files. The distribution kit may have left real or fake
  738. $! symlinks there. Rather than think about what's there, simply delete
  739. $! the destination files (fake or real symlinks) before copying the real
  740. $! header files in. (Copying a real header file onto a real symlink
  741. $! merely duplicates the real header file at its source.)
  742. $!
  743. $! Tell The User We Are Rebuilding The [.include.openssl] Directory.
  744. $!
  745. $ WRITE SYS$OUTPUT "Rebuilding The '[.include.openssl]' Directory."
  746. $!
  747. $! First, make sure the directory exists. If it did exist, delete all
  748. $! the existing header files (or fake or real symlinks).
  749. $!
  750. $ if f$parse( "sys$disk:[.include.openssl]") .eqs. ""
  751. $ then
  752. $ create /directory sys$disk:[.include.openssl]
  753. $ else
  754. $ delete sys$disk:[.include.openssl]*.h;*
  755. $ endif
  756. $!
  757. $! Copy All The ".H" Files From The Main Directory.
  758. $!
  759. $ EXHEADER := e_os2.h
  760. $ copy 'exheader' sys$disk:[.include.openssl]
  761. $!
  762. $! Copy All The ".H" Files From The [.CRYPTO] Directory Tree.
  763. $!
  764. $ HEADER_SDIRS := , -
  765. 'ARCHD', -
  766. OBJECTS, -
  767. MD2, MD4, MD5, SHA, MDC2, HMAC, RIPEMD, WHRLPOOL, -
  768. DES, AES, RC2, RC4, RC5, IDEA, BF, CAST, CAMELLIA, SEED, MODES, -
  769. BN, EC, RSA, DSA, ECDSA, DH, ECDH, DSO, ENGINE, -
  770. BUFFER, BIO, STACK, LHASH, RAND, ERR, -
  771. EVP, ASN1, PEM, X509, X509V3, CONF, TXT_DB, PKCS7, PKCS12, -
  772. COMP, OCSP, UI, -
  773. CMS, PQUEUE, TS, JPAKE, SRP, STORE, CMAC
  774. $!
  775. $ EXHEADER_ := crypto.h, opensslv.h, ebcdic.h, symhacks.h, ossl_typ.h
  776. $ EXHEADER_'ARCHD' := opensslconf.h
  777. $ EXHEADER_OBJECTS := objects.h, obj_mac.h
  778. $ EXHEADER_MD2 := md2.h
  779. $ EXHEADER_MD4 := md4.h
  780. $ EXHEADER_MD5 := md5.h
  781. $ EXHEADER_SHA := sha.h
  782. $ EXHEADER_MDC2 := mdc2.h
  783. $ EXHEADER_HMAC := hmac.h
  784. $ EXHEADER_RIPEMD := ripemd.h
  785. $ EXHEADER_WHRLPOOL := whrlpool.h
  786. $ EXHEADER_DES := des.h
  787. $ EXHEADER_AES := aes.h
  788. $ EXHEADER_RC2 := rc2.h
  789. $ EXHEADER_RC4 := rc4.h
  790. $ EXHEADER_RC5 := rc5.h
  791. $ EXHEADER_IDEA := idea.h
  792. $ EXHEADER_BF := blowfish.h
  793. $ EXHEADER_CAST := cast.h
  794. $ EXHEADER_CAMELLIA := camellia.h
  795. $ EXHEADER_SEED := seed.h
  796. $ EXHEADER_MODES := modes.h
  797. $ EXHEADER_BN := bn.h
  798. $ EXHEADER_EC := ec.h
  799. $ EXHEADER_RSA := rsa.h
  800. $ EXHEADER_DSA := dsa.h
  801. $ EXHEADER_ECDSA := ecdsa.h
  802. $ EXHEADER_DH := dh.h
  803. $ EXHEADER_ECDH := ecdh.h
  804. $ EXHEADER_DSO := dso.h
  805. $ EXHEADER_ENGINE := engine.h
  806. $ EXHEADER_BUFFER := buffer.h
  807. $ EXHEADER_BIO := bio.h
  808. $ EXHEADER_STACK := stack.h, safestack.h
  809. $ EXHEADER_LHASH := lhash.h
  810. $ EXHEADER_RAND := rand.h
  811. $ EXHEADER_ERR := err.h
  812. $ EXHEADER_EVP := evp.h
  813. $ EXHEADER_ASN1 := asn1.h, asn1_mac.h, asn1t.h
  814. $ EXHEADER_PEM := pem.h, pem2.h
  815. $ EXHEADER_X509 := x509.h, x509_vfy.h
  816. $ EXHEADER_X509V3 := x509v3.h
  817. $ EXHEADER_CONF := conf.h, conf_api.h
  818. $ EXHEADER_TXT_DB := txt_db.h
  819. $ EXHEADER_PKCS7 := pkcs7.h
  820. $ EXHEADER_PKCS12 := pkcs12.h
  821. $ EXHEADER_COMP := comp.h
  822. $ EXHEADER_OCSP := ocsp.h
  823. $ EXHEADER_UI := ui.h
  824. $ EXHEADER_CMS := cms.h
  825. $ EXHEADER_PQUEUE := pqueue.h
  826. $ EXHEADER_TS := ts.h
  827. $ EXHEADER_JPAKE := jpake.h
  828. $ EXHEADER_SRP := srp.h
  829. $!!! EXHEADER_STORE := store.h, str_compat.h
  830. $ EXHEADER_STORE := store.h
  831. $ EXHEADER_CMAC := cmac.h
  832. $!
  833. $ i = 0
  834. $ loop_header_sdirs:
  835. $ sdir = f$edit( f$element( i, ",", header_sdirs), "trim")
  836. $ i = i + 1
  837. $ if (sdir .eqs. ",") then goto loop_header_sdirs_end
  838. $ hdr_list = exheader_'sdir'
  839. $ if (sdir .nes. "") then sdir = "."+ sdir
  840. $ copy [.crypto'sdir']'hdr_list' sys$disk:[.include.openssl]
  841. $ goto loop_header_sdirs
  842. $ loop_header_sdirs_end:
  843. $!
  844. $! Copy All The ".H" Files From The [.SSL] Directory.
  845. $!
  846. $! (keep these in the same order as ssl/Makefile)
  847. $ EXHEADER := ssl.h, ssl2.h, ssl3.h, ssl23.h, tls1.h, dtls1.h, srtp.h
  848. $ copy sys$disk:[.ssl]'exheader' sys$disk:[.include.openssl]
  849. $!
  850. $! Purge the [.include.openssl] header files.
  851. $!
  852. $ purge sys$disk:[.include.openssl]*.h
  853. $!
  854. $! That's All, Time To RETURN.
  855. $!
  856. $ RETURN
  857. $!
  858. $! Build The "[.xxx.EXE.CRYPTO]SSL_LIBCRYPTO''LIB32'.OLB" Library.
  859. $!
  860. $ CRYPTO:
  861. $!
  862. $! Tell The User What We Are Doing.
  863. $!
  864. $ WRITE SYS$OUTPUT ""
  865. $ WRITE SYS$OUTPUT -
  866. "Building The [.",ARCHD,".EXE.CRYPTO]SSL_LIBCRYPTO''LIB32'.OLB Library."
  867. $!
  868. $! Go To The [.CRYPTO] Directory.
  869. $!
  870. $ SET DEFAULT SYS$DISK:[.CRYPTO]
  871. $!
  872. $! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
  873. $!
  874. $ @CRYPTO-LIB LIBRARY 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" -
  875. "''ISSEVEN'" "''BUILDPART'" "''POINTER_SIZE'" "''ZLIB'"
  876. $!
  877. $! Go Back To The Main Directory.
  878. $!
  879. $ SET DEFAULT [-]
  880. $!
  881. $! Time To RETURN.
  882. $!
  883. $ RETURN
  884. $!
  885. $! Build The "[.xxx.EXE.SSL]SSL_LIBSSL''LIB32'.OLB" Library.
  886. $!
  887. $ SSL:
  888. $!
  889. $! Tell The User What We Are Doing.
  890. $!
  891. $ WRITE SYS$OUTPUT ""
  892. $ WRITE SYS$OUTPUT -
  893. "Building The [.",ARCHD,".EXE.SSL]SSL_LIBSSL''LIB32'.OLB Library."
  894. $!
  895. $! Go To The [.SSL] Directory.
  896. $!
  897. $ SET DEFAULT SYS$DISK:[.SSL]
  898. $!
  899. $! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
  900. $!
  901. $ @SSL-LIB LIBRARY 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" -
  902. "''ISSEVEN'" "''POINTER_SIZE'" "''ZLIB'"
  903. $!
  904. $! Go Back To The Main Directory.
  905. $!
  906. $ SET DEFAULT [-]
  907. $!
  908. $! Time To Return.
  909. $!
  910. $ RETURN
  911. $!
  912. $! Build The OpenSSL Test Programs.
  913. $!
  914. $ TEST:
  915. $!
  916. $! Tell The User What We Are Doing.
  917. $!
  918. $ WRITE SYS$OUTPUT ""
  919. $ WRITE SYS$OUTPUT "Building The OpenSSL [.",ARCHD,".EXE.TEST] Test Utilities."
  920. $!
  921. $! Go To The [.TEST] Directory.
  922. $!
  923. $ SET DEFAULT SYS$DISK:[.TEST]
  924. $!
  925. $! Build The Test Programs.
  926. $!
  927. $ @MAKETESTS 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" "''ISSEVEN'" -
  928. "''POINTER_SIZE'" "''ZLIB'"
  929. $!
  930. $! Go Back To The Main Directory.
  931. $!
  932. $ SET DEFAULT [-]
  933. $!
  934. $! That's All, Time To RETURN.
  935. $!
  936. $ RETURN
  937. $!
  938. $! Build The OpenSSL Application Programs.
  939. $!
  940. $ APPS:
  941. $!
  942. $! Tell The User What We Are Doing.
  943. $!
  944. $ WRITE SYS$OUTPUT ""
  945. $ WRITE SYS$OUTPUT "Building OpenSSL [.",ARCHD,".EXE.APPS] Applications."
  946. $!
  947. $! Go To The [.APPS] Directory.
  948. $!
  949. $ SET DEFAULT SYS$DISK:[.APPS]
  950. $!
  951. $! Build The Application Programs.
  952. $!
  953. $ @MAKEAPPS 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" "''ISSEVEN'" -
  954. "" "''POINTER_SIZE'" "''ZLIB'"
  955. $!
  956. $! Go Back To The Main Directory.
  957. $!
  958. $ SET DEFAULT [-]
  959. $!
  960. $! That's All, Time To RETURN.
  961. $!
  962. $ RETURN
  963. $!
  964. $! Build The OpenSSL Application Programs.
  965. $!
  966. $ ENGINES:
  967. $!
  968. $! Tell The User What We Are Doing.
  969. $!
  970. $ WRITE SYS$OUTPUT ""
  971. $ WRITE SYS$OUTPUT "Building OpenSSL [.",ARCHD,".EXE.ENGINES] Engines."
  972. $!
  973. $! Go To The [.ENGINES] Directory.
  974. $!
  975. $ SET DEFAULT SYS$DISK:[.ENGINES]
  976. $!
  977. $! Build The Application Programs.
  978. $!
  979. $ @MAKEENGINES ENGINES 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" -
  980. "''ISSEVEN'" "''BUILDPART'" "''POINTER_SIZE'" "''ZLIB'"
  981. $!
  982. $! Go Back To The Main Directory.
  983. $!
  984. $ SET DEFAULT [-]
  985. $!
  986. $! That's All, Time To RETURN.
  987. $!
  988. $ RETURN
  989. $!
  990. $! Check The User's Options.
  991. $!
  992. $ CHECK_OPTIONS:
  993. $!
  994. $! Check if there's a "part", and separate it out
  995. $!
  996. $ BUILDPART = F$ELEMENT(1,"/",P1)
  997. $ IF BUILDPART .EQS. "/"
  998. $ THEN
  999. $ BUILDPART = ""
  1000. $ ELSE
  1001. $ P1 = F$EXTRACT(0,F$LENGTH(P1) - F$LENGTH(BUILDPART) - 1, P1)
  1002. $ ENDIF
  1003. $!
  1004. $! Check To See If P1 Is Blank.
  1005. $!
  1006. $ IF (P1.EQS."ALL")
  1007. $ THEN
  1008. $!
  1009. $! P1 Is ALL, So Build Everything.
  1010. $!
  1011. $ BUILDCOMMAND = "ALL"
  1012. $!
  1013. $! Else...
  1014. $!
  1015. $ ELSE
  1016. $!
  1017. $! Else, Check To See If P1 Has A Valid Argument.
  1018. $!
  1019. $ IF (P1.EQS."CONFIG").OR.(P1.EQS."BUILDINF").OR.(P1.EQS."SOFTLINKS") -
  1020. .OR.(P1.EQS."BUILDALL") -
  1021. .OR.(P1.EQS."CRYPTO").OR.(P1.EQS."SSL") -
  1022. .OR.(P1.EQS."TEST").OR.(P1.EQS."APPS") -
  1023. .OR.(P1.EQS."ENGINES")
  1024. $ THEN
  1025. $!
  1026. $! A Valid Argument.
  1027. $!
  1028. $ BUILDCOMMAND = P1
  1029. $!
  1030. $! Else...
  1031. $!
  1032. $ ELSE
  1033. $!
  1034. $! Tell The User We Don't Know What They Want.
  1035. $!
  1036. $ WRITE SYS$OUTPUT ""
  1037. $ WRITE SYS$OUTPUT "USAGE: @MAKEVMS.COM [Target] [Pointer size] [Debug option] <Compiler>"
  1038. $ WRITE SYS$OUTPUT ""
  1039. $ WRITE SYS$OUTPUT "Example: @MAKEVMS.COM ALL """" NODEBUG "
  1040. $ WRITE SYS$OUTPUT ""
  1041. $ WRITE SYS$OUTPUT "The Target ",P1," Is Invalid. The Valid Target Options Are:"
  1042. $ WRITE SYS$OUTPUT ""
  1043. $ WRITE SYS$OUTPUT " ALL : Just Build Everything."
  1044. $ WRITE SYS$OUTPUT " CONFIG : Just build the [.CRYPTO._xxx]OPENSSLCONF.H file."
  1045. $ WRITE SYS$OUTPUT " BUILDINF : Just build the [.CRYPTO._xxx]BUILDINF.H file."
  1046. $ WRITE SYS$OUTPUT " SOFTLINKS: Just Fix The Unix soft links."
  1047. $ WRITE SYS$OUTPUT " BUILDALL : Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done."
  1048. $ WRITE SYS$OUTPUT " CRYPTO : To Build Just The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
  1049. $ WRITE SYS$OUTPUT " CRYPTO/x : To Build Just The x Part Of The"
  1050. $ WRITE SYS$OUTPUT " [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
  1051. $ WRITE SYS$OUTPUT " SSL : To Build Just The [.xxx.EXE.SSL]LIBSSL.OLB Library."
  1052. $ WRITE SYS$OUTPUT " TEST : To Build Just The OpenSSL Test Programs."
  1053. $ WRITE SYS$OUTPUT " APPS : To Build Just The OpenSSL Application Programs."
  1054. $ WRITE SYS$OUTPUT " ENGINES : To Build Just The ENGINES"
  1055. $ WRITE SYS$OUTPUT ""
  1056. $ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
  1057. $ WRITE SYS$OUTPUT ""
  1058. $ WRITE SYS$OUTPUT " ALPHA[64]: Alpha Architecture."
  1059. $ WRITE SYS$OUTPUT " IA64[64] : IA64 Architecture."
  1060. $ WRITE SYS$OUTPUT " VAX : VAX Architecture."
  1061. $ WRITE SYS$OUTPUT ""
  1062. $!
  1063. $! Time To EXIT.
  1064. $!
  1065. $ GOTO TIDY
  1066. $!
  1067. $! End The Valid Argument Check.
  1068. $!
  1069. $ ENDIF
  1070. $!
  1071. $! End The P1 Check.
  1072. $!
  1073. $ ENDIF
  1074. $!
  1075. $! Check P2 (POINTER_SIZE).
  1076. $!
  1077. $ IF (P2 .NES. "") .AND. (ARCH .NES. "VAX")
  1078. $ THEN
  1079. $!
  1080. $ IF (P2 .EQS. "32")
  1081. $ THEN
  1082. $ POINTER_SIZE = "32"
  1083. $ ELSE
  1084. $ POINTER_SIZE = F$EDIT( P2, "COLLAPSE, UPCASE")
  1085. $ IF ((POINTER_SIZE .EQS. "64") .OR. -
  1086. (POINTER_SIZE .EQS. "64=") .OR. -
  1087. (POINTER_SIZE .EQS. "64=ARGV"))
  1088. $ THEN
  1089. $ ARCHD = ARCH+ "_64"
  1090. $ LIB32 = ""
  1091. $ ELSE
  1092. $!
  1093. $! Tell The User Entered An Invalid Option.
  1094. $!
  1095. $ WRITE SYS$OUTPUT ""
  1096. $ WRITE SYS$OUTPUT "The Option ", P2, -
  1097. " Is Invalid. The Valid Options Are:"
  1098. $ WRITE SYS$OUTPUT ""
  1099. $ WRITE SYS$OUTPUT -
  1100. " """" : Compile with default (short) pointers."
  1101. $ WRITE SYS$OUTPUT -
  1102. " 32 : Compile with 32-bit (short) pointers."
  1103. $ WRITE SYS$OUTPUT -
  1104. " 64 : Compile with 64-bit (long) pointers (auto ARGV)."
  1105. $ WRITE SYS$OUTPUT -
  1106. " 64= : Compile with 64-bit (long) pointers (no ARGV)."
  1107. $ WRITE SYS$OUTPUT -
  1108. " 64=ARGV : Compile with 64-bit (long) pointers (ARGV)."
  1109. $ WRITE SYS$OUTPUT ""
  1110. $!
  1111. $! Time To EXIT.
  1112. $!
  1113. $ GOTO TIDY
  1114. $!
  1115. $ ENDIF
  1116. $!
  1117. $ ENDIF
  1118. $!
  1119. $! End The P2 (POINTER_SIZE) Check.
  1120. $!
  1121. $ ENDIF
  1122. $!
  1123. $! Check To See If P3 Is Blank.
  1124. $!
  1125. $ IF (P3.EQS."NODEBUG")
  1126. $ THEN
  1127. $!
  1128. $! P3 Is NODEBUG, So Compile Without Debugger Information.
  1129. $!
  1130. $ DEBUGGER = "NODEBUG"
  1131. $!
  1132. $! Else...
  1133. $!
  1134. $ ELSE
  1135. $!
  1136. $! Check To See If We Are To Compile With Debugger Information.
  1137. $!
  1138. $ IF (P3.EQS."DEBUG")
  1139. $ THEN
  1140. $!
  1141. $! Compile With Debugger Information.
  1142. $!
  1143. $ DEBUGGER = "DEBUG"
  1144. $!
  1145. $! Else...
  1146. $!
  1147. $ ELSE
  1148. $!
  1149. $! Tell The User Entered An Invalid Option.
  1150. $!
  1151. $ WRITE SYS$OUTPUT ""
  1152. $ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
  1153. $ WRITE SYS$OUTPUT ""
  1154. $ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
  1155. $ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
  1156. $ WRITE SYS$OUTPUT ""
  1157. $!
  1158. $! Time To EXIT.
  1159. $!
  1160. $ GOTO TIDY
  1161. $!
  1162. $! End The Valid Argument Check.
  1163. $!
  1164. $ ENDIF
  1165. $!
  1166. $! End The P3 Check.
  1167. $!
  1168. $ ENDIF
  1169. $!
  1170. $! Check To See If P4 Is Blank.
  1171. $!
  1172. $ IF (P4.EQS."")
  1173. $ THEN
  1174. $!
  1175. $! O.K., The User Didn't Specify A Compiler, Let's Try To
  1176. $! Find Out Which One To Use.
  1177. $!
  1178. $! Check To See If We Have GNU C.
  1179. $!
  1180. $ IF (F$TRNLNM("GNU_CC").NES."")
  1181. $ THEN
  1182. $!
  1183. $! Looks Like GNUC, Set To Use GNUC.
  1184. $!
  1185. $ COMPILER = "GNUC"
  1186. $!
  1187. $! Tell The User We Are Using GNUC.
  1188. $!
  1189. $ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
  1190. $!
  1191. $! End The GNU C Compiler Check.
  1192. $!
  1193. $ ENDIF
  1194. $!
  1195. $! Check To See If We Have VAXC Or DECC.
  1196. $!
  1197. $ IF (F$GETSYI("CPU").GE.128).OR.(F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC")
  1198. $ THEN
  1199. $!
  1200. $! Looks Like DECC, Set To Use DECC.
  1201. $!
  1202. $ COMPILER = "DECC"
  1203. $!
  1204. $! Tell The User We Are Using DECC.
  1205. $!
  1206. $ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
  1207. $!
  1208. $! Else...
  1209. $!
  1210. $ ELSE
  1211. $!
  1212. $! Looks Like VAXC, Set To Use VAXC.
  1213. $!
  1214. $ COMPILER = "VAXC"
  1215. $!
  1216. $! Tell The User We Are Using VAX C.
  1217. $!
  1218. $ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
  1219. $!
  1220. $! End The DECC & VAXC Compiler Check.
  1221. $!
  1222. $ ENDIF
  1223. $!
  1224. $! Else...
  1225. $!
  1226. $ ELSE
  1227. $!
  1228. $! Check To See If The User Entered A Valid Parameter.
  1229. $!
  1230. $ IF (P4.EQS."VAXC").OR.(P4.EQS."DECC").OR.(P4.EQS."GNUC")!.OR.(P4.EQS."LINK")
  1231. $ THEN
  1232. $!
  1233. $! Check To See If The User Wanted To Just LINK.
  1234. $!
  1235. $ IF (P4.EQS."LINK")
  1236. $ THEN
  1237. $!
  1238. $! Looks Like LINK-only
  1239. $!
  1240. $ COMPILER = "LINK"
  1241. $!
  1242. $! Tell The User We Are Only Linking.
  1243. $!
  1244. $ WRITE SYS$OUTPUT "LINK Only. This actually NOT YET SUPPORTED!"
  1245. $!
  1246. $! End LINK Check.
  1247. $!
  1248. $ ENDIF
  1249. $!
  1250. $! Check To See If The User Wanted DECC.
  1251. $!
  1252. $ IF (P4.EQS."DECC")
  1253. $ THEN
  1254. $!
  1255. $! Looks Like DECC, Set To Use DECC.
  1256. $!
  1257. $ COMPILER = "DECC"
  1258. $!
  1259. $! Tell The User We Are Using DECC.
  1260. $!
  1261. $ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
  1262. $!
  1263. $! End DECC Check.
  1264. $!
  1265. $ ENDIF
  1266. $!
  1267. $! Check To See If We Are To Use VAXC.
  1268. $!
  1269. $ IF (P4.EQS."VAXC")
  1270. $ THEN
  1271. $!
  1272. $! Looks Like VAXC, Set To Use VAXC.
  1273. $!
  1274. $ COMPILER = "VAXC"
  1275. $!
  1276. $! Tell The User We Are Using VAX C.
  1277. $!
  1278. $ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
  1279. $!
  1280. $! End VAXC Check
  1281. $!
  1282. $ ENDIF
  1283. $!
  1284. $! Check To See If We Are To Use GNU C.
  1285. $!
  1286. $ IF (P4.EQS."GNUC")
  1287. $ THEN
  1288. $!
  1289. $! Looks Like GNUC, Set To Use GNUC.
  1290. $!
  1291. $ COMPILER = "GNUC"
  1292. $!
  1293. $! Tell The User We Are Using GNUC.
  1294. $!
  1295. $ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
  1296. $!
  1297. $! End The GNU C Check.
  1298. $!
  1299. $ ENDIF
  1300. $!
  1301. $! Else The User Entered An Invalid Argument.
  1302. $!
  1303. $ ELSE
  1304. $!
  1305. $! Tell The User We Don't Know What They Want.
  1306. $!
  1307. $ WRITE SYS$OUTPUT ""
  1308. $ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
  1309. $ WRITE SYS$OUTPUT ""
  1310. $ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
  1311. $ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
  1312. $ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
  1313. $ WRITE SYS$OUTPUT ""
  1314. $!
  1315. $! Time To EXIT.
  1316. $!
  1317. $ GOTO TIDY
  1318. $!
  1319. $! End The Valid Argument Check.
  1320. $!
  1321. $ ENDIF
  1322. $!
  1323. $! End The P4 Check.
  1324. $!
  1325. $ ENDIF
  1326. $!
  1327. $! Time to check the contents of P5, and to make sure we get the correct
  1328. $! library.
  1329. $!
  1330. $ IF P5.EQS."SOCKETSHR" .OR. P5.EQS."MULTINET" .OR. P5.EQS."UCX" -
  1331. .OR. P5.EQS."TCPIP" .OR. P5.EQS."NONE"
  1332. $ THEN
  1333. $!
  1334. $! Check to see if SOCKETSHR was chosen
  1335. $!
  1336. $ IF P5.EQS."SOCKETSHR"
  1337. $ THEN
  1338. $!
  1339. $! Set the library to use SOCKETSHR
  1340. $!
  1341. $ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT /OPTIONS"
  1342. $!
  1343. $! Tell the user
  1344. $!
  1345. $ WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
  1346. $!
  1347. $! Done with SOCKETSHR
  1348. $!
  1349. $ ENDIF
  1350. $!
  1351. $! Check to see if MULTINET was chosen
  1352. $!
  1353. $ IF P5.EQS."MULTINET"
  1354. $ THEN
  1355. $!
  1356. $! Set the library to use UCX emulation.
  1357. $!
  1358. $ P5 = "UCX"
  1359. $!
  1360. $! Tell the user
  1361. $!
  1362. $ WRITE SYS$OUTPUT "Using MultiNet via UCX emulation for TCP/IP"
  1363. $!
  1364. $! Done with MULTINET
  1365. $!
  1366. $ ENDIF
  1367. $!
  1368. $! Check to see if UCX was chosen
  1369. $!
  1370. $ IF P5.EQS."UCX"
  1371. $ THEN
  1372. $!
  1373. $! Set the library to use UCX.
  1374. $!
  1375. $ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT /OPTIONS"
  1376. $!
  1377. $! Tell the user
  1378. $!
  1379. $ WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
  1380. $!
  1381. $! Done with UCX
  1382. $!
  1383. $ ENDIF
  1384. $!
  1385. $! Check to see if TCPIP was chosen
  1386. $!
  1387. $ IF P5.EQS."TCPIP"
  1388. $ THEN
  1389. $!
  1390. $! Set the library to use TCPIP (post UCX).
  1391. $!
  1392. $ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT /OPTIONS"
  1393. $!
  1394. $! Tell the user
  1395. $!
  1396. $ WRITE SYS$OUTPUT "Using TCPIP (post UCX) for TCP/IP"
  1397. $!
  1398. $! Done with TCPIP
  1399. $!
  1400. $ ENDIF
  1401. $!
  1402. $! Check to see if NONE was chosen
  1403. $!
  1404. $ IF P5.EQS."NONE"
  1405. $ THEN
  1406. $!
  1407. $! Do not use a TCPIP library.
  1408. $!
  1409. $ TCPIP_LIB = ""
  1410. $!
  1411. $! Tell the user
  1412. $!
  1413. $ WRITE SYS$OUTPUT "A specific TCPIP library will not be used."
  1414. $!
  1415. $! Done with NONE.
  1416. $!
  1417. $ ENDIF
  1418. $!
  1419. $! Set the TCPIP_TYPE symbol
  1420. $!
  1421. $ TCPIP_TYPE = P5
  1422. $!
  1423. $! Print info
  1424. $!
  1425. $ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
  1426. $!
  1427. $! Else The User Entered An Invalid Argument.
  1428. $!
  1429. $ ELSE
  1430. $ IF P5 .NES. ""
  1431. $ THEN
  1432. $!
  1433. $! Tell The User We Don't Know What They Want.
  1434. $!
  1435. $ WRITE SYS$OUTPUT ""
  1436. $ WRITE SYS$OUTPUT "The Option ",P5," Is Invalid. The Valid Options Are:"
  1437. $ WRITE SYS$OUTPUT ""
  1438. $ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
  1439. $ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
  1440. $ WRITE SYS$OUTPUT " TCPIP : To link with TCPIP TCP/IP (post UCX) library."
  1441. $ WRITE SYS$OUTPUT " NONE : To not link with a specific TCP/IP library."
  1442. $ WRITE SYS$OUTPUT ""
  1443. $!
  1444. $! Time To EXIT.
  1445. $!
  1446. $ GOTO TIDY
  1447. $ ELSE
  1448. $!
  1449. $! If TCPIP is not defined, then hardcode it to make
  1450. $! it clear that no TCPIP is desired.
  1451. $!
  1452. $ IF P5 .EQS. ""
  1453. $ THEN
  1454. $ TCPIP_LIB = ""
  1455. $ TCPIP_TYPE = "NONE"
  1456. $ ELSE
  1457. $!
  1458. $! Set the TCPIP_TYPE symbol
  1459. $!
  1460. $ TCPIP_TYPE = P5
  1461. $ ENDIF
  1462. $ ENDIF
  1463. $!
  1464. $! Done with TCP/IP libraries
  1465. $!
  1466. $ ENDIF
  1467. $!
  1468. $! Special Threads For OpenVMS v7.1 Or Later
  1469. $!
  1470. $! Written By: Richard Levitte
  1471. $! richard@levitte.org
  1472. $!
  1473. $!
  1474. $! Check To See If We Have A Option For P6.
  1475. $!
  1476. $ IF (P6.EQS."")
  1477. $ THEN
  1478. $!
  1479. $! Get The Version Of VMS We Are Using.
  1480. $!
  1481. $ ISSEVEN :=
  1482. $ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,VMS_VERSION))
  1483. $ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
  1484. $!
  1485. $! Check To See If The VMS Version Is v7.1 Or Later.
  1486. $!
  1487. $ IF (TMP.GE.71)
  1488. $ THEN
  1489. $!
  1490. $! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
  1491. $!
  1492. $ ISSEVEN := ,PTHREAD_USE_D4
  1493. $!
  1494. $! End The VMS Version Check.
  1495. $!
  1496. $ ENDIF
  1497. $!
  1498. $! End The P6 Check.
  1499. $!
  1500. $ ENDIF
  1501. $!
  1502. $!
  1503. $! Check To See If We Have A ZLIB Option.
  1504. $!
  1505. $ ZLIB = P7
  1506. $ IF (ZLIB .NES. "")
  1507. $ THEN
  1508. $!
  1509. $! Check for expected ZLIB files.
  1510. $!
  1511. $ err = 0
  1512. $ file1 = f$parse( "zlib.h", ZLIB, , , "SYNTAX_ONLY")
  1513. $ if (f$search( file1) .eqs. "")
  1514. $ then
  1515. $ WRITE SYS$OUTPUT ""
  1516. $ WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
  1517. $ WRITE SYS$OUTPUT " Can't find header: ''file1'"
  1518. $ err = 1
  1519. $ endif
  1520. $!
  1521. $ file2 = f$parse( ZLIB, "libz.olb", , , "SYNTAX_ONLY")
  1522. $ if (f$search( file2) .eqs. "")
  1523. $ then
  1524. $ if (err .eq. 0)
  1525. $ then
  1526. $ WRITE SYS$OUTPUT ""
  1527. $ WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
  1528. $ endif
  1529. $ WRITE SYS$OUTPUT " Can't find library: ''file2'"
  1530. $ WRITE SYS$OUTPUT ""
  1531. $ err = err+ 2
  1532. $ endif
  1533. $ if (err .eq. 1)
  1534. $ then
  1535. $ WRITE SYS$OUTPUT ""
  1536. $ endif
  1537. $!
  1538. $ if (err .ne. 0)
  1539. $ then
  1540. $ GOTO TIDY
  1541. $ endif
  1542. $!
  1543. $! Print info
  1544. $!
  1545. $ WRITE SYS$OUTPUT "ZLIB library spec: ", file2
  1546. $!
  1547. $! End The ZLIB Check.
  1548. $!
  1549. $ ENDIF
  1550. $!
  1551. $! Time To RETURN...
  1552. $!
  1553. $ RETURN
  1554. $!
  1555. $ TIDY:
  1556. $!
  1557. $! Close any open files.
  1558. $!
  1559. $ if (f$trnlnm( "h_file", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
  1560. close h_file
  1561. $!
  1562. $! Restore the original default device:[directory].
  1563. $!
  1564. $ SET DEFAULT 'DEF_ORIG'
  1565. $!
  1566. $ EXIT
  1567. $!