1275793eaSopenharmony_ci$! make libz under VMS written by 2275793eaSopenharmony_ci$! Martin P.J. Zinser 3275793eaSopenharmony_ci$! 4275793eaSopenharmony_ci$! In case of problems with the install you might contact me at 5275793eaSopenharmony_ci$! zinser@zinser.no-ip.info(preferred) or 6275793eaSopenharmony_ci$! martin.zinser@eurexchange.com (work) 7275793eaSopenharmony_ci$! 8275793eaSopenharmony_ci$! Make procedure history for Zlib 9275793eaSopenharmony_ci$! 10275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 11275793eaSopenharmony_ci$! Version history 12275793eaSopenharmony_ci$! 0.01 20060120 First version to receive a number 13275793eaSopenharmony_ci$! 0.02 20061008 Adapt to new Makefile.in 14275793eaSopenharmony_ci$! 0.03 20091224 Add support for large file check 15275793eaSopenharmony_ci$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite 16275793eaSopenharmony_ci$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in 17275793eaSopenharmony_ci$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new examples 18275793eaSopenharmony_ci$! subdir path, update module search in makefile.in 19275793eaSopenharmony_ci$! 0.07 20120115 Triggered by work done by Alexey Chupahin completely redesigned 20275793eaSopenharmony_ci$! shared image creation 21275793eaSopenharmony_ci$! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared 22275793eaSopenharmony_ci$! image 23275793eaSopenharmony_ci$! 0.09 20120305 SMS. P1 sets builder ("MMK", "MMS", " " (built-in)). 24275793eaSopenharmony_ci$! "" -> automatic, preference: MMK, MMS, built-in. 25275793eaSopenharmony_ci$! 26275793eaSopenharmony_ci$ on error then goto err_exit 27275793eaSopenharmony_ci$! 28275793eaSopenharmony_ci$ true = 1 29275793eaSopenharmony_ci$ false = 0 30275793eaSopenharmony_ci$ tmpnam = "temp_" + f$getjpi("","pid") 31275793eaSopenharmony_ci$ tt = tmpnam + ".txt" 32275793eaSopenharmony_ci$ tc = tmpnam + ".c" 33275793eaSopenharmony_ci$ th = tmpnam + ".h" 34275793eaSopenharmony_ci$ define/nolog tconfig 'th' 35275793eaSopenharmony_ci$ its_decc = false 36275793eaSopenharmony_ci$ its_vaxc = false 37275793eaSopenharmony_ci$ its_gnuc = false 38275793eaSopenharmony_ci$ s_case = False 39275793eaSopenharmony_ci$! 40275793eaSopenharmony_ci$! Setup variables holding "config" information 41275793eaSopenharmony_ci$! 42275793eaSopenharmony_ci$ Make = "''p1'" 43275793eaSopenharmony_ci$ name = "Zlib" 44275793eaSopenharmony_ci$ version = "?.?.?" 45275793eaSopenharmony_ci$ v_string = "ZLIB_VERSION" 46275793eaSopenharmony_ci$ v_file = "zlib.h" 47275793eaSopenharmony_ci$ ccopt = "/include = []" 48275793eaSopenharmony_ci$ lopts = "" 49275793eaSopenharmony_ci$ dnsrl = "" 50275793eaSopenharmony_ci$ aconf_in_file = "zconf.h.in#zconf.h_in#zconf_h.in" 51275793eaSopenharmony_ci$ conf_check_string = "" 52275793eaSopenharmony_ci$ linkonly = false 53275793eaSopenharmony_ci$ optfile = name + ".opt" 54275793eaSopenharmony_ci$ mapfile = name + ".map" 55275793eaSopenharmony_ci$ libdefs = "" 56275793eaSopenharmony_ci$ vax = f$getsyi("HW_MODEL").lt.1024 57275793eaSopenharmony_ci$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096 58275793eaSopenharmony_ci$ ia64 = f$getsyi("HW_MODEL").ge.4096 59275793eaSopenharmony_ci$! 60275793eaSopenharmony_ci$! 2012-03-05 SMS. 61275793eaSopenharmony_ci$! Why is this needed? And if it is needed, why not simply ".not. vax"? 62275793eaSopenharmony_ci$! 63275793eaSopenharmony_ci$!!! if axp .or. ia64 then set proc/parse=extended 64275793eaSopenharmony_ci$! 65275793eaSopenharmony_ci$ whoami = f$parse(f$environment("Procedure"),,,,"NO_CONCEAL") 66275793eaSopenharmony_ci$ mydef = F$parse(whoami,,,"DEVICE") 67275793eaSopenharmony_ci$ mydir = f$parse(whoami,,,"DIRECTORY") - "][" 68275793eaSopenharmony_ci$ myproc = f$parse(whoami,,,"Name") + f$parse(whoami,,,"type") 69275793eaSopenharmony_ci$! 70275793eaSopenharmony_ci$! Check for MMK/MMS 71275793eaSopenharmony_ci$! 72275793eaSopenharmony_ci$ if (Make .eqs. "") 73275793eaSopenharmony_ci$ then 74275793eaSopenharmony_ci$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS" 75275793eaSopenharmony_ci$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK" 76275793eaSopenharmony_ci$ else 77275793eaSopenharmony_ci$ Make = f$edit( Make, "trim") 78275793eaSopenharmony_ci$ endif 79275793eaSopenharmony_ci$! 80275793eaSopenharmony_ci$ gosub find_version 81275793eaSopenharmony_ci$! 82275793eaSopenharmony_ci$ open/write topt tmp.opt 83275793eaSopenharmony_ci$ open/write optf 'optfile' 84275793eaSopenharmony_ci$! 85275793eaSopenharmony_ci$ gosub check_opts 86275793eaSopenharmony_ci$! 87275793eaSopenharmony_ci$! Look for the compiler used 88275793eaSopenharmony_ci$! 89275793eaSopenharmony_ci$ gosub check_compiler 90275793eaSopenharmony_ci$ close topt 91275793eaSopenharmony_ci$ close optf 92275793eaSopenharmony_ci$! 93275793eaSopenharmony_ci$ if its_decc 94275793eaSopenharmony_ci$ then 95275793eaSopenharmony_ci$ ccopt = "/prefix=all" + ccopt 96275793eaSopenharmony_ci$ if f$trnlnm("SYS") .eqs. "" 97275793eaSopenharmony_ci$ then 98275793eaSopenharmony_ci$ if axp 99275793eaSopenharmony_ci$ then 100275793eaSopenharmony_ci$ define sys sys$library: 101275793eaSopenharmony_ci$ else 102275793eaSopenharmony_ci$ ccopt = "/decc" + ccopt 103275793eaSopenharmony_ci$ define sys decc$library_include: 104275793eaSopenharmony_ci$ endif 105275793eaSopenharmony_ci$ endif 106275793eaSopenharmony_ci$! 107275793eaSopenharmony_ci$! 2012-03-05 SMS. 108275793eaSopenharmony_ci$! Why /NAMES = AS_IS? Why not simply ".not. vax"? And why not on VAX? 109275793eaSopenharmony_ci$! 110275793eaSopenharmony_ci$ if axp .or. ia64 111275793eaSopenharmony_ci$ then 112275793eaSopenharmony_ci$ ccopt = ccopt + "/name=as_is/opt=(inline=speed)" 113275793eaSopenharmony_ci$ s_case = true 114275793eaSopenharmony_ci$ endif 115275793eaSopenharmony_ci$ endif 116275793eaSopenharmony_ci$ if its_vaxc .or. its_gnuc 117275793eaSopenharmony_ci$ then 118275793eaSopenharmony_ci$ if f$trnlnm("SYS").eqs."" then define sys sys$library: 119275793eaSopenharmony_ci$ endif 120275793eaSopenharmony_ci$! 121275793eaSopenharmony_ci$! Build a fake configure input header 122275793eaSopenharmony_ci$! 123275793eaSopenharmony_ci$ open/write conf_hin config.hin 124275793eaSopenharmony_ci$ write conf_hin "#undef _LARGEFILE64_SOURCE" 125275793eaSopenharmony_ci$ close conf_hin 126275793eaSopenharmony_ci$! 127275793eaSopenharmony_ci$! 128275793eaSopenharmony_ci$ i = 0 129275793eaSopenharmony_ci$FIND_ACONF: 130275793eaSopenharmony_ci$ fname = f$element(i,"#",aconf_in_file) 131275793eaSopenharmony_ci$ if fname .eqs. "#" then goto AMISS_ERR 132275793eaSopenharmony_ci$ if f$search(fname) .eqs. "" 133275793eaSopenharmony_ci$ then 134275793eaSopenharmony_ci$ i = i + 1 135275793eaSopenharmony_ci$ goto find_aconf 136275793eaSopenharmony_ci$ endif 137275793eaSopenharmony_ci$ open/read/err=aconf_err aconf_in 'fname' 138275793eaSopenharmony_ci$ open/write aconf zconf.h 139275793eaSopenharmony_ci$ACONF_LOOP: 140275793eaSopenharmony_ci$ read/end_of_file=aconf_exit aconf_in line 141275793eaSopenharmony_ci$ work = f$edit(line, "compress,trim") 142275793eaSopenharmony_ci$ if f$extract(0,6,work) .nes. "#undef" 143275793eaSopenharmony_ci$ then 144275793eaSopenharmony_ci$ if f$extract(0,12,work) .nes. "#cmakedefine" 145275793eaSopenharmony_ci$ then 146275793eaSopenharmony_ci$ write aconf line 147275793eaSopenharmony_ci$ endif 148275793eaSopenharmony_ci$ else 149275793eaSopenharmony_ci$ cdef = f$element(1," ",work) 150275793eaSopenharmony_ci$ gosub check_config 151275793eaSopenharmony_ci$ endif 152275793eaSopenharmony_ci$ goto aconf_loop 153275793eaSopenharmony_ci$ACONF_EXIT: 154275793eaSopenharmony_ci$ write aconf "" 155275793eaSopenharmony_ci$ write aconf "/* VMS specifics added by make_vms.com: */" 156275793eaSopenharmony_ci$ write aconf "#define VMS 1" 157275793eaSopenharmony_ci$ write aconf "#include <unistd.h>" 158275793eaSopenharmony_ci$ write aconf "#include <unixio.h>" 159275793eaSopenharmony_ci$ write aconf "#ifdef _LARGEFILE" 160275793eaSopenharmony_ci$ write aconf "# define off64_t __off64_t" 161275793eaSopenharmony_ci$ write aconf "# define fopen64 fopen" 162275793eaSopenharmony_ci$ write aconf "# define fseeko64 fseeko" 163275793eaSopenharmony_ci$ write aconf "# define lseek64 lseek" 164275793eaSopenharmony_ci$ write aconf "# define ftello64 ftell" 165275793eaSopenharmony_ci$ write aconf "#endif" 166275793eaSopenharmony_ci$ write aconf "#if !defined( __VAX) && (__CRTL_VER >= 70312000)" 167275793eaSopenharmony_ci$ write aconf "# define HAVE_VSNPRINTF" 168275793eaSopenharmony_ci$ write aconf "#endif" 169275793eaSopenharmony_ci$ close aconf_in 170275793eaSopenharmony_ci$ close aconf 171275793eaSopenharmony_ci$ if f$search("''th'") .nes. "" then delete 'th';* 172275793eaSopenharmony_ci$! Build the thing plain or with mms 173275793eaSopenharmony_ci$! 174275793eaSopenharmony_ci$ write sys$output "Compiling Zlib sources ..." 175275793eaSopenharmony_ci$ if make.eqs."" 176275793eaSopenharmony_ci$ then 177275793eaSopenharmony_ci$ if (f$search( "example.obj;*") .nes. "") then delete example.obj;* 178275793eaSopenharmony_ci$ if (f$search( "minigzip.obj;*") .nes. "") then delete minigzip.obj;* 179275793eaSopenharmony_ci$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" - 180275793eaSopenharmony_ci adler32.c zlib.h zconf.h 181275793eaSopenharmony_ci$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" - 182275793eaSopenharmony_ci compress.c zlib.h zconf.h 183275793eaSopenharmony_ci$ CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" - 184275793eaSopenharmony_ci crc32.c zlib.h zconf.h 185275793eaSopenharmony_ci$ CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" - 186275793eaSopenharmony_ci deflate.c deflate.h zutil.h zlib.h zconf.h 187275793eaSopenharmony_ci$ CALL MAKE gzclose.OBJ "CC ''CCOPT' gzclose" - 188275793eaSopenharmony_ci gzclose.c zutil.h zlib.h zconf.h 189275793eaSopenharmony_ci$ CALL MAKE gzlib.OBJ "CC ''CCOPT' gzlib" - 190275793eaSopenharmony_ci gzlib.c zutil.h zlib.h zconf.h 191275793eaSopenharmony_ci$ CALL MAKE gzread.OBJ "CC ''CCOPT' gzread" - 192275793eaSopenharmony_ci gzread.c zutil.h zlib.h zconf.h 193275793eaSopenharmony_ci$ CALL MAKE gzwrite.OBJ "CC ''CCOPT' gzwrite" - 194275793eaSopenharmony_ci gzwrite.c zutil.h zlib.h zconf.h 195275793eaSopenharmony_ci$ CALL MAKE infback.OBJ "CC ''CCOPT' infback" - 196275793eaSopenharmony_ci infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h 197275793eaSopenharmony_ci$ CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" - 198275793eaSopenharmony_ci inffast.c zutil.h zlib.h zconf.h inffast.h 199275793eaSopenharmony_ci$ CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" - 200275793eaSopenharmony_ci inflate.c zutil.h zlib.h zconf.h infblock.h 201275793eaSopenharmony_ci$ CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" - 202275793eaSopenharmony_ci inftrees.c zutil.h zlib.h zconf.h inftrees.h 203275793eaSopenharmony_ci$ CALL MAKE trees.OBJ "CC ''CCOPT' trees" - 204275793eaSopenharmony_ci trees.c deflate.h zutil.h zlib.h zconf.h 205275793eaSopenharmony_ci$ CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" - 206275793eaSopenharmony_ci uncompr.c zlib.h zconf.h 207275793eaSopenharmony_ci$ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" - 208275793eaSopenharmony_ci zutil.c zutil.h zlib.h zconf.h 209275793eaSopenharmony_ci$ write sys$output "Building Zlib ..." 210275793eaSopenharmony_ci$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ 211275793eaSopenharmony_ci$ write sys$output "Building example..." 212275793eaSopenharmony_ci$ CALL MAKE example.OBJ "CC ''CCOPT' [.test]example" - 213275793eaSopenharmony_ci [.test]example.c zlib.h zconf.h 214275793eaSopenharmony_ci$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb 215275793eaSopenharmony_ci$ write sys$output "Building minigzip..." 216275793eaSopenharmony_ci$ CALL MAKE minigzip.OBJ "CC ''CCOPT' [.test]minigzip" - 217275793eaSopenharmony_ci [.test]minigzip.c zlib.h zconf.h 218275793eaSopenharmony_ci$ call make minigzip.exe - 219275793eaSopenharmony_ci "LINK minigzip,libz.olb/lib" - 220275793eaSopenharmony_ci minigzip.obj libz.olb 221275793eaSopenharmony_ci$ else 222275793eaSopenharmony_ci$ gosub crea_mms 223275793eaSopenharmony_ci$ write sys$output "Make ''name' ''version' with ''Make' " 224275793eaSopenharmony_ci$ 'make' 225275793eaSopenharmony_ci$ endif 226275793eaSopenharmony_ci$! 227275793eaSopenharmony_ci$! Create shareable image 228275793eaSopenharmony_ci$! 229275793eaSopenharmony_ci$ gosub crea_olist 230275793eaSopenharmony_ci$ write sys$output "Creating libzshr.exe" 231275793eaSopenharmony_ci$ call map_2_shopt 'mapfile' 'optfile' 232275793eaSopenharmony_ci$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,'optfile'/opt 233275793eaSopenharmony_ci$ write sys$output "Zlib build completed" 234275793eaSopenharmony_ci$ delete/nolog tmp.opt;* 235275793eaSopenharmony_ci$ exit 236275793eaSopenharmony_ci$AMISS_ERR: 237275793eaSopenharmony_ci$ write sys$output "No source for config.hin found." 238275793eaSopenharmony_ci$ write sys$output "Tried any of ''aconf_in_file'" 239275793eaSopenharmony_ci$ goto err_exit 240275793eaSopenharmony_ci$CC_ERR: 241275793eaSopenharmony_ci$ write sys$output "C compiler required to build ''name'" 242275793eaSopenharmony_ci$ goto err_exit 243275793eaSopenharmony_ci$ERR_EXIT: 244275793eaSopenharmony_ci$ set message/facil/ident/sever/text 245275793eaSopenharmony_ci$ close/nolog optf 246275793eaSopenharmony_ci$ close/nolog topt 247275793eaSopenharmony_ci$ close/nolog aconf_in 248275793eaSopenharmony_ci$ close/nolog aconf 249275793eaSopenharmony_ci$ close/nolog out 250275793eaSopenharmony_ci$ close/nolog min 251275793eaSopenharmony_ci$ close/nolog mod 252275793eaSopenharmony_ci$ close/nolog h_in 253275793eaSopenharmony_ci$ write sys$output "Exiting..." 254275793eaSopenharmony_ci$ exit 2 255275793eaSopenharmony_ci$! 256275793eaSopenharmony_ci$! 257275793eaSopenharmony_ci$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES 258275793eaSopenharmony_ci$ V = 'F$Verify(0) 259275793eaSopenharmony_ci$! P1 = What we are trying to make 260275793eaSopenharmony_ci$! P2 = Command to make it 261275793eaSopenharmony_ci$! P3 - P8 What it depends on 262275793eaSopenharmony_ci$ 263275793eaSopenharmony_ci$ If F$Search(P1) .Eqs. "" Then Goto Makeit 264275793eaSopenharmony_ci$ Time = F$CvTime(F$File(P1,"RDT")) 265275793eaSopenharmony_ci$arg=3 266275793eaSopenharmony_ci$Loop: 267275793eaSopenharmony_ci$ Argument = P'arg 268275793eaSopenharmony_ci$ If Argument .Eqs. "" Then Goto Exit 269275793eaSopenharmony_ci$ El=0 270275793eaSopenharmony_ci$Loop2: 271275793eaSopenharmony_ci$ File = F$Element(El," ",Argument) 272275793eaSopenharmony_ci$ If File .Eqs. " " Then Goto Endl 273275793eaSopenharmony_ci$ AFile = "" 274275793eaSopenharmony_ci$Loop3: 275275793eaSopenharmony_ci$ OFile = AFile 276275793eaSopenharmony_ci$ AFile = F$Search(File) 277275793eaSopenharmony_ci$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl 278275793eaSopenharmony_ci$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit 279275793eaSopenharmony_ci$ Goto Loop3 280275793eaSopenharmony_ci$NextEL: 281275793eaSopenharmony_ci$ El = El + 1 282275793eaSopenharmony_ci$ Goto Loop2 283275793eaSopenharmony_ci$EndL: 284275793eaSopenharmony_ci$ arg=arg+1 285275793eaSopenharmony_ci$ If arg .Le. 8 Then Goto Loop 286275793eaSopenharmony_ci$ Goto Exit 287275793eaSopenharmony_ci$ 288275793eaSopenharmony_ci$Makeit: 289275793eaSopenharmony_ci$ VV=F$VERIFY(0) 290275793eaSopenharmony_ci$ write sys$output P2 291275793eaSopenharmony_ci$ 'P2 292275793eaSopenharmony_ci$ VV='F$Verify(VV) 293275793eaSopenharmony_ci$Exit: 294275793eaSopenharmony_ci$ If V Then Set Verify 295275793eaSopenharmony_ci$ENDSUBROUTINE 296275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 297275793eaSopenharmony_ci$! 298275793eaSopenharmony_ci$! Check command line options and set symbols accordingly 299275793eaSopenharmony_ci$! 300275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 301275793eaSopenharmony_ci$! Version history 302275793eaSopenharmony_ci$! 0.01 20041206 First version to receive a number 303275793eaSopenharmony_ci$! 0.02 20060126 Add new "HELP" target 304275793eaSopenharmony_ci$ CHECK_OPTS: 305275793eaSopenharmony_ci$ i = 1 306275793eaSopenharmony_ci$ OPT_LOOP: 307275793eaSopenharmony_ci$ if i .lt. 9 308275793eaSopenharmony_ci$ then 309275793eaSopenharmony_ci$ cparm = f$edit(p'i',"upcase") 310275793eaSopenharmony_ci$! 311275793eaSopenharmony_ci$! Check if parameter actually contains something 312275793eaSopenharmony_ci$! 313275793eaSopenharmony_ci$ if f$edit(cparm,"trim") .nes. "" 314275793eaSopenharmony_ci$ then 315275793eaSopenharmony_ci$ if cparm .eqs. "DEBUG" 316275793eaSopenharmony_ci$ then 317275793eaSopenharmony_ci$ ccopt = ccopt + "/noopt/deb" 318275793eaSopenharmony_ci$ lopts = lopts + "/deb" 319275793eaSopenharmony_ci$ endif 320275793eaSopenharmony_ci$ if f$locate("CCOPT=",cparm) .lt. f$length(cparm) 321275793eaSopenharmony_ci$ then 322275793eaSopenharmony_ci$ start = f$locate("=",cparm) + 1 323275793eaSopenharmony_ci$ len = f$length(cparm) - start 324275793eaSopenharmony_ci$ ccopt = ccopt + f$extract(start,len,cparm) 325275793eaSopenharmony_ci$ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) - 326275793eaSopenharmony_ci then s_case = true 327275793eaSopenharmony_ci$ endif 328275793eaSopenharmony_ci$ if cparm .eqs. "LINK" then linkonly = true 329275793eaSopenharmony_ci$ if f$locate("LOPTS=",cparm) .lt. f$length(cparm) 330275793eaSopenharmony_ci$ then 331275793eaSopenharmony_ci$ start = f$locate("=",cparm) + 1 332275793eaSopenharmony_ci$ len = f$length(cparm) - start 333275793eaSopenharmony_ci$ lopts = lopts + f$extract(start,len,cparm) 334275793eaSopenharmony_ci$ endif 335275793eaSopenharmony_ci$ if f$locate("CC=",cparm) .lt. f$length(cparm) 336275793eaSopenharmony_ci$ then 337275793eaSopenharmony_ci$ start = f$locate("=",cparm) + 1 338275793eaSopenharmony_ci$ len = f$length(cparm) - start 339275793eaSopenharmony_ci$ cc_com = f$extract(start,len,cparm) 340275793eaSopenharmony_ci if (cc_com .nes. "DECC") .and. - 341275793eaSopenharmony_ci (cc_com .nes. "VAXC") .and. - 342275793eaSopenharmony_ci (cc_com .nes. "GNUC") 343275793eaSopenharmony_ci$ then 344275793eaSopenharmony_ci$ write sys$output "Unsupported compiler choice ''cc_com' ignored" 345275793eaSopenharmony_ci$ write sys$output "Use DECC, VAXC, or GNUC instead" 346275793eaSopenharmony_ci$ else 347275793eaSopenharmony_ci$ if cc_com .eqs. "DECC" then its_decc = true 348275793eaSopenharmony_ci$ if cc_com .eqs. "VAXC" then its_vaxc = true 349275793eaSopenharmony_ci$ if cc_com .eqs. "GNUC" then its_gnuc = true 350275793eaSopenharmony_ci$ endif 351275793eaSopenharmony_ci$ endif 352275793eaSopenharmony_ci$ if f$locate("MAKE=",cparm) .lt. f$length(cparm) 353275793eaSopenharmony_ci$ then 354275793eaSopenharmony_ci$ start = f$locate("=",cparm) + 1 355275793eaSopenharmony_ci$ len = f$length(cparm) - start 356275793eaSopenharmony_ci$ mmks = f$extract(start,len,cparm) 357275793eaSopenharmony_ci$ if (mmks .eqs. "MMK") .or. (mmks .eqs. "MMS") 358275793eaSopenharmony_ci$ then 359275793eaSopenharmony_ci$ make = mmks 360275793eaSopenharmony_ci$ else 361275793eaSopenharmony_ci$ write sys$output "Unsupported make choice ''mmks' ignored" 362275793eaSopenharmony_ci$ write sys$output "Use MMK or MMS instead" 363275793eaSopenharmony_ci$ endif 364275793eaSopenharmony_ci$ endif 365275793eaSopenharmony_ci$ if cparm .eqs. "HELP" then gosub bhelp 366275793eaSopenharmony_ci$ endif 367275793eaSopenharmony_ci$ i = i + 1 368275793eaSopenharmony_ci$ goto opt_loop 369275793eaSopenharmony_ci$ endif 370275793eaSopenharmony_ci$ return 371275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 372275793eaSopenharmony_ci$! 373275793eaSopenharmony_ci$! Look for the compiler used 374275793eaSopenharmony_ci$! 375275793eaSopenharmony_ci$! Version history 376275793eaSopenharmony_ci$! 0.01 20040223 First version to receive a number 377275793eaSopenharmony_ci$! 0.02 20040229 Save/set value of decc$no_rooted_search_lists 378275793eaSopenharmony_ci$! 0.03 20060202 Extend handling of GNU C 379275793eaSopenharmony_ci$! 0.04 20090402 Compaq -> hp 380275793eaSopenharmony_ci$CHECK_COMPILER: 381275793eaSopenharmony_ci$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc)) 382275793eaSopenharmony_ci$ then 383275793eaSopenharmony_ci$ its_decc = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE") .nes. "") 384275793eaSopenharmony_ci$ its_vaxc = .not. its_decc .and. (F$Search("SYS$System:VAXC.Exe") .nes. "") 385275793eaSopenharmony_ci$ its_gnuc = .not. (its_decc .or. its_vaxc) .and. (f$trnlnm("gnu_cc") .nes. "") 386275793eaSopenharmony_ci$ endif 387275793eaSopenharmony_ci$! 388275793eaSopenharmony_ci$! Exit if no compiler available 389275793eaSopenharmony_ci$! 390275793eaSopenharmony_ci$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc)) 391275793eaSopenharmony_ci$ then goto CC_ERR 392275793eaSopenharmony_ci$ else 393275793eaSopenharmony_ci$ if its_decc 394275793eaSopenharmony_ci$ then 395275793eaSopenharmony_ci$ write sys$output "CC compiler check ... hp C" 396275793eaSopenharmony_ci$ if f$trnlnm("decc$no_rooted_search_lists") .nes. "" 397275793eaSopenharmony_ci$ then 398275793eaSopenharmony_ci$ dnrsl = f$trnlnm("decc$no_rooted_search_lists") 399275793eaSopenharmony_ci$ endif 400275793eaSopenharmony_ci$ define/nolog decc$no_rooted_search_lists 1 401275793eaSopenharmony_ci$ else 402275793eaSopenharmony_ci$ if its_vaxc then write sys$output "CC compiler check ... VAX C" 403275793eaSopenharmony_ci$ if its_gnuc 404275793eaSopenharmony_ci$ then 405275793eaSopenharmony_ci$ write sys$output "CC compiler check ... GNU C" 406275793eaSopenharmony_ci$ if f$trnlnm(topt) then write topt "gnu_cc:[000000]gcclib.olb/lib" 407275793eaSopenharmony_ci$ if f$trnlnm(optf) then write optf "gnu_cc:[000000]gcclib.olb/lib" 408275793eaSopenharmony_ci$ cc = "gcc" 409275793eaSopenharmony_ci$ endif 410275793eaSopenharmony_ci$ if f$trnlnm(topt) then write topt "sys$share:vaxcrtl.exe/share" 411275793eaSopenharmony_ci$ if f$trnlnm(optf) then write optf "sys$share:vaxcrtl.exe/share" 412275793eaSopenharmony_ci$ endif 413275793eaSopenharmony_ci$ endif 414275793eaSopenharmony_ci$ return 415275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 416275793eaSopenharmony_ci$! 417275793eaSopenharmony_ci$! If MMS/MMK are available dump out the descrip.mms if required 418275793eaSopenharmony_ci$! 419275793eaSopenharmony_ci$CREA_MMS: 420275793eaSopenharmony_ci$ write sys$output "Creating descrip.mms..." 421275793eaSopenharmony_ci$ create descrip.mms 422275793eaSopenharmony_ci$ open/append out descrip.mms 423275793eaSopenharmony_ci$ copy sys$input: out 424275793eaSopenharmony_ci$ deck 425275793eaSopenharmony_ci# descrip.mms: MMS description file for building zlib on VMS 426275793eaSopenharmony_ci# written by Martin P.J. Zinser 427275793eaSopenharmony_ci# <zinser@zinser.no-ip.info or martin.zinser@eurexchange.com> 428275793eaSopenharmony_ci 429275793eaSopenharmony_ciOBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\ 430275793eaSopenharmony_ci gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\ 431275793eaSopenharmony_ci deflate.obj, trees.obj, zutil.obj, inflate.obj, \ 432275793eaSopenharmony_ci inftrees.obj, inffast.obj 433275793eaSopenharmony_ci 434275793eaSopenharmony_ci$ eod 435275793eaSopenharmony_ci$ write out "CFLAGS=", ccopt 436275793eaSopenharmony_ci$ write out "LOPTS=", lopts 437275793eaSopenharmony_ci$ write out "all : example.exe minigzip.exe libz.olb" 438275793eaSopenharmony_ci$ copy sys$input: out 439275793eaSopenharmony_ci$ deck 440275793eaSopenharmony_ci @ write sys$output " Example applications available" 441275793eaSopenharmony_ci 442275793eaSopenharmony_cilibz.olb : libz.olb($(OBJS)) 443275793eaSopenharmony_ci @ write sys$output " libz available" 444275793eaSopenharmony_ci 445275793eaSopenharmony_ciexample.exe : example.obj libz.olb 446275793eaSopenharmony_ci link $(LOPTS) example,libz.olb/lib 447275793eaSopenharmony_ci 448275793eaSopenharmony_ciminigzip.exe : minigzip.obj libz.olb 449275793eaSopenharmony_ci link $(LOPTS) minigzip,libz.olb/lib 450275793eaSopenharmony_ci 451275793eaSopenharmony_ciclean : 452275793eaSopenharmony_ci delete *.obj;*,libz.olb;*,*.opt;*,*.exe;* 453275793eaSopenharmony_ci 454275793eaSopenharmony_ci 455275793eaSopenharmony_ci# Other dependencies. 456275793eaSopenharmony_ciadler32.obj : adler32.c zutil.h zlib.h zconf.h 457275793eaSopenharmony_cicompress.obj : compress.c zlib.h zconf.h 458275793eaSopenharmony_cicrc32.obj : crc32.c zutil.h zlib.h zconf.h 459275793eaSopenharmony_cideflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h 460275793eaSopenharmony_ciexample.obj : [.test]example.c zlib.h zconf.h 461275793eaSopenharmony_cigzclose.obj : gzclose.c zutil.h zlib.h zconf.h 462275793eaSopenharmony_cigzlib.obj : gzlib.c zutil.h zlib.h zconf.h 463275793eaSopenharmony_cigzread.obj : gzread.c zutil.h zlib.h zconf.h 464275793eaSopenharmony_cigzwrite.obj : gzwrite.c zutil.h zlib.h zconf.h 465275793eaSopenharmony_ciinffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h 466275793eaSopenharmony_ciinflate.obj : inflate.c zutil.h zlib.h zconf.h 467275793eaSopenharmony_ciinftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h 468275793eaSopenharmony_ciminigzip.obj : [.test]minigzip.c zlib.h zconf.h 469275793eaSopenharmony_citrees.obj : trees.c deflate.h zutil.h zlib.h zconf.h 470275793eaSopenharmony_ciuncompr.obj : uncompr.c zlib.h zconf.h 471275793eaSopenharmony_cizutil.obj : zutil.c zutil.h zlib.h zconf.h 472275793eaSopenharmony_ciinfback.obj : infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h 473275793eaSopenharmony_ci$ eod 474275793eaSopenharmony_ci$ close out 475275793eaSopenharmony_ci$ return 476275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 477275793eaSopenharmony_ci$! 478275793eaSopenharmony_ci$! Read list of core library sources from makefile.in and create options 479275793eaSopenharmony_ci$! needed to build shareable image 480275793eaSopenharmony_ci$! 481275793eaSopenharmony_ci$CREA_OLIST: 482275793eaSopenharmony_ci$ open/read min makefile.in 483275793eaSopenharmony_ci$ open/write mod modules.opt 484275793eaSopenharmony_ci$ src_check_list = "OBJZ =#OBJG =" 485275793eaSopenharmony_ci$MRLOOP: 486275793eaSopenharmony_ci$ read/end=mrdone min rec 487275793eaSopenharmony_ci$ i = 0 488275793eaSopenharmony_ci$SRC_CHECK_LOOP: 489275793eaSopenharmony_ci$ src_check = f$element(i, "#", src_check_list) 490275793eaSopenharmony_ci$ i = i+1 491275793eaSopenharmony_ci$ if src_check .eqs. "#" then goto mrloop 492275793eaSopenharmony_ci$ if (f$extract(0,6,rec) .nes. src_check) then goto src_check_loop 493275793eaSopenharmony_ci$ rec = rec - src_check 494275793eaSopenharmony_ci$ gosub extra_filnam 495275793eaSopenharmony_ci$ if (f$element(1,"\",rec) .eqs. "\") then goto mrloop 496275793eaSopenharmony_ci$MRSLOOP: 497275793eaSopenharmony_ci$ read/end=mrdone min rec 498275793eaSopenharmony_ci$ gosub extra_filnam 499275793eaSopenharmony_ci$ if (f$element(1,"\",rec) .nes. "\") then goto mrsloop 500275793eaSopenharmony_ci$MRDONE: 501275793eaSopenharmony_ci$ close min 502275793eaSopenharmony_ci$ close mod 503275793eaSopenharmony_ci$ return 504275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 505275793eaSopenharmony_ci$! 506275793eaSopenharmony_ci$! Take record extracted in crea_olist and split it into single filenames 507275793eaSopenharmony_ci$! 508275793eaSopenharmony_ci$EXTRA_FILNAM: 509275793eaSopenharmony_ci$ myrec = f$edit(rec - "\", "trim,compress") 510275793eaSopenharmony_ci$ i = 0 511275793eaSopenharmony_ci$FELOOP: 512275793eaSopenharmony_ci$ srcfil = f$element(i," ", myrec) 513275793eaSopenharmony_ci$ if (srcfil .nes. " ") 514275793eaSopenharmony_ci$ then 515275793eaSopenharmony_ci$ write mod f$parse(srcfil,,,"NAME"), ".obj" 516275793eaSopenharmony_ci$ i = i + 1 517275793eaSopenharmony_ci$ goto feloop 518275793eaSopenharmony_ci$ endif 519275793eaSopenharmony_ci$ return 520275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 521275793eaSopenharmony_ci$! 522275793eaSopenharmony_ci$! Find current Zlib version number 523275793eaSopenharmony_ci$! 524275793eaSopenharmony_ci$FIND_VERSION: 525275793eaSopenharmony_ci$ open/read h_in 'v_file' 526275793eaSopenharmony_ci$hloop: 527275793eaSopenharmony_ci$ read/end=hdone h_in rec 528275793eaSopenharmony_ci$ rec = f$edit(rec,"TRIM") 529275793eaSopenharmony_ci$ if (f$extract(0,1,rec) .nes. "#") then goto hloop 530275793eaSopenharmony_ci$ rec = f$edit(rec - "#", "TRIM") 531275793eaSopenharmony_ci$ if f$element(0," ",rec) .nes. "define" then goto hloop 532275793eaSopenharmony_ci$ if f$element(1," ",rec) .eqs. v_string 533275793eaSopenharmony_ci$ then 534275793eaSopenharmony_ci$ version = 'f$element(2," ",rec)' 535275793eaSopenharmony_ci$ goto hdone 536275793eaSopenharmony_ci$ endif 537275793eaSopenharmony_ci$ goto hloop 538275793eaSopenharmony_ci$hdone: 539275793eaSopenharmony_ci$ close h_in 540275793eaSopenharmony_ci$ return 541275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 542275793eaSopenharmony_ci$! 543275793eaSopenharmony_ci$CHECK_CONFIG: 544275793eaSopenharmony_ci$! 545275793eaSopenharmony_ci$ in_ldef = f$locate(cdef,libdefs) 546275793eaSopenharmony_ci$ if (in_ldef .lt. f$length(libdefs)) 547275793eaSopenharmony_ci$ then 548275793eaSopenharmony_ci$ write aconf "#define ''cdef' 1" 549275793eaSopenharmony_ci$ libdefs = f$extract(0,in_ldef,libdefs) + - 550275793eaSopenharmony_ci f$extract(in_ldef + f$length(cdef) + 1, - 551275793eaSopenharmony_ci f$length(libdefs) - in_ldef - f$length(cdef) - 1, - 552275793eaSopenharmony_ci libdefs) 553275793eaSopenharmony_ci$ else 554275793eaSopenharmony_ci$ if (f$type('cdef') .eqs. "INTEGER") 555275793eaSopenharmony_ci$ then 556275793eaSopenharmony_ci$ write aconf "#define ''cdef' ", 'cdef' 557275793eaSopenharmony_ci$ else 558275793eaSopenharmony_ci$ if (f$type('cdef') .eqs. "STRING") 559275793eaSopenharmony_ci$ then 560275793eaSopenharmony_ci$ write aconf "#define ''cdef' ", """", '''cdef'', """" 561275793eaSopenharmony_ci$ else 562275793eaSopenharmony_ci$ gosub check_cc_def 563275793eaSopenharmony_ci$ endif 564275793eaSopenharmony_ci$ endif 565275793eaSopenharmony_ci$ endif 566275793eaSopenharmony_ci$ return 567275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 568275793eaSopenharmony_ci$! 569275793eaSopenharmony_ci$! Check if this is a define relating to the properties of the C/C++ 570275793eaSopenharmony_ci$! compiler 571275793eaSopenharmony_ci$! 572275793eaSopenharmony_ci$ CHECK_CC_DEF: 573275793eaSopenharmony_ci$ if (cdef .eqs. "_LARGEFILE64_SOURCE") 574275793eaSopenharmony_ci$ then 575275793eaSopenharmony_ci$ copy sys$input: 'tc' 576275793eaSopenharmony_ci$ deck 577275793eaSopenharmony_ci#include "tconfig" 578275793eaSopenharmony_ci#define _LARGEFILE 579275793eaSopenharmony_ci#include <stdio.h> 580275793eaSopenharmony_ci 581275793eaSopenharmony_ciint main(){ 582275793eaSopenharmony_ciFILE *fp; 583275793eaSopenharmony_ci fp = fopen("temp.txt","r"); 584275793eaSopenharmony_ci fseeko(fp,1,SEEK_SET); 585275793eaSopenharmony_ci fclose(fp); 586275793eaSopenharmony_ci} 587275793eaSopenharmony_ci 588275793eaSopenharmony_ci$ eod 589275793eaSopenharmony_ci$ test_inv = false 590275793eaSopenharmony_ci$ comm_h = false 591275793eaSopenharmony_ci$ gosub cc_prop_check 592275793eaSopenharmony_ci$ return 593275793eaSopenharmony_ci$ endif 594275793eaSopenharmony_ci$ write aconf "/* ", line, " */" 595275793eaSopenharmony_ci$ return 596275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 597275793eaSopenharmony_ci$! 598275793eaSopenharmony_ci$! Check for properties of C/C++ compiler 599275793eaSopenharmony_ci$! 600275793eaSopenharmony_ci$! Version history 601275793eaSopenharmony_ci$! 0.01 20031020 First version to receive a number 602275793eaSopenharmony_ci$! 0.02 20031022 Added logic for defines with value 603275793eaSopenharmony_ci$! 0.03 20040309 Make sure local config file gets not deleted 604275793eaSopenharmony_ci$! 0.04 20041230 Also write include for configure run 605275793eaSopenharmony_ci$! 0.05 20050103 Add processing of "comment defines" 606275793eaSopenharmony_ci$CC_PROP_CHECK: 607275793eaSopenharmony_ci$ cc_prop = true 608275793eaSopenharmony_ci$ is_need = false 609275793eaSopenharmony_ci$ is_need = (f$extract(0,4,cdef) .eqs. "NEED") .or. (test_inv .eq. true) 610275793eaSopenharmony_ci$ if f$search(th) .eqs. "" then create 'th' 611275793eaSopenharmony_ci$ set message/nofac/noident/nosever/notext 612275793eaSopenharmony_ci$ on error then continue 613275793eaSopenharmony_ci$ cc 'tmpnam' 614275793eaSopenharmony_ci$ if .not. ($status) then cc_prop = false 615275793eaSopenharmony_ci$ on error then continue 616275793eaSopenharmony_ci$! The headers might lie about the capabilities of the RTL 617275793eaSopenharmony_ci$ link 'tmpnam',tmp.opt/opt 618275793eaSopenharmony_ci$ if .not. ($status) then cc_prop = false 619275793eaSopenharmony_ci$ set message/fac/ident/sever/text 620275793eaSopenharmony_ci$ on error then goto err_exit 621275793eaSopenharmony_ci$ delete/nolog 'tmpnam'.*;*/exclude='th' 622275793eaSopenharmony_ci$ if (cc_prop .and. .not. is_need) .or. - 623275793eaSopenharmony_ci (.not. cc_prop .and. is_need) 624275793eaSopenharmony_ci$ then 625275793eaSopenharmony_ci$ write sys$output "Checking for ''cdef'... yes" 626275793eaSopenharmony_ci$ if f$type('cdef_val'_yes) .nes. "" 627275793eaSopenharmony_ci$ then 628275793eaSopenharmony_ci$ if f$type('cdef_val'_yes) .eqs. "INTEGER" - 629275793eaSopenharmony_ci then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_yes) 630275793eaSopenharmony_ci$ if f$type('cdef_val'_yes) .eqs. "STRING" - 631275793eaSopenharmony_ci then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_yes) 632275793eaSopenharmony_ci$ else 633275793eaSopenharmony_ci$ call write_config f$fao("#define !AS 1",cdef) 634275793eaSopenharmony_ci$ endif 635275793eaSopenharmony_ci$ if (cdef .eqs. "HAVE_FSEEKO") .or. (cdef .eqs. "_LARGE_FILES") .or. - 636275793eaSopenharmony_ci (cdef .eqs. "_LARGEFILE64_SOURCE") then - 637275793eaSopenharmony_ci call write_config f$string("#define _LARGEFILE 1") 638275793eaSopenharmony_ci$ else 639275793eaSopenharmony_ci$ write sys$output "Checking for ''cdef'... no" 640275793eaSopenharmony_ci$ if (comm_h) 641275793eaSopenharmony_ci$ then 642275793eaSopenharmony_ci call write_config f$fao("/* !AS */",line) 643275793eaSopenharmony_ci$ else 644275793eaSopenharmony_ci$ if f$type('cdef_val'_no) .nes. "" 645275793eaSopenharmony_ci$ then 646275793eaSopenharmony_ci$ if f$type('cdef_val'_no) .eqs. "INTEGER" - 647275793eaSopenharmony_ci then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_no) 648275793eaSopenharmony_ci$ if f$type('cdef_val'_no) .eqs. "STRING" - 649275793eaSopenharmony_ci then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_no) 650275793eaSopenharmony_ci$ else 651275793eaSopenharmony_ci$ call write_config f$fao("#undef !AS",cdef) 652275793eaSopenharmony_ci$ endif 653275793eaSopenharmony_ci$ endif 654275793eaSopenharmony_ci$ endif 655275793eaSopenharmony_ci$ return 656275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 657275793eaSopenharmony_ci$! 658275793eaSopenharmony_ci$! Check for properties of C/C++ compiler with multiple result values 659275793eaSopenharmony_ci$! 660275793eaSopenharmony_ci$! Version history 661275793eaSopenharmony_ci$! 0.01 20040127 First version 662275793eaSopenharmony_ci$! 0.02 20050103 Reconcile changes from cc_prop up to version 0.05 663275793eaSopenharmony_ci$CC_MPROP_CHECK: 664275793eaSopenharmony_ci$ cc_prop = true 665275793eaSopenharmony_ci$ i = 1 666275793eaSopenharmony_ci$ idel = 1 667275793eaSopenharmony_ci$ MT_LOOP: 668275793eaSopenharmony_ci$ if f$type(result_'i') .eqs. "STRING" 669275793eaSopenharmony_ci$ then 670275793eaSopenharmony_ci$ set message/nofac/noident/nosever/notext 671275793eaSopenharmony_ci$ on error then continue 672275793eaSopenharmony_ci$ cc 'tmpnam'_'i' 673275793eaSopenharmony_ci$ if .not. ($status) then cc_prop = false 674275793eaSopenharmony_ci$ on error then continue 675275793eaSopenharmony_ci$! The headers might lie about the capabilities of the RTL 676275793eaSopenharmony_ci$ link 'tmpnam'_'i',tmp.opt/opt 677275793eaSopenharmony_ci$ if .not. ($status) then cc_prop = false 678275793eaSopenharmony_ci$ set message/fac/ident/sever/text 679275793eaSopenharmony_ci$ on error then goto err_exit 680275793eaSopenharmony_ci$ delete/nolog 'tmpnam'_'i'.*;* 681275793eaSopenharmony_ci$ if (cc_prop) 682275793eaSopenharmony_ci$ then 683275793eaSopenharmony_ci$ write sys$output "Checking for ''cdef'... ", mdef_'i' 684275793eaSopenharmony_ci$ if f$type(mdef_'i') .eqs. "INTEGER" - 685275793eaSopenharmony_ci then call write_config f$fao("#define !AS !UL",cdef,mdef_'i') 686275793eaSopenharmony_ci$ if f$type('cdef_val'_yes) .eqs. "STRING" - 687275793eaSopenharmony_ci then call write_config f$fao("#define !AS !AS",cdef,mdef_'i') 688275793eaSopenharmony_ci$ goto msym_clean 689275793eaSopenharmony_ci$ else 690275793eaSopenharmony_ci$ i = i + 1 691275793eaSopenharmony_ci$ goto mt_loop 692275793eaSopenharmony_ci$ endif 693275793eaSopenharmony_ci$ endif 694275793eaSopenharmony_ci$ write sys$output "Checking for ''cdef'... no" 695275793eaSopenharmony_ci$ call write_config f$fao("#undef !AS",cdef) 696275793eaSopenharmony_ci$ MSYM_CLEAN: 697275793eaSopenharmony_ci$ if (idel .le. msym_max) 698275793eaSopenharmony_ci$ then 699275793eaSopenharmony_ci$ delete/sym mdef_'idel' 700275793eaSopenharmony_ci$ idel = idel + 1 701275793eaSopenharmony_ci$ goto msym_clean 702275793eaSopenharmony_ci$ endif 703275793eaSopenharmony_ci$ return 704275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 705275793eaSopenharmony_ci$! 706275793eaSopenharmony_ci$! Write configuration to both permanent and temporary config file 707275793eaSopenharmony_ci$! 708275793eaSopenharmony_ci$! Version history 709275793eaSopenharmony_ci$! 0.01 20031029 First version to receive a number 710275793eaSopenharmony_ci$! 711275793eaSopenharmony_ci$WRITE_CONFIG: SUBROUTINE 712275793eaSopenharmony_ci$ write aconf 'p1' 713275793eaSopenharmony_ci$ open/append confh 'th' 714275793eaSopenharmony_ci$ write confh 'p1' 715275793eaSopenharmony_ci$ close confh 716275793eaSopenharmony_ci$ENDSUBROUTINE 717275793eaSopenharmony_ci$!------------------------------------------------------------------------------ 718275793eaSopenharmony_ci$! 719275793eaSopenharmony_ci$! Analyze the project map file and create the symbol vector for a shareable 720275793eaSopenharmony_ci$! image from it 721275793eaSopenharmony_ci$! 722275793eaSopenharmony_ci$! Version history 723275793eaSopenharmony_ci$! 0.01 20120128 First version 724275793eaSopenharmony_ci$! 0.02 20120226 Add pre-load logic 725275793eaSopenharmony_ci$! 726275793eaSopenharmony_ci$ MAP_2_SHOPT: Subroutine 727275793eaSopenharmony_ci$! 728275793eaSopenharmony_ci$ SAY := "WRITE_ SYS$OUTPUT" 729275793eaSopenharmony_ci$! 730275793eaSopenharmony_ci$ IF F$SEARCH("''P1'") .EQS. "" 731275793eaSopenharmony_ci$ THEN 732275793eaSopenharmony_ci$ SAY "MAP_2_SHOPT-E-NOSUCHFILE: Error, inputfile ''p1' not available" 733275793eaSopenharmony_ci$ goto exit_m2s 734275793eaSopenharmony_ci$ ENDIF 735275793eaSopenharmony_ci$ IF "''P2'" .EQS. "" 736275793eaSopenharmony_ci$ THEN 737275793eaSopenharmony_ci$ SAY "MAP_2_SHOPT: Error, no output file provided" 738275793eaSopenharmony_ci$ goto exit_m2s 739275793eaSopenharmony_ci$ ENDIF 740275793eaSopenharmony_ci$! 741275793eaSopenharmony_ci$ module1 = "deflate#deflateEnd#deflateInit_#deflateParams#deflateSetDictionary" 742275793eaSopenharmony_ci$ module2 = "gzclose#gzerror#gzgetc#gzgets#gzopen#gzprintf#gzputc#gzputs#gzread" 743275793eaSopenharmony_ci$ module3 = "gzseek#gztell#inflate#inflateEnd#inflateInit_#inflateSetDictionary" 744275793eaSopenharmony_ci$ module4 = "inflateSync#uncompress#zlibVersion#compress" 745275793eaSopenharmony_ci$ open/read map 'p1 746275793eaSopenharmony_ci$ if axp .or. ia64 747275793eaSopenharmony_ci$ then 748275793eaSopenharmony_ci$ open/write aopt a.opt 749275793eaSopenharmony_ci$ open/write bopt b.opt 750275793eaSopenharmony_ci$ write aopt " CASE_SENSITIVE=YES" 751275793eaSopenharmony_ci$ write bopt "SYMBOL_VECTOR= (-" 752275793eaSopenharmony_ci$ mod_sym_num = 1 753275793eaSopenharmony_ci$ MOD_SYM_LOOP: 754275793eaSopenharmony_ci$ if f$type(module'mod_sym_num') .nes. "" 755275793eaSopenharmony_ci$ then 756275793eaSopenharmony_ci$ mod_in = 0 757275793eaSopenharmony_ci$ MOD_SYM_IN: 758275793eaSopenharmony_ci$ shared_proc = f$element(mod_in, "#", module'mod_sym_num') 759275793eaSopenharmony_ci$ if shared_proc .nes. "#" 760275793eaSopenharmony_ci$ then 761275793eaSopenharmony_ci$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",- 762275793eaSopenharmony_ci f$edit(shared_proc,"upcase"),shared_proc) 763275793eaSopenharmony_ci$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc) 764275793eaSopenharmony_ci$ mod_in = mod_in + 1 765275793eaSopenharmony_ci$ goto mod_sym_in 766275793eaSopenharmony_ci$ endif 767275793eaSopenharmony_ci$ mod_sym_num = mod_sym_num + 1 768275793eaSopenharmony_ci$ goto mod_sym_loop 769275793eaSopenharmony_ci$ endif 770275793eaSopenharmony_ci$MAP_LOOP: 771275793eaSopenharmony_ci$ read/end=map_end map line 772275793eaSopenharmony_ci$ if (f$locate("{",line).lt. f$length(line)) .or. - 773275793eaSopenharmony_ci (f$locate("global:", line) .lt. f$length(line)) 774275793eaSopenharmony_ci$ then 775275793eaSopenharmony_ci$ proc = true 776275793eaSopenharmony_ci$ goto map_loop 777275793eaSopenharmony_ci$ endif 778275793eaSopenharmony_ci$ if f$locate("}",line).lt. f$length(line) then proc = false 779275793eaSopenharmony_ci$ if f$locate("local:", line) .lt. f$length(line) then proc = false 780275793eaSopenharmony_ci$ if proc 781275793eaSopenharmony_ci$ then 782275793eaSopenharmony_ci$ shared_proc = f$edit(line,"collapse") 783275793eaSopenharmony_ci$ chop_semi = f$locate(";", shared_proc) 784275793eaSopenharmony_ci$ if chop_semi .lt. f$length(shared_proc) then - 785275793eaSopenharmony_ci shared_proc = f$extract(0, chop_semi, shared_proc) 786275793eaSopenharmony_ci$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",- 787275793eaSopenharmony_ci f$edit(shared_proc,"upcase"),shared_proc) 788275793eaSopenharmony_ci$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc) 789275793eaSopenharmony_ci$ endif 790275793eaSopenharmony_ci$ goto map_loop 791275793eaSopenharmony_ci$MAP_END: 792275793eaSopenharmony_ci$ close/nolog aopt 793275793eaSopenharmony_ci$ close/nolog bopt 794275793eaSopenharmony_ci$ open/append libopt 'p2' 795275793eaSopenharmony_ci$ open/read aopt a.opt 796275793eaSopenharmony_ci$ open/read bopt b.opt 797275793eaSopenharmony_ci$ALOOP: 798275793eaSopenharmony_ci$ read/end=aloop_end aopt line 799275793eaSopenharmony_ci$ write libopt line 800275793eaSopenharmony_ci$ goto aloop 801275793eaSopenharmony_ci$ALOOP_END: 802275793eaSopenharmony_ci$ close/nolog aopt 803275793eaSopenharmony_ci$ sv = "" 804275793eaSopenharmony_ci$BLOOP: 805275793eaSopenharmony_ci$ read/end=bloop_end bopt svn 806275793eaSopenharmony_ci$ if (svn.nes."") 807275793eaSopenharmony_ci$ then 808275793eaSopenharmony_ci$ if (sv.nes."") then write libopt sv 809275793eaSopenharmony_ci$ sv = svn 810275793eaSopenharmony_ci$ endif 811275793eaSopenharmony_ci$ goto bloop 812275793eaSopenharmony_ci$BLOOP_END: 813275793eaSopenharmony_ci$ write libopt f$extract(0,f$length(sv)-2,sv), "-" 814275793eaSopenharmony_ci$ write libopt ")" 815275793eaSopenharmony_ci$ close/nolog bopt 816275793eaSopenharmony_ci$ delete/nolog/noconf a.opt;*,b.opt;* 817275793eaSopenharmony_ci$ else 818275793eaSopenharmony_ci$ if vax 819275793eaSopenharmony_ci$ then 820275793eaSopenharmony_ci$ open/append libopt 'p2' 821275793eaSopenharmony_ci$ mod_sym_num = 1 822275793eaSopenharmony_ci$ VMOD_SYM_LOOP: 823275793eaSopenharmony_ci$ if f$type(module'mod_sym_num') .nes. "" 824275793eaSopenharmony_ci$ then 825275793eaSopenharmony_ci$ mod_in = 0 826275793eaSopenharmony_ci$ VMOD_SYM_IN: 827275793eaSopenharmony_ci$ shared_proc = f$element(mod_in, "#", module'mod_sym_num') 828275793eaSopenharmony_ci$ if shared_proc .nes. "#" 829275793eaSopenharmony_ci$ then 830275793eaSopenharmony_ci$ write libopt f$fao("UNIVERSAL=!AS",- 831275793eaSopenharmony_ci f$edit(shared_proc,"upcase")) 832275793eaSopenharmony_ci$ mod_in = mod_in + 1 833275793eaSopenharmony_ci$ goto vmod_sym_in 834275793eaSopenharmony_ci$ endif 835275793eaSopenharmony_ci$ mod_sym_num = mod_sym_num + 1 836275793eaSopenharmony_ci$ goto vmod_sym_loop 837275793eaSopenharmony_ci$ endif 838275793eaSopenharmony_ci$VMAP_LOOP: 839275793eaSopenharmony_ci$ read/end=vmap_end map line 840275793eaSopenharmony_ci$ if (f$locate("{",line).lt. f$length(line)) .or. - 841275793eaSopenharmony_ci (f$locate("global:", line) .lt. f$length(line)) 842275793eaSopenharmony_ci$ then 843275793eaSopenharmony_ci$ proc = true 844275793eaSopenharmony_ci$ goto vmap_loop 845275793eaSopenharmony_ci$ endif 846275793eaSopenharmony_ci$ if f$locate("}",line).lt. f$length(line) then proc = false 847275793eaSopenharmony_ci$ if f$locate("local:", line) .lt. f$length(line) then proc = false 848275793eaSopenharmony_ci$ if proc 849275793eaSopenharmony_ci$ then 850275793eaSopenharmony_ci$ shared_proc = f$edit(line,"collapse") 851275793eaSopenharmony_ci$ chop_semi = f$locate(";", shared_proc) 852275793eaSopenharmony_ci$ if chop_semi .lt. f$length(shared_proc) then - 853275793eaSopenharmony_ci shared_proc = f$extract(0, chop_semi, shared_proc) 854275793eaSopenharmony_ci$ write libopt f$fao("UNIVERSAL=!AS",- 855275793eaSopenharmony_ci f$edit(shared_proc,"upcase")) 856275793eaSopenharmony_ci$ endif 857275793eaSopenharmony_ci$ goto vmap_loop 858275793eaSopenharmony_ci$VMAP_END: 859275793eaSopenharmony_ci$ else 860275793eaSopenharmony_ci$ write sys$output "Unknown Architecture (Not VAX, AXP, or IA64)" 861275793eaSopenharmony_ci$ write sys$output "No options file created" 862275793eaSopenharmony_ci$ endif 863275793eaSopenharmony_ci$ endif 864275793eaSopenharmony_ci$ EXIT_M2S: 865275793eaSopenharmony_ci$ close/nolog map 866275793eaSopenharmony_ci$ close/nolog libopt 867275793eaSopenharmony_ci$ endsubroutine 868