[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 $!-----------------------------------------------------------------------------