makevms.com 25 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079
  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. $!
  11. $! This procedure creates the SSL libraries of "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB"
  12. $! "[.xxx.EXE.SSL]LIBSSL.OLB"
  13. $! The "xxx" denotes the machine architecture of AXP or VAX.
  14. $!
  15. $! This procedures accepts two command line options listed below.
  16. $!
  17. $! Specify one of the following build options for P1.
  18. $!
  19. $! ALL Just build "everything".
  20. $! CONFIG Just build the "[.CRYPTO]OPENSSLCONF.H" file.
  21. $! BUILDINF Just build the "[.CRYPTO]BUILDINF.H" file.
  22. $! SOFTLINKS Just fix the Unix soft links.
  23. $! BUILDALL Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done.
  24. $! CRYPTO Just build the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
  25. $! CRYPTO/x Just build the x part of the
  26. $! "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
  27. $! SSL Just build the "[.xxx.EXE.SSL]LIBSSL.OLB" library.
  28. $! SSL_TASK Just build the "[.xxx.EXE.SSL]SSL_TASK.EXE" program.
  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. $!
  32. $!
  33. $! P2 is ignored (it was used to denote if RSAref should be used or not,
  34. $! and is simply kept so surrounding scripts don't get confused)
  35. $!
  36. $! Speficy DEBUG or NODEBUG as P3 to compile with or without debugging
  37. $! information.
  38. $!
  39. $! Specify which compiler at P4 to try to compile under.
  40. $!
  41. $! VAXC For VAX C.
  42. $! DECC For DEC C.
  43. $! GNUC For GNU C.
  44. $! LINK To only link the programs from existing object files.
  45. $! (not yet implemented)
  46. $!
  47. $! If you don't speficy a compiler, it will try to determine which
  48. $! "C" compiler to use.
  49. $!
  50. $! P5, if defined, sets a TCP/IP library to use, through one of the following
  51. $! keywords:
  52. $!
  53. $! UCX for UCX or UCX emulation
  54. $! TCPIP for TCP/IP Services or TCP/IP Services emulation
  55. $! (this is prefered over UCX)
  56. $! SOCKETSHR for SOCKETSHR+NETLIB
  57. $! NONE to avoid specifying which TCP/IP implementation to
  58. $! use at build time (this works with DEC C). This is
  59. $! the default.
  60. $!
  61. $! P6, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
  62. $!
  63. $!
  64. $! Check if we're in a batch job, and make sure we get to
  65. $! the directory this script is in
  66. $!
  67. $ IF F$MODE() .EQS. "BATCH"
  68. $ THEN
  69. $ COMNAME=F$ENVIRONMENT("PROCEDURE")
  70. $ COMPATH=F$PARSE("A.;",COMNAME) - "A.;"
  71. $ SET DEF 'COMPATH'
  72. $ ENDIF
  73. $!
  74. $! Check Which Architecture We Are Using.
  75. $!
  76. $ IF (F$GETSYI("CPU").GE.128)
  77. $ THEN
  78. $!
  79. $! The Architecture Is AXP.
  80. $!
  81. $ ARCH := AXP
  82. $!
  83. $! Else...
  84. $!
  85. $ ELSE
  86. $!
  87. $! The Architecture Is VAX.
  88. $!
  89. $ ARCH := VAX
  90. $!
  91. $! End The Architecture Check.
  92. $!
  93. $ ENDIF
  94. $!
  95. $! Check To Make Sure We Have Valid Command Line Parameters.
  96. $!
  97. $ GOSUB CHECK_OPTIONS
  98. $!
  99. $! Check To See What We Are To Do.
  100. $!
  101. $ IF (BUILDCOMMAND.EQS."ALL")
  102. $ THEN
  103. $!
  104. $! Start with building the OpenSSL configuration file.
  105. $!
  106. $ GOSUB CONFIG
  107. $!
  108. $! Create The "BUILDINF.H" Include File.
  109. $!
  110. $ GOSUB BUILDINF
  111. $!
  112. $! Fix The Unix Softlinks.
  113. $!
  114. $ GOSUB SOFTLINKS
  115. $!
  116. $ ENDIF
  117. $!
  118. $ IF (BUILDCOMMAND.EQS."ALL".OR.BUILDCOMMAND.EQS."BUILDALL")
  119. $ THEN
  120. $!
  121. $! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
  122. $!
  123. $ GOSUB CRYPTO
  124. $!
  125. $! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
  126. $!
  127. $ GOSUB SSL
  128. $!
  129. $! Build The [.xxx.EXE.SSL]SSL_TASK.EXE DECNet SSL Engine.
  130. $!
  131. $ GOSUB SSL_TASK
  132. $!
  133. $! Build The [.xxx.EXE.TEST] OpenSSL Test Utilities.
  134. $!
  135. $ GOSUB TEST
  136. $!
  137. $! Build The [.xxx.EXE.APPS] OpenSSL Application Utilities.
  138. $!
  139. $ GOSUB APPS
  140. $!
  141. $! Else...
  142. $!
  143. $ ELSE
  144. $!
  145. $! Build Just What The User Wants Us To Build.
  146. $!
  147. $ GOSUB 'BUILDCOMMAND'
  148. $!
  149. $ ENDIF
  150. $!
  151. $! Time To EXIT.
  152. $!
  153. $ EXIT
  154. $!
  155. $! Rebuild The "[.CRYPTO]OPENSSLCONF.H" file.
  156. $!
  157. $ CONFIG:
  158. $!
  159. $! Tell The User We Are Creating The [.CRYPTO]OPENSSLCONF.H File.
  160. $!
  161. $ WRITE SYS$OUTPUT "Creating [.CRYPTO]OPENSSLCONF.H Include File."
  162. $!
  163. $! Create The [.CRYPTO]OPENSSLCONF.H File.
  164. $!
  165. $ OPEN/WRITE H_FILE SYS$DISK:[.CRYPTO]OPENSSLCONF.H
  166. $!
  167. $! Write The [.CRYPTO]OPENSSLCONF.H File.
  168. $!
  169. $ WRITE H_FILE "/* This file was automatically built using makevms.com */"
  170. $ WRITE H_FILE "/* and [.CRYPTO]OPENSSLCONF.H_IN */"
  171. $
  172. $!
  173. $! Write a few macros that indicate how this system was built.
  174. $!
  175. $ WRITE H_FILE ""
  176. $ WRITE H_FILE "#ifndef OPENSSL_SYS_VMS"
  177. $ WRITE H_FILE "# define OPENSSL_SYS_VMS"
  178. $ WRITE H_FILE "#endif"
  179. $ CONFIG_LOGICALS := NO_ASM,NO_RSA,NO_DSA,NO_DH,NO_MD2,NO_MD5,NO_RIPEMD,-
  180. NO_SHA,NO_SHA0,NO_SHA1,NO_DES/NO_MDC2;NO_MDC2,NO_RC2,NO_RC4,NO_RC5,-
  181. NO_IDEA,NO_BF,NO_CAST,NO_HMAC,NO_SSL2
  182. $ CONFIG_LOG_I = 0
  183. $ CONFIG_LOG_LOOP:
  184. $ CONFIG_LOG_E1 = F$ELEMENT(CONFIG_LOG_I,",",CONFIG_LOGICALS)
  185. $ CONFIG_LOG_I = CONFIG_LOG_I + 1
  186. $ IF CONFIG_LOG_E1 .EQS. "" THEN GOTO CONFIG_LOG_LOOP
  187. $ IF CONFIG_LOG_E1 .EQS. "," THEN GOTO CONFIG_LOG_LOOP_END
  188. $ CONFIG_LOG_E2 = F$EDIT(CONFIG_LOG_E1,"TRIM")
  189. $ CONFIG_LOG_E1 = F$ELEMENT(0,";",CONFIG_LOG_E2)
  190. $ CONFIG_LOG_E2 = F$ELEMENT(1,";",CONFIG_LOG_E2)
  191. $ CONFIG_LOG_E0 = F$ELEMENT(0,"/",CONFIG_LOG_E1)
  192. $ CONFIG_LOG_E1 = F$ELEMENT(1,"/",CONFIG_LOG_E1)
  193. $ IF F$TRNLNM("OPENSSL_"+CONFIG_LOG_E0)
  194. $ THEN
  195. $ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E0
  196. $ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E0
  197. $ WRITE H_FILE "#endif"
  198. $ IF CONFIG_LOG_E1 .NES. "/"
  199. $ THEN
  200. $ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E1
  201. $ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E1
  202. $ WRITE H_FILE "#endif"
  203. $ ENDIF
  204. $ ELSE
  205. $ IF CONFIG_LOG_E2 .NES. ";"
  206. $ THEN
  207. $ IF F$TRNLNM("OPENSSL_"+CONFIG_LOG_E2)
  208. $ THEN
  209. $ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E2
  210. $ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E2
  211. $ WRITE H_FILE "#endif"
  212. $ ENDIF
  213. $ ENDIF
  214. $ ENDIF
  215. $ GOTO CONFIG_LOG_LOOP
  216. $ CONFIG_LOG_LOOP_END:
  217. $ WRITE H_FILE "#ifndef OPENSSL_THREADS"
  218. $ WRITE H_FILE "# define OPENSSL_THREADS"
  219. $ WRITE H_FILE "#endif"
  220. $ WRITE H_FILE "#ifndef OPENSSL_NO_KRB5"
  221. $ WRITE H_FILE "# define OPENSSL_NO_KRB5"
  222. $ WRITE H_FILE "#endif"
  223. $ WRITE H_FILE ""
  224. $!
  225. $! Different tar version may have named the file differently
  226. $ IF F$SEARCH("[.CRYPTO]OPENSSLCONF.H_IN") .NES. ""
  227. $ THEN
  228. $ TYPE [.CRYPTO]OPENSSLCONF.H_IN /OUTPUT=H_FILE:
  229. $ ELSE
  230. $ IF F$SEARCH("[.CRYPTO]OPENSSLCONF_H.IN") .NES. ""
  231. $ THEN
  232. $ TYPE [.CRYPTO]OPENSSLCONF_H.IN /OUTPUT=H_FILE:
  233. $ ELSE
  234. $ ! For ODS-5
  235. $ IF F$SEARCH("[.CRYPTO]OPENSSLCONF.H.IN") .NES. ""
  236. $ THEN
  237. $ TYPE [.CRYPTO]OPENSSLCONF.H.IN /OUTPUT=H_FILE:
  238. $ ELSE
  239. $ WRITE SYS$ERROR "Couldn't find a [.CRYPTO]OPENSSLCONF.H_IN. Exiting!"
  240. $ EXIT 0
  241. $ ENDIF
  242. $ ENDIF
  243. $ ENDIF
  244. $ IF ARCH .EQS. "AXP"
  245. $ THEN
  246. $!
  247. $! Write the Alpha specific data
  248. $!
  249. $ WRITE H_FILE "#if defined(HEADER_RC4_H)"
  250. $ WRITE H_FILE "#undef RC4_INT"
  251. $ WRITE H_FILE "#define RC4_INT unsigned int"
  252. $ WRITE H_FILE "#undef RC4_CHUNK"
  253. $ WRITE H_FILE "#define RC4_CHUNK unsigned long long"
  254. $ WRITE H_FILE "#endif"
  255. $!
  256. $ WRITE H_FILE "#if defined(HEADER_DES_LOCL_H)"
  257. $ WRITE H_FILE "#undef DES_LONG"
  258. $ WRITE H_FILE "#define DES_LONG unsigned int"
  259. $ WRITE H_FILE "#undef DES_PTR"
  260. $ WRITE H_FILE "#define DES_PTR"
  261. $ WRITE H_FILE "#undef DES_RISC1"
  262. $ WRITE H_FILE "#undef DES_RISC2"
  263. $ WRITE H_FILE "#define DES_RISC1"
  264. $ WRITE H_FILE "#undef DES_UNROLL"
  265. $ WRITE H_FILE "#define DES_UNROLL"
  266. $ WRITE H_FILE "#endif"
  267. $!
  268. $ WRITE H_FILE "#if defined(HEADER_BN_H)"
  269. $ WRITE H_FILE "#undef SIXTY_FOUR_BIT_LONG"
  270. $ WRITE H_FILE "#undef SIXTY_FOUR_BIT"
  271. $ WRITE H_FILE "#define SIXTY_FOUR_BIT"
  272. $ WRITE H_FILE "#undef THIRTY_TWO_BIT"
  273. $ WRITE H_FILE "#undef SIXTEEN_BIT"
  274. $ WRITE H_FILE "#undef EIGHT_BIT"
  275. $ WRITE H_FILE "#endif"
  276. $
  277. $ WRITE H_FILE "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION"
  278. $!
  279. $! Else...
  280. $!
  281. $ ELSE
  282. $!
  283. $! Write the VAX specific data
  284. $!
  285. $ WRITE H_FILE "#if defined(HEADER_RC4_H)"
  286. $ WRITE H_FILE "#undef RC4_INT"
  287. $ WRITE H_FILE "#define RC4_INT unsigned char"
  288. $ WRITE H_FILE "#undef RC4_CHUNK"
  289. $ WRITE H_FILE "#define RC4_CHUNK unsigned long"
  290. $ WRITE H_FILE "#endif"
  291. $!
  292. $ WRITE H_FILE "#if defined(HEADER_DES_LOCL_H)"
  293. $ WRITE H_FILE "#undef DES_LONG"
  294. $ WRITE H_FILE "#define DES_LONG unsigned long"
  295. $ WRITE H_FILE "#undef DES_PTR"
  296. $ WRITE H_FILE "#define DES_PTR"
  297. $ WRITE H_FILE "#undef DES_RISC1"
  298. $ WRITE H_FILE "#undef DES_RISC2"
  299. $ WRITE H_FILE "#undef DES_UNROLL"
  300. $ WRITE H_FILE "#endif"
  301. $!
  302. $ WRITE H_FILE "#if defined(HEADER_BN_H)"
  303. $ WRITE H_FILE "#undef SIXTY_FOUR_BIT_LONG"
  304. $ WRITE H_FILE "#undef SIXTY_FOUR_BIT"
  305. $ WRITE H_FILE "#undef THIRTY_TWO_BIT"
  306. $ WRITE H_FILE "#define THIRTY_TWO_BIT"
  307. $ WRITE H_FILE "#undef SIXTEEN_BIT"
  308. $ WRITE H_FILE "#undef EIGHT_BIT"
  309. $ WRITE H_FILE "#endif"
  310. $
  311. $ WRITE H_FILE "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION"
  312. $ WRITE H_FILE "#define OPENSSL_EXPORT_VAR_AS_FUNCTION"
  313. $!
  314. $! End
  315. $!
  316. $ ENDIF
  317. $!
  318. $! Close the [.CRYPTO]OPENSSLCONF.H file
  319. $!
  320. $ CLOSE H_FILE
  321. $!
  322. $! That's All, Time To RETURN.
  323. $!
  324. $ RETURN
  325. $!
  326. $! Rebuild The "[.CRYPTO]BUILDINF.H" file.
  327. $!
  328. $ BUILDINF:
  329. $!
  330. $! Tell The User We Are Creating The [.CRYPTO]BUILDINF.H File.
  331. $!
  332. $ WRITE SYS$OUTPUT "Creating [.CRYPTO]BUILDINF.H Include File."
  333. $!
  334. $! Create The [.CRYPTO]BUILDINF.H File.
  335. $!
  336. $ OPEN/WRITE H_FILE SYS$DISK:[.CRYPTO]BUILDINF.H
  337. $!
  338. $! Get The Current Date & Time.
  339. $!
  340. $ TIME = F$TIME()
  341. $!
  342. $! Write The [.CRYPTO]BUILDINF.H File.
  343. $!
  344. $ WRITE H_FILE "#define CFLAGS """" /* Not filled in for now */"
  345. $ WRITE H_FILE "#define PLATFORM ""VMS"""
  346. $ WRITE H_FILE "#define DATE ""''TIME'"" "
  347. $!
  348. $! Close The [.CRYPTO]BUILDINF.H File.
  349. $!
  350. $ CLOSE H_FILE
  351. $!
  352. $! That's All, Time To RETURN.
  353. $!
  354. $ RETURN
  355. $!
  356. $! Copy a lot of files around.
  357. $!
  358. $ SOFTLINKS:
  359. $!
  360. $! Tell The User We Are Partly Rebuilding The [.TEST] Directory.
  361. $!
  362. $ WRITE SYS$OUTPUT "Rebuilding The '[.APPS]MD4.C', '[.APPS]MD5.C' And '[.APPS]RMD160.C' Files."
  363. $!
  364. $ DELETE SYS$DISK:[.APPS]MD4.C;*,MD5.C;*,RMD160.C;*
  365. $!
  366. $! Copy MD4.C from [.CRYPTO.MD4] into [.APPS]
  367. $!
  368. $ COPY SYS$DISK:[.CRYPTO.MD4]MD4.C SYS$DISK:[.APPS]
  369. $!
  370. $! Copy MD5.C from [.CRYPTO.MD5] into [.APPS]
  371. $!
  372. $ COPY SYS$DISK:[.CRYPTO.MD5]MD5.C SYS$DISK:[.APPS]
  373. $!
  374. $! Copy RMD160.C from [.CRYPTO.RIPEMD] into [.APPS]
  375. $!
  376. $ COPY SYS$DISK:[.CRYPTO.RIPEMD]RMD160.C SYS$DISK:[.APPS]
  377. $!
  378. $! Tell The User We Are Partly Rebuilding The [.TEST] Directory.
  379. $!
  380. $ WRITE SYS$OUTPUT "Rebuilding The '[.TEST]*.C' Files."
  381. $!
  382. $! First, We Have To "Rebuild" The "[.TEST]" Directory, So Delete
  383. $! All The "C" Files That Are Currently There Now.
  384. $!
  385. $ DELETE SYS$DISK:[.TEST]*.C;*
  386. $ DELETE SYS$DISK:[.TEST]EVPTESTS.TXT;*
  387. $!
  388. $! Copy all the *TEST.C files from [.CRYPTO...] into [.TEST]
  389. $!
  390. $ COPY SYS$DISK:[.CRYPTO.*]%*TEST.C SYS$DISK:[.TEST]
  391. $ COPY SYS$DISK:[.CRYPTO.EVP]EVPTESTS.TXT SYS$DISK:[.TEST]
  392. $!
  393. $! Copy all the *TEST.C files from [.SSL...] into [.TEST]
  394. $!
  395. $ COPY SYS$DISK:[.SSL]%*TEST.C SYS$DISK:[.TEST]
  396. $!
  397. $! Tell The User We Are Rebuilding The [.INCLUDE.OPENSSL] Directory.
  398. $!
  399. $ WRITE SYS$OUTPUT "Rebuilding The '[.INCLUDE.OPENSSL]' Directory."
  400. $!
  401. $! First, make sure the directory exists
  402. $!
  403. $ IF F$PARSE("SYS$DISK:[.INCLUDE.OPENSSL]") .EQS. "" THEN -
  404. CREATE/DIRECTORY SYS$DISK:[.INCLUDE.OPENSSL]
  405. $!
  406. $! Copy All The ".H" Files From The Main Directory.
  407. $!
  408. $ EXHEADER := e_os2.h
  409. $ COPY 'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
  410. $!
  411. $! Copy All The ".H" Files From The [.CRYPTO] Directory Tree.
  412. $!
  413. $ SDIRS := ,MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,-
  414. DES,RC2,RC4,RC5,IDEA,BF,CAST,-
  415. BN,EC,RSA,DSA,DH,DSO,ENGINE,AES,-
  416. BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,-
  417. EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5
  418. $ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h,ebcdic.h,symhacks.h,-
  419. ossl_typ.h
  420. $ EXHEADER_MD2 := md2.h
  421. $ EXHEADER_MD4 := md4.h
  422. $ EXHEADER_MD5 := md5.h
  423. $ EXHEADER_SHA := sha.h
  424. $ EXHEADER_MDC2 := mdc2.h
  425. $ EXHEADER_HMAC := hmac.h
  426. $ EXHEADER_RIPEMD := ripemd.h
  427. $ EXHEADER_DES := des.h,des_old.h
  428. $ EXHEADER_RC2 := rc2.h
  429. $ EXHEADER_RC4 := rc4.h
  430. $ EXHEADER_RC5 := rc5.h
  431. $ EXHEADER_IDEA := idea.h
  432. $ EXHEADER_BF := blowfish.h
  433. $ EXHEADER_CAST := cast.h
  434. $ EXHEADER_BN := bn.h
  435. $ EXHEADER_EC := ec.h
  436. $ EXHEADER_RSA := rsa.h
  437. $ EXHEADER_DSA := dsa.h
  438. $ EXHEADER_DH := dh.h
  439. $ EXHEADER_DSO := dso.h
  440. $ EXHEADER_ENGINE := engine.h
  441. $ EXHEADER_AES := aes.h
  442. $ EXHEADER_BUFFER := buffer.h
  443. $ EXHEADER_BIO := bio.h
  444. $ EXHEADER_STACK := stack.h,safestack.h
  445. $ EXHEADER_LHASH := lhash.h
  446. $ EXHEADER_RAND := rand.h
  447. $ EXHEADER_ERR := err.h
  448. $ EXHEADER_OBJECTS := objects.h,obj_mac.h
  449. $ EXHEADER_EVP := evp.h
  450. $ EXHEADER_ASN1 := asn1.h,asn1_mac.h,asn1t.h
  451. $ EXHEADER_PEM := pem.h,pem2.h
  452. $ EXHEADER_X509 := x509.h,x509_vfy.h
  453. $ EXHEADER_X509V3 := x509v3.h
  454. $ EXHEADER_CONF := conf.h,conf_api.h
  455. $ EXHEADER_TXT_DB := txt_db.h
  456. $ EXHEADER_PKCS7 := pkcs7.h
  457. $ EXHEADER_PKCS12 := pkcs12.h
  458. $ EXHEADER_COMP := comp.h
  459. $ EXHEADER_OCSP := ocsp.h
  460. $ EXHEADER_UI := ui.h,ui_compat.h
  461. $ EXHEADER_KRB5 := krb5_asn.h
  462. $
  463. $ I = 0
  464. $ LOOP_SDIRS:
  465. $ D = F$EDIT(F$ELEMENT(I, ",", SDIRS),"TRIM")
  466. $ I = I + 1
  467. $ IF D .EQS. "," THEN GOTO LOOP_SDIRS_END
  468. $ tmp = EXHEADER_'D'
  469. $ IF D .EQS. ""
  470. $ THEN
  471. $ COPY [.CRYPTO]'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG
  472. $ ELSE
  473. $ COPY [.CRYPTO.'D']'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG
  474. $ ENDIF
  475. $ GOTO LOOP_SDIRS
  476. $ LOOP_SDIRS_END:
  477. $!
  478. $! Copy All The ".H" Files From The [.SSL] Directory.
  479. $!
  480. $ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h,kssl.h
  481. $ COPY SYS$DISK:[.SSL]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
  482. $!
  483. $! Purge all doubles
  484. $!
  485. $ PURGE SYS$DISK:[.INCLUDE.OPENSSL]*.H
  486. $!
  487. $! That's All, Time To RETURN.
  488. $!
  489. $ RETURN
  490. $!
  491. $! Build The "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library.
  492. $!
  493. $ CRYPTO:
  494. $!
  495. $! Tell The User What We Are Doing.
  496. $!
  497. $ WRITE SYS$OUTPUT ""
  498. $ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.CRYPTO]LIBCRYPTO.OLB Library."
  499. $!
  500. $! Go To The [.CRYPTO] Directory.
  501. $!
  502. $ SET DEFAULT SYS$DISK:[.CRYPTO]
  503. $!
  504. $! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
  505. $!
  506. $ @CRYPTO-LIB LIBRARY 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" "''ISSEVEN'" "''BUILDPART'"
  507. $!
  508. $! Build The [.xxx.EXE.CRYPTO]*.EXE Test Applications.
  509. $!
  510. $ @CRYPTO-LIB APPS 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
  511. $!
  512. $! Go Back To The Main Directory.
  513. $!
  514. $ SET DEFAULT [-]
  515. $!
  516. $! Time To RETURN.
  517. $!
  518. $ RETURN
  519. $!
  520. $! Build The "[.xxx.EXE.SSL]LIBSSL.OLB" Library.
  521. $!
  522. $ SSL:
  523. $!
  524. $! Tell The User What We Are Doing.
  525. $!
  526. $ WRITE SYS$OUTPUT ""
  527. $ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.SSL]LIBSSL.OLB Library."
  528. $!
  529. $! Go To The [.SSL] Directory.
  530. $!
  531. $ SET DEFAULT SYS$DISK:[.SSL]
  532. $!
  533. $! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
  534. $!
  535. $ @SSL-LIB LIBRARY 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
  536. $!
  537. $! Go Back To The Main Directory.
  538. $!
  539. $ SET DEFAULT [-]
  540. $!
  541. $! Time To Return.
  542. $!
  543. $ RETURN
  544. $!
  545. $! Build The "[.xxx.EXE.SSL]SSL_TASK.EXE" Program.
  546. $!
  547. $ SSL_TASK:
  548. $!
  549. $! Tell The User What We Are Doing.
  550. $!
  551. $ WRITE SYS$OUTPUT ""
  552. $ WRITE SYS$OUTPUT "Building DECNet Based SSL Engine, [.",ARCH,".EXE.SSL]SSL_TASK.EXE"
  553. $!
  554. $! Go To The [.SSL] Directory.
  555. $!
  556. $ SET DEFAULT SYS$DISK:[.SSL]
  557. $!
  558. $! Build The [.xxx.EXE.SSL]SSL_TASK.EXE
  559. $!
  560. $ @SSL-LIB SSL_TASK 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
  561. $!
  562. $! Go Back To The Main Directory.
  563. $!
  564. $ SET DEFAULT [-]
  565. $!
  566. $! That's All, Time To RETURN.
  567. $!
  568. $ RETURN
  569. $!
  570. $! Build The OpenSSL Test Programs.
  571. $!
  572. $ TEST:
  573. $!
  574. $! Tell The User What We Are Doing.
  575. $!
  576. $ WRITE SYS$OUTPUT ""
  577. $ WRITE SYS$OUTPUT "Building The OpenSSL [.",ARCH,".EXE.TEST] Test Utilities."
  578. $!
  579. $! Go To The [.TEST] Directory.
  580. $!
  581. $ SET DEFAULT SYS$DISK:[.TEST]
  582. $!
  583. $! Build The Test Programs.
  584. $!
  585. $ @MAKETESTS 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
  586. $!
  587. $! Go Back To The Main Directory.
  588. $!
  589. $ SET DEFAULT [-]
  590. $!
  591. $! That's All, Time To RETURN.
  592. $!
  593. $ RETURN
  594. $!
  595. $! Build The OpenSSL Application Programs.
  596. $!
  597. $ APPS:
  598. $!
  599. $! Tell The User What We Are Doing.
  600. $!
  601. $ WRITE SYS$OUTPUT ""
  602. $ WRITE SYS$OUTPUT "Building OpenSSL [.",ARCH,".EXE.APPS] Applications."
  603. $!
  604. $! Go To The [.APPS] Directory.
  605. $!
  606. $ SET DEFAULT SYS$DISK:[.APPS]
  607. $!
  608. $! Build The Application Programs.
  609. $!
  610. $ @MAKEAPPS 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
  611. $!
  612. $! Go Back To The Main Directory.
  613. $!
  614. $ SET DEFAULT [-]
  615. $!
  616. $! That's All, Time To RETURN.
  617. $!
  618. $ RETURN
  619. $!
  620. $! Check The User's Options.
  621. $!
  622. $ CHECK_OPTIONS:
  623. $!
  624. $! Check if there's a "part", and separate it out
  625. $!
  626. $ BUILDPART = F$ELEMENT(1,"/",P1)
  627. $ IF BUILDPART .EQS. "/"
  628. $ THEN
  629. $ BUILDPART = ""
  630. $ ELSE
  631. $ P1 = F$EXTRACT(0,F$LENGTH(P1) - F$LENGTH(BUILDPART) - 1, P1)
  632. $ ENDIF
  633. $!
  634. $! Check To See If P1 Is Blank.
  635. $!
  636. $ IF (P1.EQS."ALL")
  637. $ THEN
  638. $!
  639. $! P1 Is ALL, So Build Everything.
  640. $!
  641. $ BUILDCOMMAND = "ALL"
  642. $!
  643. $! Else...
  644. $!
  645. $ ELSE
  646. $!
  647. $! Else, Check To See If P1 Has A Valid Arguement.
  648. $!
  649. $ IF (P1.EQS."CONFIG").OR.(P1.EQS."BUILDINF").OR.(P1.EQS."SOFTLINKS") -
  650. .OR.(P1.EQS."BUILDALL") -
  651. .OR.(P1.EQS."CRYPTO").OR.(P1.EQS."SSL") -
  652. .OR.(P1.EQS."SSL_TASK").OR.(P1.EQS."TEST").OR.(P1.EQS."APPS")
  653. $ THEN
  654. $!
  655. $! A Valid Arguement.
  656. $!
  657. $ BUILDCOMMAND = P1
  658. $!
  659. $! Else...
  660. $!
  661. $ ELSE
  662. $!
  663. $! Tell The User We Don't Know What They Want.
  664. $!
  665. $ WRITE SYS$OUTPUT ""
  666. $ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
  667. $ WRITE SYS$OUTPUT ""
  668. $ WRITE SYS$OUTPUT " ALL : Just Build Everything."
  669. $ WRITE SYS$OUTPUT " CONFIG : Just build the [.CRYPTO]OPENSSLCONF.H file."
  670. $ WRITE SYS$OUTPUT " BUILDINF : Just build the [.CRYPTO]BUILDINF.H file."
  671. $ WRITE SYS$OUTPUT " SOFTLINKS: Just Fix The Unix soft links."
  672. $ WRITE SYS$OUTPUT " BUILDALL : Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done."
  673. $ WRITE SYS$OUTPUT " CRYPTO : To Build Just The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
  674. $ WRITE SYS$OUTPUT " CRYPTO/x : To Build Just The x Part Of The"
  675. $ WRITE SYS$OUTPUT " [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
  676. $ WRITE SYS$OUTPUT " SSL : To Build Just The [.xxx.EXE.SSL]LIBSSL.OLB Library."
  677. $ WRITE SYS$OUTPUT " SSL_TASK : To Build Just The [.xxx.EXE.SSL]SSL_TASK.EXE Program."
  678. $ WRITE SYS$OUTPUT " TEST : To Build Just The OpenSSL Test Programs."
  679. $ WRITE SYS$OUTPUT " APPS : To Build Just The OpenSSL Application Programs."
  680. $ WRITE SYS$OUTPUT ""
  681. $ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
  682. $ WRITE SYS$OUTPUT ""
  683. $ WRITE SYS$OUTPUT " AXP : Alpha Architecture."
  684. $ WRITE SYS$OUTPUT " VAX : VAX Architecture."
  685. $ WRITE SYS$OUTPUT ""
  686. $!
  687. $! Time To EXIT.
  688. $!
  689. $ EXIT
  690. $!
  691. $! End The Valid Argument Check.
  692. $!
  693. $ ENDIF
  694. $!
  695. $! End The P1 Check.
  696. $!
  697. $ ENDIF
  698. $!
  699. $! Check To See If P3 Is Blank.
  700. $!
  701. $ IF (P3.EQS."NODEBUG")
  702. $ THEN
  703. $!
  704. $! P3 Is NODEBUG, So Compile Without Debugger Information.
  705. $!
  706. $ DEBUGGER = "NODEBUG"
  707. $!
  708. $! Else...
  709. $!
  710. $ ELSE
  711. $!
  712. $! Check To See If We Are To Compile With Debugger Information.
  713. $!
  714. $ IF (P3.EQS."DEBUG")
  715. $ THEN
  716. $!
  717. $! Compile With Debugger Information.
  718. $!
  719. $ DEBUGGER = "DEBUG"
  720. $!
  721. $! Else...
  722. $!
  723. $ ELSE
  724. $!
  725. $! Tell The User Entered An Invalid Option..
  726. $!
  727. $ WRITE SYS$OUTPUT ""
  728. $ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
  729. $ WRITE SYS$OUTPUT ""
  730. $ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
  731. $ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
  732. $ WRITE SYS$OUTPUT ""
  733. $!
  734. $! Time To EXIT.
  735. $!
  736. $ EXIT
  737. $!
  738. $! End The Valid Arguement Check.
  739. $!
  740. $ ENDIF
  741. $!
  742. $! End The P3 Check.
  743. $!
  744. $ ENDIF
  745. $!
  746. $! Check To See If P4 Is Blank.
  747. $!
  748. $ IF (P4.EQS."")
  749. $ THEN
  750. $!
  751. $! O.K., The User Didn't Specify A Compiler, Let's Try To
  752. $! Find Out Which One To Use.
  753. $!
  754. $! Check To See If We Have GNU C.
  755. $!
  756. $ IF (F$TRNLNM("GNU_CC").NES."")
  757. $ THEN
  758. $!
  759. $! Looks Like GNUC, Set To Use GNUC.
  760. $!
  761. $ COMPILER = "GNUC"
  762. $!
  763. $! Tell The User We Are Using GNUC.
  764. $!
  765. $ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
  766. $!
  767. $! End The GNU C Compiler Check.
  768. $!
  769. $ ENDIF
  770. $!
  771. $! Check To See If We Have VAXC Or DECC.
  772. $!
  773. $ IF (F$GETSYI("CPU").GE.128).OR.(F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC")
  774. $ THEN
  775. $!
  776. $! Looks Like DECC, Set To Use DECC.
  777. $!
  778. $ COMPILER = "DECC"
  779. $!
  780. $! Tell The User We Are Using DECC.
  781. $!
  782. $ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
  783. $!
  784. $! Else...
  785. $!
  786. $ ELSE
  787. $!
  788. $! Looks Like VAXC, Set To Use VAXC.
  789. $!
  790. $ COMPILER = "VAXC"
  791. $!
  792. $! Tell The User We Are Using VAX C.
  793. $!
  794. $ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
  795. $!
  796. $! End The DECC & VAXC Compiler Check.
  797. $!
  798. $ ENDIF
  799. $!
  800. $! Else...
  801. $!
  802. $ ELSE
  803. $!
  804. $! Check To See If The User Entered A Valid Paramter.
  805. $!
  806. $ IF (P4.EQS."VAXC").OR.(P4.EQS."DECC").OR.(P4.EQS."GNUC")!.OR.(P4.EQS."LINK")
  807. $ THEN
  808. $!
  809. $! Check To See If The User Wanted To Just LINK.
  810. $!
  811. $ IF (P4.EQS."LINK")
  812. $ THEN
  813. $!
  814. $! Looks Like LINK-only
  815. $!
  816. $ COMPILER = "LINK"
  817. $!
  818. $! Tell The User We Are Only Linking.
  819. $!
  820. $ WRITE SYS$OUTPUT "LINK Only. This actually NOT YET SUPPORTED!"
  821. $!
  822. $! End LINK Check.
  823. $!
  824. $ ENDIF
  825. $!
  826. $! Check To See If The User Wanted DECC.
  827. $!
  828. $ IF (P4.EQS."DECC")
  829. $ THEN
  830. $!
  831. $! Looks Like DECC, Set To Use DECC.
  832. $!
  833. $ COMPILER = "DECC"
  834. $!
  835. $! Tell The User We Are Using DECC.
  836. $!
  837. $ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
  838. $!
  839. $! End DECC Check.
  840. $!
  841. $ ENDIF
  842. $!
  843. $! Check To See If We Are To Use VAXC.
  844. $!
  845. $ IF (P4.EQS."VAXC")
  846. $ THEN
  847. $!
  848. $! Looks Like VAXC, Set To Use VAXC.
  849. $!
  850. $ COMPILER = "VAXC"
  851. $!
  852. $! Tell The User We Are Using VAX C.
  853. $!
  854. $ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
  855. $!
  856. $! End VAXC Check
  857. $!
  858. $ ENDIF
  859. $!
  860. $! Check To See If We Are To Use GNU C.
  861. $!
  862. $ IF (P4.EQS."GNUC")
  863. $ THEN
  864. $!
  865. $! Looks Like GNUC, Set To Use GNUC.
  866. $!
  867. $ COMPILER = "GNUC"
  868. $!
  869. $! Tell The User We Are Using GNUC.
  870. $!
  871. $ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
  872. $!
  873. $! End The GNU C Check.
  874. $!
  875. $ ENDIF
  876. $!
  877. $! Else The User Entered An Invalid Arguement.
  878. $!
  879. $ ELSE
  880. $!
  881. $! Tell The User We Don't Know What They Want.
  882. $!
  883. $ WRITE SYS$OUTPUT ""
  884. $ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
  885. $ WRITE SYS$OUTPUT ""
  886. $ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
  887. $ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
  888. $ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
  889. $ WRITE SYS$OUTPUT ""
  890. $!
  891. $! Time To EXIT.
  892. $!
  893. $ EXIT
  894. $!
  895. $! End The Valid Arguement Check.
  896. $!
  897. $ ENDIF
  898. $!
  899. $! End The P4 Check.
  900. $!
  901. $ ENDIF
  902. $!
  903. $! Time to check the contents of P5, and to make sure we get the correct library.
  904. $!
  905. $ IF P5.EQS."SOCKETSHR" .OR. P5.EQS."MULTINET" .OR. P5.EQS."UCX" -
  906. .OR. P5.EQS."TCPIP" .OR. P5.EQS."NONE"
  907. $ THEN
  908. $!
  909. $! Check to see if SOCKETSHR was chosen
  910. $!
  911. $ IF P5.EQS."SOCKETSHR"
  912. $ THEN
  913. $!
  914. $! Set the library to use SOCKETSHR
  915. $!
  916. $ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
  917. $!
  918. $! Tell the user
  919. $!
  920. $ WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
  921. $!
  922. $! Done with SOCKETSHR
  923. $!
  924. $ ENDIF
  925. $!
  926. $! Check to see if MULTINET was chosen
  927. $!
  928. $ IF P5.EQS."MULTINET"
  929. $ THEN
  930. $!
  931. $! Set the library to use UCX emulation.
  932. $!
  933. $ P5 = "UCX"
  934. $!
  935. $! Tell the user
  936. $!
  937. $ WRITE SYS$OUTPUT "Using MultiNet via UCX emulation for TCP/IP"
  938. $!
  939. $! Done with MULTINET
  940. $!
  941. $ ENDIF
  942. $!
  943. $! Check to see if UCX was chosen
  944. $!
  945. $ IF P5.EQS."UCX"
  946. $ THEN
  947. $!
  948. $! Set the library to use UCX.
  949. $!
  950. $ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
  951. $!
  952. $! Tell the user
  953. $!
  954. $ WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
  955. $!
  956. $! Done with UCX
  957. $!
  958. $ ENDIF
  959. $!
  960. $! Check to see if TCPIP was chosen
  961. $!
  962. $ IF P5.EQS."TCPIP"
  963. $ THEN
  964. $!
  965. $! Set the library to use TCPIP (post UCX).
  966. $!
  967. $ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
  968. $!
  969. $! Tell the user
  970. $!
  971. $ WRITE SYS$OUTPUT "Using TCPIP (post UCX) for TCP/IP"
  972. $!
  973. $! Done with TCPIP
  974. $!
  975. $ ENDIF
  976. $!
  977. $! Check to see if NONE was chosen
  978. $!
  979. $ IF P5.EQS."NONE"
  980. $ THEN
  981. $!
  982. $! Do not use a TCPIP library.
  983. $!
  984. $ TCPIP_LIB = ""
  985. $!
  986. $! Tell the user
  987. $!
  988. $ WRITE SYS$OUTPUT "A specific TCPIP library will not be used."
  989. $!
  990. $! Done with NONE.
  991. $!
  992. $ ENDIF
  993. $!
  994. $! Set the TCPIP_TYPE symbol
  995. $!
  996. $ TCPIP_TYPE = P5
  997. $!
  998. $! Print info
  999. $!
  1000. $ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
  1001. $!
  1002. $! Else The User Entered An Invalid Arguement.
  1003. $!
  1004. $ ELSE
  1005. $ IF P5 .NES. ""
  1006. $ THEN
  1007. $!
  1008. $! Tell The User We Don't Know What They Want.
  1009. $!
  1010. $ WRITE SYS$OUTPUT ""
  1011. $ WRITE SYS$OUTPUT "The Option ",P5," Is Invalid. The Valid Options Are:"
  1012. $ WRITE SYS$OUTPUT ""
  1013. $ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
  1014. $ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
  1015. $ WRITE SYS$OUTPUT " TCPIP : To link with TCPIP TCP/IP (post UCX) library."
  1016. $ WRITE SYS$OUTPUT " NONE : To not link with a specific TCP/IP library."
  1017. $ WRITE SYS$OUTPUT ""
  1018. $!
  1019. $! Time To EXIT.
  1020. $!
  1021. $ EXIT
  1022. $ ELSE
  1023. $!
  1024. $! If TCPIP is not defined, then hardcode it to make
  1025. $! it clear that no TCPIP is desired.
  1026. $!
  1027. $ IF P5 .EQS. ""
  1028. $ THEN
  1029. $ TCPIP_LIB = ""
  1030. $ TCPIP_TYPE = "NONE"
  1031. $ ELSE
  1032. $!
  1033. $! Set the TCPIP_TYPE symbol
  1034. $!
  1035. $ TCPIP_TYPE = P5
  1036. $ ENDIF
  1037. $ ENDIF
  1038. $!
  1039. $! Done with TCP/IP libraries
  1040. $!
  1041. $ ENDIF
  1042. $!
  1043. $! Special Threads For OpenVMS v7.1 Or Later
  1044. $!
  1045. $! Written By: Richard Levitte
  1046. $! richard@levitte.org
  1047. $!
  1048. $!
  1049. $! Check To See If We Have A Option For P6.
  1050. $!
  1051. $ IF (P6.EQS."")
  1052. $ THEN
  1053. $!
  1054. $! Get The Version Of VMS We Are Using.
  1055. $!
  1056. $ ISSEVEN :=
  1057. $ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
  1058. $ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
  1059. $!
  1060. $! Check To See If The VMS Version Is v7.1 Or Later.
  1061. $!
  1062. $ IF (TMP.GE.71)
  1063. $ THEN
  1064. $!
  1065. $! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
  1066. $!
  1067. $ ISSEVEN := ,PTHREAD_USE_D4
  1068. $!
  1069. $! End The VMS Version Check.
  1070. $!
  1071. $ ENDIF
  1072. $!
  1073. $! End The P6 Check.
  1074. $!
  1075. $ ENDIF
  1076. $!
  1077. $! Time To RETURN...
  1078. $!
  1079. $ RETURN