ref: 26fb1bcd05afc1d61ad80cd7313aa5a88713e78b
parent: 75ad4b83652737d3323ccddfb322accb6cb90676
author: Werner Lemberg <[email protected]>
date: Wed May 28 02:27:26 EDT 2003
* vms_make.com: Reworked support for shareable images on VMS. The first version was kind of a hack; the current implementation of the procedure to extract the required symbols is much cleaner. Reworked creation of MMS files, avoiding a number of temporary files which were created in the previous version. Further work on creating descrip.mms files on the fly. * builds/vms/descrip.mms, src/autohint/descrip.mms, src/type1/descrip.mms: Removed.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2003-05-28 Martin Zinser <[email protected]>
+
+ * vms_make.com: Reworked support for shareable images on VMS. The
+ first version was kind of a hack; the current implementation of the
+ procedure to extract the required symbols is much cleaner.
+
+ Reworked creation of MMS files, avoiding a number of temporary files
+ which were created in the previous version.
+
+ Further work on creating descrip.mms files on the fly.
+
+ * builds/vms/descrip.mms, src/autohint/descrip.mms,
+ src/type1/descrip.mms: Removed.
+
2003-05-28 Werner Lemberg <[email protected]>
* src/pshinter/pshalgo3.c (psh3_glyph_compute_extrema): Skip
--- a/builds/vms/descrip.mms
+++ /dev/null
@@ -1,25 +1,0 @@
-#
-# FreeType 2 system rules for VMS
-#
-
-
-# Copyright 2001 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT. By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([],[--.include],[--.src.base])
-
-OBJS=ftsystem.obj
-
-all : $(OBJS)
- library/create [--.lib]freetype.olb $(OBJS)
-
-ftsystem.obj : ftsystem.c ftconfig.h
-
-# EOF
--- a/src/autohint/descrip.mms
+++ /dev/null
@@ -1,25 +1,0 @@
-#
-# FreeType 2 auto-hinter module compilation rules for VMS
-#
-
-
-# Copyright 2001, 2002 Catharon Productions Inc.
-#
-# This file is part of the Catharon Typography Project and shall only
-# be used, modified, and distributed under the terms of the Catharon
-# Open Source License that should come with this file under the name
-# `CatharonLicense.txt'. By continuing to use, modify, or distribute
-# this file you indicate that you have read the license and
-# understand and accept it fully.
-#
-# Note that this license is compatible with the FreeType license.
-
-
-CFLAGS=$(COMP_FLAGS)$(DEBUG)/incl=([--.include],[--.src.autohint])
-
-OBJS=autohint.obj
-
-all : $(OBJS)
- library [--.lib]freetype.olb $(OBJS)
-
-# EOF
--- a/src/type1/descrip.mms
+++ /dev/null
@@ -1,23 +1,0 @@
-#
-# FreeType 2 Type1 driver compilation rules for VMS
-#
-
-
-# Copyright 1996-2000, 2002 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT. By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.type1])
-
-OBJS=type1.obj
-
-all : $(OBJS)
- library [--.lib]freetype.olb $(OBJS)
-
-# EOF
--- a/vms_make.com
+++ b/vms_make.com
@@ -46,6 +46,7 @@
$!
$! Pull in external libraries
$!
+$ create libs.opt
$ gosub check_create_vmslib
$!
$! Create objects
@@ -57,7 +58,6 @@
$ gosub crea_mms
$!
$ 'Make' /macro=(comp_flags="''ccopt'")
-$ delete/nolog/noconf temp.mms;*,descrip.fdl;*
$ purge/nolog [...]descrip.mms
$!
$! Add them to options
@@ -70,11 +70,6 @@
$ goto floop
$ endif
$!
-$! Pull in external libraries
-$!
-$ gosub check_create_vmslib
-$!
-$ if s_case then WRITE optf "case_sensitive=YES"
$ close optf
$!
$!
@@ -82,10 +77,13 @@
$!
$ If f$getsyi("HW_MODEL") .gt. 1024
$ Then
-$ LINK_/NODEB/NOSHARE/NOEXE/MAP='mapfile'/full 'optfile'/opt
-$ call anal_map_axp 'mapfile' _link.opt
-$ LINK_/NODEB/SHARE=[.lib]freetype2shr.exe 'optfile'/opt,_link.opt/opt
-$ dele/noconf 'mapfile';*
+$ write sys$output "Creating freetype2shr.exe"
+$ call anal_obj_axp 'optfile' _link.opt
+$ open/append optf 'optfile'
+$ if s_case then WRITE optf "case_sensitive=YES"
+$ close optf
+$ LINK_/NODEB/SHARE=[.lib]freetype2shr.exe -
+ 'optfile'/opt,libs.opt/opt,_link.opt/opt
$ endif
$!
$ exit
@@ -97,7 +95,9 @@
$CREA_MMS:
$ write sys$output "Creating descrip.mms files ..."
$ write sys$output "... Main directory"
-$ copy sys$input: descrip.mms
+$ create descrip.mms
+$ open/append out descrip.mms
+$ copy sys$input: out
$ deck
#
# FreeType 2 build system -- top-level Makefile for OpenVMS
@@ -112,8 +112,12 @@
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
+$ EOD
+$ write out "CFLAGS = ", ccopt
+$ copy sys$input: out
+$ deck
+
-
all :
define freetype [--.include.freetype]
define psaux [-.psaux]
@@ -175,14 +179,75 @@
# EOF
$ eod
-$ anal/rms/fdl descrip.mms
-$ create/fdl=descrip.fdl temp.mms
-$ open/append mmsf temp.mms
-$ write mmsf "CFLAGS = ", ccopt
-$ close mmsf
-$ copy temp.mms,descrip.mms;-1 descrip.mms
+$ close out
+$ write sys$output "... [.builds.vms] directory"
+$ create [.builds.vms]descrip.mms
+$ open/append out [.builds.vms]descrip.mms
+$ copy sys$input: out
+$ deck
+#
+# FreeType 2 system rules for VMS
+#
+
+
+# Copyright 2001 by
+# David Turner, Robert Wilhelm, and Werner Lemberg.
+#
+# This file is part of the FreeType project, and may only be used, modified,
+# and distributed under the terms of the FreeType project license,
+# LICENSE.TXT. By continuing to use, modify, or distribute this file you
+# indicate that you have read the license and understand and accept it
+# fully.
+
+
+CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([],[--.include],[--.src.base])
+
+OBJS=ftsystem.obj
+
+all : $(OBJS)
+ library/create [--.lib]freetype.olb $(OBJS)
+
+ftsystem.obj : ftsystem.c ftconfig.h
+
+# EOF
+$ eod
+$ close out
+$ write sys$output "... [.src.autohint] directory"
+$ create [.src.autohint]descrip.mms
+$ open/append out [.src.autohint]descrip.mms
+$ copy sys$input: out
+$ deck
+#
+# FreeType 2 auto-hinter module compilation rules for VMS
+#
+
+
+# Copyright 2001, 2002 Catharon Productions Inc.
+#
+# This file is part of the Catharon Typography Project and shall only
+# be used, modified, and distributed under the terms of the Catharon
+# Open Source License that should come with this file under the name
+# `CatharonLicense.txt'. By continuing to use, modify, or distribute
+# this file you indicate that you have read the license and
+# understand and accept it fully.
+#
+# Note that this license is compatible with the FreeType license.
+
+
+CFLAGS=$(COMP_FLAGS)$(DEBUG)/incl=([--.include],[--.src.autohint])
+
+OBJS=autohint.obj
+
+all : $(OBJS)
+ library [--.lib]freetype.olb $(OBJS)
+
+# EOF
+$ eod
+$ close out
$ write sys$output "... [.src.gzip] directory"
-$ copy sys$input: [.src.gzip]descrip.mms
+$ create [.src.gzip]descrip.mms
+$ open/append out [.src.gzip]descrip.mms
+$ copy sys$input: out
$ deck
#
# FreeType 2 GZip support compilation rules for VMS
@@ -197,8 +262,11 @@
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
+$EOD
+$ if libincs .nes. "" then write out "LIBINCS = ", libincs, ","
+$ copy sys$input: out
+$ deck
-
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=($(LIBINCS)[--.include],[--.src.gzip])
OBJS=ftgzip.obj
@@ -208,14 +276,39 @@
# EOF
$ eod
-$ create/fdl=descrip.fdl temp.mms
-$ if libincs .nes. ""
-$ then
-$ open/append mmsf temp.mms
-$ write mmsf "LIBINCS = ", libincs, ","
-$ close mmsf
-$ copy temp.mms,[.src.gzip]descrip.mms;-1 [.src.gzip]descrip.mms
-$ endif
+$ close out
+$ write sys$output "... [.src.type1] directory"
+$ create [.src.type1]descrip.mms
+$ open/append out [.src.type1]descrip.mms
+$ copy sys$input: out
+$ deck
+#
+# FreeType 2 Type1 driver compilation rules for VMS
+#
+
+
+# Copyright 1996-2000, 2002 by
+# David Turner, Robert Wilhelm, and Werner Lemberg.
+#
+# This file is part of the FreeType project, and may only be used, modified,
+# and distributed under the terms of the FreeType project license,
+# LICENSE.TXT. By continuing to use, modify, or distribute this file you
+# indicate that you have read the license and understand and accept it
+# fully.
+
+
+CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.type1])
+
+OBJS=type1.obj
+
+all : $(OBJS)
+ library [--.lib]freetype.olb $(OBJS)
+
+type1.obj : type1.c t1parse.c t1load.c t1objs.c t1driver.c t1gload.c t1afm.c
+
+# EOF
+$ eod
+$ close out
$ return
$!------------------------------------------------------------------------------
$!
@@ -295,6 +388,7 @@
$! Open data file with location of libraries
$!
$ open/read/end=end_lib/err=lib_err libdata VMSLIB.DAT
+$ open/append loptf libs.opt
$LIB_LOOP:
$ read/end=end_lib libdata libline
$ libline = f$edit(libline, "UNCOMMENT,COLLAPSE")
@@ -332,113 +426,89 @@
$ lqual = "/lib"
$ libtype = f$parse(libloc,,,"TYPE")
$ if f$locate("EXE",libtype) .lt. f$length(libtype) then lqual = "/share"
-$ write optf libloc , lqual
-$!
-$! Yet another special treatment for Xpm/X11
-$!
-$ if (libname .eqs. "XPM")
-$ then
-$ my_x11 = f$parse("''libsrc'xpm.h",,,"device") + -
- f$parse("''libsrc'xpm.h",,,"directory")
-$ x11_save = f$trnlnm("X11")
-$ define x11 'my_x11',decw$include
-$ endif
+$ write loptf libloc , lqual
$ goto LIB_LOOP
$END_LIB:
$ close libdata
+$ close loptf
$ libincs = libincs - ","
$ libdefs = libdefs - ","
$ return
-$!------------------------------------------------------------------------------$$!------------------------------------------------------------------------------
+$!------------------------------------------------------------------------------
$!
-$! Analyze Map for OpenVMS AXP
+$! Analyze Object files for OpenVMS AXP to extract Procedure and Data
+$! information to build a symbol vector for a shareable image
+$! All the "brains" of this logic was suggested by Hartmut Becker
+$! ([email protected]). All the bugs were introduced by me
+$! ([email protected]), so if you do have problem reports please do not
+$! bother Hartmut/HP, but get in touch with me
$!
-$ ANAL_MAP_AXP: Subroutine
+$ ANAL_OBJ_AXP: Subroutine
$ V = 'F$Verify(0)
-$ SET SYMBOL/GENERAL/SCOPE=(NOLOCAL,NOGLOBAL)
$ SAY := "WRITE_ SYS$OUTPUT"
$
$ IF F$SEARCH("''P1'") .EQS. ""
$ THEN
-$ SAY " ANAL_MAP_AXP: Error, no mapfile provided"
+$ SAY "ANAL_OBJ_AXP-E-NOSUCHFILE: Error, inputfile ''p1' not available"
$ goto exit_aa
$ ENDIF
$ IF "''P2'" .EQS. ""
$ THEN
-$ SAY " ANALYZE_MAP_AXP: Error, no output file provided"
+$ SAY "ANAL_OBJ_AXP: Error, no output file provided"
$ goto exit_aa
$ ENDIF
$
-$ LINK_TMP = F$PARSE(P2,,,"DEVICE")+F$PARSE(P2,,,"DIRECTORY")+F$PARSE(P2,,,"NAME")+".TMP"
-$
-$ SAY " creating PSECT list in ''P2'"
-$ OPEN_/READ IN 'P1'
-$ OPEN_/WRITE OUT 'P2'
-$ WRITE_ OUT "!"
-$ WRITE_ OUT "! ### PSECT list extracted from ''P1'"
-$ WRITE_ OUT "!"
-$ LOOP_PSECT_SEARCH:
-$ READ_/END=EOF_PSECT IN REC
-$ if F$EXTRACT(0,5,REC) .nes. "$DATA" then goto LOOP_PSECT_SEARCH
-$ LAST = ""
-$ LOOP_PSECT:
-$ READ_/END=EOF_PSECT IN REC
-$ if F$EXTRACT(0,1,REC) .eqs. "$" .and. F$EXTRACT(0,5,REC) .nes. "$DATA" then goto EOF_PSECT
-$ if REC - "NOPIC,OVR,REL,GBL,NOSHR,NOEXE, WRT,NOVEC" .nes. REC
-$ then
-$ J = F$LOCATE(" ",REC)
-$ S = F$EXTRACT(0,J,REC)
-$ IF S .EQS. LAST THEN GOTO LOOP_PSECT
-$ WRITE_ OUT "symbol_vector = (" + S + " = PSECT)"
-$ P$_'S= 1
-$ LAST = S
-$ endif
-$ GOTO LOOP_PSECT
-$
-$ EOF_PSECT:
-$ CLOSE_ IN
-$ CLOSE_ OUT
+$ open/read in 'p1
+$ create a.tmp
+$ open/append atmp a.tmp
+$ loop:
+$ read/end=end_loop in line
+$ f= f$search(line)
+$ if f .eqs. ""
+$ then
+$ write sys$output "ANAL_OBJ_AXP-w-nosuchfile, ''line'"
+$ goto loop
+$ endif
+$ def/user sys$output nl:
+$ def/user sys$error nl:
+$ anal/obj/gsd 'f /out=x.tmp
+$ open/read xtmp x.tmp
+$ XLOOP:
+$ read/end=end_xloop xtmp xline
+$ xline = f$edit(xline,"compress")
+$ write atmp xline
+$ goto xloop
+$ END_XLOOP:
+$ close xtmp
+$ goto loop
+$ end_loop:
+$ close in
+$ close atmp
+$ if f$search("a.tmp") .eqs. "" -
+ then $ exit
+$ ! all global definitions
+$ search a.tmp "symbol:","EGSY$V_DEF 1","EGSY$V_NORM 1"/out=b.tmp
+$ ! all procedures
+$ search b.tmp "EGSY$V_NORM 1"/wind=(0,1) /out=c.tmp
+$ search c.tmp "symbol:"/out=d.tmp
+$ def/user sys$output nl:
+$ edito/edt/command=sys$input d.tmp
+sub/symbol: "/symbol_vector=(/whole
+sub/"/=procedure)/whole
+exit
+$ ! all data
+$ search b.tmp "EGSY$V_DEF 1"/wind=(0,1) /out=e.tmp
+$ search e.tmp "symbol:"/out=f.tmp
+$ def/user sys$output nl:
+$ edito/edt/command=sys$input f.tmp
+sub/symbol: "/symbol_vector=(/whole
+sub/"/=data)/whole
+exit
+$ sort/nodupl d.tmp,f.tmp 'p2'
+$ delete a.tmp;*,b.tmp;*,c.tmp;*,d.tmp;*,e.tmp;*,f.tmp;*
+$ if f$search("x.tmp") .nes. "" -
+ then $ delete x.tmp;*
$!
-$ OPEN_/READ IN 'P1'
-$ OPEN_/APPEND OUT 'P2'
-$ WRITE_ OUT "!"
-$ WRITE_ OUT "! ### Global definition list extracted from ''P1'"
-$ WRITE_ OUT "!"
-$ LOOP_DATA_SEARCH:
-$ READ_/END=EOF_DATA IN REC
-$ if f$locate("NOPIC,OVR,REL,GBL,NOSHR,NOEXE",rec) .eq. f$length(rec) -
- then goto LOOP_DATA_SEARCH
-$ s = f$element(0," ",rec)
-$! write_ out "symbol_vector = (" + s + " = DATA)"
-$ p$_'s' =1
-$ goto loop_data_search
-$ EOF_DATA:
-$ CLOSE_ IN
-$ CLOSE_ OUT
-$ SAY " appending list of UNIVERSAL procedures to ''P2'"
-$ SEARCH_/NOHIGH/WINDOW=(0,0) 'P1' " R-"/OUT='LINK_TMP
-$ OPEN_/READ IN 'LINK_TMP
-$ OPEN_/APPEND OUT 'P2'
-$ WRITE_ OUT "!"
-$ WRITE_ OUT "! ### UNIVERSAL procedures and global definitions extracted from ''P1'"
-$ WRITE_ OUT "!"
-$ LOOP_UNIVERSAL:
-$ READ_/END=EOF_UNIVERSAL IN REC
-$ data = 0
-$ J = F$LOCATE(" R-",REC)
-$ S = F$EXTRACT(J+3,F$length(rec),REC)
-$ IF (F$TYPE(P$_'S').EQS."").and.(data.ne.1)
-$ THEN
-$ WRITE_ OUT "symbol_vector = ("+S+" = PROCEDURE)"
-$ ELSE
-$ WRITE_ OUT "symbol_vector = ("+S+" = DATA)"
-$ ENDIF
-$ GOTO LOOP_UNIVERSAL
-$ EOF_UNIVERSAL:
-$ CLOSE_ IN
-$ CLOSE_ OUT
-$ if f$search("''LINK_TMP'") .nes. "" then DELETE_/NOLOG/NOCONFIRM 'LINK_TMP';*
-$
$ EXIT_AA:
$ if V then set verify
$ endsubroutine