makevms.com 39 KB

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