[0001]
[0002]
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195]
[0196]
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203]
[0204]
[0205]
[0206]
[0207]
[0208]
[0209]
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218]
[0219]
[0220]
[0221]
[0222]
[0223]
[0224]
[0225]
[0226]
[0227]
[0228]
[0229]
[0230]
[0231]
[0232]
[0233]
[0234]
[0235]
[0236]
[0237]
[0238]
[0239]
[0240]
[0241]
[0242]
[0243]
[0244]
[0245]
[0246]
[0247]
[0248]
[0249]
[0250]
[0251]
[0252]
[0253]
[0254]
[0255]
[0256]
[0257]
[0258]
[0259]
[0260]
[0261]
[0262]
[0263]
[0264]
[0265]
[0266]
[0267]
[0268]
[0269]
[0270]
[0271]
[0272]
[0273]
[0274]
[0275]
[0276]
[0277]
[0278]
[0279]
[0280]
[0281]
[0282]
[0283]
[0284]
[0285]
[0286]
[0287]
[0288]
[0289]
[0290]
[0291]
[0292]
[0293]
[0294]
[0295]
[0296]
[0297]
[0298]
[0299]
[0300]
[0301]
[0302]
[0303]
[0304]
[0305]
[0306]
[0307]
[0308]
[0309]
[0310]
[0311]
[0312]
[0313]
[0314]
[0315]
[0316]
[0317]
[0318]
[0319]
[0320]
[0321]
[0322]
[0323]
[0324]
[0325]
[0326]
[0327]
[0328]
[0329]
[0330]
[0331]
[0332]
[0333]
[0334]
[0335]
[0336]
[0337]
[0338]
[0339]
[0340]
[0341]
[0342]
[0343]
[0344]
[0345]
[0346]
[0347]
[0348]
[0349]
[0350]
[0351]
[0352]
[0353]
[0354]
[0355]
[0356]
[0357]
[0358]
[0359]
[0360]
[0361]
[0362]
[0363]
[0364]
[0365]
[0366]
[0367]
[0368]
[0369]
[0370]
[0371]
[0372]
[0373]
[0374]
[0375]
[0376]
[0377]
[0378]
[0379]
[0380]
[0381]
[0382]
[0383]
[0384]
[0385]
[0386]
[0387]
[0388]
[0389]
[0390]
[0391]
[0392]
[0393]
[0394]
[0395]
[0396]
[0397]
[0398]
[0399]
[0400]
[0401]
[0402]
[0403]
[0404]
[0405]
[0406]
[0407]
[0408]
[0409]
[0410]
[0411]
[0412]
[0413]
[0414]
[0415]
[0416]
[0417]
[0418]
[0419]
[0420]
[0421]
[0422]
[0423]
[0424]
[0425]
[0426]
[0427]
[0428]
[0429]
[0430]
[0431]
[0432]
[0433]
[0434]
[0435]
[0436]
[0437]
[0438]
[0439]
[0440]
[0441]
[0442]
[0443]
[0444]
[0445]
[0446]
[0447]
[0448]
[0449]
[0450]
[0451]
[0452]
[0453]
[0454]
[0455]
[0456]
[0457]
[0458]
[0459]
[0460]
[0461]
[0462]
[0463]
[0464]
[0465]
[0466]
[0467]
[0468]
[0469]
[0470]
[0471]
[0472]
[0473]
[0474]
[0475]
[0476]
[0477]
[0478]
[0479]
[0480]
[0481]
[0482]
[0483]
[0484]
[0485]
[0486]
[0487]
[0488]
[0489]
[0490]
[0491]
[0492]
[0493]
[0494]
[0495]
[0496]
[0497]
[0498]
[0499]
[0500]
[0501]
[0502]
[0503]
[0504]
[0505]
[0506]
[0507]
[0508]
[0509]
[0510]
[0511]
[0512]
[0513]
[0514]
[0515]
[0516]
[0517]
[0518]
[0519]
[0520]
[0521]
[0522]
[0523]
[0524]
[0525]
[0526]
[0527]
[0528]
[0529]
[0530]
[0531]
[0532]
[0533]
[0534]
[0535]
[0536]
[0537]
[0538]
[0539]
[0540]
[0541]
[0542]
[0543]
[0544]
[0545]
[0546]
[0547]
[0548]
[0549]
[0550]
[0551]
[0552]
[0553]
[0554]
[0555]
[0556]
[0557]
[0558]
[0559]
[0560]
[0561]
[0562]
[0563]
[0564]
[0565]
[0566]
[0567]
[0568]
[0569]
[0570]
[0571]
[0572]
[0573]
[0574]
[0575]
[0576]
[0577]
[0578]
[0579]
[0580]
[0581]
[0582]
[0583]
[0584]
[0585]
[0586]
[0587]
[0588]
[0589]
[0590]
[0591]
[0592]
[0593]
[0594]
[0595]
[0596]
[0597]
[0598]
[0599]
[0600]
[0601]
[0602]
[0603]
[0604]
[0605]
[0606]
[0607]
[0608]
[0609]
[0610]
[0611]
[0612]
[0613]
[0614]
[0615]
[0616]
[0617]
[0618]
[0619]
[0620]
[0621]
[0622]
[0623]
[0624]
[0625]
[0626]
[0627]
[0628]
[0629]
[0630]
[0631]
[0632]
[0633]
[0634]
[0635]
[0636]
[0637]
[0638]
[0639]
[0640]
[0641]
[0642]
[0643]
[0644]
[0645]
[0646]
[0647]
[0648]
[0649]
[0650]
[0651]
[0652]
[0653]
[0654]
[0655]
[0656]
[0657]
[0658]
[0659]
[0660]
[0661]
[0662]
[0663]
[0664]
[0665]
[0666]
[0667]
[0668]
[0669]
[0670]
[0671]
[0672]
[0673]
[0674]
[0675]
[0676]
[0677]
[0678]
[0679]
[0680]
[0681]
[0682]
[0683]
[0684]
[0685]
[0686]
[0687]
[0688]
[0689]
[0690]
[0691]
[0692]
[0693]
[0694]
[0695]
[0696]
[0697]
[0698]
[0699]
[0700]
[0701]
[0702]
[0703]
[0704]
[0705]
[0706]
[0707]
[0708]
[0709]
[0710]
[0711]
[0712]
[0713]
[0714]
[0715]
[0716]
[0717]
[0718]
[0719]
[0720]
[0721]
[0722]
[0723]
[0724]
[0725]
[0726]
[0727]
[0728]
[0729]
[0730]
[0731]
[0732]
[0733]
[0734]
[0735]
[0736]
[0737]
[0738]
[0739]
[0740]
[0741]
[0742]
[0743]
[0744]
[0745]
[0746]
[0747]
[0748]
[0749]
[0750]
[0751]
[0752]
[0753]
[0754]
[0755]
[0756]
[0757]
[0758]
[0759]
[0760]
[0761]
[0762]
[0763]
[0764]
[0765]
[0766]
[0767]
[0768]
[0769]
[0770]
[0771]
[0772]
[0773]
[0774]
[0775]
[0776]
[0777]
[0778]
[0779]
[0780]
[0781]
[0782]
[0783]
[0784]
[0785]
[0786]
[0787]
[0788]
[0789]
[0790]
[0791]
[0792]
[0793]
[0794]
[0795]
[0796]
[0797]
[0798]
[0799]
[0800]
[0801]
[0802]
[0803]
[0804]
[0805]
[0806]
[0807]
[0808]
[0809]
[0810]
[0811]
[0812]
[0813]
[0814]
[0815]
[0816]
[0817]
[0818]
[0819]
[0820]
[0821]
[0822]
[0823]
[0824]
[0825]
[0826]
[0827]
[0828]
[0829]
[0830]
[0831]
[0832]
[0833]
[0834]
[0835]
[0836]
[0837]
[0838]
[0839]
[0840]
[0841]
[0842]
[0843]
[0844]
[0845]
[0846]
[0847]
[0848]
[0849]
[0850]
[0851]
[0852]
[0853]
[0854]
[0855]
[0856]
[0857]
[0858]
[0859]
[0860]
[0861]
[0862]
[0863]
[0864]
[0865]
[0866]
[0867]
[0868]
[0869]
[0870]
[0871]
[0872]
[0873]
[0874]
[0875]
[0876]
[0877]
[0878]
[0879]
[0880]
[0881]
[0882]
[0883]
[0884]
[0885]
[0886]
[0887]
[0888]
[0889]
[0890]
[0891]
[0892]
[0893]
[0894]
[0895]
[0896]
[0897]
[0898]
[0899]
[0900]
[0901]
[0902]
[0903]
[0904]
[0905]
[0906]
[0907]
[0908]
[0909]
[0910]
[0911]
[0912]
[0913]
[0914]
[0915]
[0916]
[0917]
[0918]
[0919]
[0920]
[0921]
[0922]
[0923]
[0924]
[0925]
[0926]
[0927]
[0928]
[0929]
[0930]
[0931]
[0932]
[0933]
[0934]
[0935]
[0936]
[0937]
[0938]
[0939]
[0940]
[0941]
[0942]
[0943]
[0944]
[0945]
[0946]
[0947]
[0948]
[0949]
[0950]
[0951]
[0952]
[0953]
[0954]
[0955]
[0956]
[0957]
[0958]
[0959]
[0960]
[0961]
[0962]
[0963]
[0964]
[0965]
[0966]
[0967]
[0968]
[0969]
[0970]
[0971]
[0972]
[0973]
[0974]
[0975]
[0976]
[0977]
[0978]
[0979]
[0980]
[0981]
[0982]
[0983]
[0984]
[0985]
[0986]
[0987]
[0988]
[0989]
[0990]
[0991]
[0992]
[0993]
[0994]
[0995]
[0996]
[0997]
[0998]
[0999]
[1000]
[1001]
[1002]
[1003]
[1004]
[1005]
[1006]
[1007]
[1008]
[1009]
[1010]
[1011]
[1012]
[1013]
[1014]
[1015]
[1016]
[1017]
[1018]
[1019]
[1020]
[1021]
[1022]
[1023]
[1024]
[1025]
[1026]
[1027]
[1028]
[1029]
[1030]
[1031]
[1032]
[1033]
[1034]
[1035]
[1036]
[1037]
[1038]
[1039]
[1040]
[1041]
[1042]
[1043]
[1044]
[1045]
[1046]
[1047]
[1048]
[1049]
[1050]
[1051]
[1052]
[1053]
[1054]
[1055]
[1056]
[1057]
[1058]
[1059]
[1060]
[1061]
[1062]
[1063]
[1064]
[1065]
[1066]
[1067]
[1068]
[1069]
[1070]
[1071]
[1072]
[1073]
[1074]
[1075]
[1076]
[1077]
[1078]
[1079]
[1080]
[1081]
[1082]
[1083]
[1084]
[1085]
[1086]
[1087]
[1088]
[1089]
[1090]
[1091]
[1092]
[1093]
[1094]
[1095]
[1096]
[1097]
[1098]
[1099]
[1100]
[1101]
[1102]
[1103]
[1104]
[1105]
[1106]
[1107]
[1108]
[1109]
[1110]
[1111]
[1112]
[1113]
[1114]
[1115]
[1116]
[1117]
[1118]
[1119]
[1120]
[1121]
[1122]
[1123]
[1124]
[1125]
[1126]
[1127]
[1128]
[1129]
[1130]
[1131]
[1132]
[1133]
[1134]
[1135]
[1136]
[1137]
[1138]
[1139]
[1140]
[1141]
[1142]
[1143]
[1144]
[1145]
[1146]
[1147]
[1148]
[1149]
[1150]
[1151]
[1152]
[1153]
[1154]
[1155]
[1156]
[1157]
[1158]
[1159]
[1160]
[1161]
[1162]
[1163]
[1164]
[1165]
[1166]
[1167]
[1168]
[1169]
[1170]
[1171]
[1172]
[1173]
[1174]
[1175]
[1176]
[1177]
[1178]
[1179]
[1180]
[1181]
[1182]
[1183]
[1184]
[1185]
[1186]
[1187]
[1188]
[1189]
[1190]
[1191]
[1192]
[1193]
[1194]
[1195]
[1196]
[1197]
[1198]
[1199]
[1200]
[1201]
[1202]
[1203]
[1204]
[1205]
[1206]
[1207]
[1208]
[1209]
[1210]
[1211]
[1212]
[1213]
[1214]
[1215]
[1216]
[1217]
[1218]
[1219]
[1220]
[1221]
[1222]
[1223]
[1224]
[1225]
[1226]
[1227]
[1228]
[1229]
[1230]
[1231]
[1232]
[1233]
[1234]
[1235]
[1236]
[1237]
[1238]
[1239]
[1240]
[1241]
[1242]
[1243]
[1244]
[1245]
$!-----------------------------------------------------------------'f$verify(0)
$! BUILD_HTTPD.COM
$!
$! P1..P8
$!
$! "BUILD"         compile/link
$! "BUILD:LOCAL"   compile/link using local VMS and C RTL versions
$! "BUILD:HOST"    compile/link as above plus using /ARCHITECTURE=HOST
$! "COMPILE"       compile only
$! "COMPILE:LIST"  compile only, producing machine code listing
$! "DEBUG"         compile /DEBUG/NOOPTIMIZE, link /DEBUG/TRACEBACK
$! "JUST:module"   to compile just that module
$! "JUST:SSL"      to compile all the SSL-related modules
$! "LINK"          link only
$! "LINK:MAP"      link only, producing linkage map
$! "SSL=1"         build with WASD OpenSSL latest distribution
$! "SSL=10"        build with WASD OpenSSL v1.0.n distribution
$! "SSL=11"        build with WASD OpenSSL v1.1.n distribution
$! "SSL=3"         build with WASD OpenSSL v3.0.n distribution
$! "OPENSSL=1"     build with standard OpenSSL distribution
$! "SNAPSSL=1"     build with daily snapshot OpenSSL distribution
$! "OSSL=1"        build with OpenSSL v1.1.0 or later distribution
$! "OSSLSHR=1"     build with OpenSSL v1.1.0 or later shareable image(s)
$! "VMS_SSL=1"     NO LONGER SUPPORTED - build with HP OpenVMS (Open)SSL
$! "VMS_SSL1=1"    build with HP OpenVMS (Open)SSL1 product
$! "VMS_SSL111=1"  build with VSI OpenVMS (Open)SSL111 product
$! "TCPIP6_STUB"   force compilation of TCPIP6 "stub" on VMS pre-V7.0 
$! $ DEFINE/JOB WASD_TCPIP6_STUB [0|1] overrides during @INSTALL and @UPDATE
$!                 (some versions of TCP/IP services don't have get..info())
$! "ACME=0"        build without authorization ACME support (VAX or pre-V7.3)
$! "ACME=1"        build with authorization ACME support
$! "WATCH_CAT=0"   eliminates category WATCHing statements (admin)
$! "WATCH_MOD=1"   includes module WATCHing statements (debugging)
$! "FLOAT_IEEE=1"  use IEEE float
$!
$! By default the software is built with a base compliance to VMS V7.0.
$! This is done to make the object modules as broadly portable as possible.
$! Using BUILD:LOCAL will build against whatever version of VMS and C RTL is
$! available on the local system.  This may provide run-time efficiencies, etc.
$! It also MAY allow the server to be built on VMS V6.0 (but unsupported).
$! Note however that the package is only extensively tested using the
$! base-level build, so unexpected behaviours (i.e. bugs ;^) may be revealed
$! by the different build and run-time environment.
$! 
$! For a non-WASD-default location for the OpenSSL compile-time environment
$! use the VMS OpenSSL standard logical locations (i.e. SSLROOT).
$!
$! When building using VMS (HP) OpenSSL and OpenSSL v1.1.0 or later, be aware
$! that it uses shareable libraries that must be INSTALLed before the WASD
$! server image can be activated (which is not a bad idea anyway).
$!
$!   $ INSTALL ADD /OPEN /HEADER /SHARE SYS$LIBRARY:SSL$LIBCRYPTO_SHR32.EXE
$!   $ INSTALL ADD /OPEN /HEADER /SHARE SYS$LIBRARY:SSL$LIBSSL_SHR32.EXE
$!
$!   $ INSTALL ADD /OPEN /HEADER /SHARE SYS$LIBRARY:SSL1$LIBCRYPTO_SHR32.EXE
$!   $ INSTALL ADD /OPEN /HEADER /SHARE SYS$LIBRARY:SSL1$LIBSSL_SHR32.EXE
$!
$!   $ INSTALL ADD /OPEN /HEADER /SHARE OSSL$LIBCRYPTO_SHR
$!   $ INSTALL ADD /OPEN /HEADER /SHARE OSSL$LIBSSL_SHR
$!
$! 08-SEP-2021  MGD  WASD OpenSSL 3.0 (broken at this stage)
$! 14-MAR-2021  MGD  proxy caching obsolete
$! 12-NOV-2020  MGD  VAX no longer supported - it did have a 26 year run!
$! 18-JUL-2020  MGD  add SESOLAMKCERT.C
$! 30-JUN-2020  MGD  remove VAX SSL and pre-1.1.1 OpenSSL builds
$! 18-JAN-2020  MGD  VSI SSL111
$! 15-JUL-2019  MGD  add SYSPLUS.C
$! 15-SEP-2018  MGD  refactor SSL detection
$!                   use WASD OpenSSL v1.1.n in preference to system
$!                   obsolete PERSONA_STUB and PERSONA_MACRO
$! 08-OCT-2017  MGD  add DCLMEMBUF.C
$! 16-MAR-2017  MGD  SNAPSSL=1 to build with OpenSSL daily snapshot 
$! 25-AUG-2016  MGD  OpenSSL v1.1.0 or later (preliminary) build
$!                   VMS_SSL (HP SSL - OpenSSL v0.9.8n) no longer supported
$!                   remove JFP and Polarhome kit builds
$! 11-MAY-2016  MGD  DELETE ISMAP.*;,FILEDOT.*;*,MENU.*;*,TRACK.*;*
$! 25-APR-2016  MGD  HPE SSL1
$! 28-DEC-2015  MGD  add REDIRECT.C
$! 11-OCT-2015  MGD  SESOLACERT.C
$! 03-AUG-2015  MGD  add HTTP2[..].C HPACK[..].C NETIO.C
$!                   add SESOLACERT.C SESOLANETIO.C
$!                   remove ISMAP.C FILEDOT.C MENU.C
$! 13-APR-2014  MGD  OpenSSL build and link data for SSL report
$! 09-SEP-2012  MGD  AUTHTOKEN.C
$! 28-APR-2012  MGD  Polarhome (http://www.polarhome.com/openssl/) OpenSSL
$! 20-SEP-2011  MGD  dragged kicking and screaming to VMS V7.0 base build
$! 18-SEP-2011  MGD  OpenSSL / WASD SSL now built with 32/64 bit pointers
$! 18-JAN-2011  MGD  BASE64.C SHA1.C
$! 30-AUG-2010  MGD  TCPIP6.C
$! 26-JUN-2010  MGD  WebSock.c
$! 03-APR-2010  MGD  OpenSSL v1.n.n on Alpha uses [.ALPHA] not [.AXP]
$! 14-SEP-2007  MGD  make IEEE the default on non-VAX architectures
$! 31-DEC-2006  MGD  WebDAV modules
$! 21-SEP-2006  MGD  upper-case OpenSSL directory search
$! 23-APR-2006  MGD  include SECOLACACHE.OBJ in non-SSL build
$! 27-JUN-2005  MGD  bugfix; CC_DEFINES in non-SSL build
$! 10-APR-2005  MGD  DIST build defer to VMS SSL (rather than WASD SSL)
$!                   build IA64 ACME/stub by differentiating against VAX
$! 26-MAR-2005  MGD  add /ARCH=HOST to local build compile
$! 22-FEB-2005  JFP  JFP_SSL and /FLOAT=IEEE optional build  
$! 17-OCT-2004  MGD  v9.0, GZIP.C, PROXYNET.C, PROXYTUNNEL.C
$! 17-OCT-2004  MGD  (woops) include ACME=0 in distribution build
$! 10-APR-2004  MGD  v8.5, AUTHACME.C, TCPIP.C
$! 20-DEC-2003  MGD  v8.4,
$!                   support building under IA64
$! 20-NOV-2003  MGD  PROXYVERIFY.C
$! 03-MAY-2003  MGD  REGEX.C
$! 15-APR-2003  MGD  bugfix; for OpenSSL installed away from original package
$! 08-MAR-2003  MGD  delete all existing object files before full build
$! 22-JAN-2003  MGD  add '.c' to compiles after report of failure (on CGI)
$!                   when a logical name is defined against the string
$! 10-AUG-2002  MGD  build against VMS (Open)SSL v1.0-A
$! 05-JUL-2002  MGD  V8.0,
$!                   rework procedure parameter processing,
$!                   removed requirement for OpenSSL SSL_LOCL.H
$! 28-JAN-2002  MGD  expand SESOLA modules, add FTP and BODY modules
$! 28-OCT-2001  MGD  PERSONA_MACRO/PERSONA.MAR
$! 04-AUG-2001  MGD  WATCH_MOD and WATCH_CAT
$! 01-JUL-2001  MGD  further refinement
$! 18-MAY-2001  MGD  THROTTLE.C, FAO.C modules
$! 07-APR-2001  MGD  explicitly build the link options file,
$!                   use OpenSSL directory logicals
$! 13-FEB-2001  MGD  AUTHIDENT.C module
$! 01-OCT-2000  MGD  PERSONA.C module
$! 12-SEP-2000  MGD  make OpenSSL directory determination more flexible
$! 09-AUG-2000  MGD  WASD_BUILD_DEFINES
$! 13-JUN-2000  MGD  v7.1,
$!                   SERVICE.C module
$! 05-MAR-2000  MGD  v7.0,
$!                   ODS (extended file specification) support,
$!                   OpenSSL v0.9.5 support
$! 23-DEC-1999  MGD  v6.1.2,
$!                   RELAXED_ANSI standard (DECC v6.2)
$! 28-AUG-1999  MGD  v6.1,
$!                   remove support for NETLIB,
$!                   support for OpenSSL v0.9.4,
$!                   remove support for SSLeay
$! 02-APR-1999  MGD  generalize for OpenSSL v0.9.3
$! 24-DEC-1998  MGD  HTTPd version 6,
$!                   add proxy modules,
$!                   suppress informational messages (DECC 5.7)
$! 03-JUL-1998  MGD  SSLeay v0.9.0b,
$!                   build for TCPware in UCX compatibility mode
$! 14-MAY-1998  MGD  add defines for __VMS_VER, __CRTL_VER, __VMS_V6_SOURCE
$!                   (ensure v7.1 compilations can be executed on v6.n),
$!                   distributing as .OBJ ... need UCX and NETLIB object files
$! 07-JAN-1998  MGD  HTTPd version 5
$!                   added SSL (SSLeay) build support
$!                   removed optimization, seemed to be inducing problems
$! 07-SEP-1997  MGD  modified to support DBUG and to retain NETLIB objects
$! 23-JUL-1997  MGD  MultiNet dropped in favour of NETLIB 2.1
$! 01-FEB-1997  MGD  HTTPd version 4
$! 06-JAN-1996  MGD  build for either UCX or MultiNet
$! 01-DEC-1995  MGD  HTTPd version 3
$! 24-MAY-1995  MGD  build for AXP systems
$! 20-DEC-1994  MGD  multi-threaded server
$! 20-JUN-1994  MGD  single-threaded server
$!-----------------------------------------------------------------------------
$!
$!! SET VERIFY
$ SET CONTROL=Y
$ ON CONTROLY THEN GOTO FINISHED
$!
$ IF F$GETSYI("ARCH_NAME") .EQS. "VAX"
$ THEN
$    WRITE SYS$OUTPUT "VAX no longer supported - it did have a 26 year run!"
$    EXIT 44
$ ENDIF
$!
$ @WASD_ROOT:[SRC]ARCHER.COM "HTTPD"
$!
$ IF P3 .EQS. "DIST"
$ THEN
$!   (only for building distributions of the server)
$    @BUILD_HTTPD COMPILE
$    @BUILD_HTTPD COMPILE 'DIST_SSL' JUST:SSL
$    EXIT
$ ENDIF
$!
$ BUILD_BASE = "WASD_VMS_V7"
$ VMS_VERSION = F$GETSYI("VERSION")
$ VMS_VERSION = F$INTEGER(F$EXTRACT(1,1,VMS_VERSION)) * 10 +-
                F$INTEGER(F$EXTRACT(3,1,VMS_VERSION))
$ PREVDEFAULT = F$ENVIRONMENT("DEFAULT")
$ PROCEDURE = F$ENVIRONMENT("PROCEDURE")
$ DEFAULT = F$PARSE(PROCEDURE,,,"DEVICE") + F$PARSE(PROCEDURE,,,"DIRECTORY")
$ SET DEFAULT 'DEFAULT'
$!
$ BUILDLOCAL = 0
$ BUILDHOST = 0
$ COMPILEONLY = 0
$ COMPILELIST = ""
$ DEBUGTRACE = 0
$ DBUG = ""
$ JUST = ""
$ LINKONLY = 0
$ LINKMAP = ""
$ WASD_SSL = 0
$ OPEN_SSL = 0
$ OPEN_OSSL = 0
$ OPEN_OSSLSHR = 0
$ VMS_SSL = 0
$ VMS_SSL1 = 0
$ VMS_SSL111 = 0
$ ZLIB = 1
$ SESOLA = ""
$ SESOLA_EXE = ""
$ SESOLA_OBJ = ""
$ SESOLA_INCLUDED = "Without SSL"
$ SSL_ROOT = ""
$ SSL_INCLUDE = ""
$ IF VMS_VERSION .LT. 70 THEN TCPIP6_STUB = 1
$ IF F$TRNLNM("WASD_TCPIP6_STUB") .NES. "" -
     THEN TCPIP6_STUB = F$TRNLNM("WASD_TCPIP6_STUB")
$ WASD_ACME = ""
$ WATCH_CAT = "WATCH_CAT=1"
$ WATCH_MOD = "WATCH_MOD=0"
$ WEBDAV_EXPAT = 1
$ WASD_GETSPI = ""
$ WASD_GETSPI = "WASD_GETSPI=1"
$!
$ WARN = " /WARNING=(NOINFORM,DISABLE=(PREOPTW))"
$ WARN = " /WARNING=(DISABLE=(PREOPTW))"
$ FLOAT_IEEE = 1
$!
$ COUNT = 0
$ PARAMETER_LOOP:
$!
$!   **************
$!   * PARAM LOOP *
$!   **************
$!
$    COUNT = COUNT + 1
$    IF COUNT .GT. 8 THEN GOTO END_PARAMETER_LOOP
$    P0 = P'COUNT'
$    IF P0 .EQS. "" THEN GOTO PARAMETER_LOOP
$    WRITE SYS$OUTPUT "P''COUNT'=" + P0
$!
$    IF P0 .EQS. "BUILD"
$    THEN
$       COMPILEONLY = 0
$       LINKONLY = 0
$    ENDIF
$    IF P0 .EQS. "BUILD:LOCAL" .OR. P0 .EQS. "BUILDLOCAL" THEN BUILDLOCAL = 1
$    IF P0 .EQS. "BUILD:HOST" .OR. P0 .EQS. "BUILDHOST" THEN BUILDHOST = 1
$!
$    IF P0 .EQS. "COMPILE" THEN COMPILEONLY = 1
$    IF P0 .EQS. "COMPILE:LIST" .OR. P0 .EQS. "COMPILE_LIST"
$    THEN
$       COMPILELIST = " /LIST /MACHINE"
$       COMPILEONLY = 1
$       LINKONLY = 0
$    ENDIF
$!
$    IF P0 .EQS. "DBUG"
$    THEN
$       DBUG = "DBUG"
$       WATCH_MOD = "WATCH_MOD=1"
$    ENDIF
$!
$    IF F$ELEMENT(0,":",P0) .EQS. "JUST"
$    THEN
$       JUST = F$ELEMENT(1,":",P0)
$       COMPILEONLY = 1
$       LINKONLY = 0
$    ENDIF
$!
$    IF P0 .EQS. "LINK" THEN LINKONLY = 1
$    IF P0 .EQS. "LINK:MAP" .OR. P0 .EQS. "LINK_MAP"
$    THEN
$       LINKMAP = " /MAP=HTTPD''SESOLA_EXE'.MAP/FULL"
$       LINKONLY = 1
$       COMPILEONLY = 0
$    ENDIF
$!
$    IF P0 .EQS. "TCPIP6_STUB" THEN TCPIP6_STUB = 1
$!
$    CALL CHECK_FOR_SSL "''P0'"
$    IF F$TRNLNM("CHECK_FOR_SSL","LNM$PROCESS") .NES. ""
$    THEN
$       'F$TRNLNM("CHECK_FOR_SSL","LNM$PROCESS",0)'
$       SESOLA_INCLUDED = F$TRNLNM("CHECK_FOR_SSL","LNM$PROCESS",1)
$       SESOLA = "SESOLA"
$       SESOLA_EXE = "_SSL"
$       IF (WASD_SSL .GE. 11 .OR. OPEN_OSSL .GE. 11)
$       THEN
$          SESOLA_OBJ = "_SSL11"  !(OpenSSL v1.1.n)
$       ELSE
$          SESOLA_OBJ = "_SSL"   !(OpenSSL v1.0.n)
$       ENDIF
$    ENDIF
$!
$    IF P0 .EQS. "DEBUG" THEN DEBUGTRACE = 1
$    IF P0 .EQS. "WARN" THEN WARN = ""
$    IF P0 .EQS. "WATCH_CAT=0" THEN WATCH_CAT = "WATCH_CAT=0"
$    IF P0 .EQS. "WATCH_MOD=1" THEN WATCH_MOD = "WATCH_MOD=1"
$    IF P0 .EQS. "ACME=1" THEN WASD_ACME = "WASD_ACME=1"
$    IF P0 .EQS. "ACME=0" THEN WASD_ACME = "WASD_ACME=0"
$    IF P0 .EQS. "FLOAT_IEEE=0" THEN FLOAT_IEEE=0
$    IF P0 .EQS. "FLOAT_IEEE=1" THEN FLOAT_IEEE=1
$!
$    GOTO PARAMETER_LOOP
$!
$ END_PARAMETER_LOOP:
$!
$ IF DEBUGTRACE
$ THEN
$    DEBUGQUAL == "/DEBUG"
$    TRACEQUAL == "/TRACE"
$ ELSE
$    DEBUGQUAL == "/NODEBUG"
$    TRACEQUAL == "/NOTRACE"
$ ENDIF
$!
$! (ACME is only with VMS 7.3 or later)
$ IF WASD_ACME .EQS. "" .AND. VMS_VERSION .GE. 73 -
     THEN WASD_ACME = "WASD_ACME=1"
$ IF WASD_ACME .EQS. "WASD_ACME=1" 
$ THEN
$    ACME_STUB = 0
$    ACME_OBJ = ""
$ ELSE
$    WASD_ACME = "WASD_ACME=0"
$    ACME_STUB = 1
$    ACME_OBJ = "_STUB"
$ ENDIF
$!
$ IF F$TYPE(TCPIP6_STUB) .EQS. "" THEN TCPIP6_STUB = 0
$!
$ CC_DEFINES = BUILD_BASE
$ IF DEBUGTRACE
$ THEN
$    OPTIMIZE = "/NOOPTIMIZE"
$ ELSE
$    OPTIMIZE = "/OPTIMIZE"
$    !(BUILD_HTTPD_LOCAL is a symbol assigned by INSTALL.COM, etc.)
$    IF BUILDLOCAL .OR. F$TYPE(BUILD_HTTPD_LOCAL) .NES. ""
$    THEN
$       CC_DEFINES = ""
$       OPTIMIZE = "/OPTIMIZE=(INLINE=AUTO,LEVEL=4,UNROLL=0,TUNE=HOST)"
$    ENDIF
$    !(BUILD_HTTPD_HOST is a symbol assigned by INSTALL.COM, etc.)
$    IF BUILDHOST .OR. F$TYPE(BUILD_HTTPD_HOST) .NES. ""
$    THEN
$       CC_DEFINES = ""
$       OPTIMIZE = "/OPTIMIZE=(INLINE=AUTO,LEVEL=4,UNROLL=0,TUNE=HOST) " +-
                   "/ARCHITECTURE=HOST"
$    ENDIF
$ ENDIF
$ IF F$TRNLNM("WASD_BUILD_DEFINES") .NES. "" -
     THEN CC_DEFINES = F$TRNLNM("WASD_BUILD_DEFINES")
$ IF DBUG .NES. ""
$ THEN
$    IF CC_DEFINES .NES. "" THEN CC_DEFINES = CC_DEFINES + ","
$    CC_DEFINES = CC_DEFINES + DBUG
$ ENDIF
$ IF SESOLA .NES. ""
$ THEN
$    IF CC_DEFINES .NES. "" THEN CC_DEFINES = CC_DEFINES + ","
$    CC_DEFINES = CC_DEFINES + SESOLA
$ ENDIF
$ IF CC_DEFINES .NES. "" THEN CC_DEFINES = CC_DEFINES + ","
$ CC_DEFINES = CC_DEFINES + WATCH_CAT + "," + WATCH_MOD + "," + WASD_ACME
$ IF WASD_GETSPI .NES. "" THEN CC_DEFINES = CC_DEFINES + "," + WASD_GETSPI
$ IF CC_DEFINES .NES. "" THEN CC_DEFINES = " /DEFINE=(" + CC_DEFINES + ")"
$!
$ WRITE SYS$OUTPUT "Building for ""''VMS_ARCH_NAME'"" architecture"
$ IF SESOLA_INCLUDED .NES. "" THEN WRITE SYS$OUTPUT SESOLA_INCLUDED
$!
$ IF WASD_ARCH_NAME .EQS. "IA64"
$ THEN
$    CC_OPTIONS = "/DECC /STAND=RELAXED_ANSI /PREFIX=ALL /NAMES=UPPER " +-
                  "''OPTIMIZE' ''COMPILELIST'''DEBUGQUAL'''WARN'"
$ ENDIF
$ IF WASD_ARCH_NAME .EQS. "AXP"
$ THEN
$    CC_OPTIONS = "/DECC /STAND=RELAXED_ANSI /PREFIX=ALL /NAMES=UPPER " +-
                  "''OPTIMIZE' ''COMPILELIST'''DEBUGQUAL'''WARN'"
$ ENDIF
$ IF WASD_ARCH_NAME .EQS. "X86_64"
$ THEN
$    CC_OPTIONS = "/DECC /STAND=RELAXED_ANSI /PREFIX=ALL /NAMES=UPPER " +-
                  "''OPTIMIZE' ''COMPILELIST'''DEBUGQUAL'''WARN'"
$ ENDIF
$!
$ IF FLOAT_IEEE 
$ THEN 
$    CC_OPTIONS = CC_OPTIONS + " /FLOAT=IEEE /IEEE=DENORM"
$ ELSE
$    CC_OPTIONS = CC_OPTIONS + " /FLOAT=D_FLOAT"
$ ENDIF
$!
$! (ensure these v11-obsolete files are removed)
$ IF F$SEARCH("ISMAP.C") .NES. "" THEN -
     DELETE ISMAP.*;,FILEDOT.*;*,MENU.*;*,TRACK.*;*
$!
$ IF LINKONLY THEN GOTO LINK
$!
$! ***********
$! * COMPILE *
$! ***********
$!
$ SET NOON
$ SET VERIFY
$ IF JUST .NES. "" THEN GOTO 'JUST'
$!
$ DELETE 'WASD_OBJ_DIR'*.*;*
$!
$ ADMIN:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Admin    Admin.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTH:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Auth     Auth.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHACME:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthACME'ACME_OBJ'  AuthACME.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHAGENT:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthAgent  AuthAgent.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHCACHE:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthCACHE  AuthCache.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHACCESS:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthAccess  AuthAccess.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHCONFIG:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthConfig  AuthConfig.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHHTA:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthHTA  AuthHTA.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHHTL:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthHTL  AuthHTL.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHIDENT:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthIdent  AuthIdent.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHTOKEN:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthToken  AuthToken.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ AUTHVMS:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'AuthVMS  AuthVMS.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ BASE64:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'base64    base64.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ BASIC:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Basic    Basic.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ BODY:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Body      Body.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ CACHE:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Cache    Cache.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ CGI:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'CGI      CGI.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ CLI:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'CLI      CLI.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ CONFIG:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Config   Config.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ CONTROL: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Control  Control.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$!'f$VERIFY(0)
$!
$ DAV:
$ SET VERIFY
$ DAVCOPY:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DAVCOPY   DAVcopy.c
$ IF JUST .NES. "" .AND. JUST .NES. "DAV" THEN GOTO ENDCOMPILE
$ DAVDELETE:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DAVDELETE   DAVdelete.c
$ IF JUST .NES. "" .AND. JUST .NES. "DAV" THEN GOTO ENDCOMPILE
$ DAVLOCK:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DAVLOCK   DAVlock.c
$ IF JUST .NES. "" .AND. JUST .NES. "DAV" THEN GOTO ENDCOMPILE
$ DAVMETA:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DAVMETA   DAVmeta.c
$ IF JUST .NES. "" .AND. JUST .NES. "DAV" THEN GOTO ENDCOMPILE
$ DAVMOVE:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DAVMOVE   DAVmove.c
$ IF JUST .NES. "" .AND. JUST .NES. "DAV" THEN GOTO ENDCOMPILE
$ DAVPROP:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DAVPROP   DAVprop.c
$ IF JUST .NES. "" .AND. JUST .NES. "DAV" THEN GOTO ENDCOMPILE
$ DAVWEB:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DAVWEB     DAVweb.c
$ IF JUST .NES. "" .AND. JUST .NES. "DAV" THEN GOTO ENDCOMPILE
$ DAVXML:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DAVXML     DAVxml.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$!'f$VERIFY(0)
$!
$ SET VERIFY
$ DCL:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Dcl      Dcl.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ DCLMEMBUF: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DCLmembuf DCLmembuf.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ DECNET:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'DECnet   DECnet.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ DESCR:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Descr    Descr.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ DICT:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Dict    Dict.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ DIR:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Dir      Dir.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ DIGEST:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Digest   Digest.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ ERROR:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Error    Error.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ FAO:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'FAO      FAO.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ FILE:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'File     File.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ GRAPH:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Graph    Graph.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ GZIP:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'gZIP      gZIP.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ HTADMIN: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'HTAdmin  HTAdmin.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ H2:  !all of HTTP/2 modules
$ HTTP2:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'HTTP2    HTTP2.c
$ IF JUST .NES. "" .AND. JUST .NES. "H2" THEN GOTO ENDCOMPILE
$ HTTP2NET:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'HTTP2net    HTTP2net.c
$ IF JUST .NES. "" .AND. JUST .NES. "H2" THEN GOTO ENDCOMPILE
$ HTTP2REQUEST:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'HTTP2request HTTP2request.c
$ IF JUST .NES. "" .AND. JUST .NES. "H2" THEN GOTO ENDCOMPILE
$ HTTP2WATCH:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'HTTP2watch HTTP2watch.c
$ IF JUST .NES. "" .AND. JUST .NES. "H2" THEN GOTO ENDCOMPILE
$ HPACK:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'HPACK    HPACK.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ HTTPD:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'HTTPd    HTTPd.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ INSTANCE:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Instance    Instance.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ LOGGING: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Logging  Logging.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ MAPCON:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'MapCon   MapCon.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ MAPODS:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'MapOds   MapOds.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ MAPSET:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'MapSet   MapSet.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ MAPURL:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'MapUrl   MapUrl.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ MAPUSER:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'MapUser MapUser.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ MD5:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'MD5      MD5.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ METACON:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'MetaCon     MetaCon.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ MSG:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Msg      Msg.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ NET:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Net      Net.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ NETIO:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'NetIO  NetIO.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ ODS:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'ODS      ODS.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ PERSONA: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Persona  Persona.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ PROXIES:
$ PROXY:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Proxy    Proxy.c
$ IF JUST .NES. "" .AND JUST .NES. "PROXIES" THEN GOTO ENDCOMPILE
$ PROXYFTP:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'ProxyFTP     ProxyFTP.c
$ IF JUST .NES. "" .AND JUST .NES. "PROXIES" THEN GOTO ENDCOMPILE
$ PROXYMAINT:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'ProxyMaint ProxyMaint.c
$ IF JUST .NES. "" .AND JUST .NES. "PROXIES" THEN GOTO ENDCOMPILE
$ PROXYNET:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'ProxyNet     ProxyNet.c
$ IF JUST .NES. "" .AND JUST .NES. "PROXIES" THEN GOTO ENDCOMPILE
$ PROXYREWORK:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'ProxyRework  ProxyRework.c
$ IF JUST .NES. "" .AND JUST .NES. "PROXIES" THEN GOTO ENDCOMPILE
$ PROXYSOCKS:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'ProxySocks  ProxySocks.c
$ IF JUST .NES. "" .AND JUST .NES. "PROXIES" THEN GOTO ENDCOMPILE
$ PROXYTUNNEL:  CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'ProxyTunnel ProxyTunnel.c
$ IF JUST .NES. "" .AND JUST .NES. "PROXIES" THEN GOTO ENDCOMPILE
$ PROXYVERIFY:    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'ProxyVerify ProxyVerify.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ PUT:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Put      Put.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ REDIRECT: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Redirect  Redirect.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ REGEX:
$    REGEX_DEFINES = CC_DEFINES - ")" + ",STDC_HEADERS,REGEX_MALLOC)"
$    CC 'CC_OPTIONS''REGEX_DEFINES' /OBJ='WASD_OBJ_DIR'RegEx     RegEx.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ REQUEST: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Request  Request.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ RESPONSE:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'RESPONSE    Response.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ SERVICE:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Service      Service.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ SHA1:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'SHA1    SHA1.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ SSI:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'SSI      SSI.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$!
$ SSL:
$!'f$VERIFY(0)
$ SESOLA:
$ SESOLACACHE:
$ SESOLACERT:
$ SESOLACGI:
$ SESOLACLIENT:
$ SESOLAMKCERT:
$ SESOLANET:
$ SESOLANETIO:
$ IF SESOLA .NES. ""
$ THEN
$!   (OpenSSL 0.9.5/6 has architecture-specific configuration file generated)
$    IF F$SEARCH("SSLROOT:[WASD]OPENSSLCONF_''ARCH_NAME'.H") .NES. "" 
$    THEN
$       COPY SSLROOT:[WASD]OPENSSLCONF_'ARCH_NAME'.H -
             SSLROOT:[INCLUDE.OPENSSL]OPENSSLCONF.H
$       PURGE /NOCONFIRM /NOLOG SSLROOT:[INCLUDE.OPENSSL]OPENSSLCONF.H
$    ENDIF
$    LIB_SSL_32 = F$PARSE(F$TRNLNM("OPENSSL"),,,"DIRECTORY","NO_CONCEAL") - "]["
$    SSL_CC_DEFINES = CC_DEFINES - ")" + ",LIB_SSL_32=""""""''LIB_SSL_32'"""""")"
$ ENDIF
$!! SESOLA_WARN = "/NOWARN"
$!! SESOLA_WARN = " /WARNING=(NOINFORM,DISABLE=(PREOPTW,LONGEXTERN))"
$ IF JUST .NES. "" THEN GOTO 'JUST'_
$ SSL_:
$ SET VERIFY
$ SESOLA_: CC 'CC_OPTIONS''SSL_CC_DEFINES''SESOLA_WARN' -
           /OBJ='WASD_OBJ_DIR'Sesola'SESOLA_OBJ' Sesola.c
$ IF JUST .NES. "" .AND. JUST .NES. "SSL" THEN GOTO ENDCOMPILE
$ SESOLACACHE_: CC 'CC_OPTIONS''SSL_CC_DEFINES''SESOLA_WARN' -
                /OBJ='WASD_OBJ_DIR'SesolaCache'SESOLA_OBJ' SesolaCache.c
$ IF JUST .NES. "" .AND. JUST .NES. "SSL" THEN GOTO ENDCOMPILE
$ SESOLACGI_: CC 'CC_OPTIONS''SSL_CC_DEFINES''SESOLA_WARN' -
              /OBJ='WASD_OBJ_DIR'SesolaCGI'SESOLA_OBJ' SesolaCGI.c
$ IF JUST .NES. "" .AND. JUST .NES. "SSL" THEN GOTO ENDCOMPILE
$ SESOLACERT_: CC 'CC_OPTIONS''SSL_CC_DEFINES''SESOLA_WARN' -
              /OBJ='WASD_OBJ_DIR'SesolaCERT'SESOLA_OBJ' SesolaCERT.c
$ IF JUST .NES. "" .AND. JUST .NES. "SSL" THEN GOTO ENDCOMPILE
$ SESOLACLIENT_: CC 'CC_OPTIONS''SSL_CC_DEFINES''SESOLA_WARN' -
                 /OBJ='WASD_OBJ_DIR'SesolaClient'SESOLA_OBJ' SesolaClient.c
$ IF JUST .NES. "" .AND. JUST .NES. "SSL" THEN GOTO ENDCOMPILE
$ SESOLAMKCERT_: CC 'CC_OPTIONS''SSL_CC_DEFINES''SESOLA_WARN' -
                 /OBJ='WASD_OBJ_DIR'SesolaMkCert'SESOLA_OBJ' SesolaMkCert.c
$ IF JUST .NES. "" .AND. JUST .NES. "SSL" THEN GOTO ENDCOMPILE
$ SESOLANET_: CC 'CC_OPTIONS''SSL_CC_DEFINES''SESOLA_WARN' -
              /OBJ='WASD_OBJ_DIR'SesolaNet'SESOLA_OBJ' SesolaNet.c
$ IF JUST .NES. "" .AND. JUST .NES. "SSL" THEN GOTO ENDCOMPILE
$ SESOLANETIO_: CC 'CC_OPTIONS''SSL_CC_DEFINES''SESOLA_WARN' -
                /OBJ='WASD_OBJ_DIR'SesolaNetIo'SESOLA_OBJ' SesolaNetIo.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ 
SET VERIFY
$!
$ STMLF:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'StmLF    StmLF.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ STRDSC:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'StrDsc   StrDsc.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ STRNG:   CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Strng    Strng.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ SUPPORT: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Support  Support.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ SYSPLUS: CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'sysPLUS  sysPLUS.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ TCPIP:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'TcpIp      TcpIp.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ TCPIPALT:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'TcpIpAlt  TcpIpAlt.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ TCPIP6:   
$ IF TCPIP6_STUB
$ THEN
$    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Tcpip6_stub  TcpIp6.c
$ ELSE
$    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Tcpip6 TcpIp6.c
$ ENDIF
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ THROTTLE:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Throttle  Throttle.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ UPD:     CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'Upd      Upd.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ VM:      CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'VM       VM.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ WATCH:   
$    WATCHFUNC_CC = CC_OPTIONS + CC_DEFINES
$    @BUILD_WATCHFUNC
$!   'F$VERIFY(1)
$    CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'WATCH  WATCH.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$ WEBSOCK:      CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'WebSock   WebSock.c
$ IF JUST .NES. "" THEN GOTO ENDCOMPILE
$!
$ VERSION: DATETIME = F$TIME()
$ IF F$EXTRACT(0,1,DATETIME) .EQS. " " THEN DATETIME = F$EXTRACT(1,99,DATETIME)
$ CC_DEFINES = CC_DEFINES - ")" + ",BUILD_DATETIME=""""""''DATETIME'"""""")"
$ CC 'CC_OPTIONS''CC_DEFINES' /OBJ='WASD_OBJ_DIR'VERSION  Version.c
$!
$ ENDCOMPILE:
$! 'F$VERIFY(0)
$!
$ IF COMPILEONLY THEN GOTO FINISHED
$!
$! ********
$! * LINK *
$! ********
$!
$ LINK:
$!
$ SEARCH VERSION.H HTTPD_VERSION /OUTPUT=IMAGE_IDENT.LIS
$ OPEN /READ IMAGEIDENT IMAGE_IDENT.LIS
$ READ IMAGEIDENT IMAGE_IDENT
$ CLOSE IMAGEIDENT
$ DELETE /NOLOG /NOCONFIRM IMAGE_IDENT.LIS;*
$ IMAGE_IDENT = F$ELEMENT(1,"""",IMAGE_IDENT)
$ IF IMAGE_IDENT .EQS. "" .OR. IMAGE_IDENT .EQS. """" -
     THEN IMAGE_IDENT = "_UNKNOWN_"
$!
$ PROCEDURE = F$ENVIRONMENT("PROCEDURE")
$ PROCEDURE_DEV = F$PARSE(PROCEDURE,,,"DEVICE")
$ PROCEDURE_DIR = F$PARSE(PROCEDURE,,,"DIRECTORY")
$ LINK_OPT = PROCEDURE_DEV + PROCEDURE_DIR + "LINK_" + WASD_ARCH_NAME +".OPT"
$ IF F$TRNLNM("WASD_LINK_OPT","LNM$PROCESS") THEN CLOSE WASD_LINK_OPT
$ IF F$SEARCH("''LINK_OPT'") .NES. "" THEN DELETE /NOCONFIRM /NOLOG 'LINK_OPT';*
$!
$ OPEN /WRITE WASD_LINK_OPT 'LINK_OPT'
$ WRITE WASD_LINK_OPT "IDENT=""" + IMAGE_IDENT + """"
$ WRITE WASD_LINK_OPT "CASE_SENSITIVE=NO"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Admin"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Auth"
$ IF ACME_STUB
$    THEN WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthACME" + ACME_OBJ
$    ELSE WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthACME"
$ ENDIF
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthAgent"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthCache"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthAccess"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthConfig"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthHTA"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthHTL"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthIdent"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthToken"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "AuthVMS"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Basic"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "BASE64"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Body"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Cache"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "CGI"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "CLI"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Config"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Control"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DAVcopy"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DAVdelete"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DAVlock"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DAVmeta"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DAVmove"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DAVprop"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DAVweb"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DAVxml"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Dcl"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DCLmembuf"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "DECnet"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Descr"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Dict"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Dir"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Digest"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Error"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "FAO"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "File"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Graph"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "gZIP"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "HTAdmin"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "HTTP2"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "HTTP2net"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "HTTP2request"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "HTTP2watch"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "HTTPd"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "HPACK"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Instance"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Logging"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "MapCon"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "MapOds"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "MapSet"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "MapUrl"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "MapUser"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "MD5"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "MetaCon"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Msg"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Net"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "NetIO"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "ODS"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Persona"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Proxy"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "ProxyFTP"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "ProxyMaint"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "ProxyNet"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "ProxyRework"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "ProxySocks"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "ProxyTunnel"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "ProxyVerify"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Put"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Redirect"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "RegEx"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Request"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Response"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Service"
$ IF WASD_SSL .GT. 0 .OR. OPEN_SSL .OR. OPEN_OSSL .OR. VMS_SSL1 .OR. VMS_SSL111
$ THEN
$    IF (WASD_SSL .GE. 11 .OR. OPEN_OSSL .GE. 11)
$    THEN
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Sesola_SSL11"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCache_SSL11"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCert_SSL11"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCGI_SSL11"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaClient_SSL11"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaMkCert_SSL11"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaNet_SSL11"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaNetIo_SSL11"
$    ELSE
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Sesola_SSL"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCache_SSL"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCert_SSL"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCGI_SSL"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaClient_SSL"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaMkCert_SSL"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaNet_SSL"
$       WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaNetIo_SSL"
$    ENDIF
$ ELSE
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Sesola"
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCache"
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCert"
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaCGI"
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaClient"
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaMkCert"
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaNet"
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SesolaNetIo"
$ ENDIF
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SHA1"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "SSI"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "StmLF"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "StrDsc"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Strng"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Support"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "sysPLUS"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "TCPIP"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "TCPIPalt"
$ IF TCPIP6_STUB
$ THEN
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "TCPIP6_stub"
$ ELSE
$    WRITE WASD_LINK_OPT WASD_OBJ_DIR + "TCPIP6"
$ ENDIF
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Throttle"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Upd"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Version"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "VM"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "Watch"
$ WRITE WASD_LINK_OPT WASD_OBJ_DIR + "WebSock"
$ IF WEBDAV_EXPAT
$ THEN
$    EXPAT_WASD_OBJ_DIR = "[-.EXPAT." + (WASD_OBJ_DIR  - "[.")
$    WRITE WASD_LINK_OPT EXPAT_WASD_OBJ_DIR + "XMLPARSE"
$    WRITE WASD_LINK_OPT EXPAT_WASD_OBJ_DIR + "XMLROLE"
$    WRITE WASD_LINK_OPT EXPAT_WASD_OBJ_DIR + "XMLTOK"
$ ENDIF
$ IF OPEN_SSL
$ THEN
$    IF F$SEARCH("SSLLIB:SSL_LIBSSL32.OLB") .NES. ""
$    THEN
$!      post OpenSSL 1.0.0e
$       WRITE WASD_LINK_OPT "SSLLIB:SSL_LIBSSL32.OLB/LIBRARY"
$       WRITE WASD_LINK_OPT "SSLLIB:SSL_LIBCRYPTO32.OLB/LIBRARY"
$       WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,12"
$    ELSE
$!      pre OpenSSL 1.0.0e
$       WRITE WASD_LINK_OPT "SSLLIB:LIBSSL.OLB/LIBRARY"
$       WRITE WASD_LINK_OPT "SSLLIB:LIBCRYPTO.OLB/LIBRARY"
$       WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,11"
$    ENDIF
$ ENDIF
$ IF OPEN_OSSL
$ THEN
$    IF OPEN_OSSLSHR
$    THEN
$!      OpenSSL 1.1.0 or later 32 bit shareable link
$       WRITE WASD_LINK_OPT "OSSL$LIBSSL_SHR32/SHARE"
$       WRITE WASD_LINK_OPT "OSSL$LIBCRYPTO_SHR32/SHARE"
$       WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,62"
$    ELSE
$!      OpenSSL 1.1.0 or later 32 bit object link
$       WRITE WASD_LINK_OPT "OSSL$LIBSSL32/LIBRARY"
$       WRITE WASD_LINK_OPT "OSSL$LIBCRYPTO32/LIBRARY"
$       WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,61"
$    ENDIF
$ ENDIF
$ IF VMS_SSL1
$ THEN
$    WRITE WASD_LINK_OPT "SYS$COMMON:[SYSLIB]SSL1$LIBSSL_SHR32.EXE/SHARE"
$    WRITE WASD_LINK_OPT "SYS$COMMON:[SYSLIB]SSL1$LIBCRYPTO_SHR32.EXE/SHARE"
$    WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,22"
$ ENDIF
$ IF VMS_SSL111
$ THEN
$    WRITE WASD_LINK_OPT "SYS$COMMON:[SYSLIB]SSL111$LIBSSL_SHR32.EXE/SHARE"
$    WRITE WASD_LINK_OPT "SYS$COMMON:[SYSLIB]SSL111$LIBCRYPTO_SHR32.EXE/SHARE"
$    WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,23"
$ ENDIF
$ IF WASD_SSL .EQ. 10
$ THEN
$set verify
$!   *** OpenSSL v1.0.n ***
$    WRITE WASD_LINK_OPT "SSLROOT:[''VMS_ARCH_NAME'.EXE.SSL]SSL_LIBSSL32.OLB/LIBRARY"
$    WRITE WASD_LINK_OPT "SSLROOT:[''VMS_ARCH_NAME'.EXE.CRYPTO]SSL_LIBCRYPTO32.OLB/LIBRARY"
$    IF (VMS_ARCH_NAME .EQS. "ALPHA") THEN WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,54"
$    IF (VMS_ARCH_NAME .EQS. "IA64") THEN WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,55"
$ ENDIF
$ IF WASD_SSL .EQ. 11
$ THEN
$!   *** OpenSSL v1.1.n ***
$    WRITE WASD_LINK_OPT "SSLROOT:[WASD.''VMS_ARCH_NAME']OSSL$LIBSSL32.OLB/LIBRARY"
$    WRITE WASD_LINK_OPT "SSLROOT:[WASD.''VMS_ARCH_NAME']OSSL$LIBCRYPTO32.OLB/LIBRARY"
$    IF (VMS_ARCH_NAME .EQS. "ALPHA") THEN WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,71"
$    IF (VMS_ARCH_NAME .EQS. "IA64") THEN WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,72"
$    IF (VMS_ARCH_NAME .EQS. "X86_64") THEN WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,73"
$ ENDIF
$ IF WASD_SSL .EQ. 3
$ THEN
$!   *** OpenSSL v3.0.n ***
$    WRITE WASD_LINK_OPT "SSLROOT:[WASD.''VMS_ARCH_NAME']OSSL$LIBSSL32.OLB/LIBRARY"
$    WRITE WASD_LINK_OPT "SSLROOT:[WASD.''VMS_ARCH_NAME']OSSL$LIBCRYPTO32.OLB/LIBRARY"
$    IF (VMS_ARCH_NAME .EQS. "ALPHA") THEN WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,71"
$    IF (VMS_ARCH_NAME .EQS. "IA64") THEN WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,72"
$    IF (VMS_ARCH_NAME .EQS. "X86_64") THEN WRITE WASD_LINK_OPT "SYMBOL=SESOLA_LIB_SSL_32,73"
$ ENDIF
$!
$! (fallback for SYSPLUS.C)
$ IF WASD_GETSPI .NES. "" THEN WRITE WASD_LINK_OPT "SYS$SHARE:SPISHR.EXE/SHARE"
$!
$ CLOSE WASD_LINK_OPT
$!
$ SET ON
$ SET VERIFY
$!
$ LINK'LINKMAP' 'TRACEQUAL' 'DEBUGQUAL'-
  /EXECUTABLE=WASD_EXE:HTTPD'SESOLA_EXE'.EXE -
  'LINK_OPT'/OPTIONS
$!
$!'F$VERIFY(0)
$ DELETE /NOCONFIRM /NOLOG 'LINK_OPT';*
$ PURGE /LOG 'WASD_OBJ_DIR' /KEEP=3
$!
$! ************
$! * FINISHED *
$! ************
$!
$ FINISHED:  !'F$VERIFY(0)
$ SET DEFAULT 'PREVDEFAULT'
$ CALL DEASSIGN_WORKING_LOGICAL_NAMES
$!
$! ***************
$! * SUBROUTINES *
$! ***************
$!
$!-----------------------------------------------------------------------------
$ DEASSIGN_WORKING_LOGICAL_NAMES: SUBROUTINE
$!
$ IF F$TRNLNM("SSLROOT","LNM$PROCESS") .NES. "" -
     THEN DEASSIGN /PROCESS SSLROOT
$ IF F$TRNLNM("OPENSSL","LNM$PROCESS") .NES. "" -
     THEN DEASSIGN /PROCESS OPENSSL
$ IF F$TRNLNM("WASD_LIBSSL32","LNM$PROCESS") .NES. "" -
     THEN DEASSIGN /PROCESS WASD_LIBSSL32
$ IF F$TRNLNM("WASD_LIBCRYPTO32","LNM$PROCESS") .NES. "" -
     THEN DEASSIGN /PROCESS WASD_LIBCRYPTO32
$!
$ ENDSUBROUTINE
$!-----------------------------------------------------------------------------
$ CHECK_FOR_SSL: SUBROUTINE
$! does not take any parameter(s)
$! returns with logical name CHECK_FOR_SSL defined LNM$PROCESS if an SSL build
$ SET SYMBOL/SCOPE=LOCAL
$!
$ IF F$TRNLNM("CHECK_FOR_SSL","LNM$PROCESS") .NES. "" -
     THEN DEASSIGN CHECK_FOR_SSL/PROCESS
$!
$!(BUILD_HTTPD_WASD_SSL is a symbol assigned by [INSTALL]SSL_DETECT.COM)
$!
$ IF P1 .EQS. "SSL" .OR. -
     P1 .EQS. "SSL=1" .OR. -
     P1 .EQS. "SSL=10" .OR. -
     P1 .EQS. "SSL=11" .OR. -
     P1 .EQS. "SSL=3" .OR. -
     F$TYPE(BUILD_HTTPD_WASD_SSL) .NES. ""
$ THEN
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "WASD_SSL=0"
$!   (first look for a WASD OpenSSL v3.0 package)
$    IF P1 .NES. "SSL=3" -
        THEN CALL FIND_SSL_ROOT "WASD_ROOT:[SRC]OPENSSL-3_0_*.DIR"
$!   (then look for a WASD OpenSSL v1.1 package)
$    IF F$TRNLNM("SSLROOT","LNM$PROCESS") .EQS. ""
$    THEN
$       IF P1 .NES. "SSL=10" -
           THEN CALL FIND_SSL_ROOT "WASD_ROOT:[SRC]OPENSSL-1_1_*.DIR"
$    ENDIF
$    IF F$TRNLNM("SSLROOT","LNM$PROCESS") .NES. ""
$    THEN
$!      *** OPENSSL v1.1.n ***
$       WASD_SSL = "WASD_SSL=11"  !(11 is for OpenSSL v1.1.n)
$    ELSE
$!      (after that look for a WASD OpenSSL v1.0 package)
$       IF P1 .NES. "SSL=11" -
           THEN CALL FIND_SSL_ROOT "WASD_ROOT:[SRC]OPENSSL-1_0_*.DIR"
$       IF F$TRNLNM("SSLROOT","LNM$PROCESS") .NES. ""
$       THEN
$!         *** OPENSSL v1.0.n ***
$          IF F$SEARCH("SSLROOT:[ALPHA.EXE.SSL]LIBSSL32.OLB") .NES. ""
$          THEN
$             SAY "*** PLEASE UPGRADE TO A -MUCH- MORE MODERN OpenSSL!! ***"
$             EXIT 44
$          ENDIF
$          WASD_SSL = "WASD_SSL=10"  !(10 is for OpenSSL v1.0.n)
$       ENDIF
$    ENDIF
$    IF F$TRNLNM("SSLROOT","LNM$PROCESS") .EQS. ""
$    THEN
$       TYPE SYS$INPUT
  ****************************************
  *  WASD OpenSSL directory not located  *
  ****************************************

$       CALL DEASSIGN_WORKING_LOGICAL_NAMES
$       EXIT 44
$    ENDIF
$!
$    IF F$SEARCH("SSLROOT:[INCLUDE.OPENSSL]OPENSSLCONF.H") .EQS. ""
$    THEN
$       TYPE SYS$INPUT
  ******************************************
  *  OpenSSL OPENSSLCONF.H file not found  *
  ******************************************

$       CALL DEASSIGN_WORKING_LOGICAL_NAMES
$       EXIT 44
$    ENDIF
$!
$    DEFINE /PROCESS/NOLOG OPENSSL SSLROOT:[INCLUDE.OPENSSL]
$!
$    FROM = "WASD OpenSSL from " + F$TRNLNM("SSLROOT") - ".]" + "]"
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "''WASD_SSL'","''FROM'"
$!
$!   (can't get ZIP to preserve case so resort to this - necessity's a mother)
$    rename_loop:
$       filename = f$search("openssl:__decc_include_*.h")
$       if filename .eqs. "" then goto end_rename_loop
$       ufilename = f$edit(filename,"upcase")
$       rename /nolog 'filename' 'ufilename'
$       goto rename_loop
$    end_rename_loop:
$!
$    EXIT 1
$!
$ ENDIF
$!
$!(BUILD_HTTPD_OPEN_SSL is a symbol assigned by [INSTALL]SSL_DETECT.COM)
$!
$ IF P1 .EQS. "OPENSSL" .OR. -
     P1 .EQS. "OPENSSL=1" .OR. -
     F$TYPE(BUILD_HTTPD_OPEN_SSL) .NES. ""
$ THEN
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "OPEN_SSL=0"
$!
$    IF F$TRNLNM("SSLROOT") .EQS. ""
$    THEN
$       TYPE SYS$INPUT
  *****************************************************
  *  OpenSSL (prior to v1.1.0) directory not located  *
  *****************************************************

$       CALL DEASSIGN_WORKING_LOGICAL_NAMES
$       EXIT 44
$    ENDIF
$!
$    FROM = "WASD OpenSSL 1.0 from " + F$TRNLNM("SSLROOT") - ".]" + "]"
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "OPEN_SSL=1","''FROM'"
$    EXIT 1
$!
$ ENDIF
$!
$!(BUILD_HTTPD_OSSL is a symbol assigned by [INSTALL]SSL_DETECT.COM)
$!
$ IF P1 .EQS. "OSSL" .OR. -
     P1 .EQS. "OSSLSHR" .OR. -
     P1 .EQS. "OSSL=1" .OR. -
     P1 .EQS. "OSSLSHR=1" .OR. -
     F$TYPE(BUILD_HTTPD_OSSL) .NES. "" .OR. -
     F$TYPE(BUILD_HTTPD_OSSLSHR) .NES. ""
$ THEN
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "OPEN_OSSL=0"
$    IF F$TRNLNM("OSSL$INSTROOT") .EQS. ""
$    THEN
$       TYPE SYS$INPUT
  *****************************************************
  *  OpenSSL (v1.1.0 or later) directory not located  *
  *****************************************************

$       CALL DEASSIGN_WORKING_LOGICAL_NAMES
$       EXIT 44
$    ENDIF
$!
$!   (just override using the system-defined logical if present)
$    SSL_ROOT = F$TRNLNM("OSSL$INSTROOT")
$    DEFINE /PROCESS/NOLOG/TRANSLATION=CONCEALED SSLROOT 'SSL_ROOT'
$    DEFINE /PROCESS/NOLOG OPENSSL SSLROOT:[INCLUDE.OPENSSL]
$!
$    FROM = "OpenSSL from " + F$TRNLNM("SSLROOT") - ".]" + "]"
$    IF F$TRNLNM("OSSL$LIBSSL0101_SHR32") .NES. ""
$       THEN DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "OPEN_OSSL=11","''FROM'"
$       ELSE DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "OPEN_OSSL=10","''FROM'"
$    ENDIF
$    EXIT 1
$!
$ ENDIF
$!
$!(BUILD_HTTPD_VMS_SSL is a symbol assigned by [INSTALL]SSL_DETECT.COM)
$!
$ IF P1 .EQS. "VMS_SSL" .OR. -
     P1 .EQS. "VMS_SSL=1" .OR. -
     F$TYPE(BUILD_HTTPD_VMS_SSL) .NES. ""
$ THEN
$!
$    TYPE SYS$INPUT
  *****************************************************************
  *  VMS (HP) SSL not supported since WASD v11.0.2 - use HP SSL1  *
  *****************************************************************

$    CALL DEASSIGN_WORKING_LOGICAL_NAMES
$    EXIT 44
$!
$ ENDIF
$!
$!(BUILD_HTTPD_VMS_SSL1 is a symbol assigned by [INSTALL]SSL_DETECT.COM)
$!
$ IF P1 .EQS. "VMS_SSL1" .OR. -
     P1 .EQS. "VMS_SSL1=1" .OR. -
     F$TYPE(BUILD_HTTPD_VMS_SSL1) .NES. ""
$ THEN
$!
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "VMS_SSL1=0"
$!
$    SSL_ROOT = "SYS$COMMON:[SSL1]
$    SSL_ROOT_DEV = F$PARSE(SSL_ROOT,,,"DEVICE","NO_CONCEAL")
$    SSL_ROOT_DIR = F$PARSE(SSL_ROOT,,,"DIRECTORY","NO_CONCEAL") - "]["
$    SSL_ROOT = SSL_ROOT_DEV + -
                F$EXTRACT(0,F$LENGTH(SSL_ROOT_DIR)-1,SSL_ROOT_DIR) + ".]"
$!   (just override using the system-defined logical if present)
$    IF F$TRNLNM("SSL1$ROOT") THEN SSL_ROOT = F$TRNLNM("SSL1$ROOT")
$    DEFINE /PROCESS/NOLOG/TRANSLATION=CONCEALED SSLROOT 'SSL_ROOT'
$    DEFINE /PROCESS/NOLOG OPENSSL SSLROOT:[INCLUDE]
$!
$    IF F$SEARCH("SSLROOT:[INCLUDE]OPENSSLCONF.H") .EQS. "" 
$    THEN
$       TYPE SYS$INPUT
  ******************************************
  *  VMS SSL1 OPENSSLCONF.H file not found  *
  ******************************************

$       CALL DEASSIGN_WORKING_LOGICAL_NAMES
$       EXIT 44
$    ENDIF
$!
$    IF F$SEARCH("SYS$LIBRARY:SSL1$LIBCRYPTO_SHR32.EXE") .EQS. "" .OR. -
        F$SEARCH("SYS$LIBRARY:SSL1$LIBSSL_SHR32.EXE") .EQS. ""
$    THEN
$       TYPE SYS$INPUT
  ******************************************
  *  VMS SSL1 shared libraries not located  *
  ******************************************

$       CALL DEASSIGN_WORKING_LOGICAL_NAMES
$       EXIT 44
$    ENDIF
$!
$    FROM = "VMS OpenSSL from " + F$TRNLNM("SSLROOT") - ".]" + "]"
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "VMS_SSL1=1","''FROM'"
$    EXIT 1
$!
$ ENDIF
$!
$!(BUILD_HTTPD_VMS_SSL111 is a symbol assigned by [INSTALL]SSL_DETECT.COM)
$!
$ IF P1 .EQS. "VMS_SSL111" .OR. -
     P1 .EQS. "VMS_SSL111=1" .OR. -
     F$TYPE(BUILD_HTTPD_VMS_SSL111) .NES. ""
$ THEN
$!
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "VMS_SSL111=0"
$!
$    SSL_ROOT = "SYS$COMMON:[SSL111]
$    SSL_ROOT_DEV = F$PARSE(SSL_ROOT,,,"DEVICE","NO_CONCEAL")
$    SSL_ROOT_DIR = F$PARSE(SSL_ROOT,,,"DIRECTORY","NO_CONCEAL") - "]["
$    SSL_ROOT = SSL_ROOT_DEV + -
                F$EXTRACT(0,F$LENGTH(SSL_ROOT_DIR)-1,SSL_ROOT_DIR) + ".]"
$!   (just override using the system-defined logical if present)
$    IF F$TRNLNM("SSL111$ROOT") THEN SSL_ROOT = F$TRNLNM("SSL111$ROOT")
$    DEFINE /PROCESS/NOLOG/TRANSLATION=CONCEALED SSLROOT 'SSL_ROOT'
$    DEFINE /PROCESS/NOLOG OPENSSL SSLROOT:[INCLUDE]
$!
$    IF F$SEARCH("SSLROOT:[INCLUDE]OPENSSLCONF.H") .EQS. "" 
$    THEN
$       TYPE SYS$INPUT
  *********************************************
  *  VMS SSL111 OPENSSLCONF.H file not found  *
  *********************************************

$       CALL DEASSIGN_WORKING_LOGICAL_NAMES
$       EXIT 44
$    ENDIF
$!
$    IF F$SEARCH("SYS$LIBRARY:SSL111$LIBCRYPTO_SHR32.EXE") .EQS. "" .OR. -
        F$SEARCH("SYS$LIBRARY:SSL111$LIBSSL_SHR32.EXE") .EQS. ""
$    THEN
$       TYPE SYS$INPUT
  *********************************************
  *  VMS SSL111 shared libraries not located  *
  *********************************************

$       CALL DEASSIGN_WORKING_LOGICAL_NAMES
$       EXIT 44
$    ENDIF
$!
$    FROM = "VMS OpenSSL from " + F$TRNLNM("SSLROOT") - ".]" + "]"
$    DEFINE /PROCESS/NOLOG CHECK_FOR_SSL "VMS_SSL111=1","''FROM'"
$    EXIT 1
$!
$ ENDIF
$!
$ EXIT 1
$!
$ ENDSUBROUTINE
$!-----------------------------------------------------------------------------
$ FIND_SSL_ROOT: SUBROUTINE
$! p1 is the file specification
$! returns with logical name SSLROOT defined LNM$PROCESS if the root is found
$!
$ IF F$TRNLNM("SSLROOT","LNM$PROCESS") .NES. "" THEN DEASSIGN SSLROOT/PROCESS
$!
$ SET SYMBOL/SCOPE=LOCAL
$ SSL_ROOT = ""
$!
$ SSL_ROOT_LOOP:
$    TMP_DIR = F$SEARCH(P1)
$    IF TMP_DIR .EQS. "" THEN GOTO END_SSL_ROOT_LOOP
$    TMP_DIR = F$EDIT(TMP_DIR,"UPCASE")
$    SSL_ROOT_POS = F$LOCATE("]OPENSSL",TMP_DIR)
$    SSL_ROOT = F$EXTRACT(0,SSL_ROOT_POS,TMP_DIR) + "." + -
                F$EXTRACT(SSL_ROOT_POS+1,999,TMP_DIR) - ".DIR;1"
$    GOTO SSL_ROOT_LOOP
$ END_SSL_ROOT_LOOP:
$!
$ IF SSL_ROOT .NES. ""
$ THEN
$    SSL_ROOT = SSL_ROOT + "]"
$    SSL_ROOT_DEV = F$PARSE(SSL_ROOT,,,"DEVICE","NO_CONCEAL")
$    SSL_ROOT_DIR = F$PARSE(SSL_ROOT,,,"DIRECTORY","NO_CONCEAL") - "]["
$    SSL_ROOT = SSL_ROOT_DEV + -
                F$EXTRACT(0,F$LENGTH(SSL_ROOT_DIR)-1,SSL_ROOT_DIR) + ".]"
$    DEFINE /NOLOG /PROCESS /TRANSLATION=CONCEALED SSLROOT 'SSL_ROOT'
$    DEFINE /NOLOG /PROCESS OPENSSL SSLROOT:[INCLUDE.OPENSSL]
$ ENDIF
$!
$ ENDSUBROUTINE
$!-----------------------------------------------------------------------------