summaryrefslogtreecommitdiff
path: root/make_vms.com
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2012-02-05 10:55:09 -0800
committerMark Adler <madler@alumni.caltech.edu>2012-02-05 10:55:09 -0800
commit9894494537635f51e79ac6fdb4157fe82c637328 (patch)
tree5d169a61f5589fe281a35d39171a438794ef2534 /make_vms.com
parentfc68b60086a69af7d3dab403b4dc98d01486780e (diff)
downloadzlib-9894494537635f51e79ac6fdb4157fe82c637328.tar.gz
zlib-9894494537635f51e79ac6fdb4157fe82c637328.tar.bz2
zlib-9894494537635f51e79ac6fdb4157fe82c637328.zip
Update make_vms.com [Zinser].
Diffstat (limited to 'make_vms.com')
-rw-r--r--make_vms.com289
1 files changed, 150 insertions, 139 deletions
diff --git a/make_vms.com b/make_vms.com
index 11be527..271815b 100644
--- a/make_vms.com
+++ b/make_vms.com
@@ -3,7 +3,7 @@ $! Martin P.J. Zinser
3$! 3$!
4$! In case of problems with the install you might contact me at 4$! In case of problems with the install you might contact me at
5$! zinser@zinser.no-ip.info(preferred) or 5$! zinser@zinser.no-ip.info(preferred) or
6$! zinser@sysdev.deutsche-boerse.com (work) 6$! martin.zinser@eurexchange.com (work)
7$! 7$!
8$! Make procedure history for Zlib 8$! Make procedure history for Zlib
9$! 9$!
@@ -14,6 +14,10 @@ $! 0.02 20061008 Adapt to new Makefile.in
14$! 0.03 20091224 Add support for large file check 14$! 0.03 20091224 Add support for large file check
15$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite 15$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
16$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in 16$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
17$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples
18$! subdir path, update module search in makefile.in
19$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned
20$! shared image creation
17$! 21$!
18$ on error then goto err_exit 22$ on error then goto err_exit
19$ set proc/parse=ext 23$ set proc/parse=ext
@@ -40,12 +44,15 @@ $ v_file = "zlib.h"
40$ ccopt = "" 44$ ccopt = ""
41$ lopts = "" 45$ lopts = ""
42$ dnsrl = "" 46$ dnsrl = ""
43$ aconf_in_file = "zconf.h.in#zconf.h_in" 47$ aconf_in_file = "zconf.h.in#zconf.h_in#zconf_h.in"
44$ conf_check_string = "" 48$ conf_check_string = ""
45$ linkonly = false 49$ linkonly = false
46$ optfile = name + ".opt" 50$ optfile = name + ".opt"
51$ mapfile = name + ".map"
47$ libdefs = "" 52$ libdefs = ""
53$ vax = f$getsyi("HW_MODEL").lt.1024
48$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096 54$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096
55$ ia64 = f$getsyi("HW_MODEL").ge.4096
49$! 56$!
50$ whoami = f$parse(f$enviornment("Procedure"),,,,"NO_CONCEAL") 57$ whoami = f$parse(f$enviornment("Procedure"),,,,"NO_CONCEAL")
51$ mydef = F$parse(whoami,,,"DEVICE") 58$ mydef = F$parse(whoami,,,"DEVICE")
@@ -69,6 +76,7 @@ $! Look for the compiler used
69$! 76$!
70$ gosub check_compiler 77$ gosub check_compiler
71$ close topt 78$ close topt
79$ close optf
72$! 80$!
73$ if its_decc 81$ if its_decc
74$ then 82$ then
@@ -83,6 +91,11 @@ $ ccopt = "/decc" + ccopt
83$ define sys decc$library_include: 91$ define sys decc$library_include:
84$ endif 92$ endif
85$ endif 93$ endif
94$ if axp .or. ia64
95$ then
96$ ccopt = ccopt + "/name=as_is/opt=(inline=speed)"
97$ s_case = true
98$ endif
86$ endif 99$ endif
87$ if its_vaxc .or. its_gnuc 100$ if its_vaxc .or. its_gnuc
88$ then 101$ then
@@ -174,14 +187,14 @@ $ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" -
174$ write sys$output "Building Zlib ..." 187$ write sys$output "Building Zlib ..."
175$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ 188$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
176$ write sys$output "Building example..." 189$ write sys$output "Building example..."
177$ CALL MAKE example.OBJ "CC ''CCOPT' example" - 190$ CALL MAKE example.OBJ "CC ''CCOPT'/include=[] [.test]example" -
178 test/example.c zlib.h zconf.h 191 [.test]example.c zlib.h zconf.h
179$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb 192$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
180$ if f$search("x11vms:xvmsutils.olb") .nes. "" 193$ if f$search("x11vms:xvmsutils.olb") .nes. ""
181$ then 194$ then
182$ write sys$output "Building minigzip..." 195$ write sys$output "Building minigzip..."
183$ CALL MAKE minigzip.OBJ "CC ''CCOPT' minigzip" - 196$ CALL MAKE minigzip.OBJ "CC ''CCOPT'/include=[] [.test]minigzip" -
184 test/minigzip.c zlib.h zconf.h 197 [.test]minigzip.c zlib.h zconf.h
185$ call make minigzip.exe - 198$ call make minigzip.exe -
186 "LINK minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib" - 199 "LINK minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib" -
187 minigzip.obj libz.olb 200 minigzip.obj libz.olb
@@ -194,21 +207,20 @@ $ endif
194$! 207$!
195$! Alpha gets a shareable image 208$! Alpha gets a shareable image
196$! 209$!
197$ If axp 210$ If axp .or. ia64
198$ Then 211$ Then
199$ gosub crea_olist 212$ gosub crea_olist
200$ write sys$output "Creating libzshr.exe" 213$ write sys$output "Creating libzshr.exe"
201$ call anal_obj_axp modules.opt _link.opt 214$ call map_2_shopt 'mapfile' 'optfile'
202$ if s_case 215$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,'optfile'/opt
203$ then
204$ open/append optf modules.opt
205$ write optf "case_sensitive=YES"
206$ close optf
207$ endif
208$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,_link.opt/opt
209$ endif 216$ endif
210$ write sys$output "Zlib build completed" 217$ write sys$output "Zlib build completed"
218$ delete/nolog tmp.opt;*
211$ exit 219$ exit
220$AMISS_ERR:
221$ write sys$output "No source for config.hin found."
222$ write sys$output "Tried any of ''aconf_in_file'"
223$ goto err_exit
212$CC_ERR: 224$CC_ERR:
213$ write sys$output "C compiler required to build ''name'" 225$ write sys$output "C compiler required to build ''name'"
214$ goto err_exit 226$ goto err_exit
@@ -397,7 +409,7 @@ $ copy sys$input: out
397$ deck 409$ deck
398# descrip.mms: MMS description file for building zlib on VMS 410# descrip.mms: MMS description file for building zlib on VMS
399# written by Martin P.J. Zinser 411# written by Martin P.J. Zinser
400# <zinser@zinser.no-ip.info or zinser@sysdev.deutsche-boerse.com> 412# <zinser@zinser.no-ip.info or martin.zinser@eurexchange.com>
401 413
402OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\ 414OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\
403 gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\ 415 gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\
@@ -431,7 +443,8 @@ adler32.obj : adler32.c zutil.h zlib.h zconf.h
431compress.obj : compress.c zlib.h zconf.h 443compress.obj : compress.c zlib.h zconf.h
432crc32.obj : crc32.c zutil.h zlib.h zconf.h 444crc32.obj : crc32.c zutil.h zlib.h zconf.h
433deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h 445deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h
434example.obj : test/example.c zlib.h zconf.h 446example.obj : [.test]example.c zlib.h zconf.h
447 cc $(CFLAGS)/include=[] [.test]example.c
435gzclose.obj : gzclose.c zutil.h zlib.h zconf.h 448gzclose.obj : gzclose.c zutil.h zlib.h zconf.h
436gzlib.obj : gzlib.c zutil.h zlib.h zconf.h 449gzlib.obj : gzlib.c zutil.h zlib.h zconf.h
437gzread.obj : gzread.c zutil.h zlib.h zconf.h 450gzread.obj : gzread.c zutil.h zlib.h zconf.h
@@ -439,7 +452,8 @@ gzwrite.obj : gzwrite.c zutil.h zlib.h zconf.h
439inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h 452inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h
440inflate.obj : inflate.c zutil.h zlib.h zconf.h 453inflate.obj : inflate.c zutil.h zlib.h zconf.h
441inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h 454inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h
442minigzip.obj : test/minigzip.c zlib.h zconf.h 455minigzip.obj : [.test]minigzip.c zlib.h zconf.h
456 cc $(CFLAGS)/include=[] [.test]minigzip.c
443trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h 457trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h
444uncompr.obj : uncompr.c zlib.h zconf.h 458uncompr.obj : uncompr.c zlib.h zconf.h
445zutil.obj : zutil.c zutil.h zlib.h zconf.h 459zutil.obj : zutil.c zutil.h zlib.h zconf.h
@@ -455,13 +469,18 @@ $!
455$CREA_OLIST: 469$CREA_OLIST:
456$ open/read min makefile.in 470$ open/read min makefile.in
457$ open/write mod modules.opt 471$ open/write mod modules.opt
458$ src_check = "OBJC =" 472$ src_check_list = "OBJZ =#OBJG ="
459$MRLOOP: 473$MRLOOP:
460$ read/end=mrdone min rec 474$ read/end=mrdone min rec
461$ if (f$extract(0,6,rec) .nes. src_check) then goto mrloop 475$ i = 0
476$SRC_CHECK_LOOP:
477$ src_check = f$element(i, "#", src_check_list)
478$ i = i+1
479$ if src_check .eqs. "#" then goto mrloop
480$ if (f$extract(0,6,rec) .nes. src_check) then goto src_check_loop
462$ rec = rec - src_check 481$ rec = rec - src_check
463$ gosub extra_filnam 482$ gosub extra_filnam
464$ if (f$element(1,"\",rec) .eqs. "\") then goto mrdone 483$ if (f$element(1,"\",rec) .eqs. "\") then goto mrloop
465$MRSLOOP: 484$MRSLOOP:
466$ read/end=mrdone min rec 485$ read/end=mrdone min rec
467$ gosub extra_filnam 486$ gosub extra_filnam
@@ -672,124 +691,6 @@ $ endif
672$ return 691$ return
673$!------------------------------------------------------------------------------ 692$!------------------------------------------------------------------------------
674$! 693$!
675$! Analyze Object files for OpenVMS AXP to extract Procedure and Data
676$! information to build a symbol vector for a shareable image
677$! All the "brains" of this logic was suggested by Hartmut Becker
678$! (Hartmut.Becker@compaq.com). All the bugs were introduced by me
679$! (zinser@zinser.no-ip.info), so if you do have problem reports please do not
680$! bother Hartmut/HP, but get in touch with me
681$!
682$! Version history
683$! 0.01 20040406 Skip over shareable images in option file
684$! 0.02 20041109 Fix option file for shareable images with case_sensitive=YES
685$! 0.03 20050107 Skip over Identification labels in option file
686$! 0.04 20060117 Add uppercase alias to code compiled with /name=as_is
687$!
688$ ANAL_OBJ_AXP: Subroutine
689$ V = 'F$Verify(0)
690$ SAY := "WRITE_ SYS$OUTPUT"
691$
692$ IF F$SEARCH("''P1'") .EQS. ""
693$ THEN
694$ SAY "ANAL_OBJ_AXP-E-NOSUCHFILE: Error, inputfile ''p1' not available"
695$ goto exit_aa
696$ ENDIF
697$ IF "''P2'" .EQS. ""
698$ THEN
699$ SAY "ANAL_OBJ_AXP: Error, no output file provided"
700$ goto exit_aa
701$ ENDIF
702$
703$ open/read in 'p1
704$ create a.tmp
705$ open/append atmp a.tmp
706$ loop:
707$ read/end=end_loop in line
708$ if f$locate("/SHARE",f$edit(line,"upcase")) .lt. f$length(line)
709$ then
710$ write sys$output "ANAL_SKP_SHR-i-skipshare, ''line'"
711$ goto loop
712$ endif
713$ if f$locate("IDENTIFICATION=",f$edit(line,"upcase")) .lt. f$length(line)
714$ then
715$ write sys$output "ANAL_OBJ_AXP-i-ident: Identification ", -
716 f$element(1,"=",line)
717$ goto loop
718$ endif
719$ f= f$search(line)
720$ if f .eqs. ""
721$ then
722$ write sys$output "ANAL_OBJ_AXP-w-nosuchfile, ''line'"
723$ goto loop
724$ endif
725$ define/user sys$output nl:
726$ define/user sys$error nl:
727$ anal/obj/gsd 'f /out=x.tmp
728$ open/read xtmp x.tmp
729$ XLOOP:
730$ read/end=end_xloop xtmp xline
731$ xline = f$edit(xline,"compress")
732$ write atmp xline
733$ goto xloop
734$ END_XLOOP:
735$ close xtmp
736$ goto loop
737$ end_loop:
738$ close in
739$ close atmp
740$ if f$search("a.tmp") .eqs. "" -
741 then $ exit
742$ ! all global definitions
743$ search a.tmp "symbol:","EGSY$V_DEF 1","EGSY$V_NORM 1"/out=b.tmp
744$ ! all procedures
745$ search b.tmp "EGSY$V_NORM 1"/wind=(0,1) /out=c.tmp
746$ search c.tmp "symbol:"/out=d.tmp
747$ define/user sys$output nl:
748$ edito/edt/command=sys$input d.tmp
749sub/symbol: "/symbol_vector=(/whole
750sub/"/=PROCEDURE)/whole
751exit
752$ ! all data
753$ search b.tmp "EGSY$V_DEF 1"/wind=(0,1) /out=e.tmp
754$ search e.tmp "symbol:"/out=f.tmp
755$ define/user sys$output nl:
756$ edito/edt/command=sys$input f.tmp
757sub/symbol: "/symbol_vector=(/whole
758sub/"/=DATA)/whole
759exit
760$ sort/nodupl d.tmp,f.tmp g.tmp
761$ open/read raw_vector g.tmp
762$ open/write case_vector 'p2'
763$ RAWLOOP:
764$ read/end=end_rawloop raw_vector raw_element
765$ write case_vector raw_element
766$ if f$locate("=PROCEDURE)",raw_element) .lt. f$length(raw_element)
767$ then
768$ name = f$element(1,"=",raw_element) - "("
769$ if f$edit(name,"UPCASE") .nes. name then -
770 write case_vector f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)", -
771 f$edit(name,"UPCASE"), name)
772$ endif
773$ if f$locate("=DATA)",raw_element) .lt. f$length(raw_element)
774$ then
775$ name = f$element(1,"=",raw_element) - "("
776$ if f$edit(name,"UPCASE") .nes. name then -
777 write case_vector f$fao(" symbol_vector=(!AS/!AS=DATA)", -
778 f$edit(name,"UPCASE"), name)
779$ endif
780$ goto rawloop
781$ END_RAWLOOP:
782$ close raw_vector
783$ close case_vector
784$ delete a.tmp;*,b.tmp;*,c.tmp;*,d.tmp;*,e.tmp;*,f.tmp;*,g.tmp;*
785$ if f$search("x.tmp") .nes. "" -
786 then $ delete x.tmp;*
787$!
788$ EXIT_AA:
789$ if V then set verify
790$ endsubroutine
791$!------------------------------------------------------------------------------
792$!
793$! Write configuration to both permanent and temporary config file 694$! Write configuration to both permanent and temporary config file
794$! 695$!
795$! Version history 696$! Version history
@@ -802,3 +703,113 @@ $ write confh 'p1'
802$ close confh 703$ close confh
803$ENDSUBROUTINE 704$ENDSUBROUTINE
804$!------------------------------------------------------------------------------ 705$!------------------------------------------------------------------------------
706$!
707$! Analyze the project map file and create the symbol vector for a shareable
708$! image from it
709$!
710$! Version history
711$! 0.01 20120128 First version
712$!
713$ MAP_2_SHOPT: Subroutine
714$!
715$ SAY := "WRITE_ SYS$OUTPUT"
716$!
717$ IF F$SEARCH("''P1'") .EQS. ""
718$ THEN
719$ SAY "MAP_2_SHOPT-E-NOSUCHFILE: Error, inputfile ''p1' not available"
720$ goto exit_m2s
721$ ENDIF
722$ IF "''P2'" .EQS. ""
723$ THEN
724$ SAY "MAP_2_SHOPT: Error, no output file provided"
725$ goto exit_m2s
726$ ENDIF
727$!
728$ open/read map 'p1
729$ if axp .or. ia64
730$ then
731$ open/write aopt a.opt
732$ open/write bopt b.opt
733$ write aopt " CASE_SENSITIVE=YES"
734$ write bopt "SYMBOL_VECTOR= (-"
735$MAP_LOOP:
736$ read/end=map_end map line
737$ if (f$locate("{",line).lt. f$length(line)) .or. -
738 (f$locate("global:", line) .lt. f$length(line))
739$ then
740$ proc = true
741$ goto map_loop
742$ endif
743$ if f$locate("}",line).lt. f$length(line) then proc = false
744$ if f$locate("local:", line) .lt. f$length(line) then proc = false
745$ if proc
746$ then
747$ shared_proc = f$edit(line,"collapse")
748$ chop_semi = f$locate(";", shared_proc)
749$ if chop_semi .lt. f$length(shared_proc) then -
750 shared_proc = f$extract(0, chop_semi, shared_proc)
751$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
752 f$edit(shared_proc,"upcase"),shared_proc)
753$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
754$ endif
755$ goto map_loop
756$MAP_END:
757$ close/nolog aopt
758$ close/nolog bopt
759$ open/append libopt 'p2'
760$ open/read aopt a.opt
761$ open/read bopt b.opt
762$ALOOP:
763$ read/end=aloop_end aopt line
764$ write libopt line
765$ goto aloop
766$ALOOP_END:
767$ close/nolog aopt
768$ sv = ""
769$BLOOP:
770$ read/end=bloop_end bopt svn
771$ if (svn.nes."")
772$ then
773$ if (sv.nes."") then write libopt sv
774$ sv = svn
775$ endif
776$ goto bloop
777$BLOOP_END:
778$ write libopt f$extract(0,f$length(sv)-2,sv), "-"
779$ write libopt ")"
780$ close/nolog bopt
781$ delete/nolog/noconf a.opt;*,b.opt;*
782$ else
783$ if vax
784$ then
785$VMAP_LOOP:
786$ read/end=vmap_end map line
787$ if (f$locate("{",line).lt. f$length(line)) .or. -
788$ (f$locate("global:", line) .lt. f$length(line))
789$ then
790$ proc = true
791$ goto vmap_loop
792$ endif
793$ if f$locate("}",line).lt. f$length(line) then proc = false
794$ if f$locate("local:", line) .lt. f$length(line) then proc = false
795$ if proc
796$ then
797$ shared_proc = f$edit(line,"collapse")
798$ chop_semi = f$locate(";", shared_proc)
799$ if chop_semi .lt. f$length(shared_proc) then -
800 shared_proc = f$extract(0, chop_semi, shared_proc)
801$ write libopt f$fao("UNIVERSAL=!AS",-
802 f$edit(shared_proc,"upcase"))
803$ endif
804$ goto vmap_loop
805$VMAP_END:
806$ else
807$ write sys$output "Unknown Architecture (Not VAX, AXP, or IA64)"
808$ write sys$output "No options file created"
809$ endif
810$ endif
811$ EXIT_M2S:
812$ close/nolog map
813$ close/nolog libopt
814$ endsubroutine
815$!------------------------------------------------------------------------------