summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2017-04-18 16:07:18 -0700
committerH. Peter Anvin <hpa@zytor.com>2017-04-18 16:08:54 -0700
commitc4d75ddcbfb9093cfec7a5e0623f4a4ece3a14d3 (patch)
tree6138fc70ea706e1345c934cd42c486ee872466c1
parente558dfd2498f581125b14a2e7abbac27fe5e7515 (diff)
parentb68edcac72dc490bfba50bc144c0c6cce8c17b25 (diff)
downloadnasm-c4d75ddcbfb9093cfec7a5e0623f4a4ece3a14d3.tar.gz
Merge branch 'master' into elf
Resolved Conflicts: aclocal.m4 output/outelf.c Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r--Makefile.in422
-rw-r--r--Mkfiles/README41
-rw-r--r--Mkfiles/msvc.mak1075
-rw-r--r--Mkfiles/netware.mak362
-rw-r--r--Mkfiles/openwcom.mak401
-rw-r--r--Mkfiles/owlinux.mak599
-rw-r--r--aclocal.m419
-rw-r--r--asm/assemble.c71
-rw-r--r--asm/directiv.c6
-rw-r--r--asm/directiv.dat12
-rwxr-xr-xasm/directiv.pl186
-rw-r--r--asm/float.c4
-rw-r--r--asm/nasm.c34
-rw-r--r--asm/parser.c83
-rwxr-xr-xasm/pptok.pl4
-rw-r--r--asm/pragma.c4
-rwxr-xr-xasm/tokhash.pl6
-rw-r--r--config/msvc.h12
-rw-r--r--configure.ac121
-rw-r--r--doc/Makefile.in89
-rw-r--r--doc/afmmetrics.ph102
-rwxr-xr-xdoc/afmmetrics.pl132
-rw-r--r--doc/changes.src101
-rw-r--r--doc/findfont.ph183
-rwxr-xr-xdoc/genps.pl205
-rw-r--r--doc/head.ps10
-rw-r--r--doc/inslist.pl38
-rw-r--r--doc/local.css1
-rw-r--r--doc/makedocs.bat255
-rw-r--r--doc/metrics/pagd8a.ph232
-rw-r--r--doc/metrics/pagdo8a.ph232
-rw-r--r--doc/metrics/pagk8a.ph229
-rw-r--r--doc/metrics/pagko8a.ph229
-rw-r--r--doc/metrics/pbkd8a.ph120
-rw-r--r--doc/metrics/pbkdi8a.ph120
-rw-r--r--doc/metrics/pbkl8a.ph116
-rw-r--r--doc/metrics/pbkli8a.ph118
-rw-r--r--doc/metrics/pcrb8a.ph82
-rw-r--r--doc/metrics/pcrbo8a.ph82
-rw-r--r--doc/metrics/pcrr8a.ph82
-rw-r--r--doc/metrics/pcrro8a.ph82
-rw-r--r--doc/metrics/phvb8a.ph231
-rw-r--r--doc/metrics/phvb8an.ph230
-rw-r--r--doc/metrics/phvbo8a.ph231
-rw-r--r--doc/metrics/phvbo8an.ph230
-rw-r--r--doc/metrics/phvl8a.ph137
-rw-r--r--doc/metrics/phvlo8a.ph137
-rw-r--r--doc/metrics/phvr8a.ph246
-rw-r--r--doc/metrics/phvr8an.ph245
-rw-r--r--doc/metrics/phvro8a.ph246
-rw-r--r--doc/metrics/phvro8an.ph245
-rw-r--r--doc/metrics/pncb8a.ph178
-rw-r--r--doc/metrics/pncbi8a.ph248
-rw-r--r--doc/metrics/pncr8a.ph213
-rw-r--r--doc/metrics/pncri8a.ph216
-rw-r--r--doc/metrics/pplb8a.ph139
-rw-r--r--doc/metrics/pplbi8a.ph139
-rw-r--r--doc/metrics/pplr8a.ph143
-rw-r--r--doc/metrics/pplri8a.ph140
-rw-r--r--doc/metrics/psyr.ph69
-rw-r--r--doc/metrics/ptmb8a.ph257
-rw-r--r--doc/metrics/ptmbi8a.ph255
-rw-r--r--doc/metrics/ptmr8a.ph256
-rw-r--r--doc/metrics/ptmri8a.ph254
-rw-r--r--doc/metrics/putb8a.ph378
-rw-r--r--doc/metrics/putbi8a.ph392
-rw-r--r--doc/metrics/putr8a.ph382
-rw-r--r--doc/metrics/putri8a.ph387
-rw-r--r--doc/metrics/pzcmi8a.ph189
-rw-r--r--doc/metrics/pzdr.ph59
-rw-r--r--doc/nasmdoc.css125
-rw-r--r--doc/nasmdoc.src474
-rw-r--r--doc/nasmlogw.pngbin0 -> 1699 bytes
-rw-r--r--doc/psfonts.ph135
-rwxr-xr-xdoc/pspdf.pl44
-rw-r--r--doc/pswidth.ph7
-rw-r--r--doc/rdsrc.pl819
-rw-r--r--doc/ttfmetrics.ph63
-rw-r--r--include/compiler.h2
-rw-r--r--include/hashtbl.h2
-rw-r--r--include/nasm.h15
-rw-r--r--include/nasmlib.h9
-rw-r--r--include/perfhash.h52
-rw-r--r--include/rdoff.h131
-rwxr-xr-xmacros/macros.pl4
-rw-r--r--nasm.spec.in29
-rw-r--r--nasmlib/badenum.c43
-rw-r--r--nasmlib/file.c22
-rw-r--r--nasmlib/file.h70
-rw-r--r--nasmlib/perfhash.c55
-rwxr-xr-xnasmlib/perfhash.pl362
-rwxr-xr-xnsis/NASMMultiUser.nsh (renamed from nsis/MultiUser.nsh)948
-rw-r--r--nsis/getpearch.pl24
-rw-r--r--nsis/nasm.nsi59
-rw-r--r--nsis/x64.nsh54
-rw-r--r--output/nullout.c9
-rw-r--r--output/outaout.c2
-rw-r--r--output/outas86.c1
-rw-r--r--output/outbin.c12
-rw-r--r--output/outcoff.c11
-rw-r--r--output/outdbg.c195
-rw-r--r--output/outelf.c17
-rw-r--r--output/outieee.c11
-rw-r--r--output/outlib.h3
-rw-r--r--output/outmacho.c488
-rw-r--r--output/outobj.c13
-rw-r--r--output/outrdf2.c10
-rw-r--r--rdoff/Makefile.in118
-rw-r--r--rdoff/Mkfiles/Makefile.dj75
-rw-r--r--rdoff/Mkfiles/Makefile.emx76
-rw-r--r--rdoff/Mkfiles/Makefile.sc56
-rw-r--r--rdoff/Mkfiles/Makefile.unx75
-rw-r--r--rdoff/Mkfiles/README4
-rw-r--r--rdoff/collectn.c7
-rw-r--r--rdoff/hash.c4
-rw-r--r--rdoff/ldrdf.c93
-rw-r--r--rdoff/rdf2bin.c8
-rw-r--r--rdoff/rdfdump.c78
-rw-r--r--rdoff/rdflib.c21
-rw-r--r--rdoff/rdfload.c46
-rw-r--r--rdoff/rdfload.h4
-rw-r--r--rdoff/rdfutils.h165
-rw-r--r--rdoff/rdlar.c6
-rw-r--r--rdoff/rdlib.c26
-rw-r--r--rdoff/rdoff.c57
-rw-r--r--rdoff/rdx.c6
-rw-r--r--rdoff/segtab.c13
-rw-r--r--rdoff/symtab.c16
-rw-r--r--test/Makefile12
-rw-r--r--test/br3392363.asm4
-rw-r--r--test/br3392392.asm16
-rw-r--r--test/br3392396.asm5
-rw-r--r--test/hexfp.asm25
-rw-r--r--test/pragma.asm8
-rwxr-xr-xtools/release24
-rwxr-xr-xtools/syncfiles.pl35
-rw-r--r--version2
-rw-r--r--x86/insns-iflags.ph (renamed from x86/insns-iflags.pl)0
-rw-r--r--x86/insns.dat92
-rwxr-xr-xx86/insns.pl4
-rwxr-xr-xx86/regs.pl2
141 files changed, 4878 insertions, 13399 deletions
diff --git a/Makefile.in b/Makefile.in
index 11bdb30c..b377b79c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -50,7 +50,9 @@ XMLTO = @XMLTO@
MAKENSIS = makensis
MKDIR = mkdir
-RM = rm
+RM_F = rm -f
+RM_RF = rm -rf
+LN_S = @LN_S@
FIND = find
# Binary suffixes
@@ -63,7 +65,7 @@ ifeq ($(TRACE),1)
CFLAGS += -DNASM_TRACE
endif
-.SUFFIXES: .c .i .s .$(O) .$(A) .1 .txt .xml
+.SUFFIXES: .c .i .s .$(O) .$(A) $(X) .1 .txt .xml
.PHONY: all doc rdf install clean distclean cleaner spotless install_rdf test
.PHONY: install_doc everything install_everything strip perlreq dist tags TAGS
@@ -84,6 +86,10 @@ endif
.xml.1:
$(XMLTO) man --skip-validation $< 2>/dev/null
+# This rule is only used for rdoff, to allow common rules
+.$(O)$(X):
+ $(CC) $(LDFLAGS) -o $@ $< $(RDFLIB) $(NASMLIB) $(LIBS)
+
#-- Begin File Lists --#
NASM = asm/nasm.$(O)
NDISASM = disasm/ndisasm.$(O)
@@ -99,6 +105,7 @@ LIBOBJ = stdlib/snprintf.$(O) stdlib/vsnprintf.$(O) stdlib/strlcpy.$(O) \
nasmlib/rbtree.$(O) nasmlib/hashtbl.$(O) \
nasmlib/raa.$(O) nasmlib/saa.$(O) \
nasmlib/strlist.$(O) \
+ nasmlib/perfhash.$(O) nasmlib/badenum.$(O) \
common/common.$(O) \
x86/insnsa.$(O) x86/insnsb.$(O) x86/insnsd.$(O) x86/insnsn.$(O) \
x86/regs.$(O) x86/regvals.$(O) x86/regflags.$(O) x86/regdis.$(O) \
@@ -130,7 +137,7 @@ LIBOBJ = stdlib/snprintf.$(O) stdlib/vsnprintf.$(O) stdlib/strlcpy.$(O) \
disasm/disasm.$(O) disasm/sync.$(O)
SUBDIRS = stdlib nasmlib output asm disasm x86 common macros
-XSUBDIRS = test doc nsis
+XSUBDIRS = test doc nsis rdoff
#-- End File Lists --#
all: nasm$(X) ndisasm$(X) rdf
@@ -138,7 +145,7 @@ all: nasm$(X) ndisasm$(X) rdf
NASMLIB = libnasm.$(A)
$(NASMLIB): $(LIBOBJ)
- $(RM) -f $(NASMLIB)
+ $(RM_F) $(NASMLIB)
$(AR) cq $(NASMLIB) $(LIBOBJ)
$(RANLIB) $(NASMLIB)
@@ -148,11 +155,22 @@ nasm$(X): $(NASM) $(NASMLIB)
ndisasm$(X): $(NDISASM) $(NASMLIB)
$(CC) $(LDFLAGS) -o ndisasm$(X) $(NDISASM) $(NASMLIB) $(LIBS)
-# These source files are automagically generated from a single
-# instruction-table file by a Perl script. They're distributed,
-# though, so it isn't necessary to have Perl just to recompile NASM
-# from the distribution.
-INSDEP = x86/insns.dat x86/insns.pl
+#-- Begin Generated File Rules --#
+
+# These source files are automagically generated from data files using
+# Perl scripts. They're distributed, though, so it isn't necessary to
+# have Perl just to recompile NASM from the distribution.
+
+# Perl-generated source files
+PERLREQ = x86/insnsb.c x86/insnsa.c x86/insnsd.c x86/insnsi.h x86/insnsn.c \
+ x86/regs.c x86/regs.h x86/regflags.c x86/regdis.c x86/regdis.h \
+ x86/regvals.c asm/tokhash.c asm/tokens.h asm/pptok.h asm/pptok.c \
+ x86/iflag.c x86/iflaggen.h \
+ macros/macros.c \
+ asm/pptok.ph asm/directbl.c asm/directiv.h \
+ version.h version.mac version.mak nsis/version.nsh
+
+INSDEP = x86/insns.dat x86/insns.pl x86/insns-iflags.ph
x86/iflag.c: $(INSDEP)
$(RUNPERL) $(srcdir)/x86/insns.pl -fc \
@@ -244,24 +262,60 @@ asm/pptok.ph: asm/pptok.dat asm/pptok.pl perllib/phash.ph
$(srcdir)/asm/pptok.dat asm/pptok.ph
# Directives hash
-asm/directiv.h: asm/directiv.dat asm/directiv.pl perllib/phash.ph
- $(RUNPERL) $(srcdir)/asm/directiv.pl h \
+asm/directiv.h: asm/directiv.dat nasmlib/perfhash.pl perllib/phash.ph
+ $(RUNPERL) $(srcdir)/nasmlib/perfhash.pl h \
$(srcdir)/asm/directiv.dat asm/directiv.h
-asm/directbl.c: asm/directiv.dat asm/directiv.pl perllib/phash.ph
- $(RUNPERL) $(srcdir)/asm/directiv.pl c \
+asm/directbl.c: asm/directiv.dat nasmlib/perfhash.pl perllib/phash.ph
+ $(RUNPERL) $(srcdir)/nasmlib/perfhash.pl c \
$(srcdir)/asm/directiv.dat asm/directbl.c
-# This target generates all files that require perl.
-# This allows easier generation of distribution (see dist target).
-PERLREQ = x86/insnsb.c x86/insnsa.c x86/insnsd.c x86/insnsi.h x86/insnsn.c \
- x86/regs.c x86/regs.h x86/regflags.c x86/regdis.c x86/regdis.h \
- x86/regvals.c asm/tokhash.c asm/tokens.h asm/pptok.h asm/pptok.c \
- x86/iflag.c x86/iflaggen.h \
- macros/macros.c \
- asm/pptok.ph asm/directbl.c asm/directiv.h \
- version.h version.mac version.mak nsis/version.nsh
+#-- End Generated File Rules --#
+
perlreq: $(PERLREQ)
+#-- Begin RDOFF Shared Rules --#
+
+RDFLIBOBJ = rdoff/rdoff.$(O) rdoff/rdfload.$(O) rdoff/symtab.$(O) \
+ rdoff/collectn.$(O) rdoff/rdlib.$(O) rdoff/segtab.$(O) \
+ rdoff/hash.$(O)
+
+RDFPROGS = rdoff/rdfdump$(X) rdoff/ldrdf$(X) rdoff/rdx$(X) rdoff/rdflib$(X) \
+ rdoff/rdf2bin$(X)
+RDF2BINLINKS = rdoff/rdf2com$(X) rdoff/rdf2ith$(X) \
+ rdoff/rdf2ihx$(X) rdoff/rdf2srec$(X)
+
+RDFLIB = rdoff/librdoff.$(A)
+RDFLIBS = $(RDFLIB) $(NASMLIB)
+
+rdoff/rdfdump$(X): rdoff/rdfdump.$(O) $(RDFLIBS)
+rdoff/ldrdf$(X): rdoff/ldrdf.$(O) $(RDFLIBS)
+rdoff/rdx$(X): rdoff/rdx.$(O) $(RDFLIBS)
+rdoff/rdflib$(X): rdoff/rdflib.$(O) $(RDFLIBS)
+rdoff/rdf2bin$(X): rdoff/rdf2bin.$(O) $(RDFLIBS)
+rdoff/rdf2com$(X): rdoff/rdf2bin$(X)
+ $(RM_F) rdoff/rdf2com$(X)
+ cd rdoff && $(LN_S) rdf2bin$(X) rdf2com$(X)
+rdoff/rdf2ith$(X): rdoff/rdf2bin$(X)
+ $(RM_F) rdoff/rdf2ith$(X)
+ cd rdoff && $(LN_S) rdf2bin$(X) rdf2ith$(X)
+rdoff/rdf2ihx$(X): rdoff/rdf2bin$(X)
+ $(RM_F) rdoff/rdf2ihx$(X)
+ cd rdoff && $(LN_S) rdf2bin$(X) rdf2ihx$(X)
+rdoff/rdf2srec$(X): rdoff/rdf2bin$(X)
+ $(RM_F) rdoff/rdf2srec$(X)
+ cd rdoff && $(LN_S) rdf2bin$(X) rdf2srec$(X)
+
+#-- End RDOFF Shared Rules --#
+
+rdf: $(RDFPROGS) $(RDF2BINLINKS)
+
+$(RDFLIB): $(RDFLIBOBJ)
+ $(RM_F) $(RDFLIB)
+ $(AR) cq $(RDFLIB) $(RDFLIBOBJ)
+ $(RANLIB) $(RDFLIB)
+
+#-- Begin NSIS Rules --#
+
# NSIS is not built except by explicit request, as it only applies to
# Windows platforms
nsis/arch.nsh: nsis/getpearch.pl nasm$(X)
@@ -271,7 +325,9 @@ nsis/arch.nsh: nsis/getpearch.pl nasm$(X)
# The use of redirection here keeps makensis from moving the cwd to the
# source directory.
nsis: nsis/nasm.nsi nsis/arch.nsh nsis/version.nsh
- $(MAKENSIS) -Dsrcdir="$(srcdir)" -Dobjdir="$(objdir)" - < "$<"
+ $(MAKENSIS) -Dsrcdir="$(srcdir)" -Dobjdir="$(objdir)" - < nsis/nasm.nsi
+
+#-- End NSIS Rules --#
# Generated manpages, also pregenerated for distribution
manpages: nasm.1 ndisasm.1
@@ -285,53 +341,59 @@ install: nasm$(X) ndisasm$(X)
$(INSTALL_DATA) $(srcdir)/ndisasm.1 $(INSTALLROOT)$(mandir)/man1/ndisasm.1
clean:
- for d in . $(SUBDIRS); do \
- $(RM) -f "$$d"/*.$(O) "$$d"/*.s "$$d"/*.i "$$d"/*.$(A) ; \
+ for d in . $(SUBDIRS) $(XSUBDIRS); do \
+ $(RM_F) "$$d"/*.$(O) "$$d"/*.s "$$d"/*.i "$$d"/*.$(A) ; \
done
- $(RM) -f nasm$(X) ndisasm$(X)
- $(RM) -f nasm-*-installer-*.exe
- $(RM) -f tags TAGS
- $(RM) -f nsis/arch.nsh
- cd rdoff && $(MAKE) clean
+ $(RM_F) nasm$(X) ndisasm$(X)
+ $(RM_F) nasm-*-installer-*.exe
+ $(RM_F) tags TAGS
+ $(RM_F) nsis/arch.nsh
+ $(RM_F) $(RDFPROGS) $(RDF2BINLINKS)
distclean: clean
- $(RM) -f config.log config.status config/config.h
- $(RM) -f Makefile
+ $(RM_F) config.log config.status config/config.h
+ $(RM_F) Makefile
for d in . $(SUBDIRS) $(XSUBDIRS); do \
- $(RM) -f "$$d"/*~ "$$d"/*.bak "$$d"/*.lst "$$d"/*.bin ; \
+ $(RM_F) "$$d"/*~ "$$d"/*.bak "$$d"/*.lst "$$d"/*.bin ; \
done
- $(RM) -f test/*.$(O)
- $(RM) -rf autom4te*.cache
- cd rdoff && $(MAKE) distclean
+ $(RM_F) test/*.$(O)
+ $(RM_RF) autom4te*.cache
cleaner: clean
- $(RM) -f $(PERLREQ) *.1 nasm.spec
+ $(RM_F) $(PERLREQ) *.1 nasm.spec
cd doc && $(MAKE) clean
spotless: distclean cleaner
- $(RM) -f doc/Makefile
+ $(RM_F) doc/Makefile
strip:
$(STRIP) --strip-unneeded nasm$(X) ndisasm$(X)
-rdf: $(NASMLIB)
- cd rdoff && $(MAKE) all
-
TAGS:
- $(RM) -f TAGS
+ $(RM_F) TAGS
$(FIND) . -name '*.[hcS]' -print | xargs etags -a
tags:
- $(RM) -f tags
+ $(RM_F) tags
$(FIND) . -name '*.[hcS]' -print | xargs ctags -a
cscope:
- $(RM) -f cscope.out cscope.files
+ $(RM_F) cscope.out cscope.files
$(FIND) . -name '*.[hcS]' -print > cscope.files
cscope -b -f cscope.out
-rdf_install install_rdf:
- cd rdoff && $(MAKE) install
+rdf_install install_rdf install_rdoff:
+ $(MKDIR) -p $(INSTALLROOT)$(bindir)
+ for f in $(RDFPROGS); do \
+ $(INSTALL_PROGRAM) "$$f" '$(INSTALLROOT)$(bindir)'/ ; \
+ done
+ cd '$(INSTALLROOT)$(bindir)' && \
+ for f in $(RDF2BINLINKS); do \
+ bn=`basename "$$f"` && $(RM_F) "$$bn" && \
+ $(LN_S) rdf2bin$(X) "$$bn" ; \
+ done
+ $(MKDIR) -p $(INSTALLROOT)$(mandir)/man1
+ $(INSTALL_DATA) $(srcdir)/rdoff/*.1 $(INSTALLROOT)$(mandir)/man1/
doc:
cd doc && $(MAKE) all
@@ -348,7 +410,7 @@ dist:
$(MAKE) spotless perlreq manpages spec
autoheader
autoconf
- $(RM) -rf ./autom4te*.cache
+ $(RM_RF) ./autom4te*.cache
tar: dist
tar -cvj --exclude CVS -C .. -f ../nasm-`cat version`-`date +%Y%m%d`.tar.bz2 `basename \`pwd\``
@@ -375,7 +437,7 @@ alldeps: perlreq tools/syncfiles.pl tools/mkdep.pl
$(RUNPERL) tools/syncfiles.pl Makefile.in Mkfiles/*.mak
$(RUNPERL) tools/mkdep.pl -M Makefile.in Mkfiles/*.mak -- \
. include asm common config disasm macros nasmlib \
- output stdlib x86
+ output stdlib x86 rdoff
./config.status
#-- Magic hints to mkdep.pl --#
@@ -387,19 +449,18 @@ asm/assemble.$(O): asm/assemble.c asm/assemble.h asm/directiv.h \
config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
include/disp8.h include/error.h include/iflag.h include/insns.h \
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/directbl.$(O): asm/directbl.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/hashtbl.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
+ include/perfhash.h include/strlist.h include/tables.h x86/iflaggen.h \
x86/insnsi.h x86/regs.h
+asm/directbl.$(O): asm/directbl.c asm/directiv.h config/config.h \
+ config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
+ include/nasmint.h include/nasmlib.h include/perfhash.h
asm/directiv.$(O): asm/directiv.c asm/assemble.h asm/directiv.h asm/eval.h \
asm/float.h asm/listing.h asm/pptok.h asm/preproc.h asm/stdscan.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/error.h include/iflag.h include/labels.h \
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h output/outform.h x86/iflaggen.h \
- x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h output/outform.h \
+ x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/error.$(O): asm/error.c config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasmint.h \
include/nasmlib.h
@@ -407,47 +468,49 @@ asm/eval.$(O): asm/eval.c asm/assemble.h asm/directiv.h asm/eval.h \
asm/float.h asm/pptok.h asm/preproc.h config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/error.h \
include/iflag.h include/labels.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h \
+ include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/exprdump.$(O): asm/exprdump.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h \
+ x86/insnsi.h x86/regs.h
asm/exprlib.$(O): asm/exprlib.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h \
+ x86/insnsi.h x86/regs.h
asm/float.$(O): asm/float.c asm/directiv.h asm/float.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
asm/labels.$(O): asm/labels.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/error.h include/hashtbl.h include/labels.h \
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/insnsi.h \
+ x86/regs.h
asm/listing.$(O): asm/listing.c asm/directiv.h asm/listing.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
asm/nasm.$(O): asm/nasm.c asm/assemble.h asm/directiv.h asm/eval.h \
asm/float.h asm/listing.h asm/parser.h asm/pptok.h asm/preproc.h \
asm/stdscan.h asm/tokens.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/iflag.h \
include/insns.h include/labels.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/raa.h include/saa.h \
- include/strlist.h include/tables.h include/ver.h output/outform.h \
- x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/raa.h \
+ include/saa.h include/strlist.h include/tables.h include/ver.h \
+ output/outform.h x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/parser.$(O): asm/parser.c asm/assemble.h asm/directiv.h asm/eval.h \
asm/float.h asm/parser.h asm/pptok.h asm/preproc.h asm/stdscan.h \
asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/error.h include/iflag.h include/insns.h \
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/iflaggen.h \
+ x86/insnsi.h x86/regs.h
asm/pptok.$(O): asm/pptok.c asm/pptok.h asm/preproc.h config/config.h \
config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
include/hashtbl.h include/nasmint.h include/nasmlib.h
@@ -455,73 +518,78 @@ asm/pragma.$(O): asm/pragma.c asm/assemble.h asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/iflag.h \
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/iflaggen.h \
+ x86/insnsi.h x86/regs.h
asm/preproc-nop.$(O): asm/preproc-nop.c asm/directiv.h asm/listing.h \
asm/pptok.h asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
asm/preproc.$(O): asm/preproc.c asm/directiv.h asm/eval.h asm/listing.h \
asm/pptok.h asm/preproc.h asm/quote.h asm/stdscan.h asm/tokens.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/error.h include/hashtbl.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
asm/quote.$(O): asm/quote.c asm/quote.h config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
include/nasmlib.h
asm/rdstrnum.$(O): asm/rdstrnum.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h \
+ x86/insnsi.h x86/regs.h
asm/segalloc.$(O): asm/segalloc.c asm/directiv.h asm/pptok.h asm/preproc.h \
asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/stdscan.$(O): asm/stdscan.c asm/directiv.h asm/pptok.h asm/preproc.h \
asm/quote.h asm/stdscan.h asm/tokens.h config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/error.h \
include/iflag.h include/insns.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h \
+ include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/strfunc.$(O): asm/strfunc.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h \
+ x86/insnsi.h x86/regs.h
asm/tokhash.$(O): asm/tokhash.c asm/directiv.h asm/pptok.h asm/preproc.h \
asm/stdscan.h asm/tokens.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/hashtbl.h include/iflag.h \
include/insns.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/iflaggen.h \
- x86/insnsi.h x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h \
+ x86/iflaggen.h x86/insnsi.h x86/regs.h
common/common.$(O): common/common.c asm/directiv.h asm/pptok.h asm/preproc.h \
asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
disasm/disasm.$(O): disasm/disasm.c asm/directiv.h asm/pptok.h asm/preproc.h \
asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
disasm/disasm.h disasm/sync.h include/compiler.h include/disp8.h \
include/iflag.h include/insns.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/iflaggen.h x86/insnsi.h x86/regdis.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h \
+ include/tables.h x86/iflaggen.h x86/insnsi.h x86/regdis.h x86/regs.h
disasm/ndisasm.$(O): disasm/ndisasm.c asm/directiv.h asm/pptok.h \
asm/preproc.h asm/tokens.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h disasm/disasm.h disasm/sync.h include/compiler.h \
include/error.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h include/ver.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h include/ver.h x86/iflaggen.h \
+ x86/insnsi.h x86/regs.h
disasm/sync.$(O): disasm/sync.c config/config.h config/msvc.h \
config/unknown.h config/watcom.h disasm/sync.h include/compiler.h \
include/nasmint.h include/nasmlib.h
macros/macros.$(O): macros/macros.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/hashtbl.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outform.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h \
+ include/tables.h output/outform.h x86/insnsi.h x86/regs.h
+nasmlib/badenum.$(O): nasmlib/badenum.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
+ include/nasmlib.h
nasmlib/bsi.$(O): nasmlib/bsi.c config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
include/nasmlib.h
@@ -537,8 +605,8 @@ nasmlib/filename.$(O): nasmlib/filename.c config/config.h config/msvc.h \
nasmlib/hashtbl.$(O): nasmlib/hashtbl.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/hashtbl.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
nasmlib/ilog2.$(O): nasmlib/ilog2.c config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
include/nasmlib.h
@@ -551,6 +619,9 @@ nasmlib/md5c.$(O): nasmlib/md5c.c config/config.h config/msvc.h \
nasmlib/mmap.$(O): nasmlib/mmap.c config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/error.h \
include/nasmint.h include/nasmlib.h nasmlib/file.h
+nasmlib/perfhash.$(O): nasmlib/perfhash.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/hashtbl.h \
+ include/nasmint.h include/nasmlib.h include/perfhash.h
nasmlib/raa.$(O): nasmlib/raa.c config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
include/nasmlib.h include/raa.h
@@ -560,8 +631,8 @@ nasmlib/rbtree.$(O): nasmlib/rbtree.c config/config.h config/msvc.h \
nasmlib/readnum.$(O): nasmlib/readnum.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
nasmlib/realpath.$(O): nasmlib/realpath.c config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
include/nasmlib.h
@@ -585,93 +656,142 @@ output/codeview.$(O): output/codeview.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/hashtbl.h \
include/md5.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/saa.h include/strlist.h include/tables.h \
- output/outlib.h output/pecoff.h version.h x86/insnsi.h x86/regs.h
+ include/opflags.h include/perfhash.h include/saa.h include/strlist.h \
+ include/tables.h output/outlib.h output/pecoff.h version.h x86/insnsi.h \
+ x86/regs.h
output/legacy.$(O): output/legacy.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h \
+ include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
output/nulldbg.$(O): output/nulldbg.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
output/nullout.$(O): output/nullout.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
output/outaout.$(O): output/outaout.c asm/directiv.h asm/eval.h asm/pptok.h \
asm/preproc.h asm/stdscan.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/raa.h include/saa.h include/strlist.h include/tables.h \
+ output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
output/outas86.$(O): output/outas86.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/raa.h include/saa.h include/strlist.h include/tables.h \
+ output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
output/outbin.$(O): output/outbin.c asm/directiv.h asm/eval.h asm/pptok.h \
asm/preproc.h asm/stdscan.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/labels.h \
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/saa.h include/strlist.h include/tables.h \
+ output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
output/outcoff.$(O): output/outcoff.c asm/directiv.h asm/eval.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h output/pecoff.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/raa.h include/saa.h include/strlist.h include/tables.h \
+ output/outform.h output/outlib.h output/pecoff.h x86/insnsi.h x86/regs.h
output/outdbg.$(O): output/outdbg.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
+ asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
+ include/compiler.h include/error.h include/iflag.h include/insns.h \
+ include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
+ include/perfhash.h include/strlist.h include/tables.h output/outform.h \
+ output/outlib.h x86/iflaggen.h x86/insnsi.h x86/regs.h
output/outelf.$(O): output/outelf.c asm/directiv.h asm/eval.h asm/pptok.h \
asm/preproc.h asm/stdscan.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/rbtree.h include/saa.h include/strlist.h include/tables.h \
- include/ver.h output/dwarf.h output/elf.h output/outelf.h output/outform.h \
- output/outlib.h output/stabs.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/raa.h include/rbtree.h include/saa.h include/strlist.h \
+ include/tables.h include/ver.h output/dwarf.h output/elf.h output/outelf.h \
+ output/outform.h output/outlib.h output/stabs.h x86/insnsi.h x86/regs.h
output/outform.$(O): output/outform.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outform.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h \
+ include/tables.h output/outform.h x86/insnsi.h x86/regs.h
output/outieee.$(O): output/outieee.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h include/ver.h output/outform.h output/outlib.h \
- x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h include/ver.h output/outform.h \
+ output/outlib.h x86/insnsi.h x86/regs.h
output/outlib.$(O): output/outlib.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h \
+ include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
output/outmacho.$(O): output/outmacho.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/rbtree.h include/saa.h include/strlist.h include/tables.h \
- output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
+ config/watcom.h include/compiler.h include/error.h include/labels.h \
+ include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
+ include/perfhash.h include/raa.h include/rbtree.h include/saa.h \
+ include/strlist.h include/tables.h output/outform.h output/outlib.h \
+ x86/insnsi.h x86/regs.h
output/outobj.$(O): output/outobj.c asm/directiv.h asm/eval.h asm/pptok.h \
asm/preproc.h asm/stdscan.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h include/ver.h output/outform.h output/outlib.h \
- x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h include/ver.h output/outform.h \
+ output/outlib.h x86/insnsi.h x86/regs.h
output/outrdf2.$(O): output/outrdf2.c asm/directiv.h asm/pptok.h \
asm/preproc.h config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/rdoff.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/rdoff.h include/saa.h include/strlist.h include/tables.h \
+ output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
+rdoff/collectn.$(O): rdoff/collectn.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
+ rdoff/collectn.h
+rdoff/hash.$(O): rdoff/hash.c config/config.h config/msvc.h config/unknown.h \
+ config/watcom.h include/compiler.h include/nasmint.h rdoff/hash.h
+rdoff/iochk.$(O): rdoff/iochk.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
+ include/nasmlib.h
+rdoff/ldrdf.$(O): rdoff/ldrdf.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/error.h \
+ include/nasmint.h include/nasmlib.h include/rdoff.h rdoff/collectn.h \
+ rdoff/ldsegs.h rdoff/rdfutils.h rdoff/rdlib.h rdoff/segtab.h rdoff/symtab.h
+rdoff/rdf2bin.$(O): rdoff/rdf2bin.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/error.h \
+ include/nasmint.h include/nasmlib.h include/rdoff.h rdoff/rdfload.h \
+ rdoff/rdfutils.h
+rdoff/rdfdump.$(O): rdoff/rdfdump.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/error.h \
+ include/nasmint.h include/nasmlib.h include/rdoff.h rdoff/rdfutils.h
+rdoff/rdflib.$(O): rdoff/rdflib.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/error.h \
+ include/nasmint.h include/nasmlib.h include/rdoff.h rdoff/rdfutils.h
+rdoff/rdfload.$(O): rdoff/rdfload.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/error.h \
+ include/nasmint.h include/nasmlib.h include/rdoff.h rdoff/collectn.h \
+ rdoff/rdfload.h rdoff/rdfutils.h rdoff/symtab.h
+rdoff/rdlar.$(O): rdoff/rdlar.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
+ rdoff/rdlar.h
+rdoff/rdlib.$(O): rdoff/rdlib.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/error.h \
+ include/nasmint.h include/nasmlib.h include/rdoff.h rdoff/rdfutils.h \
+ rdoff/rdlar.h rdoff/rdlib.h
+rdoff/rdoff.$(O): rdoff/rdoff.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/error.h \
+ include/nasmint.h include/nasmlib.h include/rdoff.h rdoff/rdfutils.h
+rdoff/rdx.$(O): rdoff/rdx.c config/config.h config/msvc.h config/unknown.h \
+ config/watcom.h include/compiler.h include/error.h include/nasmint.h \
+ include/nasmlib.h include/rdoff.h rdoff/rdfload.h rdoff/rdfutils.h \
+ rdoff/symtab.h
+rdoff/segtab.$(O): rdoff/segtab.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
+ rdoff/segtab.h
+rdoff/symtab.$(O): rdoff/symtab.c config/config.h config/msvc.h \
+ config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
+ rdoff/hash.h rdoff/symtab.h
stdlib/snprintf.$(O): stdlib/snprintf.c config/config.h config/msvc.h \
config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
include/nasmlib.h
@@ -685,26 +805,26 @@ stdlib/vsnprintf.$(O): stdlib/vsnprintf.c config/config.h config/msvc.h \
x86/disp8.$(O): x86/disp8.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/disp8.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h \
+ include/tables.h x86/insnsi.h x86/regs.h
x86/iflag.$(O): x86/iflag.c config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/iflag.h include/nasmint.h \
x86/iflaggen.h
x86/insnsa.$(O): x86/insnsa.c asm/directiv.h asm/pptok.h asm/preproc.h \
asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
x86/insnsb.$(O): x86/insnsb.c asm/directiv.h asm/pptok.h asm/preproc.h \
asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
x86/insnsd.$(O): x86/insnsd.c asm/directiv.h asm/pptok.h asm/preproc.h \
asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h \
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
x86/insnsn.$(O): x86/insnsn.c config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/nasmint.h include/tables.h \
x86/insnsi.h
@@ -712,8 +832,8 @@ x86/regdis.$(O): x86/regdis.c x86/regdis.h x86/regs.h
x86/regflags.$(O): x86/regflags.c asm/directiv.h asm/pptok.h asm/preproc.h \
config/config.h config/msvc.h config/unknown.h config/watcom.h \
include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h \
+ x86/insnsi.h x86/regs.h
x86/regs.$(O): x86/regs.c config/config.h config/msvc.h config/unknown.h \
config/watcom.h include/compiler.h include/nasmint.h include/tables.h \
x86/insnsi.h
diff --git a/Mkfiles/README b/Mkfiles/README
index 6bab32c8..4cca802e 100644
--- a/Mkfiles/README
+++ b/Mkfiles/README
@@ -5,38 +5,33 @@ The Makefiles are:
Filename Target Compiler Tested with
---------------------------------------------------------------------------
- msvc.mak Win32 MS Visual C++ Visual C++ Express 2005
+ msvc.mak Win32 MS Visual C++ Visual Visual Studio 2013-2017
For building on a Win32 host using Microsoft Visual C++.
- Usage: nmake /f Mkfiles/msvc.mak
+ Usage: nmake /f Mkfiles\msvc.mak
+ If the following tools are installed, the full installer package can
+ be built:
+ 1. Perl (5.6 or later)
+ 2. Nullsoft Scriptable Installer System (makensis)
+ 3. Ghostscript (ps2pdf) or Acrobat Distriller (acrodist)
+ 4. The Adobe Source Sans Pro and Source Code Pro fonts
+ 5. The Perl module Font::TTF
- Filename Target Compiler Tested with
- ---------------------------------------------------------------------------
- openwcom.mak DOS,Win32,OS/2 OpenWatcom C OpenWatcom 1.7 (Win32)
+ The tools need to be in your current path. To build the
+ installer package, run:
- For building on a DOS, OS/2 or Win32 host using OpenWatcom.
- OpenWatcom can be downloaded from http://www.openwatcom.org/.
-
- Usage: wmake /f Mkfiles/<filename> <target>
-
- <target> is dos, win32, or os2.
+ nmake /f Mkfiles\msvc.mak nsis
Filename Target Compiler Tested with
---------------------------------------------------------------------------
- owlinux.mak DOS,Win32,OS/2 OpenWatcom C OpenWatcom 1.6rc2 (Linux)
-
- For building on a Linux host using OpenWatcom for Linux.
-
- Usage: make -f Mkfiles/<filename> <target>
-
- <target> is dos, win32, or os2.
+ openwcom.mak DOS,Win32,OS/2 OpenWatcom C OpenWatcom 1.7 (Win32)
+ Linux (386) OpenWatcom 1.9 (Linux)
- Filename Target Compiler Tested with
- ---------------------------------------------------------------------------
- netware.mak NetWare Cross-GCC Cross-GCC 3.2.3 (Linux, Win32)
+ For building on a DOS, OS/2, Win32 or Linux host using OpenWatcom.
+ OpenWatcom can be downloaded from http://www.openwatcom.org/.
- For building on a Linux or Win32 host using Cross-GCC for Linux/Win32.
+ Usage: wmake /f Mkfiles/openwcom.mak <target>
- Usage: make -f Mkfiles/netware.mak
+ <target> is dos, win32, os2, or linux386.
diff --git a/Mkfiles/msvc.mak b/Mkfiles/msvc.mak
index b62f5db7..d43e76e1 100644
--- a/Mkfiles/msvc.mak
+++ b/Mkfiles/msvc.mak
@@ -11,8 +11,9 @@
top_srcdir = .
srcdir = .
+objdir = .
VPATH = .
-prefix = C:\Program Files\NASM
+prefix = "C:\Program Files\NASM"
exec_prefix = $(prefix)
bindir = $(prefix)/bin
mandir = $(prefix)/man
@@ -26,7 +27,6 @@ LDFLAGS = /DEBUG /OPT:REF /OPT:ICF # (latter two undoes /DEBUG harm)
!ENDIF
CC = cl
-LD = link
AR = lib
CFLAGS = $(CFLAGS) /W2
BUILD_CFLAGS = $(CFLAGS)
@@ -35,207 +35,291 @@ INTERNAL_CFLAGS = /I$(srcdir) /I. \
/I$(srcdir)/x86 /I./x86 \
/I$(srcdir)/asm /I./asm \
/I$(srcdir)/disasm /I./disasm \
- /I$(srcdir)/output /I./output \
+ /I$(srcdir)/output /I./output
ALL_CFLAGS = $(BUILD_CFLAGS) $(INTERNAL_CFLAGS)
-LDFLAGS = $(LDFLAGS) /SUBSYSTEM:CONSOLE /RELEASE
+LDFLAGS = /link $(LINKFLAGS) /SUBSYSTEM:CONSOLE /RELEASE
LIBS =
-PERL = perl -I$(srcdir)/perllib -I$(srcdir)
+
+PERL = perl
+PERLFLAGS = -I$(srcdir)/perllib -I$(srcdir)
+RUNPERL = $(PERL) $(PERLFLAGS)
+
+MAKENSIS = makensis
+
+RM_F = del /f
+LN_S = copy
# Binary suffixes
O = obj
A = lib
X = .exe
-
-.SUFFIXES: .c .i .s .$(O) .$(A) .1 .man
+.SUFFIXES: .c .i .s .$(O) .$(A) .exe .1 .man
.c.obj:
$(CC) /c $(ALL_CFLAGS) /Fo$@ $<
+# This rule is only used for rdoff
+.obj.exe:
+ $(CC) $(ALL_CFLAGS) /Fe$@ $< $(LDFLAGS) $(RDFLIB) $(NASMLIB) $(LIBS)
+
#-- Begin File Lists --#
# Edit in Makefile.in, not here!
-NASM = asm/nasm.$(O)
-NDISASM = disasm/ndisasm.$(O)
-
-LIBOBJ = stdlib/snprintf.$(O) stdlib/vsnprintf.$(O) stdlib/strlcpy.$(O) \
- stdlib/strnlen.$(O) \
- nasmlib/ver.$(O) \
- nasmlib/crc64.$(O) nasmlib/malloc.$(O) \
- nasmlib/md5c.$(O) nasmlib/string.$(O) \
- nasmlib/file.$(O) nasmlib/mmap.$(O) nasmlib/ilog2.$(O) \
- nasmlib/realpath.$(O) nasmlib/filename.$(O) nasmlib/srcfile.$(O) \
- nasmlib/zerobuf.$(O) nasmlib/readnum.$(O) nasmlib/bsi.$(O) \
- nasmlib/rbtree.$(O) nasmlib/hashtbl.$(O) \
- nasmlib/raa.$(O) nasmlib/saa.$(O) \
- nasmlib/strlist.$(O) \
- common/common.$(O) \
- x86/insnsa.$(O) x86/insnsb.$(O) x86/insnsd.$(O) x86/insnsn.$(O) \
- x86/regs.$(O) x86/regvals.$(O) x86/regflags.$(O) x86/regdis.$(O) \
- x86/disp8.$(O) x86/iflag.$(O) \
+NASM = asm\nasm.$(O)
+NDISASM = disasm\ndisasm.$(O)
+
+LIBOBJ = stdlib\snprintf.$(O) stdlib\vsnprintf.$(O) stdlib\strlcpy.$(O) \
+ stdlib\strnlen.$(O) \
+ nasmlib\ver.$(O) \
+ nasmlib\crc64.$(O) nasmlib\malloc.$(O) \
+ nasmlib\md5c.$(O) nasmlib\string.$(O) \
+ nasmlib\file.$(O) nasmlib\mmap.$(O) nasmlib\ilog2.$(O) \
+ nasmlib\realpath.$(O) nasmlib\filename.$(O) nasmlib\srcfile.$(O) \
+ nasmlib\zerobuf.$(O) nasmlib\readnum.$(O) nasmlib\bsi.$(O) \
+ nasmlib\rbtree.$(O) nasmlib\hashtbl.$(O) \
+ nasmlib\raa.$(O) nasmlib\saa.$(O) \
+ nasmlib\strlist.$(O) \
+ nasmlib\perfhash.$(O) nasmlib\badenum.$(O) \
+ common\common.$(O) \
+ x86\insnsa.$(O) x86\insnsb.$(O) x86\insnsd.$(O) x86\insnsn.$(O) \
+ x86\regs.$(O) x86\regvals.$(O) x86\regflags.$(O) x86\regdis.$(O) \
+ x86\disp8.$(O) x86\iflag.$(O) \
\
- asm/error.$(O) \
- asm/float.$(O) \
- asm/directiv.$(O) asm/directbl.$(O) \
- asm/pragma.$(O) \
- asm/assemble.$(O) asm/labels.$(O) asm/parser.$(O) \
- asm/preproc.$(O) asm/quote.$(O) asm/pptok.$(O) \
- asm/listing.$(O) asm/eval.$(O) asm/exprlib.$(O) asm/exprdump.$(O) \
- asm/stdscan.$(O) \
- asm/strfunc.$(O) asm/tokhash.$(O) \
- asm/segalloc.$(O) \
- asm/preproc-nop.$(O) \
- asm/rdstrnum.$(O) \
+ asm\error.$(O) \
+ asm\float.$(O) \
+ asm\directiv.$(O) asm\directbl.$(O) \
+ asm\pragma.$(O) \
+ asm\assemble.$(O) asm\labels.$(O) asm\parser.$(O) \
+ asm\preproc.$(O) asm\quote.$(O) asm\pptok.$(O) \
+ asm\listing.$(O) asm\eval.$(O) asm\exprlib.$(O) asm\exprdump.$(O) \
+ asm\stdscan.$(O) \
+ asm\strfunc.$(O) asm\tokhash.$(O) \
+ asm\segalloc.$(O) \
+ asm\preproc-nop.$(O) \
+ asm\rdstrnum.$(O) \
\
- macros/macros.$(O) \
+ macros\macros.$(O) \
\
- output/outform.$(O) output/outlib.$(O) output/legacy.$(O) \
- output/nulldbg.$(O) output/nullout.$(O) \
- output/outbin.$(O) output/outaout.$(O) output/outcoff.$(O) \
- output/outelf.$(O) \
- output/outobj.$(O) output/outas86.$(O) output/outrdf2.$(O) \
- output/outdbg.$(O) output/outieee.$(O) output/outmacho.$(O) \
- output/codeview.$(O) \
+ output\outform.$(O) output\outlib.$(O) output\legacy.$(O) \
+ output\nulldbg.$(O) output\nullout.$(O) \
+ output\outbin.$(O) output\outaout.$(O) output\outcoff.$(O) \
+ output\outelf.$(O) \
+ output\outobj.$(O) output\outas86.$(O) output\outrdf2.$(O) \
+ output\outdbg.$(O) output\outieee.$(O) output\outmacho.$(O) \
+ output\codeview.$(O) \
\
- disasm/disasm.$(O) disasm/sync.$(O)
+ disasm\disasm.$(O) disasm\sync.$(O)
SUBDIRS = stdlib nasmlib output asm disasm x86 common macros
-XSUBDIRS = test doc nsis
+XSUBDIRS = test doc nsis rdoff
#-- End File Lists --#
-all: nasm$(X) ndisasm$(X)
- rem cd rdoff && $(MAKE) all
+NASMLIB = libnasm.$(A)
+
+all: nasm$(X) ndisasm$(X) rdf
-nasm$(X): $(NASM) nasm.$(A)
- $(LD) $(LDFLAGS) /OUT:nasm$(X) $(NASM) $(LIBS) nasm.$(A)
+nasm$(X): $(NASM) $(NASMLIB)
+ $(CC) /Fe$@ $(NASM) $(LDFLAGS) $(NASMLIB) $(LIBS)
-ndisasm$(X): $(NDISASM) nasm.$(A)
- $(LD) $(LDFLAGS) /OUT:ndisasm$(X) $(NDISASM) $(LIBS) nasm.$(A)
+ndisasm$(X): $(NDISASM) $(NASMLIB)
+ $(CC) /Fe$@ $(NDISASM) $(LDFLAGS) $(NASMLIB) $(LIBS)
-nasm.$(A): $(LIBOBJ)
+$(NASMLIB): $(LIBOBJ)
$(AR) $(ARFLAGS) /OUT:$@ $**
-# These source files are automagically generated from a single
-# instruction-table file by a Perl script. They're distributed,
-# though, so it isn't necessary to have Perl just to recompile NASM
-# from the distribution.
-
-insns.pl: insns-iflags.pl
-
-INSDEP = insns.dat insns.pl insns-iflags.pl
-
-iflag.c: $(INSDEP)
- $(PERL) $(srcdir)/insns.pl -fc $(srcdir)/insns.dat
-iflaggen.h: $(INSDEP)
- $(PERL) $(srcdir)/insns.pl -fh $(srcdir)/insns.dat
-insnsb.c: $(INSDEP)
- $(PERL) $(srcdir)/insns.pl -b $(srcdir)/insns.dat
-insnsa.c: $(INSDEP)
- $(PERL) $(srcdir)/insns.pl -a $(srcdir)/insns.dat
-insnsd.c: $(INSDEP)
- $(PERL) $(srcdir)/insns.pl -d $(srcdir)/insns.dat
-insnsi.h: $(INSDEP)
- $(PERL) $(srcdir)/insns.pl -i $(srcdir)/insns.dat
-insnsn.c: $(INSDEP)
- $(PERL) $(srcdir)/insns.pl -n $(srcdir)/insns.dat
+#-- Begin Generated File Rules --#
+# Edit in Makefile.in, not here!
+
+# These source files are automagically generated from data files using
+# Perl scripts. They're distributed, though, so it isn't necessary to
+# have Perl just to recompile NASM from the distribution.
+
+# Perl-generated source files
+PERLREQ = x86\insnsb.c x86\insnsa.c x86\insnsd.c x86\insnsi.h x86\insnsn.c \
+ x86\regs.c x86\regs.h x86\regflags.c x86\regdis.c x86\regdis.h \
+ x86\regvals.c asm\tokhash.c asm\tokens.h asm\pptok.h asm\pptok.c \
+ x86\iflag.c x86\iflaggen.h \
+ macros\macros.c \
+ asm\pptok.ph asm\directbl.c asm\directiv.h \
+ version.h version.mac version.mak nsis\version.nsh
+
+INSDEP = x86\insns.dat x86\insns.pl x86\insns-iflags.ph
+
+x86\iflag.c: $(INSDEP)
+ $(RUNPERL) $(srcdir)\x86\insns.pl -fc \
+ $(srcdir)\x86\insns.dat x86\iflag.c
+x86\iflaggen.h: $(INSDEP)
+ $(RUNPERL) $(srcdir)\x86\insns.pl -fh \
+ $(srcdir)\x86\insns.dat x86\iflaggen.h
+x86\insnsb.c: $(INSDEP)
+ $(RUNPERL) $(srcdir)\x86\insns.pl -b \
+ $(srcdir)\x86\insns.dat x86\insnsb.c
+x86\insnsa.c: $(INSDEP)
+ $(RUNPERL) $(srcdir)\x86\insns.pl -a \
+ $(srcdir)\x86\insns.dat x86\insnsa.c
+x86\insnsd.c: $(INSDEP)
+ $(RUNPERL) $(srcdir)\x86\insns.pl -d \
+ $(srcdir)\x86\insns.dat x86\insnsd.c
+x86\insnsi.h: $(INSDEP)
+ $(RUNPERL) $(srcdir)\x86\insns.pl -i \
+ $(srcdir)\x86\insns.dat x86\insnsi.h
+x86\insnsn.c: $(INSDEP)
+ $(RUNPERL) $(srcdir)\x86\insns.pl -n \
+ $(srcdir)\x86\insns.dat x86\insnsn.c
# These files contains all the standard macros that are derived from
# the version number.
version.h: version version.pl
- $(PERL) $(srcdir)/version.pl h < $(srcdir)/version > version.h
-
+ $(RUNPERL) $(srcdir)\version.pl h < $(srcdir)\version > version.h
version.mac: version version.pl
- $(PERL) $(srcdir)/version.pl mac < $(srcdir)/version > version.mac
+ $(RUNPERL) $(srcdir)\version.pl mac < $(srcdir)\version > version.mac
+version.sed: version version.pl
+ $(RUNPERL) $(srcdir)\version.pl sed < $(srcdir)\version > version.sed
+version.mak: version version.pl
+ $(RUNPERL) $(srcdir)\version.pl make < $(srcdir)\version > version.mak
+nsis\version.nsh: version version.pl
+ $(RUNPERL) $(srcdir)\version.pl nsis < $(srcdir)\version > nsis\version.nsh
# This source file is generated from the standard macros file
# `standard.mac' by another Perl script. Again, it's part of the
# standard distribution.
-
-macros.c: macros.pl pptok.ph standard.mac version.mac \
- $(srcdir)/macros/*.mac $(srcdir)/output/*.mac
- $(PERL) $(srcdir)/macros.pl $(srcdir)/standard.mac version.mac \
- $(srcdir)/macros/*.mac $(srcdir)/output/*.mac
+macros\macros.c: macros\macros.pl asm\pptok.ph version.mac \
+ $(srcdir)\macros\*.mac $(srcdir)\output\*.mac
+ $(RUNPERL) $(srcdir)\macros\macros.pl version.mac \
+ $(srcdir)\macros\*.mac $(srcdir)\output\*.mac
# These source files are generated from regs.dat by yet another
# perl script.
-regs.c: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl c $(srcdir)/regs.dat > regs.c
-regflags.c: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl fc $(srcdir)/regs.dat > regflags.c
-regdis.c: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl dc $(srcdir)/regs.dat > regdis.c
-regdis.h: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl dh $(srcdir)/regs.dat > regdis.h
-regvals.c: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl vc $(srcdir)/regs.dat > regvals.c
-regs.h: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl h $(srcdir)/regs.dat > regs.h
+x86\regs.c: x86\regs.dat x86\regs.pl
+ $(RUNPERL) $(srcdir)\x86\regs.pl c \
+ $(srcdir)\x86\regs.dat > x86\regs.c
+x86\regflags.c: x86\regs.dat x86\regs.pl
+ $(RUNPERL) $(srcdir)\x86\regs.pl fc \
+ $(srcdir)\x86\regs.dat > x86\regflags.c
+x86\regdis.c: x86\regs.dat x86\regs.pl
+ $(RUNPERL) $(srcdir)\x86\regs.pl dc \
+ $(srcdir)\x86\regs.dat > x86\regdis.c
+x86\regdis.h: x86\regs.dat x86\regs.pl
+ $(RUNPERL) $(srcdir)\x86\regs.pl dh \
+ $(srcdir)\x86\regs.dat > x86\regdis.h
+x86\regvals.c: x86\regs.dat x86\regs.pl
+ $(RUNPERL) $(srcdir)\x86\regs.pl vc \
+ $(srcdir)\x86\regs.dat > x86\regvals.c
+x86\regs.h: x86\regs.dat x86\regs.pl
+ $(RUNPERL) $(srcdir)\x86\regs.pl h \
+ $(srcdir)\x86\regs.dat > x86\regs.h
# Assembler token hash
-tokhash.c: insns.dat regs.dat tokens.dat tokhash.pl perllib/phash.ph
- $(PERL) $(srcdir)/tokhash.pl c $(srcdir)/insns.dat $(srcdir)/regs.dat \
- $(srcdir)/tokens.dat > tokhash.c
+asm\tokhash.c: x86\insns.dat x86\regs.dat asm\tokens.dat asm\tokhash.pl \
+ perllib\phash.ph
+ $(RUNPERL) $(srcdir)\asm\tokhash.pl c \
+ $(srcdir)\x86\insns.dat $(srcdir)\x86\regs.dat \
+ $(srcdir)\asm\tokens.dat > asm\tokhash.c
# Assembler token metadata
-tokens.h: insns.dat regs.dat tokens.dat tokhash.pl perllib/phash.ph
- $(PERL) $(srcdir)/tokhash.pl h $(srcdir)/insns.dat $(srcdir)/regs.dat \
- $(srcdir)/tokens.dat > tokens.h
+asm\tokens.h: x86\insns.dat x86\regs.dat asm\tokens.dat asm\tokhash.pl \
+ perllib\phash.ph
+ $(RUNPERL) $(srcdir)\asm\tokhash.pl h \
+ $(srcdir)\x86\insns.dat $(srcdir)\x86\regs.dat \
+ $(srcdir)\asm\tokens.dat > asm\tokens.h
# Preprocessor token hash
-pptok.h: pptok.dat pptok.pl perllib/phash.ph
- $(PERL) $(srcdir)/pptok.pl h $(srcdir)/pptok.dat pptok.h
-pptok.c: pptok.dat pptok.pl perllib/phash.ph
- $(PERL) $(srcdir)/pptok.pl c $(srcdir)/pptok.dat pptok.c
-pptok.ph: pptok.dat pptok.pl perllib/phash.ph
- $(PERL) $(srcdir)/pptok.pl ph $(srcdir)/pptok.dat pptok.ph
+asm\pptok.h: asm\pptok.dat asm\pptok.pl perllib\phash.ph
+ $(RUNPERL) $(srcdir)\asm\pptok.pl h \
+ $(srcdir)\asm\pptok.dat asm\pptok.h
+asm\pptok.c: asm\pptok.dat asm\pptok.pl perllib\phash.ph
+ $(RUNPERL) $(srcdir)\asm\pptok.pl c \
+ $(srcdir)\asm\pptok.dat asm\pptok.c
+asm\pptok.ph: asm\pptok.dat asm\pptok.pl perllib\phash.ph
+ $(RUNPERL) $(srcdir)\asm\pptok.pl ph \
+ $(srcdir)\asm\pptok.dat asm\pptok.ph
# Directives hash
-directiv.h: directiv.dat directiv.pl perllib/phash.ph
- $(PERL) $(srcdir)/directiv.pl h $(srcdir)/directiv.dat directiv.h
-directbl.c: directiv.dat directiv.pl perllib/phash.ph
- $(PERL) $(srcdir)/directiv.pl c $(srcdir)/directiv.dat directbl.c
-
-# This target generates all files that require perl.
-# This allows easier generation of distribution (see dist target).
-PERLREQ = macros.c insnsb.c insnsa.c insnsd.c insnsi.h insnsn.c \
- regs.c regs.h regflags.c regdis.c regvals.c tokhash.c tokens.h \
- version.h version.mac pptok.h pptok.c iflag.c iflaggen.h \
- directbl.c directiv.h pptok.ph regdis.h
+asm\directiv.h: asm\directiv.dat nasmlib\perfhash.pl perllib\phash.ph
+ $(RUNPERL) $(srcdir)\nasmlib\perfhash.pl h \
+ $(srcdir)\asm\directiv.dat asm\directiv.h
+asm\directbl.c: asm\directiv.dat nasmlib\perfhash.pl perllib\phash.ph
+ $(RUNPERL) $(srcdir)\nasmlib\perfhash.pl c \
+ $(srcdir)\asm\directiv.dat asm\directbl.c
+
+#-- End Generated File Rules --#
+
perlreq: $(PERLREQ)
+#-- Begin RDOFF Shared Rules --#
+# Edit in Makefile.in, not here!
+
+RDFLIBOBJ = rdoff\rdoff.$(O) rdoff\rdfload.$(O) rdoff\symtab.$(O) \
+ rdoff\collectn.$(O) rdoff\rdlib.$(O) rdoff\segtab.$(O) \
+ rdoff\hash.$(O)
+
+RDFPROGS = rdoff\rdfdump$(X) rdoff\ldrdf$(X) rdoff\rdx$(X) rdoff\rdflib$(X) \
+ rdoff\rdf2bin$(X)
+RDF2BINLINKS = rdoff\rdf2com$(X) rdoff\rdf2ith$(X) \
+ rdoff\rdf2ihx$(X) rdoff\rdf2srec$(X)
+
+RDFLIB = rdoff\librdoff.$(A)
+RDFLIBS = $(RDFLIB) $(NASMLIB)
+
+rdoff\rdfdump$(X): rdoff\rdfdump.$(O) $(RDFLIBS)
+rdoff\ldrdf$(X): rdoff\ldrdf.$(O) $(RDFLIBS)
+rdoff\rdx$(X): rdoff\rdx.$(O) $(RDFLIBS)
+rdoff\rdflib$(X): rdoff\rdflib.$(O) $(RDFLIBS)
+rdoff\rdf2bin$(X): rdoff\rdf2bin.$(O) $(RDFLIBS)
+rdoff\rdf2com$(X): rdoff\rdf2bin$(X)
+ $(RM_F) rdoff\rdf2com$(X)
+ cd rdoff && $(LN_S) rdf2bin$(X) rdf2com$(X)
+rdoff\rdf2ith$(X): rdoff\rdf2bin$(X)
+ $(RM_F) rdoff\rdf2ith$(X)
+ cd rdoff && $(LN_S) rdf2bin$(X) rdf2ith$(X)
+rdoff\rdf2ihx$(X): rdoff\rdf2bin$(X)
+ $(RM_F) rdoff\rdf2ihx$(X)
+ cd rdoff && $(LN_S) rdf2bin$(X) rdf2ihx$(X)
+rdoff\rdf2srec$(X): rdoff\rdf2bin$(X)
+ $(RM_F) rdoff\rdf2srec$(X)
+ cd rdoff && $(LN_S) rdf2bin$(X) rdf2srec$(X)
+
+#-- End RDOFF Shared Rules --#
+
+rdf: $(RDFPROGS) $(RDF2BINLINKS)
+
+$(RDFLIB): $(RDFLIBOBJ)
+ $(AR) $(ARFLAGS) /OUT:$@ $**
+
+#-- Begin NSIS Rules --#
+# Edit in Makefile.in, not here!
+
+# NSIS is not built except by explicit request, as it only applies to
+# Windows platforms
+nsis\arch.nsh: nsis\getpearch.pl nasm$(X)
+ $(PERL) $(srcdir)\nsis\getpearch.pl nasm$(X) > nsis\arch.nsh
+
+# Should only be done after "make everything".
+# The use of redirection here keeps makensis from moving the cwd to the
+# source directory.
+nsis: nsis\nasm.nsi nsis\arch.nsh nsis\version.nsh
+ $(MAKENSIS) -Dsrcdir="$(srcdir)" -Dobjdir="$(objdir)" - < nsis\nasm.nsi
+
+#-- End NSIS Rules --#
+
clean:
- -del /f *.$(O)
- -del /f *.pdb
- -del /f *.s
- -del /f *.i
- -del /f lib\*.$(O)
- -del /f lib\*.pdb
- -del /f lib\*.s
- -del /f lib\*.i
- -del /f output\*.$(O)
- -del /f output\*.pdb
- -del /f output\*.s
- -del /f output\*.i
- -del /f nasmlib\*.$(O)
- -del /f nasmlib\*.pdb
- -del /f nasmlib\*.s
- -del /f nasmlib\*.i
- -del /f stdlib\*.$(O)
- -del /f stdlib\*.pdb
- -del /f stdlib\*.s
- -del /f stdlib\*.i
- -del /f nasm.$(A)
+ -del /f /s *.$(O)
+ -del /f /s *.pdb
+ -del /f /s *.s
+ -del /f /s *.i
+ -del /f $(NASMLIB) $(RDFLIB)
-del /f nasm$(X)
-del /f ndisasm$(X)
- rem cd rdoff && $(MAKE) clean
+ -del /f rdoff\*$(X)
distclean: clean
-del /f config.h
-del /f config.log
-del /f config.status
-del /f Makefile
- -del /f *~
- -del /f *.bak
- -del /f *.lst
- -del /f *.bin
+ -del /f /s *~
+ -del /f /s *.bak
+ -del /f /s *.lst
+ -del /f /s *.bin
-del /f output\*~
-del /f output\*.bak
-del /f test\*.lst
@@ -258,332 +342,385 @@ spotless: distclean cleaner
strip:
-rdf:
- # cd rdoff && $(MAKE)
-
-doc:
- # cd doc && $(MAKE) all
+# Abuse doc/Makefile.in to build nasmdoc.pdf only
+docs:
+ cd doc && $(MAKE) /f Makefile.in srcdir=. top_srcdir=.. \
+ PERL=$(PERL) PDFOPT= nasmdoc.pdf
-everything: all doc rdf
+everything: all docs nsis
#-- Magic hints to mkdep.pl --#
# @object-ending: ".$(O)"
-# @path-separator: "/"
+# @path-separator: "\"
# @exclude: "config/config.h"
#-- Everything below is generated by mkdep.pl - do not edit --#
-asm/assemble.$(O): asm/assemble.c asm/assemble.h asm/directiv.h \
- asm/listing.h asm/pptok.h asm/preproc.h asm/tokens.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/disp8.h \
- include/error.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/directbl.$(O): asm/directbl.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/hashtbl.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
-asm/directiv.$(O): asm/directiv.c asm/assemble.h asm/directiv.h asm/eval.h \
- asm/float.h asm/listing.h asm/pptok.h asm/preproc.h asm/stdscan.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/error.h include/iflag.h include/labels.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h output/outform.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/error.$(O): asm/error.c config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasmint.h include/nasmlib.h
-asm/eval.$(O): asm/eval.c asm/assemble.h asm/directiv.h asm/eval.h \
- asm/float.h asm/pptok.h asm/preproc.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/iflag.h \
- include/labels.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/iflaggen.h \
- x86/insnsi.h x86/regs.h
-asm/exprdump.$(O): asm/exprdump.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
-asm/exprlib.$(O): asm/exprlib.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
-asm/float.$(O): asm/float.c asm/directiv.h asm/float.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
-asm/labels.$(O): asm/labels.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/error.h include/hashtbl.h include/labels.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
-asm/listing.$(O): asm/listing.c asm/directiv.h asm/listing.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
-asm/nasm.$(O): asm/nasm.c asm/assemble.h asm/directiv.h asm/eval.h \
- asm/float.h asm/listing.h asm/parser.h asm/pptok.h asm/preproc.h \
- asm/stdscan.h asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/iflag.h include/insns.h \
- include/labels.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/raa.h include/saa.h include/strlist.h \
- include/tables.h include/ver.h output/outform.h x86/iflaggen.h x86/insnsi.h \
- x86/regs.h
-asm/parser.$(O): asm/parser.c asm/assemble.h asm/directiv.h asm/eval.h \
- asm/float.h asm/parser.h asm/pptok.h asm/preproc.h asm/stdscan.h \
- asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/iflag.h include/insns.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/pptok.$(O): asm/pptok.c asm/pptok.h asm/preproc.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/hashtbl.h \
- include/nasmint.h include/nasmlib.h
-asm/pragma.$(O): asm/pragma.c asm/assemble.h asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/iflag.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/preproc-nop.$(O): asm/preproc-nop.c asm/directiv.h asm/listing.h \
- asm/pptok.h asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
-asm/preproc.$(O): asm/preproc.c asm/directiv.h asm/eval.h asm/listing.h \
- asm/pptok.h asm/preproc.h asm/quote.h asm/stdscan.h asm/tokens.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/error.h include/hashtbl.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
-asm/quote.$(O): asm/quote.c asm/quote.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
-asm/rdstrnum.$(O): asm/rdstrnum.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
-asm/segalloc.$(O): asm/segalloc.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/stdscan.$(O): asm/stdscan.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/quote.h asm/stdscan.h asm/tokens.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/iflag.h \
- include/insns.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/iflaggen.h \
- x86/insnsi.h x86/regs.h
-asm/strfunc.$(O): asm/strfunc.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
-asm/tokhash.$(O): asm/tokhash.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/stdscan.h asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/hashtbl.h include/iflag.h include/insns.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-common/common.$(O): common/common.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-disasm/disasm.$(O): disasm/disasm.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/msvc.h config/unknown.h config/watcom.h disasm/disasm.h \
- disasm/sync.h include/compiler.h include/disp8.h include/iflag.h \
- include/insns.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/iflaggen.h \
- x86/insnsi.h x86/regdis.h x86/regs.h
-disasm/ndisasm.$(O): disasm/ndisasm.c asm/directiv.h asm/pptok.h \
- asm/preproc.h asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- disasm/disasm.h disasm/sync.h include/compiler.h include/error.h \
- include/iflag.h include/insns.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- include/ver.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-disasm/sync.$(O): disasm/sync.c config/msvc.h config/unknown.h \
- config/watcom.h disasm/sync.h include/compiler.h include/nasmint.h \
- include/nasmlib.h
-macros/macros.$(O): macros/macros.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/hashtbl.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h output/outform.h \
- x86/insnsi.h x86/regs.h
-nasmlib/bsi.$(O): nasmlib/bsi.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
-nasmlib/crc64.$(O): nasmlib/crc64.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/hashtbl.h include/nasmint.h \
- include/nasmlib.h
-nasmlib/file.$(O): nasmlib/file.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasmint.h \
- include/nasmlib.h nasmlib/file.h
-nasmlib/filename.$(O): nasmlib/filename.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasmint.h \
- include/nasmlib.h
-nasmlib/hashtbl.$(O): nasmlib/hashtbl.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/hashtbl.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
-nasmlib/ilog2.$(O): nasmlib/ilog2.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
-nasmlib/malloc.$(O): nasmlib/malloc.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasmint.h \
- include/nasmlib.h
-nasmlib/md5c.$(O): nasmlib/md5c.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/md5.h include/nasmint.h
-nasmlib/mmap.$(O): nasmlib/mmap.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasmint.h \
- include/nasmlib.h nasmlib/file.h
-nasmlib/raa.$(O): nasmlib/raa.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h \
- include/raa.h
-nasmlib/rbtree.$(O): nasmlib/rbtree.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/rbtree.h
-nasmlib/readnum.$(O): nasmlib/readnum.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
-nasmlib/realpath.$(O): nasmlib/realpath.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
-nasmlib/saa.$(O): nasmlib/saa.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h \
- include/saa.h
-nasmlib/srcfile.$(O): nasmlib/srcfile.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/hashtbl.h include/nasmint.h \
- include/nasmlib.h
-nasmlib/string.$(O): nasmlib/string.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
-nasmlib/strlist.$(O): nasmlib/strlist.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h \
- include/strlist.h
-nasmlib/ver.$(O): nasmlib/ver.c include/ver.h version.h
-nasmlib/zerobuf.$(O): nasmlib/zerobuf.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
-output/codeview.$(O): output/codeview.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/hashtbl.h include/md5.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/saa.h include/strlist.h include/tables.h output/outlib.h \
- output/pecoff.h version.h x86/insnsi.h x86/regs.h
-output/legacy.$(O): output/legacy.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/error.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h output/outlib.h \
- x86/insnsi.h x86/regs.h
-output/nulldbg.$(O): output/nulldbg.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/nullout.$(O): output/nullout.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/outaout.$(O): output/outaout.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h asm/stdscan.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/raa.h include/saa.h \
- include/strlist.h include/tables.h output/outform.h output/outlib.h \
- x86/insnsi.h x86/regs.h
-output/outas86.$(O): output/outas86.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/raa.h include/saa.h \
- include/strlist.h include/tables.h output/outform.h output/outlib.h \
- x86/insnsi.h x86/regs.h
-output/outbin.$(O): output/outbin.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h asm/stdscan.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/labels.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/saa.h \
- include/strlist.h include/tables.h output/outform.h output/outlib.h \
- x86/insnsi.h x86/regs.h
-output/outcoff.$(O): output/outcoff.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/raa.h include/saa.h \
- include/strlist.h include/tables.h output/outform.h output/outlib.h \
- output/pecoff.h x86/insnsi.h x86/regs.h
-output/outdbg.$(O): output/outdbg.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/error.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/outelf.$(O): output/outelf.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h asm/stdscan.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/raa.h include/rbtree.h \
- include/saa.h include/strlist.h include/tables.h include/ver.h \
- output/dwarf.h output/elf.h output/outelf.h output/outform.h \
- output/outlib.h output/stabs.h x86/insnsi.h x86/regs.h
-output/outform.$(O): output/outform.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h output/outform.h \
- x86/insnsi.h x86/regs.h
-output/outieee.$(O): output/outieee.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- include/ver.h output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
-output/outlib.$(O): output/outlib.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/error.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h output/outlib.h \
- x86/insnsi.h x86/regs.h
-output/outmacho.$(O): output/outmacho.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/raa.h include/rbtree.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/outobj.$(O): output/outobj.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h asm/stdscan.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- include/ver.h output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
-output/outrdf2.$(O): output/outrdf2.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/rdoff.h include/saa.h \
- include/strlist.h include/tables.h output/outform.h output/outlib.h \
- x86/insnsi.h x86/regs.h
-stdlib/snprintf.$(O): stdlib/snprintf.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
-stdlib/strlcpy.$(O): stdlib/strlcpy.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h
-stdlib/strnlen.$(O): stdlib/strnlen.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h
-stdlib/vsnprintf.$(O): stdlib/vsnprintf.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasmint.h \
- include/nasmlib.h
-x86/disp8.$(O): x86/disp8.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/disp8.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
-x86/iflag.$(O): x86/iflag.c config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/nasmint.h x86/iflaggen.h
-x86/insnsa.$(O): x86/insnsa.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-x86/insnsb.$(O): x86/insnsb.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-x86/insnsd.$(O): x86/insnsd.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-x86/insnsn.$(O): x86/insnsn.c config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/nasmint.h include/tables.h x86/insnsi.h
-x86/regdis.$(O): x86/regdis.c x86/regdis.h x86/regs.h
-x86/regflags.$(O): x86/regflags.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
-x86/regs.$(O): x86/regs.c config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/nasmint.h include/tables.h x86/insnsi.h
-x86/regvals.$(O): x86/regvals.c config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/tables.h \
- x86/insnsi.h
+asm\assemble.$(O): asm\assemble.c asm\assemble.h asm\directiv.h \
+ asm\listing.h asm\pptok.h asm\preproc.h asm\tokens.h config\msvc.h \
+ config\unknown.h config\watcom.h include\compiler.h include\disp8.h \
+ include\error.h include\iflag.h include\insns.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+asm\directbl.$(O): asm\directbl.c asm\directiv.h config\msvc.h \
+ config\unknown.h config\watcom.h include\compiler.h include\nasmint.h \
+ include\nasmlib.h include\perfhash.h
+asm\directiv.$(O): asm\directiv.c asm\assemble.h asm\directiv.h asm\eval.h \
+ asm\float.h asm\listing.h asm\pptok.h asm\preproc.h asm\stdscan.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\error.h include\iflag.h include\labels.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h output\outform.h x86\iflaggen.h \
+ x86\insnsi.h x86\regs.h
+asm\error.$(O): asm\error.c config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasmint.h include\nasmlib.h
+asm\eval.$(O): asm\eval.c asm\assemble.h asm\directiv.h asm\eval.h \
+ asm\float.h asm\pptok.h asm\preproc.h config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\iflag.h \
+ include\labels.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\strlist.h include\tables.h \
+ x86\iflaggen.h x86\insnsi.h x86\regs.h
+asm\exprdump.$(O): asm\exprdump.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\strlist.h include\tables.h x86\insnsi.h \
+ x86\regs.h
+asm\exprlib.$(O): asm\exprlib.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\strlist.h include\tables.h x86\insnsi.h \
+ x86\regs.h
+asm\float.$(O): asm\float.c asm\directiv.h asm\float.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h x86\insnsi.h x86\regs.h
+asm\labels.$(O): asm\labels.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\error.h include\hashtbl.h include\labels.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h x86\insnsi.h x86\regs.h
+asm\listing.$(O): asm\listing.c asm\directiv.h asm\listing.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h x86\insnsi.h x86\regs.h
+asm\nasm.$(O): asm\nasm.c asm\assemble.h asm\directiv.h asm\eval.h \
+ asm\float.h asm\listing.h asm\parser.h asm\pptok.h asm\preproc.h \
+ asm\stdscan.h asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\iflag.h include\insns.h \
+ include\labels.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\raa.h include\saa.h \
+ include\strlist.h include\tables.h include\ver.h output\outform.h \
+ x86\iflaggen.h x86\insnsi.h x86\regs.h
+asm\parser.$(O): asm\parser.c asm\assemble.h asm\directiv.h asm\eval.h \
+ asm\float.h asm\parser.h asm\pptok.h asm\preproc.h asm\stdscan.h \
+ asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\iflag.h include\insns.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\strlist.h include\tables.h x86\iflaggen.h \
+ x86\insnsi.h x86\regs.h
+asm\pptok.$(O): asm\pptok.c asm\pptok.h asm\preproc.h config\msvc.h \
+ config\unknown.h config\watcom.h include\compiler.h include\hashtbl.h \
+ include\nasmint.h include\nasmlib.h
+asm\pragma.$(O): asm\pragma.c asm\assemble.h asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\iflag.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+asm\preproc-nop.$(O): asm\preproc-nop.c asm\directiv.h asm\listing.h \
+ asm\pptok.h asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h x86\insnsi.h x86\regs.h
+asm\preproc.$(O): asm\preproc.c asm\directiv.h asm\eval.h asm\listing.h \
+ asm\pptok.h asm\preproc.h asm\quote.h asm\stdscan.h asm\tokens.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\error.h include\hashtbl.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h x86\insnsi.h x86\regs.h
+asm\quote.$(O): asm\quote.c asm\quote.h config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+asm\rdstrnum.$(O): asm\rdstrnum.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\strlist.h include\tables.h x86\insnsi.h \
+ x86\regs.h
+asm\segalloc.$(O): asm\segalloc.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\iflag.h include\insns.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+asm\stdscan.$(O): asm\stdscan.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\quote.h asm\stdscan.h asm\tokens.h config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\iflag.h \
+ include\insns.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\strlist.h include\tables.h \
+ x86\iflaggen.h x86\insnsi.h x86\regs.h
+asm\strfunc.$(O): asm\strfunc.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\strlist.h include\tables.h x86\insnsi.h \
+ x86\regs.h
+asm\tokhash.$(O): asm\tokhash.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\stdscan.h asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\hashtbl.h include\iflag.h include\insns.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\strlist.h include\tables.h x86\iflaggen.h \
+ x86\insnsi.h x86\regs.h
+common\common.$(O): common\common.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\iflag.h include\insns.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+disasm\disasm.$(O): disasm\disasm.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\tokens.h config\msvc.h config\unknown.h config\watcom.h disasm\disasm.h \
+ disasm\sync.h include\compiler.h include\disp8.h include\iflag.h \
+ include\insns.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\strlist.h include\tables.h \
+ x86\iflaggen.h x86\insnsi.h x86\regdis.h x86\regs.h
+disasm\ndisasm.$(O): disasm\ndisasm.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ disasm\disasm.h disasm\sync.h include\compiler.h include\error.h \
+ include\iflag.h include\insns.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h include\ver.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+disasm\sync.$(O): disasm\sync.c config\msvc.h config\unknown.h \
+ config\watcom.h disasm\sync.h include\compiler.h include\nasmint.h \
+ include\nasmlib.h
+macros\macros.$(O): macros\macros.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\hashtbl.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\strlist.h include\tables.h \
+ output\outform.h x86\insnsi.h x86\regs.h
+nasmlib\badenum.$(O): nasmlib\badenum.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+nasmlib\bsi.$(O): nasmlib\bsi.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+nasmlib\crc64.$(O): nasmlib\crc64.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\hashtbl.h include\nasmint.h \
+ include\nasmlib.h
+nasmlib\file.$(O): nasmlib\file.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h nasmlib\file.h
+nasmlib\filename.$(O): nasmlib\filename.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h
+nasmlib\hashtbl.$(O): nasmlib\hashtbl.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\hashtbl.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h x86\insnsi.h x86\regs.h
+nasmlib\ilog2.$(O): nasmlib\ilog2.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+nasmlib\malloc.$(O): nasmlib\malloc.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h
+nasmlib\md5c.$(O): nasmlib\md5c.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\md5.h include\nasmint.h
+nasmlib\mmap.$(O): nasmlib\mmap.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h nasmlib\file.h
+nasmlib\perfhash.$(O): nasmlib\perfhash.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\hashtbl.h include\nasmint.h \
+ include\nasmlib.h include\perfhash.h
+nasmlib\raa.$(O): nasmlib\raa.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h \
+ include\raa.h
+nasmlib\rbtree.$(O): nasmlib\rbtree.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\rbtree.h
+nasmlib\readnum.$(O): nasmlib\readnum.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h x86\insnsi.h x86\regs.h
+nasmlib\realpath.$(O): nasmlib\realpath.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+nasmlib\saa.$(O): nasmlib\saa.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h \
+ include\saa.h
+nasmlib\srcfile.$(O): nasmlib\srcfile.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\hashtbl.h include\nasmint.h \
+ include\nasmlib.h
+nasmlib\string.$(O): nasmlib\string.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+nasmlib\strlist.$(O): nasmlib\strlist.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h \
+ include\strlist.h
+nasmlib\ver.$(O): nasmlib\ver.c include\ver.h version.h
+nasmlib\zerobuf.$(O): nasmlib\zerobuf.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+output\codeview.$(O): output\codeview.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\hashtbl.h include\md5.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\saa.h include\strlist.h include\tables.h \
+ output\outlib.h output\pecoff.h version.h x86\insnsi.h x86\regs.h
+output\legacy.$(O): output\legacy.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\error.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\strlist.h include\tables.h \
+ output\outlib.h x86\insnsi.h x86\regs.h
+output\nulldbg.$(O): output\nulldbg.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h output\outlib.h x86\insnsi.h x86\regs.h
+output\nullout.$(O): output\nullout.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h output\outlib.h x86\insnsi.h x86\regs.h
+output\outaout.$(O): output\outaout.c asm\directiv.h asm\eval.h asm\pptok.h \
+ asm\preproc.h asm\stdscan.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\raa.h \
+ include\saa.h include\strlist.h include\tables.h output\outform.h \
+ output\outlib.h x86\insnsi.h x86\regs.h
+output\outas86.$(O): output\outas86.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\raa.h \
+ include\saa.h include\strlist.h include\tables.h output\outform.h \
+ output\outlib.h x86\insnsi.h x86\regs.h
+output\outbin.$(O): output\outbin.c asm\directiv.h asm\eval.h asm\pptok.h \
+ asm\preproc.h asm\stdscan.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\labels.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\saa.h include\strlist.h include\tables.h output\outform.h \
+ output\outlib.h x86\insnsi.h x86\regs.h
+output\outcoff.$(O): output\outcoff.c asm\directiv.h asm\eval.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\raa.h \
+ include\saa.h include\strlist.h include\tables.h output\outform.h \
+ output\outlib.h output\pecoff.h x86\insnsi.h x86\regs.h
+output\outdbg.$(O): output\outdbg.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\iflag.h include\insns.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\strlist.h include\tables.h output\outform.h \
+ output\outlib.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+output\outelf.$(O): output\outelf.c asm\directiv.h asm\eval.h asm\pptok.h \
+ asm\preproc.h asm\stdscan.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\raa.h \
+ include\rbtree.h include\saa.h include\strlist.h include\tables.h \
+ include\ver.h output\dwarf.h output\elf.h output\outelf.h output\outform.h \
+ output\outlib.h output\stabs.h x86\insnsi.h x86\regs.h
+output\outform.$(O): output\outform.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\strlist.h include\tables.h \
+ output\outform.h x86\insnsi.h x86\regs.h
+output\outieee.$(O): output\outieee.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h include\ver.h output\outform.h output\outlib.h \
+ x86\insnsi.h x86\regs.h
+output\outlib.$(O): output\outlib.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\error.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\strlist.h include\tables.h \
+ output\outlib.h x86\insnsi.h x86\regs.h
+output\outmacho.$(O): output\outmacho.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\labels.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\raa.h include\rbtree.h include\saa.h include\strlist.h \
+ include\tables.h output\outform.h output\outlib.h x86\insnsi.h x86\regs.h
+output\outobj.$(O): output\outobj.c asm\directiv.h asm\eval.h asm\pptok.h \
+ asm\preproc.h asm\stdscan.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\strlist.h \
+ include\tables.h include\ver.h output\outform.h output\outlib.h \
+ x86\insnsi.h x86\regs.h
+output\outrdf2.$(O): output\outrdf2.c asm\directiv.h asm\pptok.h \
+ asm\preproc.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasm.h include\nasmint.h \
+ include\nasmlib.h include\opflags.h include\perfhash.h include\rdoff.h \
+ include\saa.h include\strlist.h include\tables.h output\outform.h \
+ output\outlib.h x86\insnsi.h x86\regs.h
+rdoff\collectn.$(O): rdoff\collectn.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h rdoff\collectn.h
+rdoff\hash.$(O): rdoff\hash.c config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\nasmint.h rdoff\hash.h
+rdoff\iochk.$(O): rdoff\iochk.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+rdoff\ldrdf.$(O): rdoff\ldrdf.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h include\rdoff.h rdoff\collectn.h rdoff\ldsegs.h \
+ rdoff\rdfutils.h rdoff\rdlib.h rdoff\segtab.h rdoff\symtab.h
+rdoff\rdf2bin.$(O): rdoff\rdf2bin.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h include\rdoff.h rdoff\rdfload.h rdoff\rdfutils.h
+rdoff\rdfdump.$(O): rdoff\rdfdump.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h include\rdoff.h rdoff\rdfutils.h
+rdoff\rdflib.$(O): rdoff\rdflib.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h include\rdoff.h rdoff\rdfutils.h
+rdoff\rdfload.$(O): rdoff\rdfload.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h include\rdoff.h rdoff\collectn.h rdoff\rdfload.h \
+ rdoff\rdfutils.h rdoff\symtab.h
+rdoff\rdlar.$(O): rdoff\rdlar.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h rdoff\rdlar.h
+rdoff\rdlib.$(O): rdoff\rdlib.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h include\rdoff.h rdoff\rdfutils.h rdoff\rdlar.h \
+ rdoff\rdlib.h
+rdoff\rdoff.$(O): rdoff\rdoff.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h include\rdoff.h rdoff\rdfutils.h
+rdoff\rdx.$(O): rdoff\rdx.c config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\error.h include\nasmint.h include\nasmlib.h \
+ include\rdoff.h rdoff\rdfload.h rdoff\rdfutils.h rdoff\symtab.h
+rdoff\segtab.$(O): rdoff\segtab.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h rdoff\segtab.h
+rdoff\symtab.$(O): rdoff\symtab.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h rdoff\hash.h \
+ rdoff\symtab.h
+stdlib\snprintf.$(O): stdlib\snprintf.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\nasmlib.h
+stdlib\strlcpy.$(O): stdlib\strlcpy.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h
+stdlib\strnlen.$(O): stdlib\strnlen.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h
+stdlib\vsnprintf.$(O): stdlib\vsnprintf.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\error.h include\nasmint.h \
+ include\nasmlib.h
+x86\disp8.$(O): x86\disp8.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\disp8.h include\nasm.h include\nasmint.h include\nasmlib.h \
+ include\opflags.h include\perfhash.h include\strlist.h include\tables.h \
+ x86\insnsi.h x86\regs.h
+x86\iflag.$(O): x86\iflag.c config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\iflag.h include\nasmint.h x86\iflaggen.h
+x86\insnsa.$(O): x86\insnsa.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\iflag.h include\insns.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+x86\insnsb.$(O): x86\insnsb.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\iflag.h include\insns.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+x86\insnsd.$(O): x86\insnsd.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ asm\tokens.h config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\iflag.h include\insns.h include\nasm.h \
+ include\nasmint.h include\nasmlib.h include\opflags.h include\perfhash.h \
+ include\strlist.h include\tables.h x86\iflaggen.h x86\insnsi.h x86\regs.h
+x86\insnsn.$(O): x86\insnsn.c config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\nasmint.h include\tables.h x86\insnsi.h
+x86\regdis.$(O): x86\regdis.c x86\regdis.h x86\regs.h
+x86\regflags.$(O): x86\regflags.c asm\directiv.h asm\pptok.h asm\preproc.h \
+ config\msvc.h config\unknown.h config\watcom.h include\compiler.h \
+ include\nasm.h include\nasmint.h include\nasmlib.h include\opflags.h \
+ include\perfhash.h include\strlist.h include\tables.h x86\insnsi.h \
+ x86\regs.h
+x86\regs.$(O): x86\regs.c config\msvc.h config\unknown.h config\watcom.h \
+ include\compiler.h include\nasmint.h include\tables.h x86\insnsi.h
+x86\regvals.$(O): x86\regvals.c config\msvc.h config\unknown.h \
+ config\watcom.h include\compiler.h include\nasmint.h include\tables.h \
+ x86\insnsi.h
diff --git a/Mkfiles/netware.mak b/Mkfiles/netware.mak
deleted file mode 100644
index b5cafffa..00000000
--- a/Mkfiles/netware.mak
+++ /dev/null
@@ -1,362 +0,0 @@
-# -*- makefile -*- GNU Makefile for NetWare target
-
-PROOT=.
-OBJDIR=release
-
--include $(OBJDIR)/version.mak
-
-TARGETS=nasm.nlm ndisasm.nlm
-
-PERL=perl
-
-CROSSPREFIX=i586-netware-
-
-CC=$(CROSSPREFIX)gcc
-LD=$(CC)
-
-BINSUFFIX=.nlm
-
-VERSION=$(NASM_MAJOR_VER).$(NASM_MINOR_VER).$(NASM_SUBMINOR_VER)
-
-CFLAGS=-g -O2 -Wall -std=c99 -pedantic -D__NETWARE__ -D_POSIX_SOURCE -DHAVE_CONFIG_H -I.
-LDFLAGS=-Wl,--nlm-description="NASM $(NASM_VER) - the Netwide Assembler (gcc build)"
-LDFLAGS+=-Wl,--nlm-copyright="NASM is licensed under LGPL."
-LDFLAGS+=-Wl,--nlm-version=$(VERSION)
-LDFLAGS+=-Wl,--nlm-kernelspace
-LDFLAGS+=-Wl,--nlm-posixflag
-LDFLAGS+=-s
-
-O = o
-
-#-- Begin File Lists --#
-# Edit in Makefile.in, not here!
-NASM = nasm.o
-NDISASM = ndisasm.o
-
-LIBOBJ = snprintf.o vsnprintf.o strlcpy.o \
- strnlen.o \
- ver.o \
- crc64.o malloc.o \
- md5c.o string.o \
- file.o mmap.o ilog2.o \
- realpath.o filename.o srcfile.o \
- zerobuf.o readnum.o bsi.o \
- rbtree.o hashtbl.o \
- raa.o saa.o \
- strlist.o \
- common.o \
- insnsa.o insnsb.o insnsd.o insnsn.o \
- regs.o regvals.o regflags.o regdis.o \
- disp8.o iflag.o \
- \
- error.o \
- float.o \
- directiv.o directbl.o \
- pragma.o \
- assemble.o labels.o parser.o \
- preproc.o quote.o pptok.o \
- listing.o eval.o exprlib.o exprdump.o \
- stdscan.o \
- strfunc.o tokhash.o \
- segalloc.o \
- preproc-nop.o \
- rdstrnum.o \
- \
- macros.o \
- \
- outform.o outlib.o legacy.o \
- nulldbg.o nullout.o \
- outbin.o outaout.o outcoff.o \
- outelf.o \
- outobj.o outas86.o outrdf2.o \
- outdbg.o outieee.o outmacho.o \
- codeview.o \
- \
- disasm.o sync.o
-
-SUBDIRS = stdlib nasmlib output asm disasm x86 common macros
-XSUBDIRS = test doc nsis
-#-- End File Lists --#
-
-NASM_OBJ = $(addprefix $(OBJDIR)/,$(notdir $(NASM))) $(EOLIST)
-NDIS_OBJ = $(addprefix $(OBJDIR)/,$(notdir $(NDISASM))) $(EOLIST)
-
-VPATH = *.c $(PROOT) $(PROOT)/output
-
-
-all: $(OBJDIR) config.h $(TARGETS)
-
-$(OBJDIR)/%.o: %.c
- $(CC) $(CFLAGS) -c -o $@ $<
-
-nasm$(BINSUFFIX): $(NASM_OBJ)
- $(LD) $(LDFLAGS) -o $@ $^
-
-ndisasm$(BINSUFFIX): $(NDIS_OBJ)
- $(LD) $(LDFLAGS) -o $@ $^
-
-$(OBJDIR):
- @mkdir $@
-
-config.h: $(PROOT)/Mkfiles/netware.mak
- @echo Creating $@
- @echo $(DL)/* $@ for NetWare target.$(DL) > $@
- @echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
- @echo $(DL)** All your changes will be lost!!$(DL) >> $@
- @echo $(DL)*/$(DL) >> $@
- @echo $(DL)#ifndef __NETWARE__$(DL) >> $@
- @echo $(DL)#error This $(notdir $@) is created for NetWare platform!$(DL) >> $@
- @echo $(DL)#endif$(DL) >> $@
- @echo $(DL)#define PACKAGE_VERSION "$(NASM_VER)"$(DL) >> $@
- @echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
- @echo $(DL)#define HAVE_DECL_STRCASECMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_DECL_STRICMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_DECL_STRNCASECMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_DECL_STRNICMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_INTTYPES_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_LIMITS_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_MEMORY_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SNPRINTF 1$(DL) >> $@
- @echo $(DL)#define HAVE_STDBOOL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRCASECMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRCSPN 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRICMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRINGS_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRING_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRNCASECMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRNICMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRSPN 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_STAT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_TYPES_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_VSNPRINTF 1$(DL) >> $@
- @echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
- @echo $(DL)#ifndef _GNU_SOURCE$(DL) >> $@
- @echo $(DL)#define _GNU_SOURCE 1$(DL) >> $@
- @echo $(DL)#endif$(DL) >> $@
- @echo $(DL)#define ldiv __CW_ldiv$(DL) >> $@
-
-clean:
- -$(RM) -r $(OBJDIR)
- -$(RM) config.h
-
-distclean: clean
- -$(RM) $(TARGETS)
-
-$(OBJDIR)/version.mak: $(PROOT)/version $(PROOT)/version.pl $(OBJDIR)
- @$(PERL) $(PROOT)/version.pl make < $< > $@
-
-#-- Magic hints to mkdep.pl --#
-# @object-ending: ".o"
-# @path-separator: ""
-# @continuation: "\"
-#-- Everything below is generated by mkdep.pl - do not edit --#
-assemble.o: assemble.c assemble.h directiv.h listing.h pptok.h preproc.h \
- tokens.h config.h msvc.h unknown.h watcom.h compiler.h disp8.h error.h \
- iflag.h insns.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h \
- iflaggen.h insnsi.h regs.h
-directbl.o: directbl.c directiv.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h hashtbl.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h insnsi.h regs.h
-directiv.o: directiv.c assemble.h directiv.h eval.h float.h listing.h \
- pptok.h preproc.h stdscan.h config.h msvc.h unknown.h watcom.h compiler.h \
- error.h iflag.h labels.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h outform.h iflaggen.h insnsi.h regs.h
-error.o: error.c config.h msvc.h unknown.h watcom.h compiler.h error.h \
- nasmint.h nasmlib.h
-eval.o: eval.c assemble.h directiv.h eval.h float.h pptok.h preproc.h \
- config.h msvc.h unknown.h watcom.h compiler.h error.h iflag.h labels.h \
- nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h iflaggen.h insnsi.h \
- regs.h
-exprdump.o: exprdump.c directiv.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h nasm.h nasmint.h nasmlib.h opflags.h \
- strlist.h tables.h insnsi.h regs.h
-exprlib.o: exprlib.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h \
- insnsi.h regs.h
-float.o: float.c directiv.h float.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h \
- strlist.h tables.h insnsi.h regs.h
-labels.o: labels.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h hashtbl.h labels.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h insnsi.h regs.h
-listing.o: listing.c directiv.h listing.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h \
- strlist.h tables.h insnsi.h regs.h
-nasm.o: nasm.c assemble.h directiv.h eval.h float.h listing.h parser.h \
- pptok.h preproc.h stdscan.h tokens.h config.h msvc.h unknown.h watcom.h \
- compiler.h error.h iflag.h insns.h labels.h nasm.h nasmint.h nasmlib.h \
- opflags.h raa.h saa.h strlist.h tables.h ver.h outform.h iflaggen.h \
- insnsi.h regs.h
-parser.o: parser.c assemble.h directiv.h eval.h float.h parser.h pptok.h \
- preproc.h stdscan.h tokens.h config.h msvc.h unknown.h watcom.h compiler.h \
- error.h iflag.h insns.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h iflaggen.h insnsi.h regs.h
-pptok.o: pptok.c pptok.h preproc.h config.h msvc.h unknown.h watcom.h \
- compiler.h hashtbl.h nasmint.h nasmlib.h
-pragma.o: pragma.c assemble.h directiv.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h error.h iflag.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h iflaggen.h insnsi.h regs.h
-preproc-nop.o: preproc-nop.c directiv.h listing.h pptok.h preproc.h config.h \
- msvc.h unknown.h watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h insnsi.h regs.h
-preproc.o: preproc.c directiv.h eval.h listing.h pptok.h preproc.h quote.h \
- stdscan.h tokens.h config.h msvc.h unknown.h watcom.h compiler.h error.h \
- hashtbl.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h insnsi.h \
- regs.h
-quote.o: quote.c quote.h config.h msvc.h unknown.h watcom.h compiler.h \
- nasmint.h nasmlib.h
-rdstrnum.o: rdstrnum.c directiv.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h nasm.h nasmint.h nasmlib.h opflags.h \
- strlist.h tables.h insnsi.h regs.h
-segalloc.o: segalloc.c directiv.h pptok.h preproc.h tokens.h config.h msvc.h \
- unknown.h watcom.h compiler.h iflag.h insns.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h iflaggen.h insnsi.h regs.h
-stdscan.o: stdscan.c directiv.h pptok.h preproc.h quote.h stdscan.h tokens.h \
- config.h msvc.h unknown.h watcom.h compiler.h error.h iflag.h insns.h \
- nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h iflaggen.h insnsi.h \
- regs.h
-strfunc.o: strfunc.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h \
- insnsi.h regs.h
-tokhash.o: tokhash.c directiv.h pptok.h preproc.h stdscan.h tokens.h \
- config.h msvc.h unknown.h watcom.h compiler.h hashtbl.h iflag.h insns.h \
- nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h iflaggen.h insnsi.h \
- regs.h
-common.o: common.c directiv.h pptok.h preproc.h tokens.h config.h msvc.h \
- unknown.h watcom.h compiler.h iflag.h insns.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h iflaggen.h insnsi.h regs.h
-disasm.o: disasm.c directiv.h pptok.h preproc.h tokens.h config.h msvc.h \
- unknown.h watcom.h disasm.h sync.h compiler.h disp8.h iflag.h insns.h \
- nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h iflaggen.h insnsi.h \
- regdis.h regs.h
-ndisasm.o: ndisasm.c directiv.h pptok.h preproc.h tokens.h config.h msvc.h \
- unknown.h watcom.h disasm.h sync.h compiler.h error.h iflag.h insns.h \
- nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h ver.h iflaggen.h \
- insnsi.h regs.h
-sync.o: sync.c config.h msvc.h unknown.h watcom.h sync.h compiler.h \
- nasmint.h nasmlib.h
-macros.o: macros.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h hashtbl.h nasm.h nasmint.h nasmlib.h opflags.h \
- strlist.h tables.h outform.h insnsi.h regs.h
-bsi.o: bsi.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- nasmlib.h
-crc64.o: crc64.c config.h msvc.h unknown.h watcom.h compiler.h hashtbl.h \
- nasmint.h nasmlib.h
-file.o: file.c config.h msvc.h unknown.h watcom.h compiler.h error.h \
- nasmint.h nasmlib.h file.h
-filename.o: filename.c config.h msvc.h unknown.h watcom.h compiler.h error.h \
- nasmint.h nasmlib.h
-hashtbl.o: hashtbl.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h hashtbl.h nasm.h nasmint.h nasmlib.h opflags.h \
- strlist.h tables.h insnsi.h regs.h
-ilog2.o: ilog2.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- nasmlib.h
-malloc.o: malloc.c config.h msvc.h unknown.h watcom.h compiler.h error.h \
- nasmint.h nasmlib.h
-md5c.o: md5c.c config.h msvc.h unknown.h watcom.h compiler.h md5.h nasmint.h
-mmap.o: mmap.c config.h msvc.h unknown.h watcom.h compiler.h error.h \
- nasmint.h nasmlib.h file.h
-raa.o: raa.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- nasmlib.h raa.h
-rbtree.o: rbtree.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- rbtree.h
-readnum.o: readnum.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h insnsi.h regs.h
-realpath.o: realpath.c config.h msvc.h unknown.h watcom.h compiler.h \
- nasmint.h nasmlib.h
-saa.o: saa.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- nasmlib.h saa.h
-srcfile.o: srcfile.c config.h msvc.h unknown.h watcom.h compiler.h hashtbl.h \
- nasmint.h nasmlib.h
-string.o: string.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- nasmlib.h
-strlist.o: strlist.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- nasmlib.h strlist.h
-ver.o: ver.c ver.h version.h
-zerobuf.o: zerobuf.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- nasmlib.h
-codeview.o: codeview.c directiv.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h error.h hashtbl.h md5.h nasm.h nasmint.h \
- nasmlib.h opflags.h saa.h strlist.h tables.h outlib.h pecoff.h version.h \
- insnsi.h regs.h
-legacy.o: legacy.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h outlib.h insnsi.h regs.h
-nulldbg.o: nulldbg.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h outlib.h insnsi.h regs.h
-nullout.o: nullout.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h outlib.h insnsi.h regs.h
-outaout.o: outaout.c directiv.h eval.h pptok.h preproc.h stdscan.h config.h \
- msvc.h unknown.h watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h \
- opflags.h raa.h saa.h strlist.h tables.h outform.h outlib.h insnsi.h regs.h
-outas86.o: outas86.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h raa.h \
- saa.h strlist.h tables.h outform.h outlib.h insnsi.h regs.h
-outbin.o: outbin.c directiv.h eval.h pptok.h preproc.h stdscan.h config.h \
- msvc.h unknown.h watcom.h compiler.h error.h labels.h nasm.h nasmint.h \
- nasmlib.h opflags.h saa.h strlist.h tables.h outform.h outlib.h insnsi.h \
- regs.h
-outcoff.o: outcoff.c directiv.h eval.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h \
- raa.h saa.h strlist.h tables.h outform.h outlib.h pecoff.h insnsi.h regs.h
-outdbg.o: outdbg.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h outform.h outlib.h insnsi.h regs.h
-outelf.o: outelf.c directiv.h eval.h pptok.h preproc.h stdscan.h config.h \
- msvc.h unknown.h watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h \
- opflags.h raa.h rbtree.h saa.h strlist.h tables.h ver.h dwarf.h elf.h \
- outelf.h outform.h outlib.h stabs.h insnsi.h regs.h
-outform.o: outform.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h tables.h \
- outform.h insnsi.h regs.h
-outieee.o: outieee.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h ver.h outform.h outlib.h insnsi.h regs.h
-outlib.o: outlib.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h outlib.h insnsi.h regs.h
-outmacho.o: outmacho.c directiv.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h \
- raa.h rbtree.h saa.h strlist.h tables.h outform.h outlib.h insnsi.h regs.h
-outobj.o: outobj.c directiv.h eval.h pptok.h preproc.h stdscan.h config.h \
- msvc.h unknown.h watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h ver.h outform.h outlib.h insnsi.h regs.h
-outrdf2.o: outrdf2.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h error.h nasm.h nasmint.h nasmlib.h opflags.h rdoff.h \
- saa.h strlist.h tables.h outform.h outlib.h insnsi.h regs.h
-snprintf.o: snprintf.c config.h msvc.h unknown.h watcom.h compiler.h \
- nasmint.h nasmlib.h
-strlcpy.o: strlcpy.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h
-strnlen.o: strnlen.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h
-vsnprintf.o: vsnprintf.c config.h msvc.h unknown.h watcom.h compiler.h \
- error.h nasmint.h nasmlib.h
-disp8.o: disp8.c directiv.h pptok.h preproc.h config.h msvc.h unknown.h \
- watcom.h compiler.h disp8.h nasm.h nasmint.h nasmlib.h opflags.h strlist.h \
- tables.h insnsi.h regs.h
-iflag.o: iflag.c config.h msvc.h unknown.h watcom.h compiler.h iflag.h \
- nasmint.h iflaggen.h
-insnsa.o: insnsa.c directiv.h pptok.h preproc.h tokens.h config.h msvc.h \
- unknown.h watcom.h compiler.h iflag.h insns.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h iflaggen.h insnsi.h regs.h
-insnsb.o: insnsb.c directiv.h pptok.h preproc.h tokens.h config.h msvc.h \
- unknown.h watcom.h compiler.h iflag.h insns.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h iflaggen.h insnsi.h regs.h
-insnsd.o: insnsd.c directiv.h pptok.h preproc.h tokens.h config.h msvc.h \
- unknown.h watcom.h compiler.h iflag.h insns.h nasm.h nasmint.h nasmlib.h \
- opflags.h strlist.h tables.h iflaggen.h insnsi.h regs.h
-insnsn.o: insnsn.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- tables.h insnsi.h
-regdis.o: regdis.c regdis.h regs.h
-regflags.o: regflags.c directiv.h pptok.h preproc.h config.h msvc.h \
- unknown.h watcom.h compiler.h nasm.h nasmint.h nasmlib.h opflags.h \
- strlist.h tables.h insnsi.h regs.h
-regs.o: regs.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- tables.h insnsi.h
-regvals.o: regvals.c config.h msvc.h unknown.h watcom.h compiler.h nasmint.h \
- tables.h insnsi.h
diff --git a/Mkfiles/openwcom.mak b/Mkfiles/openwcom.mak
index 8e78213d..b6468dd6 100644
--- a/Mkfiles/openwcom.mak
+++ b/Mkfiles/openwcom.mak
@@ -22,10 +22,14 @@ LD = *wlink
LDEBUG =
LDFLAGS = op quiet $(%TARGET_LFLAGS) $(LDEBUG)
LIBS =
-PERL = perl -I$(srcdir)/perllib -I$(srcdir)
-
STRIP = wstrip
+PERL = perl
+PERLFLAGS = -I$(srcdir)/perllib -I$(srcdir)
+RUNPERL = $(PERL) $(PERLFLAGS)
+
+MAKENSIS = makensis
+
# Binary suffixes
O = obj
X = .exe
@@ -60,6 +64,7 @@ LIBOBJ = stdlib/snprintf.$(O) stdlib/vsnprintf.$(O) stdlib/strlcpy.$(O) &
nasmlib/rbtree.$(O) nasmlib/hashtbl.$(O) &
nasmlib/raa.$(O) nasmlib/saa.$(O) &
nasmlib/strlist.$(O) &
+ nasmlib/perfhash.$(O) nasmlib/badenum.$(O) &
common/common.$(O) &
x86/insnsa.$(O) x86/insnsb.$(O) x86/insnsd.$(O) x86/insnsn.$(O) &
x86/regs.$(O) x86/regvals.$(O) x86/regflags.$(O) x86/regdis.$(O) &
@@ -91,7 +96,7 @@ LIBOBJ = stdlib/snprintf.$(O) stdlib/vsnprintf.$(O) stdlib/strlcpy.$(O) &
disasm/disasm.$(O) disasm/sync.$(O)
SUBDIRS = stdlib nasmlib output asm disasm x86 common macros
-XSUBDIRS = test doc nsis
+XSUBDIRS = test doc nsis rdoff
#-- End File Lists --#
what: .SYMBOLIC
@@ -131,91 +136,141 @@ ndisasm$(X): $(NDISASM) $(LIBOBJ)
nasm.lib: $(LIBOBJ)
wlib -q -b -n $@ $(LIBOBJ)
-# These source files are automagically generated from a single
-# instruction-table file by a Perl script. They're distributed,
-# though, so it isn't necessary to have Perl just to recompile NASM
-# from the distribution.
+#-- Begin Generated File Rules --#
+# Edit in Makefile.in, not here!
-insns.pl: insns-iflags.pl
+# These source files are automagically generated from data files using
+# Perl scripts. They're distributed, though, so it isn't necessary to
+# have Perl just to recompile NASM from the distribution.
-INSDEP = x86/insns.dat x86/insns.pl x86/insns-iflags.pl
+# Perl-generated source files
+PERLREQ = x86/insnsb.c x86/insnsa.c x86/insnsd.c x86/insnsi.h x86/insnsn.c &
+ x86/regs.c x86/regs.h x86/regflags.c x86/regdis.c x86/regdis.h &
+ x86/regvals.c asm/tokhash.c asm/tokens.h asm/pptok.h asm/pptok.c &
+ x86/iflag.c x86/iflaggen.h &
+ macros/macros.c &
+ asm/pptok.ph asm/directbl.c asm/directiv.h &
+ version.h version.mac version.mak nsis/version.nsh
+
+INSDEP = x86/insns.dat x86/insns.pl x86/insns-iflags.ph
x86/iflag.c: $(INSDEP)
- $(PERL) $(srcdir)/x86/insns.pl -fc $(srcdir)/x86/insns.dat x86/iflag.c
+ $(RUNPERL) $(srcdir)/x86/insns.pl -fc &
+ $(srcdir)/x86/insns.dat x86/iflag.c
x86/iflaggen.h: $(INSDEP)
- $(PERL) $(srcdir)/x86/insns.pl -fh $(srcdir)/x86/insns.dat x86/iflaggen.h
+ $(RUNPERL) $(srcdir)/x86/insns.pl -fh &
+ $(srcdir)/x86/insns.dat x86/iflaggen.h
x86/insnsb.c: $(INSDEP)
- $(PERL) $(srcdir)/x86/insns.pl -b $(srcdir)/x86/insns.dat x86/insnsb.c
+ $(RUNPERL) $(srcdir)/x86/insns.pl -b &
+ $(srcdir)/x86/insns.dat x86/insnsb.c
x86/insnsa.c: $(INSDEP)
- $(PERL) $(srcdir)/x86/insns.pl -a $(srcdir)/x86/insns.dat x86/insnsa.c
+ $(RUNPERL) $(srcdir)/x86/insns.pl -a &
+ $(srcdir)/x86/insns.dat x86/insnsa.c
x86/insnsd.c: $(INSDEP)
- $(PERL) $(srcdir)/x86/insns.pl -d $(srcdir)/x86/insns.dat x86/insnsd.c
+ $(RUNPERL) $(srcdir)/x86/insns.pl -d &
+ $(srcdir)/x86/insns.dat x86/insnsd.c
x86/insnsi.h: $(INSDEP)
- $(PERL) $(srcdir)/x86/insns.pl -i $(srcdir)/x86/insns.dat x86/insnsi.h
+ $(RUNPERL) $(srcdir)/x86/insns.pl -i &
+ $(srcdir)/x86/insns.dat x86/insnsi.h
x86/insnsn.c: $(INSDEP)
- $(PERL) $(srcdir)/x86/insns.pl -n $(srcdir)/x86/insns.dat x86/insnsn.c
+ $(RUNPERL) $(srcdir)/x86/insns.pl -n &
+ $(srcdir)/x86/insns.dat x86/insnsn.c
# These files contains all the standard macros that are derived from
# the version number.
version.h: version version.pl
- $(PERL) $(srcdir)/version.pl h < $(srcdir)/version > version.h
-
+ $(RUNPERL) $(srcdir)/version.pl h < $(srcdir)/version > version.h
version.mac: version version.pl
- $(PERL) $(srcdir)/version.pl mac < $(srcdir)/version > version.mac
+ $(RUNPERL) $(srcdir)/version.pl mac < $(srcdir)/version > version.mac
+version.sed: version version.pl
+ $(RUNPERL) $(srcdir)/version.pl sed < $(srcdir)/version > version.sed
+version.mak: version version.pl
+ $(RUNPERL) $(srcdir)/version.pl make < $(srcdir)/version > version.mak
+nsis/version.nsh: version version.pl
+ $(RUNPERL) $(srcdir)/version.pl nsis < $(srcdir)/version > nsis/version.nsh
# This source file is generated from the standard macros file
# `standard.mac' by another Perl script. Again, it's part of the
# standard distribution.
-
-macros/macros.c: macros/macros.pl asm/pptok.ph version.mac $(srcdir)/macros/*.mac $(srcdir)/output/*.mac
- $(PERL) $(srcdir)/macros/macros.pl version.mac $(srcdir)/macros/*.mac $(srcdir)/output/*.mac
+macros/macros.c: macros/macros.pl asm/pptok.ph version.mac &
+ $(srcdir)/macros/*.mac $(srcdir)/output/*.mac
+ $(RUNPERL) $(srcdir)/macros/macros.pl version.mac &
+ $(srcdir)/macros/*.mac $(srcdir)/output/*.mac
# These source files are generated from regs.dat by yet another
# perl script.
x86/regs.c: x86/regs.dat x86/regs.pl
- $(PERL) $(srcdir)/x86/regs.pl c $(srcdir)/x86/regs.dat > x86/regs.c
+ $(RUNPERL) $(srcdir)/x86/regs.pl c &
+ $(srcdir)/x86/regs.dat > x86/regs.c
x86/regflags.c: x86/regs.dat x86/regs.pl
- $(PERL) $(srcdir)/x86/regs.pl fc $(srcdir)/x86/regs.dat > x86/regflags.c
+ $(RUNPERL) $(srcdir)/x86/regs.pl fc &
+ $(srcdir)/x86/regs.dat > x86/regflags.c
x86/regdis.c: x86/regs.dat x86/regs.pl
- $(PERL) $(srcdir)/x86/regs.pl dc $(srcdir)/x86/regs.dat > x86/regdis.c
+ $(RUNPERL) $(srcdir)/x86/regs.pl dc &
+ $(srcdir)/x86/regs.dat > x86/regdis.c
x86/regdis.h: x86/regs.dat x86/regs.pl
- $(PERL) $(srcdir)/x86/regs.pl dh $(srcdir)/x86/regs.dat > x86/regdis.h
+ $(RUNPERL) $(srcdir)/x86/regs.pl dh &
+ $(srcdir)/x86/regs.dat > x86/regdis.h
x86/regvals.c: x86/regs.dat x86/regs.pl
- $(PERL) $(srcdir)/x86/regs.pl vc $(srcdir)/x86/regs.dat > x86/regvals.c
+ $(RUNPERL) $(srcdir)/x86/regs.pl vc &
+ $(srcdir)/x86/regs.dat > x86/regvals.c
x86/regs.h: x86/regs.dat x86/regs.pl
- $(PERL) $(srcdir)/x86/regs.pl h $(srcdir)/x86/regs.dat > x86/regs.h
+ $(RUNPERL) $(srcdir)/x86/regs.pl h &
+ $(srcdir)/x86/regs.dat > x86/regs.h
# Assembler token hash
-asm/tokhash.c: x86/insns.dat x86/regs.dat asm/tokens.dat asm/tokhash.pl perllib/phash.ph
- $(PERL) $(srcdir)/asm/tokhash.pl c $(srcdir)/x86/insns.dat $(srcdir)/x86/regs.dat &
- $(srcdir)/asm/tokens.dat > asm/tokhash.c
+asm/tokhash.c: x86/insns.dat x86/regs.dat asm/tokens.dat asm/tokhash.pl &
+ perllib/phash.ph
+ $(RUNPERL) $(srcdir)/asm/tokhash.pl c &
+ $(srcdir)/x86/insns.dat $(srcdir)/x86/regs.dat &
+ $(srcdir)/asm/tokens.dat > asm/tokhash.c
# Assembler token metadata
-asm/tokens.h: x86/insns.dat x86/regs.dat asm/tokens.dat asm/tokhash.pl perllib/phash.ph
- $(PERL) $(srcdir)/asm/tokhash.pl h $(srcdir)/x86/insns.dat $(srcdir)/x86/regs.dat &
- $(srcdir)/asm/tokens.dat > asm/tokens.h
+asm/tokens.h: x86/insns.dat x86/regs.dat asm/tokens.dat asm/tokhash.pl &
+ perllib/phash.ph
+ $(RUNPERL) $(srcdir)/asm/tokhash.pl h &
+ $(srcdir)/x86/insns.dat $(srcdir)/x86/regs.dat &
+ $(srcdir)/asm/tokens.dat > asm/tokens.h
# Preprocessor token hash
asm/pptok.h: asm/pptok.dat asm/pptok.pl perllib/phash.ph
- $(PERL) $(srcdir)/asm/pptok.pl h $(srcdir)/asm/pptok.dat asm/pptok.h
+ $(RUNPERL) $(srcdir)/asm/pptok.pl h &
+ $(srcdir)/asm/pptok.dat asm/pptok.h
asm/pptok.c: asm/pptok.dat asm/pptok.pl perllib/phash.ph
- $(PERL) $(srcdir)/asm/pptok.pl c $(srcdir)/asm/pptok.dat asm/pptok.c
+ $(RUNPERL) $(srcdir)/asm/pptok.pl c &
+ $(srcdir)/asm/pptok.dat asm/pptok.c
asm/pptok.ph: asm/pptok.dat asm/pptok.pl perllib/phash.ph
- $(PERL) $(srcdir)/asm/pptok.pl ph $(srcdir)/asm/pptok.dat asm/pptok.ph
+ $(RUNPERL) $(srcdir)/asm/pptok.pl ph &
+ $(srcdir)/asm/pptok.dat asm/pptok.ph
# Directives hash
-asm/directiv.h: asm/directiv.dat asm/directiv.pl perllib/phash.ph
- $(PERL) $(srcdir)/asm/directiv.pl h $(srcdir)/asm/directiv.dat asm/directiv.h
-asm/directbl.c: asm/directiv.dat asm/directiv.pl perllib/phash.ph
- $(PERL) $(srcdir)/asm/directiv.pl c $(srcdir)/asm/directiv.dat asm/directbl.c
-
-# This target generates all files that require perl.
-# This allows easier generation of distribution (see dist target).
-PERLREQ = macros/macros.c x86/insnsb.c x86/insnsa.c x86/insnsd.c x86/insnsi.h x86/insnsn.c &
- x86/regs.c x86/regs.h x86/regflags.c x86/regdis.c x86/regvals.c asm/tokhash.c asm/tokens.h &
- version.h version.mac asm/pptok.h asm/pptok.c x86/iflag.c
+asm/directiv.h: asm/directiv.dat nasmlib/perfhash.pl perllib/phash.ph
+ $(RUNPERL) $(srcdir)/nasmlib/perfhash.pl h &
+ $(srcdir)/asm/directiv.dat asm/directiv.h
+asm/directbl.c: asm/directiv.dat nasmlib/perfhash.pl perllib/phash.ph
+ $(RUNPERL) $(srcdir)/nasmlib/perfhash.pl c &
+ $(srcdir)/asm/directiv.dat asm/directbl.c
+
+#-- End Generated File Rules --#
+
perlreq: $(PERLREQ) .SYMBOLIC
+#-- Begin NSIS Rules --#
+# Edit in Makefile.in, not here!
+
+# NSIS is not built except by explicit request, as it only applies to
+# Windows platforms
+nsis/arch.nsh: nsis/getpearch.pl nasm$(X)
+ $(PERL) $(srcdir)/nsis/getpearch.pl nasm$(X) > nsis/arch.nsh
+
+# Should only be done after "make everything".
+# The use of redirection here keeps makensis from moving the cwd to the
+# source directory.
+nsis: nsis/nasm.nsi nsis/arch.nsh nsis/version.nsh
+ $(MAKENSIS) -Dsrcdir="$(srcdir)" -Dobjdir="$(objdir)" - < nsis/nasm.nsi
+
+#-- End NSIS Rules --#
+
clean: .SYMBOLIC
rm -f *.$(O) *.s *.i
rm -f asm/*.$(O) asm/*.s asm/*.i
@@ -277,134 +332,141 @@ asm/assemble.$(O): asm/assemble.c asm/assemble.h asm/directiv.h &
asm/listing.h asm/pptok.h asm/preproc.h asm/tokens.h config/msvc.h &
config/unknown.h config/watcom.h include/compiler.h include/disp8.h &
include/error.h include/iflag.h include/insns.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/directbl.$(O): asm/directbl.c asm/directiv.h asm/pptok.h asm/preproc.h &
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
- include/hashtbl.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h &
- x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+asm/directbl.$(O): asm/directbl.c asm/directiv.h config/msvc.h &
+ config/unknown.h config/watcom.h include/compiler.h include/nasmint.h &
+ include/nasmlib.h include/perfhash.h
asm/directiv.$(O): asm/directiv.c asm/assemble.h asm/directiv.h asm/eval.h &
asm/float.h asm/listing.h asm/pptok.h asm/preproc.h asm/stdscan.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/error.h include/iflag.h include/labels.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h output/outform.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h output/outform.h x86/iflaggen.h &
+ x86/insnsi.h x86/regs.h
asm/error.$(O): asm/error.c config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasmint.h include/nasmlib.h
asm/eval.$(O): asm/eval.c asm/assemble.h asm/directiv.h asm/eval.h &
asm/float.h asm/pptok.h asm/preproc.h config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/error.h include/iflag.h &
include/labels.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h x86/iflaggen.h &
- x86/insnsi.h x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h &
+ x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/exprdump.$(O): asm/exprdump.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/insnsi.h &
+ x86/regs.h
asm/exprlib.$(O): asm/exprlib.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/insnsi.h &
+ x86/regs.h
asm/float.$(O): asm/float.c asm/directiv.h asm/float.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h x86/insnsi.h x86/regs.h
asm/labels.$(O): asm/labels.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/error.h include/hashtbl.h include/labels.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
asm/listing.$(O): asm/listing.c asm/directiv.h asm/listing.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h x86/insnsi.h x86/regs.h
asm/nasm.$(O): asm/nasm.c asm/assemble.h asm/directiv.h asm/eval.h &
asm/float.h asm/listing.h asm/parser.h asm/pptok.h asm/preproc.h &
asm/stdscan.h asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/iflag.h include/insns.h &
include/labels.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/raa.h include/saa.h include/strlist.h &
- include/tables.h include/ver.h output/outform.h x86/iflaggen.h x86/insnsi.h &
- x86/regs.h
+ include/opflags.h include/perfhash.h include/raa.h include/saa.h &
+ include/strlist.h include/tables.h include/ver.h output/outform.h &
+ x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/parser.$(O): asm/parser.c asm/assemble.h asm/directiv.h asm/eval.h &
asm/float.h asm/parser.h asm/pptok.h asm/preproc.h asm/stdscan.h &
asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/iflag.h include/insns.h &
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/iflaggen.h &
+ x86/insnsi.h x86/regs.h
asm/pptok.$(O): asm/pptok.c asm/pptok.h asm/preproc.h config/msvc.h &
config/unknown.h config/watcom.h include/compiler.h include/hashtbl.h &
include/nasmint.h include/nasmlib.h
asm/pragma.$(O): asm/pragma.c asm/assemble.h asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/iflag.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/preproc-nop.$(O): asm/preproc-nop.c asm/directiv.h asm/listing.h &
asm/pptok.h asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h x86/insnsi.h x86/regs.h
asm/preproc.$(O): asm/preproc.c asm/directiv.h asm/eval.h asm/listing.h &
asm/pptok.h asm/preproc.h asm/quote.h asm/stdscan.h asm/tokens.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/error.h include/hashtbl.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h x86/insnsi.h x86/regs.h
asm/quote.$(O): asm/quote.c asm/quote.h config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
asm/rdstrnum.$(O): asm/rdstrnum.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/insnsi.h &
+ x86/regs.h
asm/segalloc.$(O): asm/segalloc.c asm/directiv.h asm/pptok.h asm/preproc.h &
asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/iflag.h include/insns.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/stdscan.$(O): asm/stdscan.c asm/directiv.h asm/pptok.h asm/preproc.h &
asm/quote.h asm/stdscan.h asm/tokens.h config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/error.h include/iflag.h &
include/insns.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h x86/iflaggen.h &
- x86/insnsi.h x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h &
+ x86/iflaggen.h x86/insnsi.h x86/regs.h
asm/strfunc.$(O): asm/strfunc.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/insnsi.h &
+ x86/regs.h
asm/tokhash.$(O): asm/tokhash.c asm/directiv.h asm/pptok.h asm/preproc.h &
asm/stdscan.h asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/hashtbl.h include/iflag.h include/insns.h &
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/iflaggen.h &
+ x86/insnsi.h x86/regs.h
common/common.$(O): common/common.c asm/directiv.h asm/pptok.h asm/preproc.h &
asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/iflag.h include/insns.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
disasm/disasm.$(O): disasm/disasm.c asm/directiv.h asm/pptok.h asm/preproc.h &
asm/tokens.h config/msvc.h config/unknown.h config/watcom.h disasm/disasm.h &
disasm/sync.h include/compiler.h include/disp8.h include/iflag.h &
include/insns.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h x86/iflaggen.h &
- x86/insnsi.h x86/regdis.h x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h &
+ x86/iflaggen.h x86/insnsi.h x86/regdis.h x86/regs.h
disasm/ndisasm.$(O): disasm/ndisasm.c asm/directiv.h asm/pptok.h &
asm/preproc.h asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
disasm/disasm.h disasm/sync.h include/compiler.h include/error.h &
include/iflag.h include/insns.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- include/ver.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h include/ver.h x86/iflaggen.h x86/insnsi.h x86/regs.h
disasm/sync.$(O): disasm/sync.c config/msvc.h config/unknown.h &
config/watcom.h disasm/sync.h include/compiler.h include/nasmint.h &
include/nasmlib.h
macros/macros.$(O): macros/macros.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/hashtbl.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h output/outform.h &
- x86/insnsi.h x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h &
+ output/outform.h x86/insnsi.h x86/regs.h
+nasmlib/badenum.$(O): nasmlib/badenum.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
nasmlib/bsi.$(O): nasmlib/bsi.c config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
nasmlib/crc64.$(O): nasmlib/crc64.c config/msvc.h config/unknown.h &
@@ -419,8 +481,8 @@ nasmlib/filename.$(O): nasmlib/filename.c config/msvc.h config/unknown.h &
nasmlib/hashtbl.$(O): nasmlib/hashtbl.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/hashtbl.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h x86/insnsi.h x86/regs.h
nasmlib/ilog2.$(O): nasmlib/ilog2.c config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
nasmlib/malloc.$(O): nasmlib/malloc.c config/msvc.h config/unknown.h &
@@ -431,6 +493,9 @@ nasmlib/md5c.$(O): nasmlib/md5c.c config/msvc.h config/unknown.h &
nasmlib/mmap.$(O): nasmlib/mmap.c config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/error.h include/nasmint.h &
include/nasmlib.h nasmlib/file.h
+nasmlib/perfhash.$(O): nasmlib/perfhash.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/hashtbl.h include/nasmint.h &
+ include/nasmlib.h include/perfhash.h
nasmlib/raa.$(O): nasmlib/raa.c config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h &
include/raa.h
@@ -439,8 +504,8 @@ nasmlib/rbtree.$(O): nasmlib/rbtree.c config/msvc.h config/unknown.h &
nasmlib/readnum.$(O): nasmlib/readnum.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h x86/insnsi.h x86/regs.h
nasmlib/realpath.$(O): nasmlib/realpath.c config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
nasmlib/saa.$(O): nasmlib/saa.c config/msvc.h config/unknown.h &
@@ -461,91 +526,134 @@ output/codeview.$(O): output/codeview.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/hashtbl.h include/md5.h &
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
- include/saa.h include/strlist.h include/tables.h output/outlib.h &
- output/pecoff.h version.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/saa.h include/strlist.h include/tables.h &
+ output/outlib.h output/pecoff.h version.h x86/insnsi.h x86/regs.h
output/legacy.$(O): output/legacy.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/error.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h output/outlib.h &
- x86/insnsi.h x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h &
+ output/outlib.h x86/insnsi.h x86/regs.h
output/nulldbg.$(O): output/nulldbg.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
output/nullout.$(O): output/nullout.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
output/outaout.$(O): output/outaout.c asm/directiv.h asm/eval.h asm/pptok.h &
asm/preproc.h asm/stdscan.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/raa.h include/saa.h &
- include/strlist.h include/tables.h output/outform.h output/outlib.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/raa.h &
+ include/saa.h include/strlist.h include/tables.h output/outform.h &
+ output/outlib.h x86/insnsi.h x86/regs.h
output/outas86.$(O): output/outas86.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/raa.h include/saa.h &
- include/strlist.h include/tables.h output/outform.h output/outlib.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/raa.h &
+ include/saa.h include/strlist.h include/tables.h output/outform.h &
+ output/outlib.h x86/insnsi.h x86/regs.h
output/outbin.$(O): output/outbin.c asm/directiv.h asm/eval.h asm/pptok.h &
asm/preproc.h asm/stdscan.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/labels.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/saa.h &
- include/strlist.h include/tables.h output/outform.h output/outlib.h &
- x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/saa.h include/strlist.h include/tables.h output/outform.h &
+ output/outlib.h x86/insnsi.h x86/regs.h
output/outcoff.$(O): output/outcoff.c asm/directiv.h asm/eval.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/raa.h include/saa.h &
- include/strlist.h include/tables.h output/outform.h output/outlib.h &
- output/pecoff.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/raa.h &
+ include/saa.h include/strlist.h include/tables.h output/outform.h &
+ output/outlib.h output/pecoff.h x86/insnsi.h x86/regs.h
output/outdbg.$(O): output/outdbg.c asm/directiv.h asm/pptok.h asm/preproc.h &
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
- include/error.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h output/outform.h &
- output/outlib.h x86/insnsi.h x86/regs.h
+ asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
+ include/compiler.h include/error.h include/iflag.h include/insns.h &
+ include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
+ include/perfhash.h include/strlist.h include/tables.h output/outform.h &
+ output/outlib.h x86/iflaggen.h x86/insnsi.h x86/regs.h
output/outelf.$(O): output/outelf.c asm/directiv.h asm/eval.h asm/pptok.h &
asm/preproc.h asm/stdscan.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/raa.h include/rbtree.h &
- include/saa.h include/strlist.h include/tables.h include/ver.h &
- output/dwarf.h output/elf.h output/outelf.h output/outform.h &
+ include/nasmlib.h include/opflags.h include/perfhash.h include/raa.h &
+ include/rbtree.h include/saa.h include/strlist.h include/tables.h &
+ include/ver.h output/dwarf.h output/elf.h output/outelf.h output/outform.h &
output/outlib.h output/stabs.h x86/insnsi.h x86/regs.h
output/outform.$(O): output/outform.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h output/outform.h &
- x86/insnsi.h x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h &
+ output/outform.h x86/insnsi.h x86/regs.h
output/outieee.$(O): output/outieee.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- include/ver.h output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h include/ver.h output/outform.h output/outlib.h &
+ x86/insnsi.h x86/regs.h
output/outlib.$(O): output/outlib.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/error.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h output/outlib.h &
- x86/insnsi.h x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h &
+ output/outlib.h x86/insnsi.h x86/regs.h
output/outmacho.$(O): output/outmacho.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
- include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/raa.h include/rbtree.h &
- include/saa.h include/strlist.h include/tables.h output/outform.h &
- output/outlib.h x86/insnsi.h x86/regs.h
+ include/compiler.h include/error.h include/labels.h include/nasm.h &
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/raa.h include/rbtree.h include/saa.h include/strlist.h &
+ include/tables.h output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
output/outobj.$(O): output/outobj.c asm/directiv.h asm/eval.h asm/pptok.h &
asm/preproc.h asm/stdscan.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h &
- include/ver.h output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/strlist.h &
+ include/tables.h include/ver.h output/outform.h output/outlib.h &
+ x86/insnsi.h x86/regs.h
output/outrdf2.$(O): output/outrdf2.c asm/directiv.h asm/pptok.h &
asm/preproc.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/error.h include/nasm.h include/nasmint.h &
- include/nasmlib.h include/opflags.h include/rdoff.h include/saa.h &
- include/strlist.h include/tables.h output/outform.h output/outlib.h &
- x86/insnsi.h x86/regs.h
+ include/nasmlib.h include/opflags.h include/perfhash.h include/rdoff.h &
+ include/saa.h include/strlist.h include/tables.h output/outform.h &
+ output/outlib.h x86/insnsi.h x86/regs.h
+rdoff/collectn.$(O): rdoff/collectn.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/nasmint.h rdoff/collectn.h
+rdoff/hash.$(O): rdoff/hash.c config/msvc.h config/unknown.h config/watcom.h &
+ include/compiler.h include/nasmint.h rdoff/hash.h
+rdoff/iochk.$(O): rdoff/iochk.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
+rdoff/ldrdf.$(O): rdoff/ldrdf.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/error.h include/nasmint.h &
+ include/nasmlib.h include/rdoff.h rdoff/collectn.h rdoff/ldsegs.h &
+ rdoff/rdfutils.h rdoff/rdlib.h rdoff/segtab.h rdoff/symtab.h
+rdoff/rdf2bin.$(O): rdoff/rdf2bin.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/error.h include/nasmint.h &
+ include/nasmlib.h include/rdoff.h rdoff/rdfload.h rdoff/rdfutils.h
+rdoff/rdfdump.$(O): rdoff/rdfdump.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/error.h include/nasmint.h &
+ include/nasmlib.h include/rdoff.h rdoff/rdfutils.h
+rdoff/rdflib.$(O): rdoff/rdflib.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/error.h include/nasmint.h &
+ include/nasmlib.h include/rdoff.h rdoff/rdfutils.h
+rdoff/rdfload.$(O): rdoff/rdfload.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/error.h include/nasmint.h &
+ include/nasmlib.h include/rdoff.h rdoff/collectn.h rdoff/rdfload.h &
+ rdoff/rdfutils.h rdoff/symtab.h
+rdoff/rdlar.$(O): rdoff/rdlar.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/nasmint.h rdoff/rdlar.h
+rdoff/rdlib.$(O): rdoff/rdlib.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/error.h include/nasmint.h &
+ include/nasmlib.h include/rdoff.h rdoff/rdfutils.h rdoff/rdlar.h &
+ rdoff/rdlib.h
+rdoff/rdoff.$(O): rdoff/rdoff.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/error.h include/nasmint.h &
+ include/nasmlib.h include/rdoff.h rdoff/rdfutils.h
+rdoff/rdx.$(O): rdoff/rdx.c config/msvc.h config/unknown.h config/watcom.h &
+ include/compiler.h include/error.h include/nasmint.h include/nasmlib.h &
+ include/rdoff.h rdoff/rdfload.h rdoff/rdfutils.h rdoff/symtab.h
+rdoff/segtab.$(O): rdoff/segtab.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/nasmint.h rdoff/segtab.h
+rdoff/symtab.$(O): rdoff/symtab.c config/msvc.h config/unknown.h &
+ config/watcom.h include/compiler.h include/nasmint.h rdoff/hash.h &
+ rdoff/symtab.h
stdlib/snprintf.$(O): stdlib/snprintf.c config/msvc.h config/unknown.h &
config/watcom.h include/compiler.h include/nasmint.h include/nasmlib.h
stdlib/strlcpy.$(O): stdlib/strlcpy.c config/msvc.h config/unknown.h &
@@ -558,32 +666,33 @@ stdlib/vsnprintf.$(O): stdlib/vsnprintf.c config/msvc.h config/unknown.h &
x86/disp8.$(O): x86/disp8.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/disp8.h include/nasm.h include/nasmint.h include/nasmlib.h &
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h &
- x86/regs.h
+ include/opflags.h include/perfhash.h include/strlist.h include/tables.h &
+ x86/insnsi.h x86/regs.h
x86/iflag.$(O): x86/iflag.c config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/iflag.h include/nasmint.h x86/iflaggen.h
x86/insnsa.$(O): x86/insnsa.c asm/directiv.h asm/pptok.h asm/preproc.h &
asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/iflag.h include/insns.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
x86/insnsb.$(O): x86/insnsb.c asm/directiv.h asm/pptok.h asm/preproc.h &
asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/iflag.h include/insns.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
x86/insnsd.$(O): x86/insnsd.c asm/directiv.h asm/pptok.h asm/preproc.h &
asm/tokens.h config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/iflag.h include/insns.h include/nasm.h &
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h &
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
+ include/nasmint.h include/nasmlib.h include/opflags.h include/perfhash.h &
+ include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
x86/insnsn.$(O): x86/insnsn.c config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/nasmint.h include/tables.h x86/insnsi.h
x86/regdis.$(O): x86/regdis.c x86/regdis.h x86/regs.h
x86/regflags.$(O): x86/regflags.c asm/directiv.h asm/pptok.h asm/preproc.h &
config/msvc.h config/unknown.h config/watcom.h include/compiler.h &
include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h &
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
+ include/perfhash.h include/strlist.h include/tables.h x86/insnsi.h &
+ x86/regs.h
x86/regs.$(O): x86/regs.c config/msvc.h config/unknown.h config/watcom.h &
include/compiler.h include/nasmint.h include/tables.h x86/insnsi.h
x86/regvals.$(O): x86/regvals.c config/msvc.h config/unknown.h &
diff --git a/Mkfiles/owlinux.mak b/Mkfiles/owlinux.mak
deleted file mode 100644
index b8bd9140..00000000
--- a/Mkfiles/owlinux.mak
+++ /dev/null
@@ -1,599 +0,0 @@
-# -*- makefile -*-
-#
-# Makefile for cross-compiling NASM from Linux
-# to DOS, Win32 or OS/2 using OpenWatcom.
-#
-# Please see http://bugzilla.openwatcom.org/show_bug.cgi?id=751
-# for some caveats in using OpenWatcom as a cross-compiler
-# from Linux, in particular:
-#
-# > Second and more importantly, the makefile needs to ensure that the
-# > proper headers are included. This is normally not a problem when
-# > building on DOS, Windows, or OS/2, as they share the same C
-# > library headers. But when cross-compiling from (or to) Linux, it
-# > is crucial.
-# >
-# > This may be accomplished by setting the INCLUDE env var in the
-# > makefile, or setting OS2_INCLUDE, DOS_INCLUDE, NT_INCLUDE env vars
-# > *and* making sure that the proper -bt switch is used, or passing a
-# > switch like -I"$(%WATCOM)/h". The last variant is probably the
-# > easiest to implement and least likely to break.
-#
-
-top_srcdir = .
-srcdir = .
-prefix = C:/Program Files/NASM
-exec_prefix = $(prefix)
-bindir = $(prefix)/bin
-mandir = $(prefix)/man
-
-CC = wcl386
-DEBUG =
-CFLAGS = -6 -ox -wx -ze -fpi $(DEBUG)
-BUILD_CFLAGS = $(CFLAGS) $(TARGET_FLAGS) # -I$(srcdir)/inttypes
-INTERNAL_CFLAGS = -I$(srcdir) -I. \
- -DHAVE_SNPRINTF -DHAVE_VSNPRINTF
-ALL_CFLAGS = $(BUILD_CFLAGS) $(INTERNAL_CFLAGS)
-LD = $(CC)
-LDFLAGS = $(ALL_CFLAGS)
-LIBS =
-PERL = perl -I$(srcdir)/perllib -I$(srcdir)
-
-STRIP = wstrip
-
-# Binary suffixes
-O = obj
-X = .exe
-
-# WMAKE errors out if a suffix is declared more than once, including
-# its own built-in declarations. Thus, we need to explicitly clear the list
-# first. Also, WMAKE only allows implicit rules that point "to the left"
-# in this list!
-.SUFFIXES:
-.SUFFIXES: .man .1 .$(O) .i .c
-
-.c.$(O):
- $(CC) -c $(ALL_CFLAGS) -fo=$@ $<
-
-#-- Begin File Lists --#
-# Edit in Makefile.in, not here!
-NASM = asm/nasm.$(O)
-NDISASM = disasm/ndisasm.$(O)
-
-LIBOBJ = stdlib/snprintf.$(O) stdlib/vsnprintf.$(O) stdlib/strlcpy.$(O) \
- stdlib/strnlen.$(O) \
- nasmlib/ver.$(O) \
- nasmlib/crc64.$(O) nasmlib/malloc.$(O) \
- nasmlib/md5c.$(O) nasmlib/string.$(O) \
- nasmlib/file.$(O) nasmlib/mmap.$(O) nasmlib/ilog2.$(O) \
- nasmlib/realpath.$(O) nasmlib/filename.$(O) nasmlib/srcfile.$(O) \
- nasmlib/zerobuf.$(O) nasmlib/readnum.$(O) nasmlib/bsi.$(O) \
- nasmlib/rbtree.$(O) nasmlib/hashtbl.$(O) \
- nasmlib/raa.$(O) nasmlib/saa.$(O) \
- nasmlib/strlist.$(O) \
- common/common.$(O) \
- x86/insnsa.$(O) x86/insnsb.$(O) x86/insnsd.$(O) x86/insnsn.$(O) \
- x86/regs.$(O) x86/regvals.$(O) x86/regflags.$(O) x86/regdis.$(O) \
- x86/disp8.$(O) x86/iflag.$(O) \
- \
- asm/error.$(O) \
- asm/float.$(O) \
- asm/directiv.$(O) asm/directbl.$(O) \
- asm/pragma.$(O) \
- asm/assemble.$(O) asm/labels.$(O) asm/parser.$(O) \
- asm/preproc.$(O) asm/quote.$(O) asm/pptok.$(O) \
- asm/listing.$(O) asm/eval.$(O) asm/exprlib.$(O) asm/exprdump.$(O) \
- asm/stdscan.$(O) \
- asm/strfunc.$(O) asm/tokhash.$(O) \
- asm/segalloc.$(O) \
- asm/preproc-nop.$(O) \
- asm/rdstrnum.$(O) \
- \
- macros/macros.$(O) \
- \
- output/outform.$(O) output/outlib.$(O) output/legacy.$(O) \
- output/nulldbg.$(O) output/nullout.$(O) \
- output/outbin.$(O) output/outaout.$(O) output/outcoff.$(O) \
- output/outelf.$(O) \
- output/outobj.$(O) output/outas86.$(O) output/outrdf2.$(O) \
- output/outdbg.$(O) output/outieee.$(O) output/outmacho.$(O) \
- output/codeview.$(O) \
- \
- disasm/disasm.$(O) disasm/sync.$(O)
-
-SUBDIRS = stdlib nasmlib output asm disasm x86 common macros
-XSUBDIRS = test doc nsis
-#-- End File Lists --#
-
-what:
- @echo 'Please build "dos", "win32" or "os2"'
-
-dos:
- $(MAKE) -f $(MAKEFILE_LIST) all TARGET_FLAGS='-bt=DOS -l=DOS4G'
-
-win32:
- $(MAKE) -f $(MAKEFILE_LIST) all TARGET_FLAGS='-bt=NT -l=NT'
-
-os2:
- $(MAKE) -f $(MAKEFILE_LIST) all TARGET_FLAGS='-bt=OS2 -l=OS2V2'
-
-all: nasm$(X) ndisasm$(X)
-
-nasm$(X): $(NASM)
- $(LD) $(LDFLAGS) -fe=nasm$(X) $(NASM) $(LIBS)
-
-ndisasm$(X): $(NDISASM)
- $(LD) $(LDFLAGS) -fe=ndisasm$(X) $(NDISASM) $(LIBS)
-
-# These source files are automagically generated from a single
-# instruction-table file by a Perl script. They're distributed,
-# though, so it isn't necessary to have Perl just to recompile NASM
-# from the distribution.
-
-insns.pl: insns-iflags.pl
-
-iflag.c iflag.h: insns.dat insns.pl
- $(PERL) $(srcdir)/insns.pl -t $(srcdir)/insns.dat
-insnsb.c: insns.dat insns.pl
- $(PERL) $(srcdir)/insns.pl -b $(srcdir)/insns.dat
-insnsa.c: insns.dat insns.pl
- $(PERL) $(srcdir)/insns.pl -a $(srcdir)/insns.dat
-insnsd.c: insns.dat insns.pl
- $(PERL) $(srcdir)/insns.pl -d $(srcdir)/insns.dat
-insnsi.h: insns.dat insns.pl
- $(PERL) $(srcdir)/insns.pl -i $(srcdir)/insns.dat
-insnsn.c: insns.dat insns.pl
- $(PERL) $(srcdir)/insns.pl -n $(srcdir)/insns.dat
-
-# These files contains all the standard macros that are derived from
-# the version number.
-version.h: version version.pl
- $(PERL) $(srcdir)/version.pl h < $(srcdir)/version > version.h
-
-version.mac: version version.pl
- $(PERL) $(srcdir)/version.pl mac < $(srcdir)/version > version.mac
-
-# This source file is generated from the standard macros file
-# `standard.mac' by another Perl script. Again, it's part of the
-# standard distribution.
-
-macros.c: macros.pl standard.mac version.mac
- $(PERL) $(srcdir)/macros.pl $(srcdir)/standard.mac version.mac
-
-# These source files are generated from regs.dat by yet another
-# perl script.
-regs.c: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl c $(srcdir)/regs.dat > regs.c
-regflags.c: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl fc $(srcdir)/regs.dat > regflags.c
-regdis.c: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl dc $(srcdir)/regs.dat > regdis.c
-regdis.h: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl dh $(srcdir)/regs.dat > regdis.h
-regvals.c: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl vc $(srcdir)/regs.dat > regvals.c
-regs.h: regs.dat regs.pl
- $(PERL) $(srcdir)/regs.pl h $(srcdir)/regs.dat > regs.h
-
-# Assembler token hash
-tokhash.c: insns.dat regs.dat tokens.dat tokhash.pl perllib/phash.ph
- $(PERL) $(srcdir)/tokhash.pl c $(srcdir)/insns.dat $(srcdir)/regs.dat \
- $(srcdir)/tokens.dat > tokhash.c
-
-# Assembler token metadata
-tokens.h: insns.dat regs.dat tokens.dat tokhash.pl perllib/phash.ph
- $(PERL) $(srcdir)/tokhash.pl h $(srcdir)/insns.dat $(srcdir)/regs.dat \
- $(srcdir)/tokens.dat > tokens.h
-
-# Preprocessor token hash
-pptok.h: pptok.dat pptok.pl perllib/phash.ph
- $(PERL) $(srcdir)/pptok.pl h $(srcdir)/pptok.dat pptok.h
-pptok.c: pptok.dat pptok.pl perllib/phash.ph
- $(PERL) $(srcdir)/pptok.pl c $(srcdir)/pptok.dat pptok.c
-
-# This target generates all files that require perl.
-# This allows easier generation of distribution (see dist target).
-PERLREQ = macros.c insnsb.c insnsa.c insnsd.c insnsi.h insnsn.c \
- regs.c regs.h regflags.c regdis.c regdis.h regvals.c \
- tokhash.c tokens.h pptok.h pptok.c \
- version.h version.mac iflag.c iflag.h
-perlreq: $(PERLREQ)
-
-clean:
- -rm -f *.$(O)
- -rm -f *.s
- -rm -f *.i
- -rm -f lib/*.$(O)
- -rm -f lib/*.s
- -rm -f lib/*.i
- -rm -f output/*.$(O)
- -rm -f output/*.s
- -rm -f output/*.i
- -rm -f nasm$(X)
- -rm -f ndisasm$(X)
- # cd rdoff && $(MAKE) clean
-
-distclean: clean .SYMBOLIC
- -rm -f config.h
- -rm -f config.log
- -rm -f config.status
- -rm -f Makefile
- -rm -f *~
- -rm -f *.bak
- -rm -f *.lst
- -rm -f *.bin
- -rm -f output/*~
- -rm -f output/*.bak
- -rm -f test/*.lst
- -rm -f test/*.bin
- -rm -f test/*.$(O)
- -rm -f test/*.bin
- -rm -f/s autom4te*.cache
- # cd rdoff && $(MAKE) distclean
-
-cleaner: clean .SYMBOLIC
- -rm -f $(PERLREQ)
- -rm -f *.man
- -rm -f nasm.spec
- # cd doc && $(MAKE) clean
-
-spotless: distclean cleaner .SYMBOLIC
- -rm -f doc/Makefile
- -rm -f doc/*~
- -rm -f doc/*.bak
-
-strip:
- $(STRIP) *.exe
-
-rdf:
- # cd rdoff && $(MAKE)
-
-doc:
- # cd doc && $(MAKE) all
-
-everything: all doc rdf
-
-#-- Magic hints to mkdep.pl --#
-# @object-ending: ".$(O)"
-# @path-separator: "/"
-# @exclude: "config.h"
-# @continuation: "\"
-#-- Everything below is generated by mkdep.pl - do not edit --#
-asm/assemble.$(O): asm/assemble.c asm/assemble.h asm/directiv.h \
- asm/listing.h asm/pptok.h asm/preproc.h asm/tokens.h config/config.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/disp8.h include/error.h include/iflag.h include/insns.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/directbl.$(O): asm/directbl.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/hashtbl.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
-asm/directiv.$(O): asm/directiv.c asm/assemble.h asm/directiv.h asm/eval.h \
- asm/float.h asm/listing.h asm/pptok.h asm/preproc.h asm/stdscan.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/iflag.h include/labels.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h output/outform.h x86/iflaggen.h \
- x86/insnsi.h x86/regs.h
-asm/error.$(O): asm/error.c config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasmint.h \
- include/nasmlib.h
-asm/eval.$(O): asm/eval.c asm/assemble.h asm/directiv.h asm/eval.h \
- asm/float.h asm/pptok.h asm/preproc.h config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/error.h \
- include/iflag.h include/labels.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/exprdump.$(O): asm/exprdump.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
-asm/exprlib.$(O): asm/exprlib.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
-asm/float.$(O): asm/float.c asm/directiv.h asm/float.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
-asm/labels.$(O): asm/labels.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/hashtbl.h include/labels.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/insnsi.h x86/regs.h
-asm/listing.$(O): asm/listing.c asm/directiv.h asm/listing.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
-asm/nasm.$(O): asm/nasm.c asm/assemble.h asm/directiv.h asm/eval.h \
- asm/float.h asm/listing.h asm/parser.h asm/pptok.h asm/preproc.h \
- asm/stdscan.h asm/tokens.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/iflag.h \
- include/insns.h include/labels.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/raa.h include/saa.h \
- include/strlist.h include/tables.h include/ver.h output/outform.h \
- x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/parser.$(O): asm/parser.c asm/assemble.h asm/directiv.h asm/eval.h \
- asm/float.h asm/parser.h asm/pptok.h asm/preproc.h asm/stdscan.h \
- asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/iflag.h include/insns.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/pptok.$(O): asm/pptok.c asm/pptok.h asm/preproc.h config/config.h \
- config/msvc.h config/unknown.h config/watcom.h include/compiler.h \
- include/hashtbl.h include/nasmint.h include/nasmlib.h
-asm/pragma.$(O): asm/pragma.c asm/assemble.h asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/iflag.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/strlist.h include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/preproc-nop.$(O): asm/preproc-nop.c asm/directiv.h asm/listing.h \
- asm/pptok.h asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
-asm/preproc.$(O): asm/preproc.c asm/directiv.h asm/eval.h asm/listing.h \
- asm/pptok.h asm/preproc.h asm/quote.h asm/stdscan.h asm/tokens.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/hashtbl.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
-asm/quote.$(O): asm/quote.c asm/quote.h config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h
-asm/rdstrnum.$(O): asm/rdstrnum.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
-asm/segalloc.$(O): asm/segalloc.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/stdscan.$(O): asm/stdscan.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/quote.h asm/stdscan.h asm/tokens.h config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/error.h \
- include/iflag.h include/insns.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/iflaggen.h x86/insnsi.h x86/regs.h
-asm/strfunc.$(O): asm/strfunc.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
-asm/tokhash.$(O): asm/tokhash.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/stdscan.h asm/tokens.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/hashtbl.h include/iflag.h \
- include/insns.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/iflaggen.h \
- x86/insnsi.h x86/regs.h
-common/common.$(O): common/common.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-disasm/disasm.$(O): disasm/disasm.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
- disasm/disasm.h disasm/sync.h include/compiler.h include/disp8.h \
- include/iflag.h include/insns.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/iflaggen.h x86/insnsi.h x86/regdis.h x86/regs.h
-disasm/ndisasm.$(O): disasm/ndisasm.c asm/directiv.h asm/pptok.h \
- asm/preproc.h asm/tokens.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h disasm/disasm.h disasm/sync.h include/compiler.h \
- include/error.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h include/ver.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-disasm/sync.$(O): disasm/sync.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h disasm/sync.h include/compiler.h \
- include/nasmint.h include/nasmlib.h
-macros/macros.$(O): macros/macros.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/hashtbl.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outform.h x86/insnsi.h x86/regs.h
-nasmlib/bsi.$(O): nasmlib/bsi.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h
-nasmlib/crc64.$(O): nasmlib/crc64.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/hashtbl.h \
- include/nasmint.h include/nasmlib.h
-nasmlib/file.$(O): nasmlib/file.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/error.h \
- include/nasmint.h include/nasmlib.h nasmlib/file.h
-nasmlib/filename.$(O): nasmlib/filename.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/error.h \
- include/nasmint.h include/nasmlib.h
-nasmlib/hashtbl.$(O): nasmlib/hashtbl.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/hashtbl.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
-nasmlib/ilog2.$(O): nasmlib/ilog2.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h
-nasmlib/malloc.$(O): nasmlib/malloc.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/error.h \
- include/nasmint.h include/nasmlib.h
-nasmlib/md5c.$(O): nasmlib/md5c.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/md5.h \
- include/nasmint.h
-nasmlib/mmap.$(O): nasmlib/mmap.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/error.h \
- include/nasmint.h include/nasmlib.h nasmlib/file.h
-nasmlib/raa.$(O): nasmlib/raa.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h include/raa.h
-nasmlib/rbtree.$(O): nasmlib/rbtree.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/rbtree.h
-nasmlib/readnum.$(O): nasmlib/readnum.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/insnsi.h x86/regs.h
-nasmlib/realpath.$(O): nasmlib/realpath.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h
-nasmlib/saa.$(O): nasmlib/saa.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h include/saa.h
-nasmlib/srcfile.$(O): nasmlib/srcfile.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/hashtbl.h \
- include/nasmint.h include/nasmlib.h
-nasmlib/string.$(O): nasmlib/string.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h
-nasmlib/strlist.$(O): nasmlib/strlist.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h include/strlist.h
-nasmlib/ver.$(O): nasmlib/ver.c include/ver.h version.h
-nasmlib/zerobuf.$(O): nasmlib/zerobuf.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h
-output/codeview.$(O): output/codeview.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/hashtbl.h \
- include/md5.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/saa.h include/strlist.h include/tables.h \
- output/outlib.h output/pecoff.h version.h x86/insnsi.h x86/regs.h
-output/legacy.$(O): output/legacy.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/nulldbg.$(O): output/nulldbg.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
-output/nullout.$(O): output/nullout.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h output/outlib.h x86/insnsi.h x86/regs.h
-output/outaout.$(O): output/outaout.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h asm/stdscan.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/outas86.$(O): output/outas86.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/outbin.$(O): output/outbin.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h asm/stdscan.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/labels.h \
- include/nasm.h include/nasmint.h include/nasmlib.h include/opflags.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/outcoff.$(O): output/outcoff.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h output/pecoff.h x86/insnsi.h x86/regs.h
-output/outdbg.$(O): output/outdbg.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
-output/outelf.$(O): output/outelf.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h asm/stdscan.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/rbtree.h include/saa.h include/strlist.h include/tables.h \
- include/ver.h output/dwarf.h output/elf.h output/outelf.h output/outform.h \
- output/outlib.h output/stabs.h x86/insnsi.h x86/regs.h
-output/outform.$(O): output/outform.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outform.h x86/insnsi.h x86/regs.h
-output/outieee.$(O): output/outieee.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h include/ver.h output/outform.h output/outlib.h \
- x86/insnsi.h x86/regs.h
-output/outlib.$(O): output/outlib.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/error.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-output/outmacho.$(O): output/outmacho.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/raa.h \
- include/rbtree.h include/saa.h include/strlist.h include/tables.h \
- output/outform.h output/outlib.h x86/insnsi.h x86/regs.h
-output/outobj.$(O): output/outobj.c asm/directiv.h asm/eval.h asm/pptok.h \
- asm/preproc.h asm/stdscan.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h include/ver.h output/outform.h output/outlib.h \
- x86/insnsi.h x86/regs.h
-output/outrdf2.$(O): output/outrdf2.c asm/directiv.h asm/pptok.h \
- asm/preproc.h config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/error.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/rdoff.h \
- include/saa.h include/strlist.h include/tables.h output/outform.h \
- output/outlib.h x86/insnsi.h x86/regs.h
-stdlib/snprintf.$(O): stdlib/snprintf.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/nasmlib.h
-stdlib/strlcpy.$(O): stdlib/strlcpy.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h
-stdlib/strnlen.$(O): stdlib/strnlen.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h
-stdlib/vsnprintf.$(O): stdlib/vsnprintf.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/error.h \
- include/nasmint.h include/nasmlib.h
-x86/disp8.$(O): x86/disp8.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/disp8.h include/nasm.h include/nasmint.h \
- include/nasmlib.h include/opflags.h include/strlist.h include/tables.h \
- x86/insnsi.h x86/regs.h
-x86/iflag.$(O): x86/iflag.c config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/iflag.h include/nasmint.h \
- x86/iflaggen.h
-x86/insnsa.$(O): x86/insnsa.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-x86/insnsb.$(O): x86/insnsb.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-x86/insnsd.$(O): x86/insnsd.c asm/directiv.h asm/pptok.h asm/preproc.h \
- asm/tokens.h config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/iflag.h include/insns.h include/nasm.h \
- include/nasmint.h include/nasmlib.h include/opflags.h include/strlist.h \
- include/tables.h x86/iflaggen.h x86/insnsi.h x86/regs.h
-x86/insnsn.$(O): x86/insnsn.c config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/tables.h \
- x86/insnsi.h
-x86/regdis.$(O): x86/regdis.c x86/regdis.h x86/regs.h
-x86/regflags.$(O): x86/regflags.c asm/directiv.h asm/pptok.h asm/preproc.h \
- config/config.h config/msvc.h config/unknown.h config/watcom.h \
- include/compiler.h include/nasm.h include/nasmint.h include/nasmlib.h \
- include/opflags.h include/strlist.h include/tables.h x86/insnsi.h \
- x86/regs.h
-x86/regs.$(O): x86/regs.c config/config.h config/msvc.h config/unknown.h \
- config/watcom.h include/compiler.h include/nasmint.h include/tables.h \
- x86/insnsi.h
-x86/regvals.$(O): x86/regvals.c config/config.h config/msvc.h \
- config/unknown.h config/watcom.h include/compiler.h include/nasmint.h \
- include/tables.h x86/insnsi.h
diff --git a/aclocal.m4 b/aclocal.m4
index d8b711bf..5d278448 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -130,6 +130,25 @@ void foo(void)
])
dnl --------------------------------------------------------------------------
+dnl PA_ARG_ENABLED
+dnl PA_ARG_DISABLED
+dnl
+dnl Simpler-to-use versions of AC_ARG_ENABLED, that include the
+dnl test for $enableval and the AS_HELP_STRING definition
+dnl --------------------------------------------------------------------------
+AC_DEFUN(PA_ARG_ENABLED,
+[AC_ARG_ENABLE([$1],
+ [AS_HELP_STRING([--enable-$1],[$2])], [], [enableval=no])
+ AS_IF([test x"$enableval" != xno], [$3], [$4])
+])
+
+AC_DEFUN(PA_ARG_DISABLED,
+[AC_ARG_ENABLE([$1],
+ [AS_HELP_STRING([--disable-$1],[$2])], [], [enableval=yes])
+ AS_IF([test x"$enableval" = xno], [$3], [$4])
+])
+
+dnl --------------------------------------------------------------------------
dnl PA_ADD_HEADERS()
dnl
dnl Call AC_CHECK_HEADERS(), and add to ac_includes_default if found
diff --git a/asm/assemble.c b/asm/assemble.c
index 33e593e3..9c76b0ea 100644
--- a/asm/assemble.c
+++ b/asm/assemble.c
@@ -198,7 +198,9 @@ enum match_result {
MERR_INVALOP,
MERR_OPSIZEMISSING,
MERR_OPSIZEMISMATCH,
+ MERR_BRNOTHERE,
MERR_BRNUMMISMATCH,
+ MERR_MASKNOTHERE,
MERR_BADCPU,
MERR_BADMODE,
MERR_BADHLE,
@@ -242,7 +244,8 @@ static int op_rexflags(const operand *, int);
static int op_evexflags(const operand *, int, uint8_t);
static void add_asp(insn *, int);
-static enum ea_type process_ea(operand *, ea *, int, int, opflags_t, insn *);
+static enum ea_type process_ea(operand *, ea *, int, int,
+ opflags_t, insn *, const char **);
static inline bool absolute_op(const struct operand *o)
{
@@ -546,7 +549,7 @@ int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction)
int32_t itimes;
int64_t wsize; /* size for DB etc. */
- nasm_zero(&data);
+ nasm_zero(data);
data.offset = start;
data.segment = segment;
data.itemp = NULL;
@@ -756,10 +759,18 @@ int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction)
case MERR_OPSIZEMISMATCH:
nasm_error(ERR_NONFATAL, "mismatch in operand sizes");
break;
+ case MERR_BRNOTHERE:
+ nasm_error(ERR_NONFATAL,
+ "broadcast not permitted on this operand");
+ break;
case MERR_BRNUMMISMATCH:
nasm_error(ERR_NONFATAL,
"mismatch in the number of broadcasting elements");
break;
+ case MERR_MASKNOTHERE:
+ nasm_error(ERR_NONFATAL,
+ "mask not permitted on this operand");
+ break;
case MERR_BADCPU:
nasm_error(ERR_NONFATAL, "no instruction for this cpu level");
break;
@@ -920,6 +931,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits,
uint8_t hleok = 0;
bool lockcheck = true;
enum reg_enum mib_index = R_none; /* For a separate index MIB reg form */
+ const char *errmsg;
ins->rex = 0; /* Ensure REX is reset */
eat = EA_SCALAR; /* Expect a scalar EA */
@@ -1277,8 +1289,8 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits,
}
if (process_ea(opy, &ea_data, bits,
- rfield, rflags, ins) != eat) {
- nasm_error(ERR_NONFATAL, "invalid effective address");
+ rfield, rflags, ins, &errmsg) != eat) {
+ nasm_error(ERR_NONFATAL, "%s", errmsg);
return -1;
} else {
ins->rex |= ea_data.rex;
@@ -1542,6 +1554,7 @@ static void gencode(struct out_data *data, insn *ins)
enum ea_type eat = EA_SCALAR;
int r;
const int bits = data->bits;
+ const char *errmsg;
ins->rex_done = false;
@@ -1919,8 +1932,8 @@ static void gencode(struct out_data *data, insn *ins)
}
if (process_ea(opy, &ea_data, bits,
- rfield, rflags, ins) != eat)
- nasm_error(ERR_NONFATAL, "invalid effective address");
+ rfield, rflags, ins, &errmsg) != eat)
+ nasm_error(ERR_NONFATAL, "%s", errmsg);
p = bytes;
*p++ = ea_data.modrm;
@@ -1948,7 +1961,8 @@ static void gencode(struct out_data *data, insn *ins)
warn_overflow(ea_data.bytes);
out_imm(data, opy, ea_data.bytes,
- (asize > ea_data.bytes) ? OUT_SIGNED : OUT_UNSIGNED);
+ (asize > ea_data.bytes)
+ ? OUT_SIGNED : OUT_WRAP);
}
}
}
@@ -2277,6 +2291,7 @@ static enum match_result matches(const struct itemplate *itemp,
for (i = 0; i < itemp->operands; i++) {
opflags_t type = instruction->oprs[i].type;
decoflags_t deco = instruction->oprs[i].decoflags;
+ decoflags_t ideco = itemp->deco[i];
bool is_broadcast = deco & BRDCAST_MASK;
uint8_t brcast_num = 0;
opflags_t template_opsize, insn_opsize;
@@ -2288,12 +2303,15 @@ static enum match_result matches(const struct itemplate *itemp,
if (!is_broadcast) {
template_opsize = itemp->opd[i] & SIZE_MASK;
} else {
- decoflags_t deco_brsize = itemp->deco[i] & BRSIZE_MASK;
+ decoflags_t deco_brsize = ideco & BRSIZE_MASK;
+
+ if (~ideco & BRDCAST_MASK)
+ return MERR_BRNOTHERE;
+
/*
* when broadcasting, the element size depends on
* the instruction type. decorator flag should match.
*/
-
if (deco_brsize) {
template_opsize = (deco_brsize == BR_BITS32 ? BITS32 : BITS64);
/* calculate the proper number : {1to<brcast_num>} */
@@ -2303,8 +2321,10 @@ static enum match_result matches(const struct itemplate *itemp,
}
}
- if ((itemp->opd[i] & ~type & ~SIZE_MASK) ||
- (deco & ~itemp->deco[i] & ~BRNUM_MASK)) {
+ if (~ideco & deco & OPMASK_MASK)
+ return MERR_MASKNOTHERE;
+
+ if (itemp->opd[i] & ~type & ~SIZE_MASK) {
return MERR_INVALOP;
} else if (template_opsize) {
if (template_opsize != insn_opsize) {
@@ -2415,12 +2435,15 @@ static enum match_result matches(const struct itemplate *itemp,
is_disp8n(input, ins, &output->disp8)))
static enum ea_type process_ea(operand *input, ea *output, int bits,
- int rfield, opflags_t rflags, insn *ins)
+ int rfield, opflags_t rflags, insn *ins,
+ const char **errmsg)
{
bool forw_ref = !!(input->opflags & OPFLAG_UNKNOWN);
int addrbits = ins->addr_size;
int eaflags = input->eaflags;
+ *errmsg = "invalid effective address"; /* Default error message */
+
output->type = EA_SCALAR;
output->rip = false;
output->disp8 = 0;
@@ -2442,7 +2465,7 @@ static enum ea_type process_ea(operand *input, ea *output, int bits,
/* broadcasting is not available with a direct register operand. */
if (input->decoflags & BRDCAST_MASK) {
- nasm_error(ERR_NONFATAL, "Broadcasting not allowed from a register");
+ *errmsg = "broadcast not allowed with register operand";
goto err;
}
@@ -2458,9 +2481,9 @@ static enum ea_type process_ea(operand *input, ea *output, int bits,
/* Embedded rounding or SAE is not available with a mem ref operand. */
if (input->decoflags & (ER | SAE)) {
- nasm_error(ERR_NONFATAL,
- "Embedded rounding is available only with reg-reg op.");
- return -1;
+ *errmsg = "embedded rounding is available only with "
+ "register-register operations";
+ goto err;
}
if (input->basereg == -1 &&
@@ -2469,8 +2492,10 @@ static enum ea_type process_ea(operand *input, ea *output, int bits,
* It's a pure offset.
*/
if (bits == 64 && ((input->type & IP_REL) == IP_REL)) {
- if (input->segment == NO_SEG || (input->opflags & OPFLAG_RELATIVE)) {
- nasm_error(ERR_WARNING | ERR_PASS2, "absolute address can not be RIP-relative");
+ if (input->segment == NO_SEG ||
+ (input->opflags & OPFLAG_RELATIVE)) {
+ nasm_error(ERR_WARNING | ERR_PASS2,
+ "absolute address can not be RIP-relative");
input->type &= ~IP_REL;
input->type |= MEMORY;
}
@@ -2478,14 +2503,15 @@ static enum ea_type process_ea(operand *input, ea *output, int bits,
if (bits == 64 &&
!(IP_REL & ~input->type) && (eaflags & EAF_MIB)) {
- nasm_error(ERR_NONFATAL, "RIP-relative addressing is prohibited for mib.");
- return -1;
+ *errmsg = "RIP-relative addressing is prohibited for MIB";
+ goto err;
}
if (eaflags & EAF_BYTEOFFS ||
(eaflags & EAF_WORDOFFS &&
input->disp_size != (addrbits != 16 ? 32 : 16))) {
- nasm_error(ERR_WARNING | ERR_PASS1, "displacement size ignored on absolute address");
+ nasm_error(ERR_WARNING | ERR_PASS1,
+ "displacement size ignored on absolute address");
}
if (bits == 64 && (~input->type & IP_REL)) {
@@ -2497,7 +2523,8 @@ static enum ea_type process_ea(operand *input, ea *output, int bits,
} else {
output->sib_present = false;
output->bytes = (addrbits != 16 ? 4 : 2);
- output->modrm = GEN_MODRM(0, rfield, (addrbits != 16 ? 5 : 6));
+ output->modrm = GEN_MODRM(0, rfield,
+ (addrbits != 16 ? 5 : 6));
output->rip = bits == 64;
}
} else {
diff --git a/asm/directiv.c b/asm/directiv.c
index faee7435..d6dfed85 100644
--- a/asm/directiv.c
+++ b/asm/directiv.c
@@ -131,7 +131,7 @@ static int get_bits(char *value)
return i;
}
-static enum directives parse_directive_line(char **directive, char **value)
+static enum directive parse_directive_line(char **directive, char **value)
{
char *p, *q, *buf;
@@ -179,7 +179,7 @@ static enum directives parse_directive_line(char **directive, char **value)
p = nasm_skip_spaces(++q);
*value = p;
- return find_directive(*directive);
+ return directive_find(*directive);
}
/*
@@ -189,7 +189,7 @@ static enum directives parse_directive_line(char **directive, char **value)
*/
bool process_directives(char *directive)
{
- enum directives d;
+ enum directive d;
char *value, *p, *q, *special;
struct tokenval tokval;
bool bad_param = false;
diff --git a/asm/directiv.dat b/asm/directiv.dat
index e1378ec7..4c23c711 100644
--- a/asm/directiv.dat
+++ b/asm/directiv.dat
@@ -45,6 +45,17 @@
;; acceptable.
;;
+; --- General configuration
+#name directive
+#prefix D_
+#errval D_unknown
+#header directiv.h
+
+; --- Special enum values
+#special none = 0 ; Must be zero
+#special unknown
+#special corrupt
+
; --- Global directives
absolute
bits
@@ -77,3 +88,4 @@ uppercase ; outieee, outobj
; --- Pragma operations
subsections_via_symbols ; macho
no_dead_strip ; macho
+maxdump ; dbg
diff --git a/asm/directiv.pl b/asm/directiv.pl
deleted file mode 100755
index 58a5861b..00000000
--- a/asm/directiv.pl
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/usr/bin/perl
-## --------------------------------------------------------------------------
-##
-## Copyright 1996-2017 The NASM Authors - All Rights Reserved
-## See the file AUTHORS included with the NASM distribution for
-## the specific copyright holders.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following
-## conditions are met:
-##
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above
-## copyright notice, this list of conditions and the following
-## disclaimer in the documentation and/or other materials provided
-## with the distribution.
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-##
-## --------------------------------------------------------------------------
-
-#
-# Generate a perfect hash for directive parsing
-#
-# Usage:
-# directiv.pl h directiv.dat directiv.h (to generate C header)
-# directiv.pl c directiv.dat directbl.c (to generate C source)
-#
-
-require 'phash.ph';
-
-my($output, $directives_dat, $outfile) = @ARGV;
-
-@directives = ();
-
-# Special values for enum directives. Note that D_none must be first
-# so D_none == 0.
-@specials = ('none', 'unknown', 'corrupt');
-
-open(DD, "< ${directives_dat}\0")
- or die "$0: cannot open: ${directives_dat}: $!\n";
-while (defined($line = <DD>)) {
- chomp $line;
- if ($line =~ /^\s*([[:alnum:]_]+)\s*(|[\;\#].*)$/) {
- push(@directives, $1);
- }
-}
-close(DD);
-
-if ($output eq 'h') {
- open(H, "> ${outfile}\0")
- or die "$0: cannot create: ${outfile}: $!\n";
-
- print H "/*\n";
- print H " * This file is generated from directiv.dat\n";
- print H " * by directiv.pl; do not edit.\n";
- print H " */\n";
- print H "\n";
-
- print H "#ifndef NASM_DIRECTIV_H\n";
- print H "#define NASM_DIRECTIV_H\n";
- print H "\n";
-
- $c = '{';
- print H "enum directives ";
- foreach $d (@specials) {
- print H "$c\n D_$d";
- $c = ',';
- }
- foreach $d (@directives) {
- print H "$c\n D_\U$d";
- $c = ',';
- }
- print H "\n};\n\n";
- printf H "extern const char * const directives[%d];\n",
- scalar(@directives)+scalar(@specials);
- print H "enum directives find_directive(const char *token);\n\n";
- print H "#endif /* NASM_DIRECTIV_H */\n";
-} elsif ($output eq 'c') {
- %directive = ();
- $n = 0;
- foreach $d (@directives) {
- if (exists($directive{$d})) {
- die "$0: $directives_dat: duplicate directive: $d\n";
- }
- $directive{$d} = $n++; # This is zero-based, unlike the enum!
- }
-
- @hashinfo = gen_perfect_hash(\%directive);
- if (!@hashinfo) {
- die "$0: no hash found\n";
- }
-
- # Paranoia...
- verify_hash_table(\%directive, \@hashinfo);
-
- ($n, $sv, $g) = @hashinfo;
-
- die if ($n & ($n-1));
-
- open(C, "> ${outfile}\0")
- or die "$0: cannot create: ${directives_c}: $!\n";
-
- print C "/*\n";
- print C " * This file is generated from directiv.dat\n";
- print C " * by directiv.pl; do not edit.\n";
- print C " */\n";
- print C "\n";
-
- print C "#include \"compiler.h\"\n";
- print C "#include <string.h>\n";
- print C "#include \"nasm.h\"\n";
- print C "#include \"hashtbl.h\"\n";
- print C "#include \"directiv.h\"\n";
- print C "\n";
-
- printf C "const char * const directives[%d] =\n",
- scalar(@directives)+scalar(@specials);
- $c = '{';
- foreach $d (@specials) {
- print C "$c\n NULL";
- $c = ',';
- }
- foreach $d (@directives) {
- print C "$c\n \"$d\"";
- $c = ',';
- }
- print C "\n};\n\n";
-
- print C "enum directives find_directive(const char *token)\n";
- print C "{\n";
-
- # Put a large value in unused slots. This makes it extremely unlikely
- # that any combination that involves unused slot will pass the range test.
- # This speeds up rejection of unrecognized tokens, i.e. identifiers.
- print C "#define UNUSED (65535/3)\n";
-
- print C " static const int16_t hash1[$n] = {\n";
- for ($i = 0; $i < $n; $i++) {
- my $h = ${$g}[$i*2+0];
- print C " ", defined($h) ? $h : 'UNUSED', ",\n";
- }
- print C " };\n";
-
- print C " static const int16_t hash2[$n] = {\n";
- for ($i = 0; $i < $n; $i++) {
- my $h = ${$g}[$i*2+1];
- print C " ", defined($h) ? $h : 'UNUSED', ",\n";
- }
- print C " };\n";
-
- print C " uint32_t k1, k2;\n";
- print C " uint64_t crc;\n";
- # For correct overflow behavior, "ix" should be unsigned of the same
- # width as the hash arrays.
- print C " uint16_t ix;\n";
- print C "\n";
- printf C " crc = crc64i(UINT64_C(0x%08x%08x), token);\n",
- $$sv[0], $$sv[1];
- print C " k1 = (uint32_t)crc;\n";
- print C " k2 = (uint32_t)(crc >> 32);\n";
- print C "\n";
- printf C " ix = hash1[k1 & 0x%x] + hash2[k2 & 0x%x];\n", $n-1, $n-1;
- printf C " if (ix >= %d)\n", scalar(@directives);
- print C " return D_unknown;\n";
- print C "\n";
- printf C " ix += %d;\n", scalar(@specials);
- print C " if (nasm_stricmp(token, directives[ix]))\n";
- print C " return D_unknown;\n";
- print C "\n";
- print C " return ix;\n";
- print C "}\n";
-}
diff --git a/asm/float.c b/asm/float.c
index b35d7a5e..fd66ef38 100644
--- a/asm/float.c
+++ b/asm/float.c
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------- *
*
- * Copyright 1996-2009 The NASM Authors - All Rights Reserved
+ * Copyright 1996-2017 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
*
@@ -545,7 +545,7 @@ static bool ieee_flconvert_bin(const char *string, int bits,
mp = mult;
ms = (LIMB_BITS-1)-l;
- twopwr = seendot ? twopwr-bits+l : l+1-bits;
+ twopwr += l+1-bits;
}
if (seendigit) {
diff --git a/asm/nasm.c b/asm/nasm.c
index 05c51ea0..288cb0e1 100644
--- a/asm/nasm.c
+++ b/asm/nasm.c
@@ -935,7 +935,6 @@ static bool process_arg(char *p, char *q, int pass)
}
switch (s) {
-
case OPT_PREFIX:
case OPT_POSTFIX:
{
@@ -959,8 +958,7 @@ static bool process_arg(char *p, char *q, int pass)
strlcpy(lpostfix, param, POSTFIX_MAX);
break;
default:
- nasm_panic(ERR_NOFILE,
- "internal error");
+ panic();
break;
}
break;
@@ -977,9 +975,8 @@ static bool process_arg(char *p, char *q, int pass)
}
default:
- if (!ofmt->setinfo(GI_SWITCH, &p))
- nasm_error(ERR_NONFATAL | ERR_NOFILE | ERR_USAGE,
- "unrecognised option `-%c'", p[1]);
+ nasm_error(ERR_NONFATAL | ERR_NOFILE | ERR_USAGE,
+ "unrecognised option `-%c'", p[1]);
break;
}
} else if (pass == 2) {
@@ -1190,7 +1187,6 @@ static void assemble_file(char *fname, StrList **depend_ptr)
int i;
int64_t offs;
int pass_max;
- int sb;
uint64_t prev_offset_changed;
unsigned int stall_count = 0; /* Make sure we make forward progress... */
@@ -1207,15 +1203,17 @@ static void assemble_file(char *fname, StrList **depend_ptr)
def_label = passn > 1 ? redefine_label : define_label;
- globalbits = sb = cmd_sb; /* set 'bits' to command line default */
+ globalbits = cmd_sb; /* set 'bits' to command line default */
cpu = cmd_cpu;
if (pass0 == 2) {
lfmt->init(listname);
+ } else if (passn == 1 && *listname) {
+ /* Remove the list file in case we die before the output pass */
+ remove(listname);
}
in_absolute = false;
global_offset_changed = 0; /* set by redefine_label */
- location.segment = ofmt->section(NULL, pass2, &sb);
- globalbits = sb;
+ location.segment = ofmt->section(NULL, pass2, &globalbits);
if (passn > 1) {
saa_rewind(forwrefs);
forwref = saa_rstruct(forwrefs);
@@ -1341,7 +1339,7 @@ static void assemble_file(char *fname, StrList **depend_ptr)
} else { /* instruction isn't an EQU */
if (pass1 == 1) {
- int64_t l = insn_size(location.segment, offs, sb,
+ int64_t l = insn_size(location.segment, offs, globalbits,
&output_ins);
l *= output_ins.times;
@@ -1421,7 +1419,7 @@ static void assemble_file(char *fname, StrList **depend_ptr)
*/
} else {
- offs += assemble(location.segment, offs, sb, &output_ins);
+ offs += assemble(location.segment, offs, globalbits, &output_ins);
set_curr_offs(offs);
}
@@ -1586,9 +1584,12 @@ static bool warning_is_error(int severity)
static bool skip_this_pass(int severity)
{
- /* See if it's a pass-specific warning which should be skipped. */
-
- if ((severity & ERR_MASK) > ERR_WARNING)
+ /*
+ * See if it's a pass-specific error or warning which should be skipped.
+ * We cannot skip errors stronger than ERR_NONFATAL as by definition
+ * they cannot be resumed from.
+ */
+ if ((severity & ERR_MASK) > ERR_NONFATAL)
return false;
/*
@@ -1655,6 +1656,9 @@ static void nasm_verror_common(int severity, const char *fmt, va_list args)
*/
lfmt->error(severity, pfx, msg);
+ if (skip_this_pass(severity))
+ return;
+
if (severity & ERR_USAGE)
want_usage = true;
diff --git a/asm/parser.c b/asm/parser.c
index 6b52b257..d1e82ed0 100644
--- a/asm/parser.c
+++ b/asm/parser.c
@@ -191,52 +191,56 @@ static void process_size_override(insn *result, operand *op)
}
/*
- * when two or more decorators follow a register operand,
- * consecutive decorators are parsed here.
- * opmask and zeroing decorators can be placed in any order.
- * e.g. zmm1 {k2}{z} or zmm2 {z}{k3}
- * decorator(s) are placed at the end of an operand.
+ * Brace decorators are are parsed here. opmask and zeroing
+ * decorators can be placed in any order. e.g. zmm1 {k2}{z} or zmm2
+ * {z}{k3} decorator(s) are placed at the end of an operand.
*/
static bool parse_braces(decoflags_t *decoflags)
{
- int i;
- bool recover = false;
+ int i, j;
i = tokval.t_type;
- do {
- if (i == TOKEN_OPMASK) {
+
+ while (true) {
+ switch (i) {
+ case TOKEN_OPMASK:
if (*decoflags & OPMASK_MASK) {
- nasm_error(ERR_NONFATAL, "opmask k%"PRIu64" is already set",
+ nasm_error(ERR_NONFATAL,
+ "opmask k%"PRIu64" is already set",
*decoflags & OPMASK_MASK);
*decoflags &= ~OPMASK_MASK;
}
*decoflags |= VAL_OPMASK(nasm_regvals[tokval.t_integer]);
- } else if (i == TOKEN_DECORATOR) {
- switch (tokval.t_integer) {
+ break;
+ case TOKEN_DECORATOR:
+ j = tokval.t_integer;
+ switch (j) {
case BRC_Z:
- /*
- * according to AVX512 spec, only zeroing/merging decorator
- * is supported with opmask
- */
- *decoflags |= GEN_Z(0);
+ *decoflags |= Z_MASK;
+ break;
+ case BRC_1TO2:
+ case BRC_1TO4:
+ case BRC_1TO8:
+ case BRC_1TO16:
+ *decoflags |= BRDCAST_MASK | VAL_BRNUM(j - BRC_1TO2);
break;
default:
- nasm_error(ERR_NONFATAL, "{%s} is not an expected decorator",
- tokval.t_charptr);
+ nasm_error(ERR_NONFATAL,
+ "{%s} is not an expected decorator",
+ tokval.t_charptr);
break;
}
- } else if (i == ',' || i == TOKEN_EOS){
- break;
- } else {
- nasm_error(ERR_NONFATAL, "only a series of valid decorators"
- " expected");
- recover = true;
break;
+ case ',':
+ case TOKEN_EOS:
+ return false;
+ default:
+ nasm_error(ERR_NONFATAL,
+ "only a series of valid decorators expected");
+ return true;
}
i = stdscan(NULL, &tokval);
- } while(1);
-
- return recover;
+ }
}
static int parse_mref(operand *op, const expr *e)
@@ -550,6 +554,7 @@ restart_parse:
*/
result->opcode = I_RESB;
result->operands = 1;
+ nasm_zero(result->oprs);
result->oprs[0].type = IMMEDIATE;
result->oprs[0].offset = 0L;
result->oprs[0].segment = result->oprs[0].wrt = NO_SEG;
@@ -975,25 +980,11 @@ is_expression:
recover = true;
} else { /* we got the required ] */
i = stdscan(NULL, &tokval);
- if ((i == TOKEN_DECORATOR) || (i == TOKEN_OPMASK)) {
- /*
- * according to AVX512 spec, broacast or opmask decorator
- * is expected for memory reference operands
- */
- if (tokval.t_flag & TFLAG_BRDCAST) {
- brace_flags |= GEN_BRDCAST(0) |
- VAL_BRNUM(tokval.t_integer - BRC_1TO2);
- i = stdscan(NULL, &tokval);
- } else if (i == TOKEN_OPMASK) {
- brace_flags |= VAL_OPMASK(nasm_regvals[tokval.t_integer]);
- i = stdscan(NULL, &tokval);
- } else {
- nasm_error(ERR_NONFATAL, "broadcast or opmask "
- "decorator expected inside braces");
- recover = true;
- }
+ if (i == TOKEN_DECORATOR || i == TOKEN_OPMASK) {
+ /* parse opmask (and zeroing) after an operand */
+ recover = parse_braces(&brace_flags);
+ i = tokval.t_type;
}
-
if (i != 0 && i != ',') {
nasm_error(ERR_NONFATAL, "comma or end of line expected");
recover = true;
diff --git a/asm/pptok.pl b/asm/pptok.pl
index 203332d6..41f5f9fc 100755
--- a/asm/pptok.pl
+++ b/asm/pptok.pl
@@ -43,7 +43,7 @@ my($what, $in, $out) = @ARGV;
#
# Read pptok.dat
#
-open(IN, "< $in") or die "$0: cannot open: $in\n";
+open(IN, '<', $in) or die "$0: cannot open: $in\n";
while (defined($line = <IN>)) {
$line =~ s/\r?\n$//; # Remove trailing \r\n or \n
$line =~ s/^\s+//; # Remove leading whitespace
@@ -86,7 +86,7 @@ foreach $ct (@cctok) {
$first_uncond = $pptok[0];
@pptok = (@cptok, @pptok);
-open(OUT, "> $out") or die "$0: cannot open: $out\n";
+open(OUT, '>', $out) or die "$0: cannot open: $out\n";
#
# Output pptok.h
diff --git a/asm/pragma.c b/asm/pragma.c
index f1ba31a7..0a58e3f0 100644
--- a/asm/pragma.c
+++ b/asm/pragma.c
@@ -169,7 +169,7 @@ void process_pragma(char *str)
struct pragma pragma;
char *p;
- nasm_zero(&pragma);
+ nasm_zero(pragma);
pragma.facility_name = nasm_get_word(str, &p);
if (!pragma.facility_name) {
@@ -189,7 +189,7 @@ void process_pragma(char *str)
if (!pragma.opname)
pragma.opcode = D_none;
else
- pragma.opcode = find_directive(pragma.opname);
+ pragma.opcode = directive_find(pragma.opname);
pragma.tail = nasm_skip_spaces(p);
diff --git a/asm/tokhash.pl b/asm/tokhash.pl
index 07bc6abe..9bc2b912 100755
--- a/asm/tokhash.pl
+++ b/asm/tokhash.pl
@@ -55,7 +55,7 @@ my($output, $insns_dat, $regs_dat, $tokens_dat) = @ARGV;
#
# Read insns.dat
#
-open(ID, "< ${insns_dat}") or die "$0: cannot open $insns_dat: $!\n";
+open(ID, '<', $insns_dat) or die "$0: cannot open $insns_dat: $!\n";
while (defined($line = <ID>)) {
if ($line =~ /^([A-Z0-9_]+)(|cc)\s/) {
$insn = $1.$2;
@@ -83,7 +83,7 @@ close(ID);
#
# Read regs.dat
#
-open(RD, "< ${regs_dat}") or die "$0: cannot open $regs_dat: $!\n";
+open(RD, '<', $regs_dat) or die "$0: cannot open $regs_dat: $!\n";
while (defined($line = <RD>)) {
if ($line =~ /^([a-z0-9_-]+)\s*\S+\s*\S+\s*[0-9]+\s*(\S*)/) {
$reg = $1;
@@ -126,7 +126,7 @@ close(RD);
#
# Read tokens.dat
#
-open(TD, "< ${tokens_dat}") or die "$0: cannot open $tokens_dat: $!\n";
+open(TD, '<', $tokens_dat) or die "$0: cannot open $tokens_dat: $!\n";
while (defined($line = <TD>)) {
if ($line =~ /^\%\s+(.*)$/) {
$pattern = $1;
diff --git a/config/msvc.h b/config/msvc.h
index 464d06e1..631652ef 100644
--- a/config/msvc.h
+++ b/config/msvc.h
@@ -49,6 +49,7 @@
* 1700 - Visual Studio 2012
* 1800 - Visual Studio 2013
* 1900 - Visual Studio 2015
+ * 1910 - Visual Studio 2017
*/
#ifndef NASM_CONFIG_MSVC_H
@@ -112,9 +113,14 @@
/* Define to 1 if you have the `_fullpath' function. */
#define HAVE__FULLPATH 1
-/* Define to 1 if you have the `stat' function. */
-#define HAVE_STAT 1
-#define stat _stati64
+/* Define to 1 if the system has the type `struct _stati64'. */
+#define HAVE_STRUCT__STATI64
+
+/* Define to 1 if you have the `_stati64' function. */
+#define HAVE__STATI64 1
+
+/* Define to 1 if you have the `_fstati64' function. */
+#define HAVE__FSTATI64 1
/* Define to 1 if stdbool.h conforms to C99. */
#if _MSC_VER >= 1800
diff --git a/configure.ac b/configure.ac
index 66379857..1905e8dd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,6 +9,12 @@ AC_PREFIX_PROGRAM(nasm)
dnl Save initial CFLAGS, to see if -g -O2 came from configure or not
pa_init_cflags="$CFLAGS"
+dnl This prevents us from running Wine and thinking we are not
+dnl cross-compiling when in fact we are; running Wine here is at
+dnl the best very slow and doesn't buy us a single thing at all.
+WINELOADER=/dev/null
+export WINELOADER
+
dnl Checks for programs and enable necessary CC extensions
AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE
@@ -18,10 +24,13 @@ AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_INSTALL
-dnl If the user did not specify a CFLAGS default, change default -O2 to -O3
-if test x"$pa_init_cflags" = x; then
- CFLAGS=`echo "$CFLAGS" | sed -e 's/-O2/-O3/'`
-fi
+dnl If the user did not specify a CFLAGS default, change default -O2
+dnl to either -O3 (normal) or -O0 (for debugging)
+PA_ARG_DISABLED([optimization],
+ [compile without optimization (-O0) to help debugging],
+ [pa_optimize=-O0], [pa_optimize=-O3])
+AS_IF([test x"$pa_init_cflags" = x],
+ [CFLAGS=`echo "$CFLAGS" | sed -e "s/-O2/$pa_optimize/"`])
dnl Check for library extension
PA_LIBEXT
@@ -56,17 +65,14 @@ dnl Look for programs...
AC_CHECK_PROGS(NROFF, nroff, false)
AC_CHECK_PROGS(ASCIIDOC, asciidoc, false)
AC_CHECK_PROGS(XMLTO, xmlto, false)
-AC_CHECK_PROGS(ACRODIST, acrodist, false)
-AC_CHECK_PROGS(PS2PDF, ps2pdf, false)
-AC_CHECK_PROGS(PSTOPDF, pstopdf, false)
dnl Check for progs needed for manpage generation
-if test $ASCIIDOC = false; then
- AC_MSG_WARN([No asciidoc package found])
-fi
-if test $XMLTO = false; then
- AC_MSG_WARN([No xmlto package found])
-fi
+AS_IF([test $ASCIIDOC = false],
+ [AC_MSG_WARN([No asciidoc package found])]
+)
+AS_IF([test $XMLTO = false],
+ [AC_MSG_WARN([No xmlto package found])]
+)
dnl Check for host compiler tools
AC_CHECK_TOOL(AR, ar)
@@ -84,8 +90,8 @@ AC_CHECK_HEADERS(fcntl.h)
AC_CHECK_HEADERS(unistd.h)
AC_CHECK_HEADERS(sys/param.h)
AC_CHECK_HEADERS(sys/mman.h)
-AC_CHECK_HEADERS(sys/stat.h)
AC_CHECK_HEADERS(sys/types.h)
+AC_CHECK_HEADERS(sys/stat.h)
dnl Checks for library functions.
AC_CHECK_FUNCS(strcasecmp stricmp)
@@ -107,8 +113,6 @@ AC_CHECK_FUNCS([ftruncate _chsize _chsize_s])
AC_CHECK_FUNCS([fileno _fileno])
AC_CHECK_FUNCS(_filelengthi64)
-AC_CHECK_FUNCS([stat _stati64])
-AC_CHECK_FUNCS(fstat)
AC_FUNC_MMAP
AC_CHECK_FUNCS(getpagesize)
AC_CHECK_FUNCS(sysconf)
@@ -130,6 +134,12 @@ AC_CHECK_FUNCS([vsnprintf _vsnprintf])
AC_CHECK_FUNCS([snprintf _snprintf])
AC_CHECK_FUNCS([strlcpy])
+dnl These types are POSIX-specific, and Windows does it differently...
+AC_CHECK_TYPES([struct _stati64])
+AC_CHECK_TYPES([struct stat])
+AC_CHECK_FUNCS([stat _stati64])
+AC_CHECK_FUNCS([fstat _fstati64])
+
dnl Check for functions that might not be declared in the headers for
dnl various idiotic reasons (mostly because of library authors
dnl abusing the meaning of __STRICT_ANSI__)
@@ -144,6 +154,14 @@ AC_CHECK_DECLS(strnlen)
dnl Check for missing types
AC_TYPE_UINTPTR_T
+dnl Documentation: should we generate an uncompressed PDF? It is
+dnl about twice as big, but it can be externally compressed (e.g. with xz)
+dnl and becomes significantly smaller than the original.
+PA_ARG_DISABLED([pdf-compression],
+ [generate an uncompressed documentation PDF],
+ [PDFOPT='-nocompress'])
+AC_SUBST([PDFOPT])
+
dnl
dnl Look for byte-swapping support...
dnl
@@ -188,26 +206,24 @@ PA_FUNC_ATTRIBUTE_ERROR
dnl
dnl support function sections
dnl
-AC_ARG_ENABLE([sections],
-[AC_HELP_STRING([--enable-sections], [compile with function/data section support])],
-[PA_ADD_CFLAGS([-ffunction-sections]),
-PA_ADD_CFLAGS([-fdata-sections])],
-[])
-
+PA_ARG_ENABLED([sections],
+ [compile with function/data section support],
+ [PA_ADD_CFLAGS([-ffunction-sections]),
+ PA_ADD_CFLAGS([-fdata-sections])],
+ [])
dnl
dnl support LTO
dnl
-AC_ARG_ENABLE([lto],
-[AC_HELP_STRING([--enable-lto], [compile with gcc link time optimization])],
-[PA_ADD_CLDFLAGS([-flto])
-dnl Note: we use _PROG rather than _TOOL since we are prepending the full
-dnl CC name which ought to already contain the host triplet if needed
-ccbase=`echo "$CC" | awk '{ print $1; }'`
-AC_CHECK_PROG(CC_AR, [${ccbase}-ar], [${ccbase}-ar], [$ac_cv_prog_AR])
-AR="$CC_AR"
-AC_CHECK_PROG(CC_RANLIB, [${ccbase}-ranlib], [${ccbase}-ranlib], [$ac_cv_prog_RANLIB])
-RANLIB="$CC_RANLIB"
-], [])
+PA_ARG_ENABLED([lto],
+ [compile with gcc-style link time optimization],
+ [PA_ADD_CLDFLAGS([-flto])
+ dnl Note: we use _PROG rather than _TOOL since we are prepending the full
+ dnl CC name which ought to already contain the host triplet if needed
+ ccbase=`echo "$CC" | awk '{ print $1; }'`
+ AC_CHECK_PROGS(CC_AR, [${ccbase}-ar], [$ac_cv_prog_AR])
+ AR="$CC_AR"
+ AC_CHECK_PROGS(CC_RANLIB, [${ccbase}-ranlib], [$ac_cv_prog_RANLIB])
+ RANLIB="$CC_RANLIB"], [])
dnl If we have gcc, add appropriate code cleanliness options
PA_ADD_CFLAGS([-W])
@@ -222,30 +238,25 @@ PA_ADD_CFLAGS([-Wpedantic-ms-format],[-Wno-pedantic-ms-format])
PA_ADD_CFLAGS([-Wc90-c99-compat])
PA_ADD_CFLAGS([-Wlong-long],[-Wno-long-long])
dnl PA_ADD_CFLAGS([-Wwrite-strings])
-AC_ARG_ENABLE([werror],
-[AC_HELP_STRING([--enable-werror],
-[compile with -Werror to error out on any warning])],
-[], [enable_werror=no])
-AS_IF([test x"$enable_werror" != xno],
-[PA_ADD_CFLAGS([-Werror])],
-[PA_ADD_CFLAGS([-Werror=implicit])
-PA_ADD_CFLAGS([-Werror=missing-braces])
-PA_ADD_CFLAGS([-Werror=return-type])
-PA_ADD_CFLAGS([-Werror=trigraphs])
-PA_ADD_CFLAGS([-Werror=pointer-arith])
-PA_ADD_CFLAGS([-Werror=strict-prototypes])
-PA_ADD_CFLAGS([-Werror=missing-prototypes])
-PA_ADD_CFLAGS([-Werror=missing-declarations])
-PA_ADD_CFLAGS([-Werror=comment])
-PA_ADD_CFLAGS([-Werror=vla])])
+PA_ARG_ENABLED([werror],
+ [compile with -Werror to error out on any warning],
+ [PA_ADD_CFLAGS([-Werror])],
+ [PA_ADD_CFLAGS([-Werror=implicit])
+ PA_ADD_CFLAGS([-Werror=missing-braces])
+ PA_ADD_CFLAGS([-Werror=return-type])
+ PA_ADD_CFLAGS([-Werror=trigraphs])
+ PA_ADD_CFLAGS([-Werror=pointer-arith])
+ PA_ADD_CFLAGS([-Werror=strict-prototypes])
+ PA_ADD_CFLAGS([-Werror=missing-prototypes])
+ PA_ADD_CFLAGS([-Werror=missing-declarations])
+ PA_ADD_CFLAGS([-Werror=comment])
+ PA_ADD_CFLAGS([-Werror=vla])]
+)
dnl
dnl support ccache
dnl
-AC_ARG_ENABLE([ccache],
-[AC_HELP_STRING([--enable-ccache], [compile with ccache])],
-[CC="ccache $CC"],
-[])
+PA_ARG_ENABLED([ccache], [compile with ccache], [CC="ccache $CC"], [])
-AC_OUTPUT_COMMANDS([mkdir -p config nasmlib nsis output stdlib x86 asm disasm])
-AC_OUTPUT(Makefile rdoff/Makefile doc/Makefile)
+AC_OUTPUT_COMMANDS([mkdir -p config nasmlib nsis output stdlib x86 asm disasm rdoff macros common])
+AC_OUTPUT(Makefile doc/Makefile)
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 8ec3b7ca..2ddfd1ee 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -18,94 +18,69 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
PERL = perl -I$(srcdir)
-MAKEINFO = makeinfo
-TEXI2DVI = texi2dvi
-TEXI2IPF = texi2ipf
-IPFC = ipfc
-ACRODIST = @ACRODIST@ # Acrobat Distiller
-PSTOPDF = @PSTOPDF@ # BSD/MacOS X utility
-PS2PDF = @PS2PDF@ # Part of GhostScript
+PDFOPT = @PDFOPT@
+
+RM_F = rm -f
+RM_RF = rm -rf
+CP_F = cp -f
+CP_UF = cp -ufv
+
+# Auxiliary files referenced by the HTML files
+HTMLAUX = nasmdoc.css local.css nasmlogw.png
SRCS = nasmdoc.src inslist.src changes.src version.src
-OUT = info html nasmdoc.txt nasmdoc.ps nasmdoc.pdf
+OUT = html nasmdoc.txt nasmdoc.pdf
-# exports
-export srcdir
-export PERL
+.SUFFIXES: .pfa .ph
all: $(OUT)
-os2: nasm.inf
-
inslist.src: inslist.pl ../x86/insns.dat
$(PERL) $(srcdir)/inslist.pl $(srcdir)/../x86/insns.dat
.PHONY: html
-html: html/nasmdoc0.html
+html: $(HTMLAUX)
+ mkdir -p html
+ for f in $(HTMLAUX); do $(CP_UF) "$(srcdir)/$$f" html/; done
+ $(MAKE) html/nasmdoc0.html
RDSRC = $(PERL) $(srcdir)/rdsrc.pl -I$(srcdir)/
html/nasmdoc0.html: $(SRCS) rdsrc.pl
- mkdir -p html
- $(RDSRC) html "$<"
- mv -f *.html html
+ $(RM_F) html/*.html
+ $(RDSRC) -ohtml html nasmdoc.src
nasmdoc.dip: $(SRCS) rdsrc.pl
- $(RDSRC) dip "$<"
-
-nasmdoc.texi: $(SRCS) rdsrc.pl
- $(RDSRC) texi "$<"
+ $(RDSRC) dip nasmdoc.src
nasmdoc.txt: $(SRCS) rdsrc.pl
- $(RDSRC) txt "$<"
+ $(RDSRC) txt nasmdoc.src
version.src: $(top_srcdir)/version.pl $(top_srcdir)/version
$(PERL) $(top_srcdir)/version.pl docsrc \
< $(top_srcdir)/version > version.src
-nasmdoc.ps: nasmdoc.dip nasmlogo.eps \
- genps.pl psfonts.ph pswidth.ph head.ps
- $(PERL) $(srcdir)/genps.pl -headps $(srcdir)/head.ps nasmdoc.dip \
+nasmdoc.ps: nasmdoc.dip genps.pl afmmetrics.ph ttfmetrics.ph \
+ pswidth.ph nasmlogo.eps psfonts.ph head.ps
+ $(PERL) $(srcdir)/genps.pl -epsdir "$(srcdir)" \
+ -headps $(srcdir)/head.ps nasmdoc.dip \
> nasmdoc.ps
-nasmdoc.pdf: nasmdoc.ps
- $(ACRODIST) -n -q --nosecurity -o $@ $< || \
- $(PS2PDF) $< $@ || \
- $(PSTOPDF) $< -o $@
-
-.PHONY: info
-info: info/nasm.info
-
-info/nasm.info: nasmdoc.texi
- mkdir -p info
- $(MAKEINFO) $<
- mv -f *.info *.info-* info
-
-# DVI output from texinfo (optional)
-nasmdoc.dvi: nasmdoc.texi
- $(TEXI2DVI) nasmdoc.texi
-
-# Rules for building an OS/2 book
-nasmdoc.ipf: nasmdoc.texi
- $(TEXI2IPF) $< >$@
-
-nasm.inf: nasmdoc.ipf
- $(IPFC) -i -s $< $@
+nasmdoc.pdf: nasmdoc.ps pspdf.pl
+ $(PERL) $(srcdir)/pspdf.pl $(PDFOPT) nasmdoc.ps nasmdoc.pdf
clean:
- -rm -f *.rtf *.hpj *.texi *.gid *.ipf *.dip
- -rm -f *.aux *.cp *.fn *.ky *.pg *.log *.toc *.tp *.vr
- -rm -f inslist.src version.src
+ -$(RM_F) *.rtf *.hpj *.texi *.gid *.ipf *.dip
+ -$(RM_F) *.aux *.cp *.fn *.ky *.pg *.log *.toc *.tp *.vr
+ -$(RM_F) inslist.src version.src
+ -$(RM_F) nasmdoc*.ps
spotless: clean
- -rm -rf html info
- -rm -f *.hlp nasmdoc.txt *.inf *.pdf *.dvi
- -rm -f nasmdoc*.ps
+ -$(RM_RF) html info
+ -$(RM_F) *.hlp nasmdoc.txt *.inf *.pdf *.dvi
install: all
- mkdir -p $(INSTALLROOT)$(infodir)
- $(INSTALL_DATA) info/* $(INSTALLROOT)$(infodir)
mkdir -p $(INSTALLROOT)$(docdir)/html
$(INSTALL_DATA) html/* $(INSTALLROOT)$(docdir)/html
- $(INSTALL_DATA) nasmdoc.ps nasmdoc.pdf nasmdoc.txt $(INSTALLROOT)$(docdir)
+ $(INSTALL_DATA) nasmdoc.pdf nasmdoc.txt $(INSTALLROOT)$(docdir)
diff --git a/doc/afmmetrics.ph b/doc/afmmetrics.ph
new file mode 100644
index 00000000..c6f6d612
--- /dev/null
+++ b/doc/afmmetrics.ph
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+## --------------------------------------------------------------------------
+##
+## Copyright 1996-2017 The NASM Authors - All Rights Reserved
+## See the file AUTHORS included with the NASM distribution for
+## the specific copyright holders.
+##
+## Redistribution and use in source and binary forms, with or without
+## modification, are permitted provided that the following
+## conditions are met:
+##
+## * Redistributions of source code must retain the above copyright
+## notice, this list of conditions and the following disclaimer.
+## * Redistributions in binary form must reproduce the above
+## copyright notice, this list of conditions and the following
+## disclaimer in the documentation and/or other materials provided
+## with the distribution.
+##
+## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+##
+## --------------------------------------------------------------------------
+
+#
+# Parse AFM metric file, returns a reference to fontdata
+#
+sub parse_afm_file($$) {
+ my($filename, $filetype) = @_;
+
+ my $fontdata = {
+ widths => {},
+ kern => {}
+ };
+
+ my $charmetrics = 0;
+ my $kerndata = 0;
+ my $charcode, $width, $name;
+
+ my $fontfile = $filename.'.'.$filetype;
+ return undef unless ( -f $fontfile );
+
+ $fontdata->{file} = $fontfile;
+ $fontdata->{type} = $filetype;
+ $fontdata->{scale} = 1000; # AFM metrics always have scale 1000
+
+ return undef unless (open(my $fh, '<', $filename.'.afm'));
+
+ while ( my $line = <$fh> ) {
+ if ( $line =~ /^\s*FontName\s+(.*)\s*$/i ) {
+ $fontdata->{'name'} = $1;
+ } elsif ( $line =~ /^\s*StartCharMetrics\b/i ) {
+ $charmetrics = 1;
+ } elsif ( $line =~ /^\s*EndCharMetrics\b/i ) {
+ $charmetrics = 0;
+ } elsif ( $line =~ /^\s*StartKernPairs\b/i ) {
+ $kerndata = 1;
+ } elsif ( $line =~ /^\s*EndKernPairs\b/i ) {
+ $kerndata = 0;
+ } elsif ( $charmetrics ) {
+ my @data = split(/\s*;\s*/, $line);
+ undef $charcode, $width, $name;
+ foreach my $d ( @data ) {
+ my @dd = split(/\s+/, $d);
+ if ( $dd[0] eq 'C' ) {
+ $charcode = $dd[1];
+ } elsif ( $dd[0] eq 'WX' ) {
+ $width = $dd[1];
+ } elsif ( $dd[0] eq 'W' ) {
+ $width = $dd[2];
+ } elsif ( $dd[0] eq 'N' ) {
+ $name = $dd[1];
+ }
+ }
+ if ( defined($name) && defined($width) ) {
+ $fontdata->{widths}{$name} = $width;
+ }
+ } elsif ( $kerndata ) {
+ my($kpx, $a, $b, $adj) = split(/\s+/, $line);
+ if ( $kpx eq 'KPX' ) {
+ if (!exists($fontdata->{kern}{$a})) {
+ $fontdata->{kern}{$a} = {};
+ }
+ $fontdata->{kern}{$a}{$b} = $adj;
+ }
+ }
+ }
+
+ return $fontdata;
+}
+
+1;
diff --git a/doc/afmmetrics.pl b/doc/afmmetrics.pl
deleted file mode 100755
index 834904ef..00000000
--- a/doc/afmmetrics.pl
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/perl
-## --------------------------------------------------------------------------
-##
-## Copyright 1996-2016 The NASM Authors - All Rights Reserved
-## See the file AUTHORS included with the NASM distribution for
-## the specific copyright holders.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following
-## conditions are met:
-##
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above
-## copyright notice, this list of conditions and the following
-## disclaimer in the documentation and/or other materials provided
-## with the distribution.
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-##
-## --------------------------------------------------------------------------
-
-#
-# Parse AFM metric files
-#
-
-@widths = ((undef)x256);
-
-while ( $line = <STDIN> ) {
- if ( $line =~ /^\s*FontName\s+(.*)\s*$/ ) {
- $fontname = $1;
- } elsif ( $line =~ /^\s*StartCharMetrics\b/ ) {
- $charmetrics = 1;
- } elsif ( $line =~ /^\s*EndCharMetrics\b/ ) {
- $charmetrics = 0;
- } elsif ( $line =~ /^\s*StartKernPairs\b/ ) {
- $kerndata = 1;
- } elsif ( $line =~ /^\s*EndKernPairs\b/ ) {
- $kerndata = 0;
- } elsif ( $charmetrics ) {
- @data = split(/\s*;\s*/, $line);
- undef $charcode, $width, $name;
- foreach $d ( @data ) {
- @dd = split(/\s+/, $d);
- if ( $dd[0] eq 'C' ) {
- $charcode = $dd[1];
- } elsif ( $dd[0] eq 'WX' ) {
- $width = $dd[1];
- } elsif ( $dd[0] eq 'W' ) {
- $width = $dd[2];
- } elsif ( $dd[0] eq 'N' ) {
- $name = $dd[1];
- }
- }
- if ( defined($name) && defined($width) ) {
- $charwidth{$name} = $width;
- }
- } elsif ( $kerndata ) {
- my($kpx, $a, $b, $adj) = split(/\s+/, $line);
- if ( $kpx eq 'KPX' ) {
- $kernpairs{$a} = {} unless defined($kernpairs{$a});
- $kernpairs{$a}{$b} = $adj;
- }
- }
-}
-
-sub qstr($) {
- my($s) = @_;
- my($o,$c,$i);
- $o = '"';
- for ( $i = 0 ; $i < length($s) ; $i++ ) {
- $c = substr($s,$i,1);
- if ( $c lt ' ' || $c gt '~' ) {
- $o .= sprintf("\\%03o", ord($c));
- } elsif ( $c eq "\'" || $c eq "\"" || $c eq "\\" ) {
- $o .= "\\".$c;
- } else {
- $o .= $c;
- }
- }
- return $o.'"';
-}
-
-$psfont = $fontname;
-$psfont =~ s/[^A-Za-z0-9]/_/g;
-
-print "%PS_${psfont} = (\n";
-print " name => \'$fontname\',\n";
-print " widths => {";
-$lw = 100000;
-foreach $cc ( sort(keys(%charwidth)) ) {
- $ss = sprintf(' %s => %d,', qstr($cc), $charwidth{$cc});
- $lw += length($ss);
- if ( $lw > 72 ) {
- print "\n ";
- $lw = 4 + length($ss);
- }
- print $ss;
-}
-print "\n },\n";
-print " kern => {";
-$lt = "\n";
-foreach $ka ( sort(keys(%kernpairs)) ) {
- printf '%s %s => {', $lt, qstr($ka);
- $lw = 100000;
- foreach $kb ( sort(keys(%{$kernpairs{$ka}})) ) {
- $ss = sprintf(' %s => %d,', qstr($kb), $kernpairs{$ka}{$kb});
- $lw += length($ss);
- if ( $lw > 72 ) {
- print "\n ";
- $lw = 6 + length($ss);
- }
- print $ss;
- }
- print "\n }";
- $lt = ",\n";
-}
-print "\n }\n";
-print ");\n";
-print "1;\n";
diff --git a/doc/changes.src b/doc/changes.src
index 3e3ca52d..b168a437 100644
--- a/doc/changes.src
+++ b/doc/changes.src
@@ -23,8 +23,15 @@ since 2007.
\b NASM can now generate sparse output files for relevant output
formats, if the underlying operating system supports them.
-\b \c{macho} object format now supports the \c{subsections_via_symbols}
- directive, see \k{macho-ssvs}.
+\b The \c{macho} object format now supports the \c{subsections_via_symbols}
+ and \c{no_dead_strip} directives, see \k{macho-ssvs}.
+
+\b The \c{macho} object format now supports the \c{no_dead_strip},
+ \c{live_support} and \c{strip_static_syms} section flags, see
+ \k{machosect}.
+
+\b The \c{macho} object format now supports the \c{dwarf} debugging
+ format, as required by newer toolchains.
\b All warnings can now be suppressed if desired; warnings not
otherwise part of any warning class are now considered its own
@@ -35,6 +42,19 @@ since 2007.
for the command-line options and warning classes and
\k{asmdir-warning} for the \c{[WARNING]} directive.
+\b Fix a number of bugs related to AVX-512 decorators.
+
+\b Significant improvements to building NASM with Microsoft Visual
+ Studio via \c{Mkfiles/msvc.mak}.
+
+\b To build NASM with custom modifications (table changes) or from the
+ git tree now requires Perl 5.6 at the very minimum, quite possibly
+ a higher version (Perl 5.24.1 tested.) There is no requirement to
+ have Perl on your system at all if all you want to do is build
+ unmodified NASM from source archives.
+
+\b Fix the \c{\{z\}} decorator on AVX-512 \c{VMOVDQ*} instructions.
+
\# --- hpa: commenting this header out since it looks like we will
\# --- bypass 2.12.03 and go straight to 2.13. However, please keep
\# --- the header in place to make it easier to merge with the 2.12.xx
@@ -377,7 +397,7 @@ instruction.
\c XRELEASE MOV [absolute],AL
-Previous versions would incorrectly generate \c{F3 A2} for this
+\> Previous versions would incorrectly generate \c{F3 A2} for this
instruction and issue a warning; correct behavior is to emit \c{F3 88
05}.
@@ -401,7 +421,7 @@ only integer logarithms. See \k{pkg_ifunc}.
\c mov r64,imm32 ; 7 bytes
\c mov r64,imm64 ; 10 bytes
-To force a specific form, use the \c{STRICT} keyword, see \k{strict}.
+\> To force a specific form, use the \c{STRICT} keyword, see \k{strict}.
\b Add support for the Intel AVX2 instruction set.
@@ -1371,34 +1391,30 @@ from the current BITS setting (16 or 32).
\b Changed definition of the optimization flag:
- -O0 strict two-pass assembly, JMP and Jcc are
- handled more like 0.98, except that back-
- ward JMPs are short, if possible.
-
- -O1 strict two-pass assembly, but forward
- branches are assembled with code guaranteed
- to reach; may produce larger code than
- -O0, but will produce successful assembly
- more often if branch offset sizes are not
- specified.
-
- -O2 multi-pass optimization, minimize branch
- offsets; also will minimize signed immed-
- iate bytes, overriding size specification.
-
- -O3 like -O2, but more passes taken, if needed
+\c -O0 strict two-pass assembly, JMP and Jcc are
+\c handled more like 0.98, except that back-
+\c ward JMPs are short, if possible.
+\c
+\c -O1 strict two-pass assembly, but forward
+\c branches are assembled with code guaranteed
+\c to reach; may produce larger code than
+\c -O0, but will produce successful assembly
+\c more often if branch offset sizes are not
+\c specified.
+\c
+\c -O2 multi-pass optimization, minimize branch
+\c offsets; also will minimize signed immed-
+\c iate bytes, overriding size specification.
+\c
+\c -O3 like -O2, but more passes taken, if needed
\S{cl-0.98.07 released 01/28/01} Version 0.98.07 released 01/28/01
-\b Added Stepane Denis' SSE2 instructions to a *working*
+\b Added Stepane Denis' SSE2 instructions to a *working*
version of the code - some earlier versions were based on
broken code - sorry 'bout that. version "0.98.07"
-
-01/28/01
-
-
\b Cosmetic modifications to nasm.c, nasm.h,
AUTHORS, MODIFIED
@@ -1406,8 +1422,9 @@ from the current BITS setting (16 or 32).
\S{cl-0.98.06f released 01/18/01} Version 0.98.06f released 01/18/01
-\b - Add "metalbrain"s jecxz bug fix in insns.dat
- - alter nasmdoc.src to match - version "0.98.06f"
+\b Add "metalbrain"s jecxz bug fix in insns.dat
+
+\b Alter nasmdoc.src to match - version "0.98.06f"
\S{cl-0.98.06e released 01/09/01} Version 0.98.06e released 01/09/01
@@ -1416,8 +1433,6 @@ from the current BITS setting (16 or 32).
\b Removed the "outforms.h" file - it appears to be
someone's old backup of "outform.h". version "0.98.06e"
-01/09/01
-
\b fbk - finally added the fix for the "multiple %includes bug",
known since 7/27/99 - reported originally (?) and sent to
us by Austin Lunnen - he reports that John Fine had a fix
@@ -1433,8 +1448,6 @@ from the current BITS setting (16 or 32).
\b Brian Raiter / fbk - "elfso bug" fix - applied to aoutb format
as well - testing might be desirable...
-08/07/00
-
\b James Seter - -postfix, -prefix command line switches.
\b Yuri Zaporozhets - rdoff utility changes.
@@ -1470,7 +1483,7 @@ form 'Jnotcc $+3/JMP label', in cases where a short offset
is out of bounds. If compiling for a 386 or higher CPU, then
the 386 form of Jcc will be used instead.
-This feature is controlled by a new command-line switch: "O",
+\> This feature is controlled by a new command-line switch: "O",
(upper case letter O). "-O0" reverts the assembler to no
extra optimization passes, "-O1" allows up to 5 extra passes,
and "-O2"(default), allows up to 10 extra optimization passes.
@@ -1561,7 +1574,7 @@ in macros etc. For example:
\c abc %$here
\c %$here
- Now last line will be expanded into "hello" as expected. This also allows
+\> Now last line will be expanded into "hello" as expected. This also allows
for lots of goodies, a good example are extended "proc" macros included
in this archive.
@@ -1571,7 +1584,7 @@ in macros etc. For example:
\c %ifdef %$abc
\c %endif
- to work without warnings even in no context.
+\> to work without warnings even in no context.
\b Added a check for "cstk" in %if*ctx and %elif*ctx directives -
this allows to use \c{%ifctx} without excessive warnings. If there is
@@ -1589,7 +1602,7 @@ in macros etc. For example:
\c %define %$name andy
\c %error "hello(%$name)"
- Same happened with \c{%include} directive.
+\> Same happened with \c{%include} directive.
\b Now all directives that expect an identifier will try to expand and
concatenate everything without whitespaces in between before usage.
@@ -1599,21 +1612,21 @@ in macros etc. For example:
\c %define __%$abc goodbye
\c __%$abc
- would produce "incorrect" output: last line will expand to
+\> would produce "incorrect" output: last line will expand to
\c hello goodbyehello
- Not quite what you expected, eh? :-) The answer is that preprocessor
+\> Not quite what you expected, eh? :-) The answer is that preprocessor
treats the \c{%define} construct as if it would be
\c %define __ %$abc goodbye
- (note the white space between __ and %$abc). After my "fix" it
+\> (note the white space between __ and %$abc). After my "fix" it
will "correctly" expand into
\c goodbye
- as expected. Note that I use quotes around words "correct", "incorrect"
+\> as expected. Note that I use quotes around words "correct", "incorrect"
etc because this is rather a feature not a bug; however current behaviour
is more logical (and allows more advanced macro usage :-).
@@ -1639,7 +1652,7 @@ in macros etc. For example:
\c
\c push eax,ebx,ecx
- will produce a warning, but if we remove the first line we won't see it
+\> will produce a warning, but if we remove the first line we won't see it
anymore (which is The Right Thing To Do {tm} IMHO since C preprocessor
eats such constructs without warnings at all).
@@ -1654,7 +1667,7 @@ in macros etc. For example:
\c %define cextern(x) _ %+ x
\c cextern (myfunc)
- After first expansion, third line will become "_myfunc". After this
+\> After first expansion, third line will become "_myfunc". After this
expansion is performed again so it becomes "_otherunc".
\b Now if preprocessor is in a non-emitting state, no warning or error
@@ -1680,13 +1693,13 @@ in macros etc. For example:
\c %pop
\c %pop
- will expand correctly the fourth line to [esp]; if we'll define another
+\> will expand correctly the fourth line to [esp]; if we'll define another
%$a inside the "inner" context, it will take precedence over outer
definition. However, this modification has been applied only to
expand_smacro and not to smacro_define: as a consequence expansion
looks in outer contexts, but \c{%ifdef} won't look in outer contexts.
- This behaviour is needed because we don't want nested contexts to
+\> This behaviour is needed because we don't want nested contexts to
act on already defined local macros. Example:
\c %define %$arg1 [esp+4]
@@ -1695,7 +1708,7 @@ in macros etc. For example:
\c mov eax,%$arg1
\c endif
- In this example the "if" mmacro enters into the "if" context, so %$arg1
+\> In this example the "if" mmacro enters into the "if" context, so %$arg1
is not valid anymore inside "if". Of course it could be worked around
by using explicitely %$$arg1 but this is ugly IMHO.
diff --git a/doc/findfont.ph b/doc/findfont.ph
new file mode 100644
index 00000000..db9dd9dd
--- /dev/null
+++ b/doc/findfont.ph
@@ -0,0 +1,183 @@
+#!/usr/bin/perl
+## --------------------------------------------------------------------------
+##
+## Copyright 1996-2017 The NASM Authors - All Rights Reserved
+## See the file AUTHORS included with the NASM distribution for
+## the specific copyright holders.
+##
+## Redistribution and use in source and binary forms, with or without
+## modification, are permitted provided that the following
+## conditions are met:
+##
+## * Redistributions of source code must retain the above copyright
+## notice, this list of conditions and the following disclaimer.
+## * Redistributions in binary form must reproduce the above
+## copyright notice, this list of conditions and the following
+## disclaimer in the documentation and/or other materials provided
+## with the distribution.
+##
+## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+##
+## --------------------------------------------------------------------------
+
+#
+# Try our best to find a specific PostScipt font in the system.
+# We need to find the font files so we can extract the metrics.
+# Sadly there isn't any reasonable Perl module to do this for us,
+# as far as I can tell.
+#
+
+use strict;
+use File::Spec;
+use File::Find;
+
+require 'afmmetrics.ph';
+require 'ttfmetrics.ph';
+
+my %font_info_hash = ();
+my $fonts_scanned = 0;
+my %prefs = { 'otf' => 1, 'ttf' => 2, 'pfa' => 3, 'pfb' => 4 };
+
+sub add_file_to_font_hash($) {
+ my($filename) = @_;
+
+ return unless ( -f $filename );
+ return unless ( $filename =~ /^(.*)\.([[:alnum:]]+)$/ );
+
+ my $filestem = $1;
+ my $fonttype = $2;
+ my $fontdata;
+
+ if ( $filename =~ /\.(otf|ttf)$/i ) {
+ $fontdata = parse_ttf_file($filename);
+ } elsif ( $filename =~ /\.(pfa|pfb)$/i ) {
+ if ( -f "${filestem}.afm" ) {
+ $fontdata = parse_afm_file($filestem, $fonttype);
+ }
+ }
+
+ return unless (defined($fontdata));
+
+ my $oldinfo = $font_info_hash{$fontdata->{name}};
+
+ if (!defined($oldinfo) ||
+ $prefs{$fontdata->{type}} < $prefs{$oldinfo->{type}}) {
+ $font_info_hash{$fontdata->{name}} = $fontdata;
+ }
+}
+
+my $win32_ok = eval {
+ require Win32::Registry;
+ Win32::Registry->import();
+ require Win32;
+ Win32->import();
+ 1;
+};
+
+# Based on Font::TTF::Win32 by
+# Martin Hosken <http://scripts.sil.org/FontUtils>.
+# LICENSING
+#
+# Copyright (c) 1998-2014, SIL International (http://www.sil.org)
+#
+# This module is released under the terms of the Artistic License 2.0.
+# For details, see the full text of the license in the file LICENSE.
+sub scanfonts_win32() {
+ return undef unless ($win32_ok);
+
+ my $font_key = 'SOFTWARE\Microsoft\Windows' .
+ (Win32::IsWinNT() ? 'NT' : '') . '\CurrentVersion\Fonts';
+ my($regfont, $list, $l, $file);
+
+ $::HKEY_LOCAL_MACHINE->Open($font_key, $regfont);
+ $regfont->GetValues($list);
+
+ foreach my $l (keys(%$list)) {
+ my $fname = $list->{$l}[0];
+ next unless ($fname =~ s/\((TrueType|OpenType)\)$//);
+ $file = File::Spec->rel2abs($list->{$l}[2], $ENV{'windir'}.'\fonts');
+ add_file_to_font_hash($file)
+ }
+}
+
+sub font_search_file() {
+ my($fontdata, $filestem, $fonttype);
+
+ add_file_to_font_hash($_);
+}
+
+sub findfont($) {
+ my($fontname) = @_;
+ my $win32 = eval {
+ require Font::TTF::Win32;
+ Font::TTF::Win32->import();
+ 1;
+ };
+ my($file, $psname, $fontdata);
+
+ if (exists($font_info_hash{$fontname})) {
+ return $font_info_hash{$fontname};
+ }
+
+ # Are we on a system that uses fontconfig?
+ if (!defined($file) &&
+ open(my $fh, '-|', 'fc-match',
+ '-f', '%{file}\n%{postscriptname}\n',
+ " : postscriptname=$fontname")) {
+ chomp($file = <$fh>);
+ chomp($psname = <$fh>);
+ close($fh);
+ if ( -f $file ) {
+ if ($psname eq $fontname) {
+ add_file_to_font_hash($file);
+ }
+ if (!exists($font_info_hash{$fontname})) {
+ $font_info_hash{$fontname} = undef;
+ }
+ return $font_info_hash{$fontname};
+ }
+ }
+
+ if (exists($font_info_hash{$fontname})) {
+ return $font_info_hash{$fontname};
+ } elsif ($fonts_scanned >= 1) {
+ return $font_info_hash{$fontname} = undef;
+ }
+
+ if ($win32) {
+ scanfonts_win32();
+ $fonts_scanned = 1;
+ }
+
+ if (exists($font_info_hash{$fontname})) {
+ return $font_info_hash{$fontname};
+ } elsif ($fonts_scanned >= 2) {
+ return $font_info_hash{$fontname} = undef;
+ }
+
+ # Search a set of possible locations for a file, from a few different
+ # systems...
+ my @dirs = ('fonts', '/usr/share/fonts', '/Library/Fonts');
+ push @dirs, $ENV{'windir'}.'\fonts' if (defined $ENV{'windir'});
+ push @dirs, $ENV{'HOME'}.'/.fonts', $ENV{'HOME'}.'/Library/Fonts'
+ if (defined $ENV{'HOME'});
+
+ find({wanted => \font_search_file, follow=>1, no_chdir=>1}, @dirs);
+ $fonts_scanned = 2;
+
+ return $font_info_hash{$fontname};
+}
+
+1;
diff --git a/doc/genps.pl b/doc/genps.pl
index 86d10007..4758bb9d 100755
--- a/doc/genps.pl
+++ b/doc/genps.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
## --------------------------------------------------------------------------
-##
-## Copyright 1996-2016 The NASM Authors - All Rights Reserved
+##
+## Copyright 1996-2017 The NASM Authors - All Rights Reserved
## See the file AUTHORS included with the NASM distribution for
## the specific copyright holders.
##
@@ -15,7 +15,7 @@
## copyright notice, this list of conditions and the following
## disclaimer in the documentation and/or other materials provided
## with the distribution.
-##
+##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -36,57 +36,66 @@
# Format the documentation as PostScript
#
+use File::Spec;
+
require 'psfonts.ph'; # The fonts we want to use
require 'pswidth.ph'; # PostScript string width
-
-use Fcntl;
+require 'findfont.ph'; # Find fonts in the system
#
-# PostScript configurables; these values are also available to the
-# PostScript code itself
+# Document formatting parameters
#
%psconf = (
- pagewidth => 595, # Page width in PostScript points
- pageheight => 792, # Page height in PostScript points
- lmarg => 100, # Left margin in PostScript points
- rmarg => 50, # Right margin in PostScript points
- topmarg => 100, # Top margin in PostScript points
- botmarg => 100, # Bottom margin in PostScript points
- plmarg => 50, # Page number position relative to left margin
- prmarg => 0, # Page number position relative to right margin
- pymarg => 50, # Page number position relative to bot margin
- startcopyright => 75, # How much above the bottom margin is the
- # copyright notice stuff
- bulladj => 12, # How much to indent a bullet paragraph
- tocind => 12, # TOC indentation per level
- tocpnz => 24, # Width of TOC page number only zone
- tocdots => 8, # Spacing between TOC dots
- idxspace => 24, # Minimum space between index title and pg#
- idxindent => 24, # How much to indent a subindex entry
- idxgutter => 24, # Space between index columns
- idxcolumns => 2, # Number of index columns
- );
+ pagewidth => 595, # Page width in PostScript points
+ pageheight => 792, # Page height in PostScript points
+ lmarg => 72*1.25, # Left margin in PostScript points
+ rmarg => 72, # Right margin in PostScript points
+ topmarg => 72, # Top margin in PostScript points
+ botmarg => 72, # Bottom margin in PostScript points
+ plmarg => 72*0.25, # Page number position relative to left margin
+ prmarg => 0, # Page number position relative to right margin
+ pymarg => 24, # Page number position relative to bot margin
+ startcopyright => 75, # How much above the bottom margin is the
+ # copyright notice stuff
+ bulladj => 12, # How much to indent a bullet/indented paragraph
+ tocind => 12, # TOC indentation per level
+ tocpnz => 24, # Width of TOC page number only zone
+ tocdots => 8, # Spacing between TOC dots
+ idxspace => 24, # Minimum space between index title and pg#
+ idxindent => 24, # How much to indent a subindex entry
+ idxgutter => 24, # Space between index columns
+ idxcolumns => 2, # Number of index columns
+
+ paraskip => 6, # Space between paragraphs
+ chapstart => 30, # Space before a chapter heading
+ chapskip => 24, # Space after a chapter heading
+ tocskip => 6, # Space between TOC entries
+ );
%psbool = (
- colorlinks => 0, # Set links in blue rather than black
- );
+ colorlinks => 0, # Set links in blue rather than black
+ );
# Known paper sizes
%papersizes = (
- 'a5' => [421, 595], # ISO half paper size
- 'b5' => [501, 709], # ISO small paper size
- 'a4' => [595, 842], # ISO standard paper size
- 'letter' => [612, 792], # US common paper size
- 'pa4' => [595, 792], # Compromise ("portable a4")
- 'b4' => [709,1002], # ISO intermediate paper size
- 'legal' => [612,1008], # US intermediate paper size
- 'a3' => [842,1190], # ISO double paper size
- '11x17' => [792,1224], # US double paper size
- );
+ 'a5' => [421, 595], # ISO half paper size
+ 'b5' => [501, 709], # ISO small paper size
+ 'a4' => [595, 842], # ISO standard paper size
+ 'letter' => [612, 792], # US common paper size
+ 'pa4' => [595, 792], # Compromise ("portable a4")
+ 'b4' => [709,1002], # ISO intermediate paper size
+ 'legal' => [612,1008], # US intermediate paper size
+ 'a3' => [842,1190], # ISO double paper size
+ '11x17' => [792,1224], # US double paper size
+ );
# Canned header file
$headps = 'head.ps';
+# Directories
+$fontsdir = 'fonts';
+$epsdir = File::Spec->curdir();
+
#
# Parse the command line
#
@@ -102,9 +111,13 @@ while ( $arg = shift(@ARGV) ) {
$psbool{$parm} = $true;
} elsif ( $true && defined($psconf{$parm}) ) {
$psconf{$parm} = shift(@ARGV);
- } elsif ( $parm =~ /^(title|subtitle|year|author|license)$/ ) {
+ } elsif ( $true && $parm =~ /^(title|subtitle|year|author|license)$/ ) {
$metadata{$parm} = shift(@ARGV);
- } elsif ( $parm eq 'headps' ) {
+ } elsif ( $true && $parm eq 'fontsdir' ) {
+ $fontsdir = shift(@ARGV);
+ } elsif ( $true && $parm eq 'epsdir' ) {
+ $epsdir = shift(@ARGV);
+ } elsif ( $true && $parm eq 'headps' ) {
$headps = shift(@ARGV);
} else {
die "$0: Unknown option: $arg\n";
@@ -114,20 +127,44 @@ while ( $arg = shift(@ARGV) ) {
}
}
-#
-# Document formatting parameters
-#
-$paraskip = 6; # Space between paragraphs
-$chapstart = 30; # Space before a chapter heading
-$chapskip = 24; # Space after a chapter heading
-$tocskip = 6; # Space between TOC entries
-
# Configure post-paragraph skips for each kind of paragraph
-%skiparray = ('chap' => $chapskip, 'appn' => $chapstart,
- 'head' => $paraskip, 'subh' => $paraskip,
- 'norm' => $paraskip, 'bull' => $paraskip,
- 'code' => $paraskip, 'toc0' => $tocskip,
- 'toc1' => $tocskip, 'toc2' => $tocskip);
+# (subject to modification above)
+%skiparray = ('chap' => $psconf{chapskip},
+ 'appn' => $psconf{chapstart},
+ 'head' => $psconf{paraskip},
+ 'subh' => $psconf{paraskip},
+ 'norm' => $psconf{paraskip},
+ 'bull' => $psconf{paraskip},
+ 'indt' => $psconf{paraskip},
+ 'bquo' => $psconf{paraskip},
+ 'code' => $psconf{paraskip},
+ 'toc0' => $psconf{tocskip},
+ 'toc1' => $psconf{tocskip},
+ 'toc2' => $psconf{tocskip}
+ );
+
+# Read the font metrics files, and update @AllFonts
+# Get the list of fonts used
+%ps_all_fonts = ();
+%ps_font_subst = ();
+foreach my $fset ( @AllFonts ) {
+ foreach my $font ( @{$fset->{fonts}} ) {
+ my $fdata;
+ my @flist = @{$font->[1]};
+ my $fname;
+ while (defined($fname = shift(@flist))) {
+ $fdata = findfont($fname);
+ last if (defined($fdata));
+ }
+ if (!defined($fdata)) {
+ die "$infile: no font found of: ".
+ join(', ', @{$font->[1]}), "\n".
+ "Install one of these fonts or update psfonts.ph\n";
+ }
+ $ps_all_fonts{$fname} = $fdata;
+ $font->[1] = $fdata;
+ }
+}
# Custom encoding vector. This is basically the same as
# ISOLatin1Encoding (a level 2 feature, so we dont want to use it),
@@ -190,10 +227,11 @@ for ( $i = 0 ; $i < 256 ; $i++ ) {
# a cleaner representation
#
if ( defined($input) ) {
- sysopen(PARAS, $input, O_RDONLY) or
+ open(PARAS, '<', $input) or
die "$0: cannot open $input: $!\n";
} else {
- open(PARAS, "<&STDIN") or die "$0: $!\n";
+ # stdin
+ open(PARAS, '<-') or die "$0: $!\n";
}
while ( defined($line = <PARAS>) ) {
chomp $line;
@@ -332,12 +370,12 @@ sub ps_flow_lines($$$@) {
} else {
my $ew = ps_width($$e[1], $fontset->{fonts}->[$$e[0]][1],
\@NASMEncoding) *
- ($fontset->{fonts}->[$$e[0]][0]/1000);
+ ($fontset->{fonts}->[$$e[0]][0]);
my $sp = $$e[1];
$sp =~ tr/[^ ]//d; # Delete nonspaces
my $esw = ps_width($sp, $fontset->{fonts}->[$$e[0]][1],
\@NASMEncoding) *
- ($fontset->{fonts}->[$$e[0]][0]/1000);
+ ($fontset->{fonts}->[$$e[0]][0]);
if ( ($w+$ew) - $ps_space_squeeze*($sw+$esw) > $wid ) {
# Begin new line
@@ -396,13 +434,13 @@ sub ps_flow_lines($$$@) {
my $xew = ps_width($$le[1],
$fontset->{fonts}->[$$le[0]][1],
\@NASMEncoding) *
- ($fontset->{fonts}->[$$le[0]][0]/1000);
+ ($fontset->{fonts}->[$$le[0]][0]);
my $xsp = $$le[1];
$xsp =~ tr/[^ ]//d; # Delete nonspaces
my $xsw = ps_width($xsp,
$fontset->{fonts}->[$$le[0]][1],
\@NASMEncoding) *
- ($fontset->{fonts}->[$$le[0]][0]/1000);
+ ($fontset->{fonts}->[$$le[0]][0]);
$w += $xew; $sw += $xsw;
}
}
@@ -700,8 +738,10 @@ sub ps_break_lines($$) {
$ls[0]->[0]->[2] = [[$AuxStr,$secn]];
} elsif ( $ptype eq 'norm' ) {
@ls = ps_flow_lines($linewidth, \%BodyFont, $ptype, @data);
- } elsif ( $ptype eq 'bull' ) {
+ } elsif ( $ptype =~ /^(bull|indt)$/ ) {
@ls = ps_flow_lines($bullwidth, \%BodyFont, $ptype, @data);
+ } elsif ( $ptypq eq 'bquo' ) {
+ @ls = ps_flow_lines($bullwidth, \%BquoFont, $ptype, @data);
} elsif ( $ptype =~ /^toc/ ) {
unless ( $xtype =~/^\S+ :([^:]*):(.*)$/ ) {
die "Bad para";
@@ -711,7 +751,7 @@ sub ps_break_lines($$) {
my $ntoc = substr($ptype,3,1)+0;
my $refwidth = ps_width($refname, $BodyFont{fonts}->[0][1],
\@NASMEncoding) *
- ($BodyFont{fonts}->[0][0]/1000);
+ ($BodyFont{fonts}->[0][0]);
@ls = ps_flow_lines($linewidth-$ntoc*$psconf{tocind}-
$psconf{tocpnz}-$refwidth,
@@ -789,6 +829,8 @@ sub ps_break_pages($$) {
# First line of a new chapter heading. Start a new page.
undef $columnstart;
$curpage++ if ( $curypos > 0 || defined($columnstart) );
+ # Always start on an odd page
+ $curpage |= 1;
$curypos = $chapstart;
} elsif ( defined($columnstart) && $$linfo[0] !~ /$columnregexp/o ) {
undef $columnstart;
@@ -956,13 +998,13 @@ ps_break_pages($startofindex, $nlines);
#
push(@bookmarks, ['index', 0, 'Index']);
-# Get the list of fonts used
-%ps_all_fonts = ();
-foreach $fset ( @AllFonts ) {
- foreach $font ( @{$fset->{fonts}} ) {
- $ps_all_fonts{$font->[1]->{name}}++;
- }
+@all_fonts_lst = sort(keys(%ps_all_fonts));
+$all_fonts_str = join(' ', @all_fonts_lst);
+@need_fonts_lst = ();
+foreach my $f (@all_fonts_lst) {
+ push(@need_fonts_lst, $f); # unless (defined($ps_all_fonts{$f}->{file}));
}
+$need_fonts_str = join(' ', @need_fonts_lst);
# Emit the PostScript DSC header
print "%!PS-Adobe-3.0\n";
@@ -970,8 +1012,8 @@ print "%%Pages: $curpage\n";
print "%%BoundingBox: 0 0 ", $psconf{pagewidth}, ' ', $psconf{pageheight}, "\n";
print "%%Creator: (NASM psflow.pl)\n";
print "%%DocumentData: Clean7Bit\n";
-print "%%DocumentFonts: ", join(' ', keys(%ps_all_fonts)), "\n";
-print "%%DocumentNeededFonts: ", join(' ', keys(%ps_all_fonts)), "\n";
+print "%%DocumentFonts: $all_fonts_str\n";
+print "%%DocumentNeededFonts: $need_fonts_str\n";
print "%%Orientation: Portrait\n";
print "%%PageOrder: Ascend\n";
print "%%EndComments\n";
@@ -985,6 +1027,17 @@ foreach $c ( keys(%psbool) ) {
print "/$c ", ($psbool{$c}?'true':'false'), " def\n";
}
+# Embed font data, if applicable
+#foreach my $f (@all_fonts_lst) {
+# my $fontfile = $all_ps_fonts{$f}->{file};
+# if (defined($fontfile)) {
+# if (open(my $fh, '<', $fontfile)) {
+# print vector <$fh>;
+# close($fh);
+# }
+# }
+#}
+
# Emit custom encoding vector
$zstr = '/NASMEncoding [ ';
foreach $c ( @NASMEncoding ) {
@@ -1009,7 +1062,7 @@ print " definefont pop\n";
print "} def\n";
# Emit fontset definitions
-foreach $font ( keys(%ps_all_fonts) ) {
+foreach $font ( sort(keys(%ps_all_fonts)) ) {
print '/',$font,'-NASM /',$font," nasmenc\n";
}
@@ -1093,10 +1146,10 @@ $ps_page = 0;
# Title page
ps_start_page();
$title = $metadata{'title'} || '';
-$title =~ s/ \- / $charcode{'emdash'} /;
+$title =~ s/ \- / $charcode{'endash'} /;
$subtitle = $metadata{'subtitle'} || '';
-$subtitle =~ s/ \- / $charcode{'emdash'} /;
+$subtitle =~ s/ \- / $charcode{'endash'} /;
# Print title
print "/ti ", ps_string($title), " def\n";
@@ -1116,7 +1169,7 @@ print "sti show\n";
# and DocumentFonts in the header of the EPSF and add those to the
# global header.
if ( defined($metadata{epslogo}) &&
- sysopen(EPS, $metadata{epslogo}, O_RDONLY) ) {
+ open(EPS, '<', File::Spec->catfile($epsdir, $metadata{epslogo})) ) {
my @eps = ();
my ($bbllx,$bblly,$bburx,$bbury) = (undef,undef,undef,undef);
my $line;
@@ -1181,10 +1234,10 @@ ps_start_page();
foreach $line ( @pslines ) {
my $linfo = $line->[0];
- if ( $$linfo[4] != $curpage ) {
+ while ( $$linfo[4] > $curpage ) {
ps_end_page($curpage > 2);
ps_start_page();
- $curpage = $$linfo[4];
+ $curpage++;
}
print '[';
diff --git a/doc/head.ps b/doc/head.ps
index 48b7af21..7fbb3a90 100644
--- a/doc/head.ps
+++ b/doc/head.ps
@@ -258,6 +258,16 @@
/bull3 { dup lmarg exch moveto bullet bfont showstream
bullmarg exch moveto bfont showstream } def
+/indt0 { bullmarg exch moveto bfont bwidth showstreamjust } def
+/indt1 { bullmarg exch moveto bfont bwidth showstreamjust } def
+/indt2 { bullmarg exch moveto bfont showstream } def
+/indt3 { bullmarg exch moveto bfont showstream } def
+
+/bquo0 { bullmarg exch moveto qfont bwidth showstreamjust } def
+/bquo1 { bullmarg exch moveto qfont bwidth showstreamjust } def
+/bquo2 { bullmarg exch moveto qfont showstream } def
+/bquo3 { bullmarg exch moveto qfont showstream } def
+
/tocw0 lwidth tocpnz sub def
/tocw1 tocw0 tocind sub def
/tocw2 tocw1 tocind sub def
diff --git a/doc/inslist.pl b/doc/inslist.pl
index 509de000..c7d7da40 100644
--- a/doc/inslist.pl
+++ b/doc/inslist.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
## --------------------------------------------------------------------------
##
-## Copyright 1996-2009 The NASM Authors - All Rights Reserved
+## Copyright 1996-2017 The NASM Authors - All Rights Reserved
## See the file AUTHORS included with the NASM distribution for
## the specific copyright holders.
##
@@ -36,10 +36,6 @@
# inslist.pl produce inslist.src
#
-# Opcode prefixes which need their own opcode tables
-# LONGER PREFIXES FIRST!
-@disasm_prefixes = qw(0F24 0F25 0F38 0F3A 0F7A 0FA6 0FA7 0F);
-
print STDERR "Reading insns.dat...\n";
@args = ();
@@ -57,9 +53,9 @@ foreach $arg ( @ARGV ) {
}
$fname = "../insns.dat" unless $fname = $args[0];
-open (F, $fname) || die "unable to open $fname";
+open (F, '<', $fname) || die "unable to open $fname";
print STDERR "Writing inslist.src...\n";
-open S, ">inslist.src";
+open S, '>', 'inslist.src';
$line = 0;
$insns = 0;
while (<F>) {
@@ -82,13 +78,27 @@ while (<F>) {
$entry[1] =~ s/ignore//;
$entry[1] =~ s/void//;
- $entry[3] =~ s/ignore//;
- $entry[3] =~ s/,SB//;
- $entry[3] =~ s/,SM//;
- $entry[3] =~ s/,SM2//;
- $entry[3] =~ s/,SQ//;
- $entry[3] =~ s/,AR2//;
- printf S "\\c %-16s %-24s %s\n",$entry[0],$entry[1],$entry[3];
+
+ my @flags = split(/,/, $entry[3]);
+ my @nflags;
+ undef $isavx512;
+ undef @avx512fl;
+ for my $fl (@flags) {
+ next if ($fl =~ /^(ignore|SB|SM|SM2|SQ|AR2|FUTURE)$/);
+
+ if ($fl =~ /^AVX512(.*)$/) {
+ $isavx512 = 1;
+ push(@avx512fl, $1) unless ($1 eq '');
+ } else {
+ push(@nflags,$fl);
+ }
+ }
+
+ if ($isavx512) {
+ unshift(@nflags, "AVX512".join('/', @avx512fl));
+ }
+
+ printf S "\\c %-16s %-24s %s\n",$entry[0],$entry[1], join(',', @nflags);
$insns++;
}
print S "\n";
diff --git a/doc/local.css b/doc/local.css
new file mode 100644
index 00000000..dfee5220
--- /dev/null
+++ b/doc/local.css
@@ -0,0 +1 @@
+/* Add site-local nasmdoc style configuration to this file */
diff --git a/doc/makedocs.bat b/doc/makedocs.bat
deleted file mode 100644
index 53723948..00000000
--- a/doc/makedocs.bat
+++ /dev/null
@@ -1,255 +0,0 @@
-@echo off
-if "%1"=="clean" goto makeclean
-if "%1"=="CLEAN" goto makeclean
-if "%1"=="spotless" goto spotless
-if "%1"=="SPOTLESS" goto spotless
-if "%1"=="install" goto install
-if "%1"=="INSTALL" goto install
-
-cls
-echo.
-echo.
-echo.
-echo Usage:
-echo.
-echo makedocs - no parameters - makes all Docs
-echo makedocs install - installs already made docs in subdirectories
-echo makedocs clean - removes docs from current directory
-echo makedocs spotless - removes all - including default install dirs
-echo.
-echo.
-echo.
-echo.
-echo Makedocs(.bat), with no parameters will create Nasm Documentation
-echo in several formats: plain ascii text, ps, html, rtf, Windows help
-echo format, and if you've got an "info" system installed, info format.
-echo.
-echo.
-echo This requires Perl, and almost 4MB disk space.
-echo.
-echo.
-choice " Proceed with making docs? "
-if errorlevel 2 goto exit
-
-:makeall
-
-echo.
-echo.
-echo This takes a while. Stretch!
-echo.
-echo.
-
-perl inslist.pl
-perl rdsrc.pl<nasmdoc.src
-echo.
-echo.
-choice " Make *info* files? "
-if errorlevel 2 goto noinfo
-:makeinfo
-echo.
-echo.
-makeinfo nasmdoc.tex
-
-:noinfo
-
-:install
-
-if not exist nasmdoc.txt goto nofiles
-if not exist nasmdoc0.htm goto nofiles
-if not exist nasmdo10.htm goto nofiles
-if not exist nasmdoc.hpj goto nofiles
-if not exist nasmdoc.rtf goto nofiles
-if not exist nasmdoc.ps goto nofiles
-if not exist nasmdoc.tex goto nofiles
-goto gotfiles
-:nofiles
-echo.
-echo.
-echo.
-echo.
-echo Alert! Files missing!
-echo.
-echo.
-choice " Would you like to make them now? "
-if errorlevel 2 goto exit
-goto makeall
-
-:gotfiles
-
-:: get current path
-
-set oldprompt=%prompt%
-echo @prompt set nasdoc=$p>temp1.bat
-command /c temp1.bat>temp2.bat
-call temp2
-del temp1.bat
-del temp2.bat
-set prompt=%oldprompt%
-set oldprompt=
-
-echo.
-echo.
-echo.
-echo.
-echo Current Directory is %nasdoc%
-echo Nasm Documentation will be installed under this
-echo as %nasdoc%\text\nasmdoc.txt, etc.
-echo.
-echo.
-choice " Change this directory? "
-if errorlevel 2 goto dirok
-
-echo.
-echo.
-echo.
-echo.
-echo Directory *above* the directory you name (at least) should exist.
-echo Nasm documentation will be installed *under* the directory you
-echo name. E.G. \docs\nasm\html, etc. No trailing backslash!
-echo.
-echo.
-
-echo Enter new name for base directory:
-set input=
-fc con nul /lb1 /n|date|find "1:">magic.bat
-echo set input=%%5>enter.bat
-call magic
-set nasdoc=%input%
-del magic.bat
-del enter.bat
-set input=
-
-echo.
-echo.
-md %nasdoc%
-echo.
-echo.
-
-choice " Install Text docs in %nasdoc%\text ? "
-if errorlevel 2 goto notext
-md %nasdoc%\text
-copy nasmdoc.txt %nasdoc%\text
-:notext
-
-choice " Install Html docs in %nasdoc%\html ? "
-if errorlevel 2 goto nohtml
-md %nasdoc%\html
-copy *.htm %nasdoc%\html
-:nohtml
-
-choice " Install Info docs in %nasdoc%\info ? "
-if errorlevel 2 goto noinfodocs
-if not exist nasm.inf goto inofiles
-if not exist nasm.i9 goto inofiles
-goto gotifiles
-:inofiles
-echo.
-echo.
-echo Alert! Files missing!
-echo.
-echo.
-choice " Would you like to make them now? "
-if errorlevel 2 goto noinfodocs
-if not exist nasmdoc.tex goto makeall
-goto makeinfo
-
-:gotifiles
-
-md %nasdoc%\info
-copy nasm.i* %nasdoc%\info
-:noinfodocs
-
-choice " Install Winhelp docs in %nasdoc%\winhelp ? "
-if errorlevel 2 goto nowinhelp
-md %nasdoc%\winhelp
-copy nasmdoc.rtf %nasdoc%\winhelp
-copy nasmdoc.hpj %nasdoc%\winhelp
-:nowinhelp
-
-choice " Install Postscript docs in %nasdoc%\ps ? "
-if errorlevel 2 goto nops
-md %nasdoc%\ps
-copy nasmdoc.ps %nasdoc%\ps
-:nops
-goto cleanup
-
-:dirok
-
-choice " Install Text docs in .\text ? "
-if errorlevel 2 goto notext2
-md text
-copy nasmdoc.txt text
-:notext2
-
-choice " Install Html docs in .\html ? "
-if errorlevel 2 goto nohtml2
-md html
-copy *.htm html
-:nohtml2
-
-choice " Install Info docs in .\info ? "
-if errorlevel 2 goto nid2
-
-if not exist nasm.inf goto inof2
-if not exist nasm.i9 goto inof2
-goto gifiles2
-:inof2
-echo.
-echo.
-echo Alert! Files missing!
-echo.
-echo.
-choice " Would you like to make them now? "
-if errorlevel 2 goto nid2
-if not exist nasmdoc.tex goto makeall
-goto makeinfo
-
-:gifiles2
-
-md info
-copy nasm.i* info
-:nid2
-
-choice " Install Winhelp docs in .\winhelp ? "
-if errorlevel 2 goto nwhelp2
-md winhelp
-copy nasmdoc.rtf winhelp
-copy nasmdoc.hpj winhelp
-:nwhelp2
-
-choice " Install Postscript docs in .\ps ? "
-if errorlevel 2 goto nops2
-md ps
-copy nasmdoc.ps ps
-:nops2
-
-
-:cleanup
-set nasdoc=
-
-echo.
-echo.
-echo.
-echo.
-choice " Remove all files created, but not installed?"
-if not errorlevel 2 goto makeclean
-
-goto exit
-
-:spotless
-deltree /y text
-deltree /y html
-deltree /y info
-deltree /y winhelp
-deltree /y ps
-
-:makeclean
-del *.htm
-del *.rtf
-del *.hpj
-del *.txt
-del *.tex
-del *.ps
-del nasm.i*
-
-:exit
diff --git a/doc/metrics/pagd8a.ph b/doc/metrics/pagd8a.ph
deleted file mode 100644
index 6f804c2f..00000000
--- a/doc/metrics/pagd8a.ph
+++ /dev/null
@@ -1,232 +0,0 @@
-%PS_AvantGarde_Demi = (
- name => 'AvantGarde-Demi',
- widths => {
- "A" => 740, "AE" => 900, "Aacute" => 740, "Acircumflex" => 740,
- "Adieresis" => 740, "Agrave" => 740, "Aring" => 740,
- "Atilde" => 740, "B" => 580, "C" => 780, "Ccedilla" => 780,
- "D" => 700, "E" => 520, "Eacute" => 520, "Ecircumflex" => 520,
- "Edieresis" => 520, "Egrave" => 520, "Eth" => 742, "F" => 480,
- "G" => 840, "H" => 680, "I" => 280, "Iacute" => 280,
- "Icircumflex" => 280, "Idieresis" => 280, "Igrave" => 280,
- "J" => 480, "K" => 620, "L" => 440, "Lslash" => 480, "M" => 900,
- "N" => 740, "Ntilde" => 740, "O" => 840, "OE" => 1060,
- "Oacute" => 840, "Ocircumflex" => 840, "Odieresis" => 840,
- "Ograve" => 840, "Oslash" => 840, "Otilde" => 840, "P" => 560,
- "Q" => 840, "R" => 580, "S" => 520, "Scaron" => 520, "T" => 420,
- "Thorn" => 560, "U" => 640, "Uacute" => 640, "Ucircumflex" => 640,
- "Udieresis" => 640, "Ugrave" => 640, "V" => 700, "W" => 900,
- "X" => 680, "Y" => 620, "Yacute" => 620, "Ydieresis" => 620,
- "Z" => 500, "Zcaron" => 500, "a" => 660, "aacute" => 660,
- "acircumflex" => 660, "acute" => 420, "adieresis" => 660,
- "ae" => 1080, "agrave" => 660, "ampersand" => 680, "aring" => 660,
- "asciicircum" => 600, "asciitilde" => 600, "asterisk" => 440,
- "at" => 740, "atilde" => 660, "b" => 660, "backslash" => 640,
- "bar" => 600, "braceleft" => 340, "braceright" => 340,
- "bracketleft" => 320, "bracketright" => 320, "breve" => 480,
- "brokenbar" => 600, "bullet" => 600, "c" => 640, "caron" => 540,
- "ccedilla" => 640, "cedilla" => 340, "cent" => 560,
- "circumflex" => 540, "colon" => 280, "comma" => 280,
- "copyright" => 740, "currency" => 560, "d" => 660, "dagger" => 560,
- "daggerdbl" => 560, "degree" => 400, "dieresis" => 500,
- "divide" => 600, "dollar" => 560, "dotaccent" => 280,
- "dotlessi" => 240, "e" => 640, "eacute" => 640,
- "ecircumflex" => 640, "edieresis" => 640, "egrave" => 640,
- "eight" => 560, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 600, "eth" => 640, "exclam" => 280,
- "exclamdown" => 280, "f" => 280, "fi" => 520, "five" => 560,
- "fl" => 520, "florin" => 560, "four" => 560, "fraction" => 160,
- "g" => 660, "germandbls" => 600, "grave" => 420, "greater" => 600,
- "guillemotleft" => 460, "guillemotright" => 460,
- "guilsinglleft" => 240, "guilsinglright" => 240, "h" => 600,
- "hungarumlaut" => 700, "hyphen" => 420, "i" => 240,
- "iacute" => 240, "icircumflex" => 240, "idieresis" => 240,
- "igrave" => 240, "j" => 260, "k" => 580, "l" => 240, "less" => 600,
- "logicalnot" => 600, "lslash" => 320, "m" => 940, "macron" => 420,
- "minus" => 600, "mu" => 576, "multiply" => 600, "n" => 600,
- "nine" => 560, "ntilde" => 600, "numbersign" => 560, "o" => 640,
- "oacute" => 640, "ocircumflex" => 640, "odieresis" => 640,
- "oe" => 1080, "ogonek" => 340, "ograve" => 640, "one" => 560,
- "onehalf" => 840, "onequarter" => 840, "onesuperior" => 336,
- "ordfeminine" => 360, "ordmasculine" => 360, "oslash" => 660,
- "otilde" => 640, "p" => 660, "paragraph" => 600,
- "parenleft" => 380, "parenright" => 380, "percent" => 860,
- "period" => 280, "periodcentered" => 280, "perthousand" => 1280,
- "plus" => 600, "plusminus" => 600, "q" => 660, "question" => 560,
- "questiondown" => 560, "quotedbl" => 360, "quotedblbase" => 480,
- "quotedblleft" => 480, "quotedblright" => 480, "quoteleft" => 280,
- "quoteright" => 280, "quotesinglbase" => 280, "quotesingle" => 220,
- "r" => 320, "registered" => 740, "ring" => 360, "s" => 440,
- "scaron" => 440, "section" => 560, "semicolon" => 280,
- "seven" => 560, "six" => 560, "slash" => 460, "space" => 280,
- "sterling" => 560, "t" => 300, "thorn" => 660, "three" => 560,
- "threequarters" => 840, "threesuperior" => 336, "tilde" => 480,
- "trademark" => 1000, "two" => 560, "twosuperior" => 336,
- "u" => 600, "uacute" => 600, "ucircumflex" => 600,
- "udieresis" => 600, "ugrave" => 600, "underscore" => 500,
- "v" => 560, "w" => 800, "x" => 560, "y" => 580, "yacute" => 580,
- "ydieresis" => 580, "yen" => 560, "z" => 460, "zcaron" => 460,
- "zero" => 560,
- },
- kern => {
- "A" => {
- "C" => -40, "G" => -40, "O" => -50, "Q" => -50, "T" => -25,
- "U" => -40, "V" => -102, "W" => -60, "Y" => -80,
- "quoteright" => -90, "u" => -20, "v" => -70, "w" => -65,
- "y" => -50,
- },
- "B" => {
- "A" => -10,
- },
- "C" => {
- "A" => -40,
- },
- "D" => {
- "A" => -50, "V" => -50, "W" => -25, "Y" => -45, "comma" => -20,
- "period" => -20,
- },
- "F" => {
- "A" => -75, "a" => -20, "comma" => -162, "e" => -20,
- "period" => -129,
- },
- "G" => {
- "Y" => -15, "comma" => -20, "period" => -20,
- },
- "J" => {
- "A" => -30, "a" => -20, "period" => -15,
- },
- "K" => {
- "O" => -30, "e" => -40, "o" => -45, "u" => -15, "y" => -20,
- },
- "L" => {
- "T" => -46, "V" => -85, "W" => -55, "Y" => -80,
- "quotedblright" => -30, "quoteright" => -30, "y" => -23,
- },
- "O" => {
- "A" => -60, "T" => -15, "V" => -45, "W" => -20, "X" => -30,
- "Y" => -30, "comma" => -30, "period" => -30,
- },
- "P" => {
- "A" => -100, "a" => -20, "comma" => -220, "e" => -20, "o" => -20,
- "period" => -200,
- },
- "Q" => {
- "comma" => 20,
- },
- "R" => {
- "O" => 25, "T" => 40, "U" => 25, "V" => -10, "W" => 25,
- },
- "S" => {
- "comma" => 20,
- },
- "T" => {
- "A" => -25, "O" => -15, "a" => -70, "colon" => -15,
- "comma" => -82, "e" => -49, "hyphen" => -75, "o" => -49,
- "period" => -91, "r" => -30, "semicolon" => -29, "u" => -46,
- "w" => -55, "y" => -10,
- },
- "U" => {
- "A" => -40, "comma" => -20, "period" => -20,
- },
- "V" => {
- "A" => -102, "G" => -20, "O" => -45, "a" => -95, "colon" => -18,
- "comma" => -145, "e" => -101, "hyphen" => -75, "i" => -15,
- "o" => -101, "period" => -145, "semicolon" => -33, "u" => -55,
- },
- "W" => {
- "A" => -58, "O" => -20, "a" => -50, "colon" => -15,
- "comma" => -106, "e" => -47, "hyphen" => -35, "i" => -10,
- "o" => -46, "period" => -106, "semicolon" => -33, "u" => -30,
- "y" => -15,
- },
- "Y" => {
- "A" => -80, "O" => -30, "a" => -93, "colon" => -10,
- "comma" => -145, "e" => -89, "hyphen" => -100, "o" => -89,
- "period" => -145, "semicolon" => -23, "u" => -52,
- },
- "a" => {
- "b" => 5, "p" => 20, "t" => 5,
- },
- "b" => {
- "v" => -20, "y" => -20,
- },
- "c" => {
- "k" => -15, "l" => -15, "y" => -20,
- },
- "comma" => {
- "quotedblright" => -70, "quoteright" => -70, "space" => -50,
- },
- "e" => {
- "v" => -20, "w" => -20, "x" => -20, "y" => -20,
- },
- "f" => {
- "a" => -15, "comma" => -40, "dotlessi" => -15, "f" => -20,
- "i" => -15, "l" => -15, "o" => -20, "period" => -40,
- },
- "g" => {
- "a" => 15, "i" => 25,
- },
- "h" => {
- "y" => -30,
- },
- "k" => {
- "e" => -40, "o" => -30, "y" => -5,
- },
- "m" => {
- "u" => -20, "y" => -20,
- },
- "n" => {
- "v" => -30, "y" => -15,
- },
- "o" => {
- "v" => -30, "w" => -20, "x" => -30, "y" => -20,
- },
- "p" => {
- "y" => -20,
- },
- "period" => {
- "quotedblright" => -70, "quoteright" => -70, "space" => -50,
- },
- "quotedblleft" => {
- "A" => -50,
- },
- "quotedblright" => {
- "space" => -50,
- },
- "quoteleft" => {
- "A" => -50, "quoteleft" => -80,
- },
- "quoteright" => {
- "d" => -50, "quoteright" => -80, "r" => -20, "s" => -15,
- "space" => -50, "t" => 10, "v" => -10,
- },
- "r" => {
- "c" => -7, "comma" => -75, "d" => -6, "e" => -4, "g" => 1,
- "hyphen" => -60, "i" => 20, "k" => 5, "l" => 20, "m" => 15,
- "n" => 21, "o" => -15, "p" => 20, "period" => -73, "q" => -8,
- "s" => 20, "t" => 20, "u" => 20, "v" => 40, "y" => 40,
- },
- "s" => {
- "comma" => 20, "period" => 20,
- },
- "space" => {
- "A" => -20, "T" => -25, "V" => -80, "W" => -25, "Y" => -60,
- "quotedblleft" => -50, "quoteleft" => -50,
- },
- "v" => {
- "a" => -30, "comma" => -90, "e" => -20, "o" => -20,
- "period" => -90,
- },
- "w" => {
- "a" => -30, "comma" => -90, "e" => -20, "o" => -30,
- "period" => -90,
- },
- "x" => {
- "e" => -20,
- },
- "y" => {
- "a" => -30, "c" => -35, "comma" => -100, "e" => -20, "o" => -30,
- "period" => -100,
- }
- }
-);
-1;
diff --git a/doc/metrics/pagdo8a.ph b/doc/metrics/pagdo8a.ph
deleted file mode 100644
index 024773ef..00000000
--- a/doc/metrics/pagdo8a.ph
+++ /dev/null
@@ -1,232 +0,0 @@
-%PS_AvantGarde_DemiOblique = (
- name => 'AvantGarde-DemiOblique',
- widths => {
- "A" => 740, "AE" => 900, "Aacute" => 740, "Acircumflex" => 740,
- "Adieresis" => 740, "Agrave" => 740, "Aring" => 740,
- "Atilde" => 740, "B" => 580, "C" => 780, "Ccedilla" => 780,
- "D" => 700, "E" => 520, "Eacute" => 520, "Ecircumflex" => 520,
- "Edieresis" => 520, "Egrave" => 520, "Eth" => 742, "F" => 480,
- "G" => 840, "H" => 680, "I" => 280, "Iacute" => 280,
- "Icircumflex" => 280, "Idieresis" => 280, "Igrave" => 280,
- "J" => 480, "K" => 620, "L" => 440, "Lslash" => 480, "M" => 900,
- "N" => 740, "Ntilde" => 740, "O" => 840, "OE" => 1060,
- "Oacute" => 840, "Ocircumflex" => 840, "Odieresis" => 840,
- "Ograve" => 840, "Oslash" => 840, "Otilde" => 840, "P" => 560,
- "Q" => 840, "R" => 580, "S" => 520, "Scaron" => 520, "T" => 420,
- "Thorn" => 560, "U" => 640, "Uacute" => 640, "Ucircumflex" => 640,
- "Udieresis" => 640, "Ugrave" => 640, "V" => 700, "W" => 900,
- "X" => 680, "Y" => 620, "Yacute" => 620, "Ydieresis" => 620,
- "Z" => 500, "Zcaron" => 500, "a" => 660, "aacute" => 660,
- "acircumflex" => 660, "acute" => 420, "adieresis" => 660,
- "ae" => 1080, "agrave" => 660, "ampersand" => 680, "aring" => 660,
- "asciicircum" => 600, "asciitilde" => 600, "asterisk" => 440,
- "at" => 740, "atilde" => 660, "b" => 660, "backslash" => 640,
- "bar" => 600, "braceleft" => 340, "braceright" => 340,
- "bracketleft" => 320, "bracketright" => 320, "breve" => 480,
- "brokenbar" => 600, "bullet" => 600, "c" => 640, "caron" => 540,
- "ccedilla" => 640, "cedilla" => 340, "cent" => 560,
- "circumflex" => 540, "colon" => 280, "comma" => 280,
- "copyright" => 740, "currency" => 560, "d" => 660, "dagger" => 560,
- "daggerdbl" => 560, "degree" => 400, "dieresis" => 500,
- "divide" => 600, "dollar" => 560, "dotaccent" => 280,
- "dotlessi" => 240, "e" => 640, "eacute" => 640,
- "ecircumflex" => 640, "edieresis" => 640, "egrave" => 640,
- "eight" => 560, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 600, "eth" => 640, "exclam" => 280,
- "exclamdown" => 280, "f" => 280, "fi" => 520, "five" => 560,
- "fl" => 520, "florin" => 560, "four" => 560, "fraction" => 160,
- "g" => 660, "germandbls" => 600, "grave" => 420, "greater" => 600,
- "guillemotleft" => 460, "guillemotright" => 460,
- "guilsinglleft" => 240, "guilsinglright" => 240, "h" => 600,
- "hungarumlaut" => 700, "hyphen" => 420, "i" => 240,
- "iacute" => 240, "icircumflex" => 240, "idieresis" => 240,
- "igrave" => 240, "j" => 260, "k" => 580, "l" => 240, "less" => 600,
- "logicalnot" => 600, "lslash" => 320, "m" => 940, "macron" => 420,
- "minus" => 600, "mu" => 576, "multiply" => 600, "n" => 600,
- "nine" => 560, "ntilde" => 600, "numbersign" => 560, "o" => 640,
- "oacute" => 640, "ocircumflex" => 640, "odieresis" => 640,
- "oe" => 1080, "ogonek" => 340, "ograve" => 640, "one" => 560,
- "onehalf" => 840, "onequarter" => 840, "onesuperior" => 336,
- "ordfeminine" => 360, "ordmasculine" => 360, "oslash" => 660,
- "otilde" => 640, "p" => 660, "paragraph" => 600,
- "parenleft" => 380, "parenright" => 380, "percent" => 860,
- "period" => 280, "periodcentered" => 280, "perthousand" => 1280,
- "plus" => 600, "plusminus" => 600, "q" => 660, "question" => 560,
- "questiondown" => 560, "quotedbl" => 360, "quotedblbase" => 480,
- "quotedblleft" => 480, "quotedblright" => 480, "quoteleft" => 280,
- "quoteright" => 280, "quotesinglbase" => 280, "quotesingle" => 220,
- "r" => 320, "registered" => 740, "ring" => 360, "s" => 440,
- "scaron" => 440, "section" => 560, "semicolon" => 280,
- "seven" => 560, "six" => 560, "slash" => 460, "space" => 280,
- "sterling" => 560, "t" => 300, "thorn" => 660, "three" => 560,
- "threequarters" => 840, "threesuperior" => 336, "tilde" => 480,
- "trademark" => 1000, "two" => 560, "twosuperior" => 336,
- "u" => 600, "uacute" => 600, "ucircumflex" => 600,
- "udieresis" => 600, "ugrave" => 600, "underscore" => 500,
- "v" => 560, "w" => 800, "x" => 560, "y" => 580, "yacute" => 580,
- "ydieresis" => 580, "yen" => 560, "z" => 460, "zcaron" => 460,
- "zero" => 560,
- },
- kern => {
- "A" => {
- "C" => -40, "G" => -40, "O" => -50, "Q" => -50, "T" => -25,
- "U" => -40, "V" => -102, "W" => -60, "Y" => -80,
- "quoteright" => -90, "u" => -20, "v" => -70, "w" => -65,
- "y" => -50,
- },
- "B" => {
- "A" => -10,
- },
- "C" => {
- "A" => -40,
- },
- "D" => {
- "A" => -50, "V" => -50, "W" => -25, "Y" => -45, "comma" => -20,
- "period" => -20,
- },
- "F" => {
- "A" => -75, "a" => -20, "comma" => -162, "e" => -20,
- "period" => -129,
- },
- "G" => {
- "Y" => -15, "comma" => -20, "period" => -20,
- },
- "J" => {
- "A" => -30, "a" => -20, "period" => -15,
- },
- "K" => {
- "O" => -30, "e" => -40, "o" => -45, "u" => -15, "y" => -20,
- },
- "L" => {
- "T" => -46, "V" => -85, "W" => -55, "Y" => -80,
- "quotedblright" => -30, "quoteright" => -30, "y" => -23,
- },
- "O" => {
- "A" => -60, "T" => -15, "V" => -45, "W" => -20, "X" => -30,
- "Y" => -30, "comma" => -30, "period" => -30,
- },
- "P" => {
- "A" => -100, "a" => -20, "comma" => -220, "e" => -20, "o" => -20,
- "period" => -200,
- },
- "Q" => {
- "comma" => 20,
- },
- "R" => {
- "O" => 25, "T" => 40, "U" => 25, "V" => -10, "W" => 25,
- },
- "S" => {
- "comma" => 20,
- },
- "T" => {
- "A" => -25, "O" => -15, "a" => -70, "colon" => -15,
- "comma" => -82, "e" => -49, "hyphen" => -75, "o" => -49,
- "period" => -91, "r" => -30, "semicolon" => -29, "u" => -46,
- "w" => -55, "y" => -10,
- },
- "U" => {
- "A" => -40, "comma" => -20, "period" => -20,
- },
- "V" => {
- "A" => -102, "G" => -20, "O" => -45, "a" => -95, "colon" => -18,
- "comma" => -145, "e" => -101, "hyphen" => -75, "i" => -15,
- "o" => -101, "period" => -145, "semicolon" => -33, "u" => -55,
- },
- "W" => {
- "A" => -58, "O" => -20, "a" => -50, "colon" => -15,
- "comma" => -106, "e" => -47, "hyphen" => -35, "i" => -10,
- "o" => -46, "period" => -106, "semicolon" => -33, "u" => -30,
- "y" => -15,
- },
- "Y" => {
- "A" => -80, "O" => -30, "a" => -93, "colon" => -10,
- "comma" => -145, "e" => -89, "hyphen" => -100, "o" => -89,
- "period" => -145, "semicolon" => -23, "u" => -52,
- },
- "a" => {
- "b" => 5, "p" => 20, "t" => 5,
- },
- "b" => {
- "v" => -20, "y" => -20,
- },
- "c" => {
- "k" => -15, "l" => -15, "y" => -20,
- },
- "comma" => {
- "quotedblright" => -70, "quoteright" => -70, "space" => -50,
- },
- "e" => {
- "v" => -20, "w" => -20, "x" => -20, "y" => -20,
- },
- "f" => {
- "a" => -15, "comma" => -40, "dotlessi" => -15, "f" => -20,
- "i" => -15, "l" => -15, "o" => -20, "period" => -40,
- },
- "g" => {
- "a" => 15, "i" => 25,
- },
- "h" => {
- "y" => -30,
- },
- "k" => {
- "e" => -40, "o" => -30, "y" => -5,
- },
- "m" => {
- "u" => -20, "y" => -20,
- },
- "n" => {
- "v" => -30, "y" => -15,
- },
- "o" => {
- "v" => -30, "w" => -20, "x" => -30, "y" => -20,
- },
- "p" => {
- "y" => -20,
- },
- "period" => {
- "quotedblright" => -70, "quoteright" => -70, "space" => -50,
- },
- "quotedblleft" => {
- "A" => -50,
- },
- "quotedblright" => {
- "space" => -50,
- },
- "quoteleft" => {
- "A" => -50, "quoteleft" => -80,
- },
- "quoteright" => {
- "d" => -50, "quoteright" => -80, "r" => -20, "s" => -15,
- "space" => -50, "t" => 10, "v" => -10,
- },
- "r" => {
- "c" => -7, "comma" => -75, "d" => -6, "e" => -4, "g" => 1,
- "hyphen" => -60, "i" => 20, "k" => 5, "l" => 20, "m" => 15,
- "n" => 21, "o" => -15, "p" => 20, "period" => -73, "q" => -8,
- "s" => 20, "t" => 20, "u" => 20, "v" => 40, "y" => 40,
- },
- "s" => {
- "comma" => 20, "period" => 20,
- },
- "space" => {
- "A" => -20, "T" => -25, "V" => -80, "W" => -25, "Y" => -60,
- "quotedblleft" => -50, "quoteleft" => -50,
- },
- "v" => {
- "a" => -30, "comma" => -90, "e" => -20, "o" => -20,
- "period" => -90,
- },
- "w" => {
- "a" => -30, "comma" => -90, "e" => -20, "o" => -30,
- "period" => -90,
- },
- "x" => {
- "e" => -20,
- },
- "y" => {
- "a" => -30, "c" => -35, "comma" => -100, "e" => -20, "o" => -30,
- "period" => -100,
- }
- }
-);
-1;
diff --git a/doc/metrics/pagk8a.ph b/doc/metrics/pagk8a.ph
deleted file mode 100644
index dfa62d80..00000000
--- a/doc/metrics/pagk8a.ph
+++ /dev/null
@@ -1,229 +0,0 @@
-%PS_AvantGarde_Book = (
- name => 'AvantGarde-Book',
- widths => {
- "A" => 740, "AE" => 992, "Aacute" => 740, "Acircumflex" => 740,
- "Adieresis" => 740, "Agrave" => 740, "Aring" => 740,
- "Atilde" => 740, "B" => 574, "C" => 813, "Ccedilla" => 813,
- "D" => 744, "E" => 536, "Eacute" => 536, "Ecircumflex" => 536,
- "Edieresis" => 536, "Egrave" => 536, "Eth" => 790, "F" => 485,
- "G" => 872, "H" => 683, "I" => 226, "Iacute" => 226,
- "Icircumflex" => 226, "Idieresis" => 226, "Igrave" => 226,
- "J" => 482, "K" => 591, "L" => 462, "Lslash" => 517, "M" => 919,
- "N" => 740, "Ntilde" => 740, "O" => 869, "OE" => 1194,
- "Oacute" => 869, "Ocircumflex" => 869, "Odieresis" => 869,
- "Ograve" => 869, "Oslash" => 868, "Otilde" => 869, "P" => 592,
- "Q" => 871, "R" => 607, "S" => 498, "Scaron" => 498, "T" => 426,
- "Thorn" => 592, "U" => 655, "Uacute" => 655, "Ucircumflex" => 655,
- "Udieresis" => 655, "Ugrave" => 655, "V" => 702, "W" => 960,
- "X" => 609, "Y" => 592, "Yacute" => 592, "Ydieresis" => 592,
- "Z" => 480, "Zcaron" => 480, "a" => 683, "aacute" => 683,
- "acircumflex" => 683, "acute" => 375, "adieresis" => 683,
- "ae" => 1157, "agrave" => 683, "ampersand" => 757, "aring" => 683,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 425,
- "at" => 867, "atilde" => 683, "b" => 682, "backslash" => 605,
- "bar" => 672, "braceleft" => 351, "braceright" => 351,
- "bracketleft" => 351, "bracketright" => 351, "breve" => 453,
- "brokenbar" => 672, "bullet" => 606, "c" => 647, "caron" => 502,
- "ccedilla" => 647, "cedilla" => 324, "cent" => 554,
- "circumflex" => 502, "colon" => 277, "comma" => 277,
- "copyright" => 747, "currency" => 554, "d" => 685, "dagger" => 553,
- "daggerdbl" => 553, "degree" => 400, "dieresis" => 369,
- "divide" => 606, "dollar" => 554, "dotaccent" => 222,
- "dotlessi" => 200, "e" => 650, "eacute" => 650,
- "ecircumflex" => 650, "edieresis" => 650, "egrave" => 650,
- "eight" => 554, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 655, "exclam" => 295,
- "exclamdown" => 295, "f" => 314, "fi" => 487, "five" => 554,
- "fl" => 485, "florin" => 554, "four" => 554, "fraction" => 166,
- "g" => 673, "germandbls" => 554, "grave" => 378, "greater" => 606,
- "guillemotleft" => 425, "guillemotright" => 425,
- "guilsinglleft" => 251, "guilsinglright" => 251, "h" => 610,
- "hungarumlaut" => 552, "hyphen" => 332, "i" => 200,
- "iacute" => 200, "icircumflex" => 200, "idieresis" => 200,
- "igrave" => 200, "j" => 203, "k" => 502, "l" => 200, "less" => 606,
- "logicalnot" => 606, "lslash" => 300, "m" => 938, "macron" => 485,
- "minus" => 606, "mu" => 608, "multiply" => 606, "n" => 610,
- "nine" => 554, "ntilde" => 610, "numbersign" => 554, "o" => 655,
- "oacute" => 655, "ocircumflex" => 655, "odieresis" => 655,
- "oe" => 1137, "ogonek" => 302, "ograve" => 655, "one" => 554,
- "onehalf" => 831, "onequarter" => 831, "onesuperior" => 332,
- "ordfeminine" => 369, "ordmasculine" => 369, "oslash" => 653,
- "otilde" => 655, "p" => 682, "paragraph" => 564,
- "parenleft" => 369, "parenright" => 369, "percent" => 775,
- "period" => 277, "periodcentered" => 277, "perthousand" => 1174,
- "plus" => 606, "plusminus" => 606, "q" => 682, "question" => 591,
- "questiondown" => 591, "quotedbl" => 309, "quotedblbase" => 502,
- "quotedblleft" => 502, "quotedblright" => 484, "quoteleft" => 351,
- "quoteright" => 351, "quotesinglbase" => 354, "quotesingle" => 198,
- "r" => 301, "registered" => 747, "ring" => 332, "s" => 388,
- "scaron" => 388, "section" => 615, "semicolon" => 277,
- "seven" => 554, "six" => 554, "slash" => 437, "space" => 277,
- "sterling" => 554, "t" => 339, "thorn" => 682, "three" => 554,
- "threequarters" => 831, "threesuperior" => 332, "tilde" => 439,
- "trademark" => 1000, "two" => 554, "twosuperior" => 332,
- "u" => 608, "uacute" => 608, "ucircumflex" => 608,
- "udieresis" => 608, "ugrave" => 608, "underscore" => 500,
- "v" => 554, "w" => 831, "x" => 480, "y" => 536, "yacute" => 536,
- "ydieresis" => 536, "yen" => 554, "z" => 425, "zcaron" => 425,
- "zero" => 554,
- },
- kern => {
- "A" => {
- "C" => -40, "G" => -40, "O" => -50, "Q" => -40, "T" => -45,
- "U" => -40, "V" => -102, "W" => -60, "Y" => -92,
- "quotedblright" => -100, "quoteright" => -100, "u" => -20,
- "v" => -70, "w" => -65, "y" => -62,
- },
- "B" => {
- "A" => -10,
- },
- "C" => {
- "A" => -40,
- },
- "D" => {
- "A" => -50, "V" => -50, "W" => -10, "Y" => -30, "comma" => -20,
- "period" => -20,
- },
- "F" => {
- "A" => -75, "a" => -20, "comma" => -180, "e" => -20,
- "period" => -160,
- },
- "G" => {
- "Y" => -20, "comma" => -20, "period" => -20,
- },
- "J" => {
- "A" => -30, "a" => -20, "period" => -15,
- },
- "K" => {
- "O" => -20, "e" => -20, "o" => -15,
- },
- "L" => {
- "T" => -46, "V" => -113, "W" => -67, "Y" => -91,
- "quotedblright" => -130, "quoteright" => -130, "y" => -23,
- },
- "O" => {
- "A" => -60, "T" => -30, "V" => -60, "W" => -20, "X" => -30,
- "Y" => -30, "comma" => -30, "period" => -30,
- },
- "P" => {
- "A" => -114, "a" => -20, "comma" => -280, "e" => -20, "o" => -60,
- "period" => -300,
- },
- "Q" => {
- "comma" => 20,
- },
- "R" => {
- "T" => 6, "V" => -10, "W" => 10, "Y" => -10,
- },
- "S" => {
- "comma" => 20,
- },
- "T" => {
- "A" => -45, "O" => -30, "a" => -90, "colon" => -15,
- "comma" => -82, "e" => -49, "hyphen" => -75, "i" => 10,
- "o" => -70, "period" => -91, "r" => -30, "semicolon" => -29,
- "u" => -46, "w" => -55, "y" => -50,
- },
- "U" => {
- "A" => -40, "comma" => -20, "period" => -20,
- },
- "V" => {
- "A" => -102, "G" => -20, "O" => -60, "a" => -104, "colon" => -18,
- "comma" => -145, "e" => -101, "hyphen" => -75, "i" => -5,
- "o" => -101, "period" => -165, "semicolon" => -33, "u" => -40,
- },
- "W" => {
- "A" => -58, "O" => -20, "a" => -50, "colon" => -15,
- "comma" => -106, "e" => -47, "hyphen" => -35, "i" => 6,
- "o" => -46, "period" => -106, "semicolon" => -33, "u" => -30,
- "y" => -2,
- },
- "Y" => {
- "A" => -92, "O" => -30, "a" => -93, "colon" => -10,
- "comma" => -145, "e" => -89, "hyphen" => -85, "o" => -89,
- "period" => -175, "semicolon" => -23, "u" => -52,
- },
- "a" => {
- "b" => 20, "p" => 20,
- },
- "b" => {
- "v" => -20, "y" => -20,
- },
- "c" => {
- "k" => -15, "y" => -20,
- },
- "comma" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -110,
- },
- "e" => {
- "v" => -20, "w" => -20, "y" => -20,
- },
- "f" => {
- "a" => -40, "comma" => -50, "dotlessi" => -34, "e" => -20,
- "f" => -60, "i" => -34, "l" => -30, "o" => -40, "period" => -50,
- },
- "g" => {
- "a" => -15,
- },
- "h" => {
- "y" => -30,
- },
- "k" => {
- "e" => -15, "y" => -5,
- },
- "m" => {
- "a" => -20, "u" => -20, "y" => -20,
- },
- "n" => {
- "v" => -20, "y" => -15,
- },
- "o" => {
- "v" => -30, "w" => -20, "x" => -15, "y" => -20,
- },
- "p" => {
- "y" => -20,
- },
- "period" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -110,
- },
- "quotedblleft" => {
- "A" => -100, "quoteleft" => -35,
- },
- "quotedblright" => {
- "space" => -110,
- },
- "quoteleft" => {
- "A" => -100, "quoteleft" => -203,
- },
- "quoteright" => {
- "d" => -110, "quotedblright" => -35, "quoteright" => -203,
- "r" => -20, "s" => -15, "space" => -110, "t" => 10, "v" => -30,
- },
- "r" => {
- "a" => -20, "c" => -20, "comma" => -75, "d" => -6, "e" => -4,
- "g" => -15, "hyphen" => -60, "i" => 20, "k" => 20, "l" => 20,
- "m" => 28, "n" => 21, "o" => -20, "p" => 20, "period" => -73,
- "q" => -8, "s" => 20, "t" => 20, "u" => 20, "v" => 40, "y" => 40,
- },
- "s" => {
- "comma" => 20, "period" => 20,
- },
- "space" => {
- "A" => -20, "T" => -25, "V" => -50, "W" => -25, "Y" => -60,
- "quotedblleft" => -110, "quoteleft" => -110,
- },
- "v" => {
- "a" => -30, "comma" => -100, "e" => -20, "o" => -30,
- "period" => -130,
- },
- "w" => {
- "a" => -30, "comma" => -90, "e" => -20, "h" => 15, "o" => -30,
- "period" => -100,
- },
- "y" => {
- "a" => -30, "comma" => -110, "e" => -20, "o" => -30,
- "period" => -125,
- }
- }
-);
-1;
diff --git a/doc/metrics/pagko8a.ph b/doc/metrics/pagko8a.ph
deleted file mode 100644
index 249be68f..00000000
--- a/doc/metrics/pagko8a.ph
+++ /dev/null
@@ -1,229 +0,0 @@
-%PS_AvantGarde_BookOblique = (
- name => 'AvantGarde-BookOblique',
- widths => {
- "A" => 740, "AE" => 992, "Aacute" => 740, "Acircumflex" => 740,
- "Adieresis" => 740, "Agrave" => 740, "Aring" => 740,
- "Atilde" => 740, "B" => 574, "C" => 813, "Ccedilla" => 813,
- "D" => 744, "E" => 536, "Eacute" => 536, "Ecircumflex" => 536,
- "Edieresis" => 536, "Egrave" => 536, "Eth" => 790, "F" => 485,
- "G" => 872, "H" => 683, "I" => 226, "Iacute" => 226,
- "Icircumflex" => 226, "Idieresis" => 226, "Igrave" => 226,
- "J" => 482, "K" => 591, "L" => 462, "Lslash" => 517, "M" => 919,
- "N" => 740, "Ntilde" => 740, "O" => 869, "OE" => 1194,
- "Oacute" => 869, "Ocircumflex" => 869, "Odieresis" => 869,
- "Ograve" => 869, "Oslash" => 868, "Otilde" => 869, "P" => 592,
- "Q" => 871, "R" => 607, "S" => 498, "Scaron" => 498, "T" => 426,
- "Thorn" => 592, "U" => 655, "Uacute" => 655, "Ucircumflex" => 655,
- "Udieresis" => 655, "Ugrave" => 655, "V" => 702, "W" => 960,
- "X" => 609, "Y" => 592, "Yacute" => 592, "Ydieresis" => 592,
- "Z" => 480, "Zcaron" => 480, "a" => 683, "aacute" => 683,
- "acircumflex" => 683, "acute" => 375, "adieresis" => 683,
- "ae" => 1157, "agrave" => 683, "ampersand" => 757, "aring" => 683,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 425,
- "at" => 867, "atilde" => 683, "b" => 682, "backslash" => 605,
- "bar" => 672, "braceleft" => 351, "braceright" => 351,
- "bracketleft" => 351, "bracketright" => 351, "breve" => 453,
- "brokenbar" => 672, "bullet" => 606, "c" => 647, "caron" => 502,
- "ccedilla" => 647, "cedilla" => 324, "cent" => 554,
- "circumflex" => 502, "colon" => 277, "comma" => 277,
- "copyright" => 747, "currency" => 554, "d" => 685, "dagger" => 553,
- "daggerdbl" => 553, "degree" => 400, "dieresis" => 369,
- "divide" => 606, "dollar" => 554, "dotaccent" => 222,
- "dotlessi" => 200, "e" => 650, "eacute" => 650,
- "ecircumflex" => 650, "edieresis" => 650, "egrave" => 650,
- "eight" => 554, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 655, "exclam" => 295,
- "exclamdown" => 295, "f" => 314, "fi" => 487, "five" => 554,
- "fl" => 485, "florin" => 554, "four" => 554, "fraction" => 166,
- "g" => 673, "germandbls" => 554, "grave" => 378, "greater" => 606,
- "guillemotleft" => 425, "guillemotright" => 425,
- "guilsinglleft" => 251, "guilsinglright" => 251, "h" => 610,
- "hungarumlaut" => 552, "hyphen" => 332, "i" => 200,
- "iacute" => 200, "icircumflex" => 200, "idieresis" => 200,
- "igrave" => 200, "j" => 203, "k" => 502, "l" => 200, "less" => 606,
- "logicalnot" => 606, "lslash" => 300, "m" => 938, "macron" => 485,
- "minus" => 606, "mu" => 608, "multiply" => 606, "n" => 610,
- "nine" => 554, "ntilde" => 610, "numbersign" => 554, "o" => 655,
- "oacute" => 655, "ocircumflex" => 655, "odieresis" => 655,
- "oe" => 1137, "ogonek" => 302, "ograve" => 655, "one" => 554,
- "onehalf" => 831, "onequarter" => 831, "onesuperior" => 332,
- "ordfeminine" => 369, "ordmasculine" => 369, "oslash" => 653,
- "otilde" => 655, "p" => 682, "paragraph" => 564,
- "parenleft" => 369, "parenright" => 369, "percent" => 775,
- "period" => 277, "periodcentered" => 277, "perthousand" => 1174,
- "plus" => 606, "plusminus" => 606, "q" => 682, "question" => 591,
- "questiondown" => 591, "quotedbl" => 309, "quotedblbase" => 502,
- "quotedblleft" => 502, "quotedblright" => 484, "quoteleft" => 351,
- "quoteright" => 351, "quotesinglbase" => 354, "quotesingle" => 198,
- "r" => 301, "registered" => 747, "ring" => 332, "s" => 388,
- "scaron" => 388, "section" => 615, "semicolon" => 277,
- "seven" => 554, "six" => 554, "slash" => 437, "space" => 277,
- "sterling" => 554, "t" => 339, "thorn" => 682, "three" => 554,
- "threequarters" => 831, "threesuperior" => 332, "tilde" => 439,
- "trademark" => 1000, "two" => 554, "twosuperior" => 332,
- "u" => 608, "uacute" => 608, "ucircumflex" => 608,
- "udieresis" => 608, "ugrave" => 608, "underscore" => 500,
- "v" => 554, "w" => 831, "x" => 480, "y" => 536, "yacute" => 536,
- "ydieresis" => 536, "yen" => 554, "z" => 425, "zcaron" => 425,
- "zero" => 554,
- },
- kern => {
- "A" => {
- "C" => -40, "G" => -40, "O" => -50, "Q" => -40, "T" => -45,
- "U" => -40, "V" => -102, "W" => -60, "Y" => -92,
- "quotedblright" => -100, "quoteright" => -100, "u" => -20,
- "v" => -70, "w" => -65, "y" => -62,
- },
- "B" => {
- "A" => -10,
- },
- "C" => {
- "A" => -40,
- },
- "D" => {
- "A" => -50, "V" => -50, "W" => -10, "Y" => -30, "comma" => -20,
- "period" => -20,
- },
- "F" => {
- "A" => -75, "a" => -20, "comma" => -180, "e" => -20,
- "period" => -160,
- },
- "G" => {
- "Y" => -20, "comma" => -20, "period" => -20,
- },
- "J" => {
- "A" => -30, "a" => -20, "period" => -15,
- },
- "K" => {
- "O" => -20, "e" => -20, "o" => -15,
- },
- "L" => {
- "T" => -46, "V" => -113, "W" => -67, "Y" => -91,
- "quotedblright" => -130, "quoteright" => -130, "y" => -23,
- },
- "O" => {
- "A" => -60, "T" => -30, "V" => -60, "W" => -20, "X" => -30,
- "Y" => -30, "comma" => -30, "period" => -30,
- },
- "P" => {
- "A" => -114, "a" => -20, "comma" => -280, "e" => -20, "o" => -60,
- "period" => -300,
- },
- "Q" => {
- "comma" => 20,
- },
- "R" => {
- "T" => 6, "V" => -10, "W" => 10, "Y" => -10,
- },
- "S" => {
- "comma" => 20,
- },
- "T" => {
- "A" => -45, "O" => -30, "a" => -90, "colon" => -15,
- "comma" => -82, "e" => -49, "hyphen" => -75, "i" => 10,
- "o" => -70, "period" => -91, "r" => -30, "semicolon" => -29,
- "u" => -46, "w" => -55, "y" => -50,
- },
- "U" => {
- "A" => -40, "comma" => -20, "period" => -20,
- },
- "V" => {
- "A" => -102, "G" => -20, "O" => -60, "a" => -104, "colon" => -18,
- "comma" => -145, "e" => -101, "hyphen" => -75, "i" => -5,
- "o" => -101, "period" => -165, "semicolon" => -33, "u" => -40,
- },
- "W" => {
- "A" => -58, "O" => -20, "a" => -50, "colon" => -15,
- "comma" => -106, "e" => -47, "hyphen" => -35, "i" => 6,
- "o" => -46, "period" => -106, "semicolon" => -33, "u" => -30,
- "y" => -2,
- },
- "Y" => {
- "A" => -92, "O" => -30, "a" => -93, "colon" => -10,
- "comma" => -145, "e" => -89, "hyphen" => -85, "o" => -89,
- "period" => -175, "semicolon" => -23, "u" => -52,
- },
- "a" => {
- "b" => 20, "p" => 20,
- },
- "b" => {
- "v" => -20, "y" => -20,
- },
- "c" => {
- "k" => -15, "y" => -20,
- },
- "comma" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -110,
- },
- "e" => {
- "v" => -20, "w" => -20, "y" => -20,
- },
- "f" => {
- "a" => -40, "comma" => -50, "dotlessi" => -34, "e" => -20,
- "f" => -60, "i" => -34, "l" => -30, "o" => -40, "period" => -50,
- },
- "g" => {
- "a" => -15,
- },
- "h" => {
- "y" => -30,
- },
- "k" => {
- "e" => -15, "y" => -5,
- },
- "m" => {
- "a" => -20, "u" => -20, "y" => -20,
- },
- "n" => {
- "v" => -20, "y" => -15,
- },
- "o" => {
- "v" => -30, "w" => -20, "x" => -15, "y" => -20,
- },
- "p" => {
- "y" => -20,
- },
- "period" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -110,
- },
- "quotedblleft" => {
- "A" => -100, "quoteleft" => -35,
- },
- "quotedblright" => {
- "space" => -110,
- },
- "quoteleft" => {
- "A" => -100, "quoteleft" => -203,
- },
- "quoteright" => {
- "d" => -110, "quotedblright" => -35, "quoteright" => -203,
- "r" => -20, "s" => -15, "space" => -110, "t" => 10, "v" => -30,
- },
- "r" => {
- "a" => -20, "c" => -20, "comma" => -75, "d" => -6, "e" => -4,
- "g" => -15, "hyphen" => -60, "i" => 20, "k" => 20, "l" => 20,
- "m" => 28, "n" => 21, "o" => -20, "p" => 20, "period" => -73,
- "q" => -8, "s" => 20, "t" => 20, "u" => 20, "v" => 40, "y" => 40,
- },
- "s" => {
- "comma" => 20, "period" => 20,
- },
- "space" => {
- "A" => -20, "T" => -25, "V" => -50, "W" => -25, "Y" => -60,
- "quotedblleft" => -110, "quoteleft" => -110,
- },
- "v" => {
- "a" => -30, "comma" => -100, "e" => -20, "o" => -30,
- "period" => -130,
- },
- "w" => {
- "a" => -30, "comma" => -90, "e" => -20, "h" => 15, "o" => -30,
- "period" => -100,
- },
- "y" => {
- "a" => -30, "comma" => -110, "e" => -20, "o" => -30,
- "period" => -125,
- }
- }
-);
-1;
diff --git a/doc/metrics/pbkd8a.ph b/doc/metrics/pbkd8a.ph
deleted file mode 100644
index dc667e93..00000000
--- a/doc/metrics/pbkd8a.ph
+++ /dev/null
@@ -1,120 +0,0 @@
-%PS_Bookman_Demi = (
- name => 'Bookman-Demi',
- widths => {
- "A" => 720, "AE" => 1140, "Aacute" => 720, "Acircumflex" => 720,
- "Adieresis" => 720, "Agrave" => 720, "Aring" => 720,
- "Atilde" => 720, "B" => 720, "C" => 740, "Ccedilla" => 740,
- "D" => 780, "E" => 720, "Eacute" => 720, "Ecircumflex" => 720,
- "Edieresis" => 720, "Egrave" => 720, "Eth" => 780, "F" => 680,
- "G" => 780, "H" => 820, "I" => 400, "Iacute" => 400,
- "Icircumflex" => 400, "Idieresis" => 400, "Igrave" => 400,
- "J" => 640, "K" => 800, "L" => 640, "Lslash" => 640, "M" => 940,
- "N" => 740, "Ntilde" => 740, "O" => 800, "OE" => 1220,
- "Oacute" => 800, "Ocircumflex" => 800, "Odieresis" => 800,
- "Ograve" => 800, "Oslash" => 800, "Otilde" => 800, "P" => 660,
- "Q" => 800, "R" => 780, "S" => 660, "Scaron" => 660, "T" => 700,
- "Thorn" => 660, "U" => 740, "Uacute" => 740, "Ucircumflex" => 740,
- "Udieresis" => 740, "Ugrave" => 740, "V" => 720, "W" => 940,
- "X" => 780, "Y" => 700, "Yacute" => 700, "Ydieresis" => 700,
- "Z" => 640, "Zcaron" => 640, "a" => 580, "aacute" => 580,
- "acircumflex" => 580, "acute" => 400, "adieresis" => 580,
- "ae" => 880, "agrave" => 580, "ampersand" => 800, "aring" => 580,
- "asciicircum" => 600, "asciitilde" => 600, "asterisk" => 460,
- "at" => 820, "atilde" => 580, "b" => 600, "backslash" => 600,
- "bar" => 600, "braceleft" => 320, "braceright" => 320,
- "bracketleft" => 300, "bracketright" => 300, "breve" => 500,
- "brokenbar" => 600, "bullet" => 460, "c" => 580, "caron" => 500,
- "ccedilla" => 580, "cedilla" => 360, "cent" => 660,
- "circumflex" => 500, "colon" => 340, "comma" => 340,
- "copyright" => 740, "currency" => 660, "d" => 640, "dagger" => 440,
- "daggerdbl" => 380, "degree" => 400, "dieresis" => 500,
- "divide" => 600, "dollar" => 660, "dotaccent" => 320,
- "dotlessi" => 360, "e" => 580, "eacute" => 580,
- "ecircumflex" => 580, "edieresis" => 580, "egrave" => 580,
- "eight" => 660, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 600, "eth" => 620, "exclam" => 360,
- "exclamdown" => 360, "f" => 380, "fi" => 740, "five" => 660,
- "fl" => 740, "florin" => 660, "four" => 660, "fraction" => 120,
- "g" => 580, "germandbls" => 660, "grave" => 400, "greater" => 600,
- "guillemotleft" => 400, "guillemotright" => 400,
- "guilsinglleft" => 220, "guilsinglright" => 220, "h" => 680,
- "hungarumlaut" => 440, "hyphen" => 360, "i" => 360,
- "iacute" => 360, "icircumflex" => 360, "idieresis" => 360,
- "igrave" => 360, "j" => 340, "k" => 660, "l" => 340, "less" => 600,
- "logicalnot" => 600, "lslash" => 340, "m" => 1000, "macron" => 460,
- "minus" => 600, "mu" => 660, "multiply" => 600, "n" => 680,
- "nine" => 660, "ntilde" => 680, "numbersign" => 660, "o" => 620,
- "oacute" => 620, "ocircumflex" => 620, "odieresis" => 620,
- "oe" => 940, "ogonek" => 320, "ograve" => 620, "one" => 660,
- "onehalf" => 990, "onequarter" => 990, "onesuperior" => 396,
- "ordfeminine" => 400, "ordmasculine" => 400, "oslash" => 620,
- "otilde" => 620, "p" => 640, "paragraph" => 800,
- "parenleft" => 320, "parenright" => 320, "percent" => 940,
- "period" => 340, "periodcentered" => 340, "perthousand" => 1360,
- "plus" => 600, "plusminus" => 600, "q" => 620, "question" => 660,
- "questiondown" => 660, "quotedbl" => 420, "quotedblbase" => 540,
- "quotedblleft" => 540, "quotedblright" => 540, "quoteleft" => 320,
- "quoteright" => 320, "quotesinglbase" => 320, "quotesingle" => 240,
- "r" => 460, "registered" => 740, "ring" => 340, "s" => 520,
- "scaron" => 520, "section" => 600, "semicolon" => 340,
- "seven" => 660, "six" => 660, "slash" => 600, "space" => 340,
- "sterling" => 660, "t" => 460, "thorn" => 640, "three" => 660,
- "threequarters" => 990, "threesuperior" => 396, "tilde" => 480,
- "trademark" => 980, "two" => 660, "twosuperior" => 396, "u" => 660,
- "uacute" => 660, "ucircumflex" => 660, "udieresis" => 660,
- "ugrave" => 660, "underscore" => 500, "v" => 600, "w" => 800,
- "x" => 600, "y" => 620, "yacute" => 620, "ydieresis" => 620,
- "yen" => 660, "z" => 560, "zcaron" => 560, "zero" => 660,
- },
- kern => {
- "A" => {
- "T" => -40, "V" => -68, "W" => -20, "Y" => -52, "v" => -8,
- "w" => -9, "y" => -1,
- },
- "F" => {
- "A" => -59, "comma" => -130, "period" => -132,
- },
- "L" => {
- "T" => -4, "V" => -50, "W" => -41, "Y" => -35, "y" => 19,
- },
- "P" => {
- "A" => -46, "comma" => -129, "period" => -128,
- },
- "R" => {
- "T" => -4, "V" => -29, "W" => -24, "Y" => -20, "y" => -8,
- },
- "T" => {
- "A" => -42, "a" => -24, "c" => -29, "colon" => 7,
- "comma" => -122, "e" => -29, "hyphen" => -10, "i" => 27,
- "o" => -28, "period" => -122, "r" => 27, "s" => -10,
- "semicolon" => 5,
- },
- "V" => {
- "A" => -88, "a" => -74, "colon" => -37, "comma" => -103,
- "e" => -80, "hyphen" => -10, "i" => 15, "o" => -79,
- "period" => -105, "r" => -15, "semicolon" => -38, "u" => -11,
- "y" => 12,
- },
- "W" => {
- "A" => -60, "a" => -73, "colon" => -37, "comma" => -103,
- "e" => -79, "hyphen" => -10, "i" => 15, "o" => -78,
- "period" => -105, "r" => -15, "semicolon" => -38, "u" => -11,
- "y" => 12,
- },
- "Y" => {
- "A" => -56, "a" => -60, "colon" => -32, "comma" => -103,
- "e" => -67, "hyphen" => -10, "i" => 2, "o" => -66, "p" => -23,
- "period" => -105, "q" => -66, "semicolon" => -34, "u" => -13,
- "v" => 24,
- },
- "f" => {
- "f" => 21,
- },
- "r" => {
- "c" => -9, "comma" => -101, "d" => -10, "e" => -10, "f" => 20,
- "g" => -9, "h" => -23, "hyphen" => -10, "m" => 20, "n" => 20,
- "o" => -9, "period" => -102, "q" => -9,
- }
- }
-);
-1;
diff --git a/doc/metrics/pbkdi8a.ph b/doc/metrics/pbkdi8a.ph
deleted file mode 100644
index f150a286..00000000
--- a/doc/metrics/pbkdi8a.ph
+++ /dev/null
@@ -1,120 +0,0 @@
-%PS_Bookman_DemiItalic = (
- name => 'Bookman-DemiItalic',
- widths => {
- "A" => 720, "AE" => 1140, "Aacute" => 720, "Acircumflex" => 720,
- "Adieresis" => 720, "Agrave" => 720, "Aring" => 720,
- "Atilde" => 720, "B" => 720, "C" => 700, "Ccedilla" => 700,
- "D" => 760, "E" => 720, "Eacute" => 720, "Ecircumflex" => 720,
- "Edieresis" => 720, "Egrave" => 720, "Eth" => 760, "F" => 660,
- "G" => 760, "H" => 800, "I" => 380, "Iacute" => 380,
- "Icircumflex" => 380, "Idieresis" => 380, "Igrave" => 380,
- "J" => 620, "K" => 780, "L" => 640, "Lslash" => 640, "M" => 860,
- "N" => 740, "Ntilde" => 740, "O" => 760, "OE" => 1180,
- "Oacute" => 760, "Ocircumflex" => 760, "Odieresis" => 760,
- "Ograve" => 760, "Oslash" => 760, "Otilde" => 760, "P" => 640,
- "Q" => 760, "R" => 740, "S" => 700, "Scaron" => 700, "T" => 700,
- "Thorn" => 640, "U" => 740, "Uacute" => 740, "Ucircumflex" => 740,
- "Udieresis" => 740, "Ugrave" => 740, "V" => 660, "W" => 1000,
- "X" => 740, "Y" => 660, "Yacute" => 660, "Ydieresis" => 660,
- "Z" => 680, "Zcaron" => 680, "a" => 680, "aacute" => 680,
- "acircumflex" => 680, "acute" => 340, "adieresis" => 680,
- "ae" => 880, "agrave" => 680, "ampersand" => 980, "aring" => 680,
- "asciicircum" => 620, "asciitilde" => 620, "asterisk" => 460,
- "at" => 780, "atilde" => 680, "b" => 600, "backslash" => 580,
- "bar" => 620, "braceleft" => 300, "braceright" => 300,
- "bracketleft" => 260, "bracketright" => 260, "breve" => 460,
- "brokenbar" => 620, "bullet" => 360, "c" => 560, "caron" => 480,
- "ccedilla" => 560, "cedilla" => 360, "cent" => 680,
- "circumflex" => 480, "colon" => 340, "comma" => 340,
- "copyright" => 780, "currency" => 680, "d" => 680, "dagger" => 420,
- "daggerdbl" => 420, "degree" => 400, "dieresis" => 520,
- "divide" => 600, "dollar" => 680, "dotaccent" => 380,
- "dotlessi" => 380, "e" => 560, "eacute" => 560,
- "ecircumflex" => 560, "edieresis" => 560, "egrave" => 560,
- "eight" => 680, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 600, "eth" => 600, "exclam" => 320,
- "exclamdown" => 320, "f" => 420, "fi" => 820, "five" => 680,
- "fl" => 820, "florin" => 680, "four" => 680, "fraction" => 120,
- "g" => 620, "germandbls" => 660, "grave" => 380, "greater" => 620,
- "guillemotleft" => 380, "guillemotright" => 380,
- "guilsinglleft" => 220, "guilsinglright" => 220, "h" => 700,
- "hungarumlaut" => 560, "hyphen" => 280, "i" => 380,
- "iacute" => 380, "icircumflex" => 380, "idieresis" => 380,
- "igrave" => 380, "j" => 320, "k" => 700, "l" => 380, "less" => 620,
- "logicalnot" => 620, "lslash" => 380, "m" => 960, "macron" => 480,
- "minus" => 600, "mu" => 680, "multiply" => 600, "n" => 680,
- "nine" => 680, "ntilde" => 680, "numbersign" => 680, "o" => 600,
- "oacute" => 600, "ocircumflex" => 600, "odieresis" => 600,
- "oe" => 920, "ogonek" => 320, "ograve" => 600, "one" => 680,
- "onehalf" => 1020, "onequarter" => 1020, "onesuperior" => 408,
- "ordfeminine" => 440, "ordmasculine" => 440, "oslash" => 600,
- "otilde" => 600, "p" => 660, "paragraph" => 680,
- "parenleft" => 260, "parenright" => 260, "percent" => 880,
- "period" => 340, "periodcentered" => 340, "perthousand" => 1360,
- "plus" => 600, "plusminus" => 600, "q" => 620, "question" => 620,
- "questiondown" => 620, "quotedbl" => 380, "quotedblbase" => 520,
- "quotedblleft" => 520, "quotedblright" => 520, "quoteleft" => 320,
- "quoteright" => 320, "quotesinglbase" => 300, "quotesingle" => 180,
- "r" => 500, "registered" => 780, "ring" => 360, "s" => 540,
- "scaron" => 540, "section" => 620, "semicolon" => 340,
- "seven" => 680, "six" => 680, "slash" => 360, "space" => 340,
- "sterling" => 680, "t" => 440, "thorn" => 660, "three" => 680,
- "threequarters" => 1020, "threesuperior" => 408, "tilde" => 480,
- "trademark" => 940, "two" => 680, "twosuperior" => 408, "u" => 680,
- "uacute" => 680, "ucircumflex" => 680, "udieresis" => 680,
- "ugrave" => 680, "underscore" => 500, "v" => 540, "w" => 860,
- "x" => 620, "y" => 600, "yacute" => 600, "ydieresis" => 600,
- "yen" => 680, "z" => 560, "zcaron" => 560, "zero" => 680,
- },
- kern => {
- "A" => {
- "T" => -17, "V" => -40, "W" => -35, "Y" => -25, "v" => 20,
- "w" => 20, "y" => 20,
- },
- "F" => {
- "A" => -35, "comma" => -98, "period" => -105,
- },
- "L" => {
- "T" => -26, "V" => -19, "W" => -15, "Y" => -5, "y" => 62,
- },
- "P" => {
- "A" => -31, "comma" => -98, "period" => -105,
- },
- "R" => {
- "T" => -3, "V" => -8, "W" => -4, "Y" => 4, "y" => 27,
- },
- "T" => {
- "A" => -42, "a" => -8, "c" => -8, "colon" => 26, "comma" => -100,
- "e" => -10, "hyphen" => -20, "i" => 42, "o" => -5,
- "period" => -107, "r" => 41, "s" => -1, "semicolon" => 31,
- "u" => 42, "w" => 69, "y" => 56,
- },
- "V" => {
- "A" => -50, "a" => -50, "colon" => -28, "comma" => -137,
- "e" => -50, "hyphen" => -20, "i" => 32, "o" => -50,
- "period" => -115, "r" => 2, "semicolon" => -22, "u" => -1,
- "y" => 17,
- },
- "W" => {
- "A" => -77, "a" => -100, "colon" => -86, "comma" => -201,
- "e" => -100, "hyphen" => -22, "i" => -36, "o" => -100,
- "period" => -183, "r" => -66, "semicolon" => -81, "u" => -69,
- "y" => -51,
- },
- "Y" => {
- "A" => -30, "a" => -45, "colon" => -9, "comma" => -106,
- "e" => -46, "hyphen" => -20, "i" => 20, "o" => -41,
- "period" => -113, "q" => -43, "semicolon" => -4, "u" => -1,
- "v" => 26,
- },
- "f" => {
- "f" => 10,
- },
- "r" => {
- "c" => -5, "comma" => -113, "d" => -3, "e" => -6, "f" => 42,
- "g" => -23, "h" => -35, "hyphen" => -20, "m" => 39, "n" => 39,
- "o" => -1, "period" => -120, "q" => -3,
- }
- }
-);
-1;
diff --git a/doc/metrics/pbkl8a.ph b/doc/metrics/pbkl8a.ph
deleted file mode 100644
index b5c64fa7..00000000
--- a/doc/metrics/pbkl8a.ph
+++ /dev/null
@@ -1,116 +0,0 @@
-%PS_Bookman_Light = (
- name => 'Bookman-Light',
- widths => {
- "A" => 680, "AE" => 1260, "Aacute" => 680, "Acircumflex" => 680,
- "Adieresis" => 680, "Agrave" => 680, "Aring" => 680,
- "Atilde" => 680, "B" => 740, "C" => 740, "Ccedilla" => 740,
- "D" => 800, "E" => 720, "Eacute" => 720, "Ecircumflex" => 720,
- "Edieresis" => 720, "Egrave" => 720, "Eth" => 800, "F" => 640,
- "G" => 800, "H" => 800, "I" => 340, "Iacute" => 340,
- "Icircumflex" => 340, "Idieresis" => 340, "Igrave" => 340,
- "J" => 600, "K" => 720, "L" => 600, "Lslash" => 600, "M" => 920,
- "N" => 740, "Ntilde" => 740, "O" => 800, "OE" => 1240,
- "Oacute" => 800, "Ocircumflex" => 800, "Odieresis" => 800,
- "Ograve" => 800, "Oslash" => 800, "Otilde" => 800, "P" => 620,
- "Q" => 820, "R" => 720, "S" => 660, "Scaron" => 660, "T" => 620,
- "Thorn" => 620, "U" => 780, "Uacute" => 780, "Ucircumflex" => 780,
- "Udieresis" => 780, "Ugrave" => 780, "V" => 700, "W" => 960,
- "X" => 720, "Y" => 640, "Yacute" => 640, "Ydieresis" => 640,
- "Z" => 640, "Zcaron" => 640, "a" => 580, "aacute" => 580,
- "acircumflex" => 580, "acute" => 340, "adieresis" => 580,
- "ae" => 860, "agrave" => 580, "ampersand" => 800, "aring" => 580,
- "asciicircum" => 600, "asciitilde" => 600, "asterisk" => 440,
- "at" => 820, "atilde" => 580, "b" => 620, "backslash" => 600,
- "bar" => 600, "braceleft" => 280, "braceright" => 280,
- "bracketleft" => 300, "bracketright" => 300, "breve" => 460,
- "brokenbar" => 600, "bullet" => 460, "c" => 520, "caron" => 420,
- "ccedilla" => 520, "cedilla" => 320, "cent" => 620,
- "circumflex" => 420, "colon" => 320, "comma" => 320,
- "copyright" => 740, "currency" => 620, "d" => 620, "dagger" => 540,
- "daggerdbl" => 540, "degree" => 400, "dieresis" => 420,
- "divide" => 600, "dollar" => 620, "dotaccent" => 260,
- "dotlessi" => 300, "e" => 520, "eacute" => 520,
- "ecircumflex" => 520, "edieresis" => 520, "egrave" => 520,
- "eight" => 620, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 600, "eth" => 560, "exclam" => 300,
- "exclamdown" => 300, "f" => 320, "fi" => 620, "five" => 620,
- "fl" => 620, "florin" => 620, "four" => 620, "fraction" => 140,
- "g" => 540, "germandbls" => 660, "grave" => 340, "greater" => 600,
- "guillemotleft" => 360, "guillemotright" => 360,
- "guilsinglleft" => 240, "guilsinglright" => 240, "h" => 660,
- "hungarumlaut" => 380, "hyphen" => 400, "i" => 300,
- "iacute" => 300, "icircumflex" => 300, "idieresis" => 300,
- "igrave" => 300, "j" => 300, "k" => 620, "l" => 300, "less" => 600,
- "logicalnot" => 600, "lslash" => 320, "m" => 940, "macron" => 440,
- "minus" => 600, "mu" => 680, "multiply" => 600, "n" => 660,
- "nine" => 620, "ntilde" => 660, "numbersign" => 620, "o" => 560,
- "oacute" => 560, "ocircumflex" => 560, "odieresis" => 560,
- "oe" => 900, "ogonek" => 320, "ograve" => 560, "one" => 620,
- "onehalf" => 930, "onequarter" => 930, "onesuperior" => 372,
- "ordfeminine" => 420, "ordmasculine" => 420, "oslash" => 560,
- "otilde" => 560, "p" => 620, "paragraph" => 600,
- "parenleft" => 300, "parenright" => 300, "percent" => 900,
- "period" => 320, "periodcentered" => 320, "perthousand" => 1280,
- "plus" => 600, "plusminus" => 600, "q" => 580, "question" => 540,
- "questiondown" => 540, "quotedbl" => 380, "quotedblbase" => 400,
- "quotedblleft" => 400, "quotedblright" => 400, "quoteleft" => 220,
- "quoteright" => 220, "quotesinglbase" => 220, "quotesingle" => 220,
- "r" => 440, "registered" => 740, "ring" => 320, "s" => 520,
- "scaron" => 520, "section" => 520, "semicolon" => 320,
- "seven" => 620, "six" => 620, "slash" => 600, "space" => 320,
- "sterling" => 620, "t" => 380, "thorn" => 620, "three" => 620,
- "threequarters" => 930, "threesuperior" => 372, "tilde" => 440,
- "trademark" => 980, "two" => 620, "twosuperior" => 372, "u" => 680,
- "uacute" => 680, "ucircumflex" => 680, "udieresis" => 680,
- "ugrave" => 680, "underscore" => 500, "v" => 520, "w" => 780,
- "x" => 560, "y" => 540, "yacute" => 540, "ydieresis" => 540,
- "yen" => 620, "z" => 480, "zcaron" => 480, "zero" => 620,
- },
- kern => {
- "A" => {
- "T" => 1, "V" => -56, "W" => -40, "Y" => -35, "v" => 7, "w" => 4,
- "y" => 32,
- },
- "F" => {
- "A" => -21, "comma" => -41, "period" => -46,
- },
- "L" => {
- "T" => 28, "V" => -4, "W" => 1, "Y" => 13, "y" => 79,
- },
- "P" => {
- "A" => -8, "comma" => -55, "period" => -60,
- },
- "R" => {
- "T" => 71, "V" => 8, "W" => 13, "Y" => 26, "y" => 59,
- },
- "T" => {
- "A" => 1, "a" => 17, "c" => 14, "comma" => -28, "e" => 13,
- "hyphen" => 90, "i" => 42, "o" => 15, "period" => -33, "r" => 38,
- "s" => 16,
- },
- "V" => {
- "A" => -66, "a" => -69, "comma" => -34, "e" => -72,
- "hyphen" => 11, "i" => -20, "o" => -71, "period" => -40,
- "r" => -41, "u" => -38, "y" => 15,
- },
- "W" => {
- "A" => -64, "a" => -66, "comma" => -34, "e" => -69,
- "hyphen" => 11, "i" => -20, "o" => -68, "period" => -40,
- "r" => -41, "u" => -38, "y" => 15,
- },
- "Y" => {
- "A" => -53, "a" => -54, "comma" => -34, "e" => -58,
- "hyphen" => 11, "i" => -37, "o" => -57, "p" => -31,
- "period" => -40, "q" => -55, "u" => -38, "v" => 15,
- },
- "f" => {
- "f" => 29,
- },
- "r" => {
- "c" => 7, "comma" => -58, "d" => 7, "e" => 7, "f" => 33,
- "g" => -4, "h" => -21, "hyphen" => 70, "m" => 31, "n" => 31,
- "o" => 8, "period" => -64, "q" => 9,
- }
- }
-);
-1;
diff --git a/doc/metrics/pbkli8a.ph b/doc/metrics/pbkli8a.ph
deleted file mode 100644
index 35bffb42..00000000
--- a/doc/metrics/pbkli8a.ph
+++ /dev/null
@@ -1,118 +0,0 @@
-%PS_Bookman_LightItalic = (
- name => 'Bookman-LightItalic',
- widths => {
- "A" => 700, "AE" => 1220, "Aacute" => 700, "Acircumflex" => 700,
- "Adieresis" => 700, "Agrave" => 700, "Aring" => 700,
- "Atilde" => 700, "B" => 720, "C" => 720, "Ccedilla" => 720,
- "D" => 740, "E" => 680, "Eacute" => 680, "Ecircumflex" => 680,
- "Edieresis" => 680, "Egrave" => 680, "Eth" => 740, "F" => 620,
- "G" => 760, "H" => 800, "I" => 320, "Iacute" => 320,
- "Icircumflex" => 320, "Idieresis" => 320, "Igrave" => 320,
- "J" => 560, "K" => 720, "L" => 580, "Lslash" => 580, "M" => 860,
- "N" => 720, "Ntilde" => 720, "O" => 760, "OE" => 1180,
- "Oacute" => 760, "Ocircumflex" => 760, "Odieresis" => 760,
- "Ograve" => 760, "Oslash" => 760, "Otilde" => 760, "P" => 600,
- "Q" => 780, "R" => 700, "S" => 640, "Scaron" => 640, "T" => 600,
- "Thorn" => 600, "U" => 720, "Uacute" => 720, "Ucircumflex" => 720,
- "Udieresis" => 720, "Ugrave" => 720, "V" => 680, "W" => 960,
- "X" => 700, "Y" => 660, "Yacute" => 660, "Ydieresis" => 660,
- "Z" => 580, "Zcaron" => 580, "a" => 620, "aacute" => 620,
- "acircumflex" => 620, "acute" => 320, "adieresis" => 620,
- "ae" => 880, "agrave" => 620, "ampersand" => 820, "aring" => 620,
- "asciicircum" => 600, "asciitilde" => 600, "asterisk" => 440,
- "at" => 780, "atilde" => 620, "b" => 600, "backslash" => 600,
- "bar" => 600, "braceleft" => 360, "braceright" => 380,
- "bracketleft" => 260, "bracketright" => 260, "breve" => 440,
- "brokenbar" => 600, "bullet" => 460, "c" => 480, "caron" => 440,
- "ccedilla" => 480, "cedilla" => 320, "cent" => 620,
- "circumflex" => 440, "colon" => 300, "comma" => 300,
- "copyright" => 740, "currency" => 620, "d" => 640, "dagger" => 620,
- "daggerdbl" => 620, "degree" => 400, "dieresis" => 420,
- "divide" => 600, "dollar" => 620, "dotaccent" => 260,
- "dotlessi" => 280, "e" => 540, "eacute" => 540,
- "ecircumflex" => 540, "edieresis" => 540, "egrave" => 540,
- "eight" => 620, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 600, "eth" => 540, "exclam" => 320,
- "exclamdown" => 320, "f" => 340, "fi" => 640, "five" => 620,
- "fl" => 660, "florin" => 620, "four" => 620, "fraction" => 20,
- "g" => 560, "germandbls" => 620, "grave" => 340, "greater" => 600,
- "guillemotleft" => 300, "guillemotright" => 300,
- "guilsinglleft" => 180, "guilsinglright" => 180, "h" => 620,
- "hungarumlaut" => 340, "hyphen" => 320, "i" => 280,
- "iacute" => 280, "icircumflex" => 280, "idieresis" => 280,
- "igrave" => 280, "j" => 280, "k" => 600, "l" => 280, "less" => 600,
- "logicalnot" => 600, "lslash" => 340, "m" => 880, "macron" => 440,
- "minus" => 600, "mu" => 620, "multiply" => 600, "n" => 620,
- "nine" => 620, "ntilde" => 620, "numbersign" => 620, "o" => 540,
- "oacute" => 540, "ocircumflex" => 540, "odieresis" => 540,
- "oe" => 900, "ogonek" => 260, "ograve" => 540, "one" => 620,
- "onehalf" => 930, "onequarter" => 930, "onesuperior" => 372,
- "ordfeminine" => 440, "ordmasculine" => 400, "oslash" => 540,
- "otilde" => 540, "p" => 600, "paragraph" => 620,
- "parenleft" => 280, "parenright" => 280, "percent" => 800,
- "period" => 300, "periodcentered" => 300, "perthousand" => 1180,
- "plus" => 600, "plusminus" => 600, "q" => 560, "question" => 540,
- "questiondown" => 540, "quotedbl" => 360, "quotedblbase" => 480,
- "quotedblleft" => 440, "quotedblright" => 440, "quoteleft" => 280,
- "quoteright" => 280, "quotesinglbase" => 320, "quotesingle" => 200,
- "r" => 400, "registered" => 740, "ring" => 300, "s" => 540,
- "scaron" => 540, "section" => 620, "semicolon" => 300,
- "seven" => 620, "six" => 620, "slash" => 600, "space" => 300,
- "sterling" => 620, "t" => 340, "thorn" => 600, "three" => 620,
- "threequarters" => 930, "threesuperior" => 372, "tilde" => 440,
- "trademark" => 980, "two" => 620, "twosuperior" => 372, "u" => 620,
- "uacute" => 620, "ucircumflex" => 620, "udieresis" => 620,
- "ugrave" => 620, "underscore" => 500, "v" => 540, "w" => 880,
- "x" => 540, "y" => 600, "yacute" => 600, "ydieresis" => 600,
- "yen" => 620, "z" => 520, "zcaron" => 520, "zero" => 620,
- },
- kern => {
- "A" => {
- "T" => -5, "V" => -78, "W" => -73, "Y" => -62,
- },
- "F" => {
- "A" => -16, "comma" => -98, "period" => -97,
- },
- "L" => {
- "V" => 4, "W" => 9, "Y" => 7, "y" => 20,
- },
- "P" => {
- "A" => -30, "comma" => -106, "period" => -105,
- },
- "R" => {
- "T" => 65, "V" => 2, "W" => 2, "Y" => 11,
- },
- "T" => {
- "A" => -14, "a" => 9, "c" => 16, "colon" => 48, "comma" => -79,
- "e" => 10, "hyphen" => 20, "i" => 71, "o" => 14, "period" => -78,
- "r" => 67, "s" => -7, "semicolon" => 48,
- },
- "V" => {
- "A" => -70, "a" => -70, "colon" => -35, "comma" => -109,
- "e" => -70, "hyphen" => 20, "i" => 3, "o" => -70,
- "period" => -100, "r" => -20, "semicolon" => -44, "u" => -10,
- "y" => -14,
- },
- "W" => {
- "A" => -60, "a" => -60, "colon" => -35, "comma" => -109,
- "e" => -60, "hyphen" => 20, "i" => 3, "o" => -60,
- "period" => -100, "r" => -30, "semicolon" => -42, "u" => -20,
- "y" => -14,
- },
- "Y" => {
- "A" => -82, "a" => -79, "colon" => -35, "comma" => -109,
- "e" => -78, "hyphen" => 20, "i" => -11, "o" => -75, "p" => -37,
- "period" => -100, "q" => -72, "semicolon" => -40, "u" => -31,
- "v" => -19,
- },
- "f" => {
- "f" => -19,
- },
- "r" => {
- "c" => -8, "comma" => -143, "d" => -9, "e" => -15, "f" => -9,
- "g" => -3, "h" => -20, "hyphen" => 20, "m" => 37, "n" => 38,
- "o" => -10, "period" => -134, "q" => -14,
- }
- }
-);
-1;
diff --git a/doc/metrics/pcrb8a.ph b/doc/metrics/pcrb8a.ph
deleted file mode 100644
index a8e7e626..00000000
--- a/doc/metrics/pcrb8a.ph
+++ /dev/null
@@ -1,82 +0,0 @@
-%PS_Courier_Bold = (
- name => 'Courier-Bold',
- widths => {
- "A" => 600, "AE" => 600, "Aacute" => 600, "Acircumflex" => 600,
- "Adieresis" => 600, "Agrave" => 600, "Aring" => 600,
- "Atilde" => 600, "B" => 600, "C" => 600, "Ccedilla" => 600,
- "D" => 600, "E" => 600, "Eacute" => 600, "Ecircumflex" => 600,
- "Edieresis" => 600, "Egrave" => 600, "Eth" => 600, "F" => 600,
- "G" => 600, "Gcaron" => 600, "H" => 600, "I" => 600, "IJ" => 600,
- "Iacute" => 600, "Icircumflex" => 600, "Idieresis" => 600,
- "Idot" => 600, "Igrave" => 600, "J" => 600, "K" => 600, "L" => 600,
- "LL" => 600, "Lslash" => 600, "M" => 600, "N" => 600,
- "Ntilde" => 600, "O" => 600, "OE" => 600, "Oacute" => 600,
- "Ocircumflex" => 600, "Odieresis" => 600, "Ograve" => 600,
- "Oslash" => 600, "Otilde" => 600, "P" => 600, "Q" => 600,
- "R" => 600, "S" => 600, "Scaron" => 600, "Scedilla" => 600,
- "T" => 600, "Thorn" => 600, "U" => 600, "Uacute" => 600,
- "Ucircumflex" => 600, "Udieresis" => 600, "Ugrave" => 600,
- "V" => 600, "W" => 600, "X" => 600, "Y" => 600, "Yacute" => 600,
- "Ydieresis" => 600, "Z" => 600, "Zcaron" => 600, "a" => 600,
- "aacute" => 600, "acircumflex" => 600, "acute" => 600,
- "adieresis" => 600, "ae" => 600, "agrave" => 600,
- "ampersand" => 600, "aring" => 600, "arrowboth" => 600,
- "arrowdown" => 600, "arrowleft" => 600, "arrowright" => 600,
- "arrowup" => 600, "asciicircum" => 600, "asciitilde" => 600,
- "asterisk" => 600, "at" => 600, "atilde" => 600, "b" => 600,
- "backslash" => 600, "bar" => 600, "braceleft" => 600,
- "braceright" => 600, "bracketleft" => 600, "bracketright" => 600,
- "breve" => 600, "brokenbar" => 600, "bullet" => 600, "c" => 600,
- "caron" => 600, "ccedilla" => 600, "cedilla" => 600, "cent" => 600,
- "center" => 600, "circumflex" => 600, "colon" => 600,
- "comma" => 600, "copyright" => 600, "currency" => 600, "d" => 600,
- "dagger" => 600, "daggerdbl" => 600, "dectab" => 600,
- "degree" => 600, "dieresis" => 600, "divide" => 600,
- "dollar" => 600, "dotaccent" => 600, "dotlessi" => 600,
- "down" => 600, "e" => 600, "eacute" => 600, "ecircumflex" => 600,
- "edieresis" => 600, "egrave" => 600, "eight" => 600,
- "ellipsis" => 600, "emdash" => 600, "endash" => 600,
- "equal" => 600, "eth" => 600, "exclam" => 600, "exclamdown" => 600,
- "f" => 600, "fi" => 600, "five" => 600, "fl" => 600,
- "florin" => 600, "format" => 600, "four" => 600, "fraction" => 600,
- "g" => 600, "gcaron" => 600, "germandbls" => 600, "grave" => 600,
- "graybox" => 600, "greater" => 600, "guillemotleft" => 600,
- "guillemotright" => 600, "guilsinglleft" => 600,
- "guilsinglright" => 600, "h" => 600, "hungarumlaut" => 600,
- "hyphen" => 600, "i" => 600, "iacute" => 600, "icircumflex" => 600,
- "idieresis" => 600, "igrave" => 600, "ij" => 600, "indent" => 600,
- "j" => 600, "k" => 600, "l" => 600, "largebullet" => 600,
- "left" => 600, "less" => 600, "lira" => 600, "ll" => 600,
- "logicalnot" => 600, "lslash" => 600, "m" => 600, "macron" => 600,
- "merge" => 600, "minus" => 600, "mu" => 600, "multiply" => 600,
- "n" => 600, "nine" => 600, "notegraphic" => 600, "ntilde" => 600,
- "numbersign" => 600, "o" => 600, "oacute" => 600,
- "ocircumflex" => 600, "odieresis" => 600, "oe" => 600,
- "ogonek" => 600, "ograve" => 600, "one" => 600, "onehalf" => 600,
- "onequarter" => 600, "onesuperior" => 600, "ordfeminine" => 600,
- "ordmasculine" => 600, "oslash" => 600, "otilde" => 600,
- "overscore" => 600, "p" => 600, "paragraph" => 600,
- "parenleft" => 600, "parenright" => 600, "percent" => 600,
- "period" => 600, "periodcentered" => 600, "perthousand" => 600,
- "plus" => 600, "plusminus" => 600, "prescription" => 600,
- "q" => 600, "question" => 600, "questiondown" => 600,
- "quotedbl" => 600, "quotedblbase" => 600, "quotedblleft" => 600,
- "quotedblright" => 600, "quoteleft" => 600, "quoteright" => 600,
- "quotesinglbase" => 600, "quotesingle" => 600, "r" => 600,
- "registered" => 600, "return" => 600, "ring" => 600, "s" => 600,
- "scaron" => 600, "scedilla" => 600, "section" => 600,
- "semicolon" => 600, "seven" => 600, "six" => 600, "slash" => 600,
- "space" => 600, "square" => 600, "sterling" => 600, "stop" => 600,
- "t" => 600, "tab" => 600, "thorn" => 600, "three" => 600,
- "threequarters" => 600, "threesuperior" => 600, "tilde" => 600,
- "trademark" => 600, "two" => 600, "twosuperior" => 600, "u" => 600,
- "uacute" => 600, "ucircumflex" => 600, "udieresis" => 600,
- "ugrave" => 600, "underscore" => 600, "up" => 600, "v" => 600,
- "w" => 600, "x" => 600, "y" => 600, "yacute" => 600,
- "ydieresis" => 600, "yen" => 600, "z" => 600, "zcaron" => 600,
- "zero" => 600,
- },
- kern => {
- }
-);
-1;
diff --git a/doc/metrics/pcrbo8a.ph b/doc/metrics/pcrbo8a.ph
deleted file mode 100644
index cacf0084..00000000
--- a/doc/metrics/pcrbo8a.ph
+++ /dev/null
@@ -1,82 +0,0 @@
-%PS_Courier_BoldOblique = (
- name => 'Courier-BoldOblique',
- widths => {
- "A" => 600, "AE" => 600, "Aacute" => 600, "Acircumflex" => 600,
- "Adieresis" => 600, "Agrave" => 600, "Aring" => 600,
- "Atilde" => 600, "B" => 600, "C" => 600, "Ccedilla" => 600,
- "D" => 600, "E" => 600, "Eacute" => 600, "Ecircumflex" => 600,
- "Edieresis" => 600, "Egrave" => 600, "Eth" => 600, "F" => 600,
- "G" => 600, "Gcaron" => 600, "H" => 600, "I" => 600, "IJ" => 600,
- "Iacute" => 600, "Icircumflex" => 600, "Idieresis" => 600,
- "Idot" => 600, "Igrave" => 600, "J" => 600, "K" => 600, "L" => 600,
- "LL" => 600, "Lslash" => 600, "M" => 600, "N" => 600,
- "Ntilde" => 600, "O" => 600, "OE" => 600, "Oacute" => 600,
- "Ocircumflex" => 600, "Odieresis" => 600, "Ograve" => 600,
- "Oslash" => 600, "Otilde" => 600, "P" => 600, "Q" => 600,
- "R" => 600, "S" => 600, "Scaron" => 600, "Scedilla" => 600,
- "T" => 600, "Thorn" => 600, "U" => 600, "Uacute" => 600,
- "Ucircumflex" => 600, "Udieresis" => 600, "Ugrave" => 600,
- "V" => 600, "W" => 600, "X" => 600, "Y" => 600, "Yacute" => 600,
- "Ydieresis" => 600, "Z" => 600, "Zcaron" => 600, "a" => 600,
- "aacute" => 600, "acircumflex" => 600, "acute" => 600,
- "adieresis" => 600, "ae" => 600, "agrave" => 600,
- "ampersand" => 600, "aring" => 600, "arrowboth" => 600,
- "arrowdown" => 600, "arrowleft" => 600, "arrowright" => 600,
- "arrowup" => 600, "asciicircum" => 600, "asciitilde" => 600,
- "asterisk" => 600, "at" => 600, "atilde" => 600, "b" => 600,
- "backslash" => 600, "bar" => 600, "braceleft" => 600,
- "braceright" => 600, "bracketleft" => 600, "bracketright" => 600,
- "breve" => 600, "brokenbar" => 600, "bullet" => 600, "c" => 600,
- "caron" => 600, "ccedilla" => 600, "cedilla" => 600, "cent" => 600,
- "center" => 600, "circumflex" => 600, "colon" => 600,
- "comma" => 600, "copyright" => 600, "currency" => 600, "d" => 600,
- "dagger" => 600, "daggerdbl" => 600, "dectab" => 600,
- "degree" => 600, "dieresis" => 600, "divide" => 600,
- "dollar" => 600, "dotaccent" => 600, "dotlessi" => 600,
- "down" => 600, "e" => 600, "eacute" => 600, "ecircumflex" => 600,
- "edieresis" => 600, "egrave" => 600, "eight" => 600,
- "ellipsis" => 600, "emdash" => 600, "endash" => 600,
- "equal" => 600, "eth" => 600, "exclam" => 600, "exclamdown" => 600,
- "f" => 600, "fi" => 600, "five" => 600, "fl" => 600,
- "florin" => 600, "format" => 600, "four" => 600, "fraction" => 600,
- "g" => 600, "gcaron" => 600, "germandbls" => 600, "grave" => 600,
- "graybox" => 600, "greater" => 600, "guillemotleft" => 600,
- "guillemotright" => 600, "guilsinglleft" => 600,
- "guilsinglright" => 600, "h" => 600, "hungarumlaut" => 600,
- "hyphen" => 600, "i" => 600, "iacute" => 600, "icircumflex" => 600,
- "idieresis" => 600, "igrave" => 600, "ij" => 600, "indent" => 600,
- "j" => 600, "k" => 600, "l" => 600, "largebullet" => 600,
- "left" => 600, "less" => 600, "lira" => 600, "ll" => 600,
- "logicalnot" => 600, "lslash" => 600, "m" => 600, "macron" => 600,
- "merge" => 600, "minus" => 600, "mu" => 600, "multiply" => 600,
- "n" => 600, "nine" => 600, "notegraphic" => 600, "ntilde" => 600,
- "numbersign" => 600, "o" => 600, "oacute" => 600,
- "ocircumflex" => 600, "odieresis" => 600, "oe" => 600,
- "ogonek" => 600, "ograve" => 600, "one" => 600, "onehalf" => 600,
- "onequarter" => 600, "onesuperior" => 600, "ordfeminine" => 600,
- "ordmasculine" => 600, "oslash" => 600, "otilde" => 600,
- "overscore" => 600, "p" => 600, "paragraph" => 600,
- "parenleft" => 600, "parenright" => 600, "percent" => 600,
- "period" => 600, "periodcentered" => 600, "perthousand" => 600,
- "plus" => 600, "plusminus" => 600, "prescription" => 600,
- "q" => 600, "question" => 600, "questiondown" => 600,
- "quotedbl" => 600, "quotedblbase" => 600, "quotedblleft" => 600,
- "quotedblright" => 600, "quoteleft" => 600, "quoteright" => 600,
- "quotesinglbase" => 600, "quotesingle" => 600, "r" => 600,
- "registered" => 600, "return" => 600, "ring" => 600, "s" => 600,
- "scaron" => 600, "scedilla" => 600, "section" => 600,
- "semicolon" => 600, "seven" => 600, "six" => 600, "slash" => 600,
- "space" => 600, "square" => 600, "sterling" => 600, "stop" => 600,
- "t" => 600, "tab" => 600, "thorn" => 600, "three" => 600,
- "threequarters" => 600, "threesuperior" => 600, "tilde" => 600,
- "trademark" => 600, "two" => 600, "twosuperior" => 600, "u" => 600,
- "uacute" => 600, "ucircumflex" => 600, "udieresis" => 600,
- "ugrave" => 600, "underscore" => 600, "up" => 600, "v" => 600,
- "w" => 600, "x" => 600, "y" => 600, "yacute" => 600,
- "ydieresis" => 600, "yen" => 600, "z" => 600, "zcaron" => 600,
- "zero" => 600,
- },
- kern => {
- }
-);
-1;
diff --git a/doc/metrics/pcrr8a.ph b/doc/metrics/pcrr8a.ph
deleted file mode 100644
index deb2a4bc..00000000
--- a/doc/metrics/pcrr8a.ph
+++ /dev/null
@@ -1,82 +0,0 @@
-%PS_Courier = (
- name => 'Courier',
- widths => {
- "A" => 600, "AE" => 600, "Aacute" => 600, "Acircumflex" => 600,
- "Adieresis" => 600, "Agrave" => 600, "Aring" => 600,
- "Atilde" => 600, "B" => 600, "C" => 600, "Ccedilla" => 600,
- "D" => 600, "E" => 600, "Eacute" => 600, "Ecircumflex" => 600,
- "Edieresis" => 600, "Egrave" => 600, "Eth" => 600, "F" => 600,
- "G" => 600, "Gcaron" => 600, "H" => 600, "I" => 600, "IJ" => 600,
- "Iacute" => 600, "Icircumflex" => 600, "Idieresis" => 600,
- "Idot" => 600, "Igrave" => 600, "J" => 600, "K" => 600, "L" => 600,
- "LL" => 600, "Lslash" => 600, "M" => 600, "N" => 600,
- "Ntilde" => 600, "O" => 600, "OE" => 600, "Oacute" => 600,
- "Ocircumflex" => 600, "Odieresis" => 600, "Ograve" => 600,
- "Oslash" => 600, "Otilde" => 600, "P" => 600, "Q" => 600,
- "R" => 600, "S" => 600, "Scaron" => 600, "Scedilla" => 600,
- "T" => 600, "Thorn" => 600, "U" => 600, "Uacute" => 600,
- "Ucircumflex" => 600, "Udieresis" => 600, "Ugrave" => 600,
- "V" => 600, "W" => 600, "X" => 600, "Y" => 600, "Yacute" => 600,
- "Ydieresis" => 600, "Z" => 600, "Zcaron" => 600, "a" => 600,
- "aacute" => 600, "acircumflex" => 600, "acute" => 600,
- "adieresis" => 600, "ae" => 600, "agrave" => 600,
- "ampersand" => 600, "aring" => 600, "arrowboth" => 600,
- "arrowdown" => 600, "arrowleft" => 600, "arrowright" => 600,
- "arrowup" => 600, "asciicircum" => 600, "asciitilde" => 600,
- "asterisk" => 600, "at" => 600, "atilde" => 600, "b" => 600,
- "backslash" => 600, "bar" => 600, "braceleft" => 600,
- "braceright" => 600, "bracketleft" => 600, "bracketright" => 600,
- "breve" => 600, "brokenbar" => 600, "bullet" => 600, "c" => 600,
- "caron" => 600, "ccedilla" => 600, "cedilla" => 600, "cent" => 600,
- "center" => 600, "circumflex" => 600, "colon" => 600,
- "comma" => 600, "copyright" => 600, "currency" => 600, "d" => 600,
- "dagger" => 600, "daggerdbl" => 600, "dectab" => 600,
- "degree" => 600, "dieresis" => 600, "divide" => 600,
- "dollar" => 600, "dotaccent" => 600, "dotlessi" => 600,
- "down" => 600, "e" => 600, "eacute" => 600, "ecircumflex" => 600,
- "edieresis" => 600, "egrave" => 600, "eight" => 600,
- "ellipsis" => 600, "emdash" => 600, "endash" => 600,
- "equal" => 600, "eth" => 600, "exclam" => 600, "exclamdown" => 600,
- "f" => 600, "fi" => 600, "five" => 600, "fl" => 600,
- "florin" => 600, "format" => 600, "four" => 600, "fraction" => 600,
- "g" => 600, "gcaron" => 600, "germandbls" => 600, "grave" => 600,
- "graybox" => 600, "greater" => 600, "guillemotleft" => 600,
- "guillemotright" => 600, "guilsinglleft" => 600,
- "guilsinglright" => 600, "h" => 600, "hungarumlaut" => 600,
- "hyphen" => 600, "i" => 600, "iacute" => 600, "icircumflex" => 600,
- "idieresis" => 600, "igrave" => 600, "ij" => 600, "indent" => 600,
- "j" => 600, "k" => 600, "l" => 600, "largebullet" => 600,
- "left" => 600, "less" => 600, "lira" => 600, "ll" => 600,
- "logicalnot" => 600, "lslash" => 600, "m" => 600, "macron" => 600,
- "merge" => 600, "minus" => 600, "mu" => 600, "multiply" => 600,
- "n" => 600, "nine" => 600, "notegraphic" => 600, "ntilde" => 600,
- "numbersign" => 600, "o" => 600, "oacute" => 600,
- "ocircumflex" => 600, "odieresis" => 600, "oe" => 600,
- "ogonek" => 600, "ograve" => 600, "one" => 600, "onehalf" => 600,
- "onequarter" => 600, "onesuperior" => 600, "ordfeminine" => 600,
- "ordmasculine" => 600, "oslash" => 600, "otilde" => 600,
- "overscore" => 600, "p" => 600, "paragraph" => 600,
- "parenleft" => 600, "parenright" => 600, "percent" => 600,
- "period" => 600, "periodcentered" => 600, "perthousand" => 600,
- "plus" => 600, "plusminus" => 600, "prescription" => 600,
- "q" => 600, "question" => 600, "questiondown" => 600,
- "quotedbl" => 600, "quotedblbase" => 600, "quotedblleft" => 600,
- "quotedblright" => 600, "quoteleft" => 600, "quoteright" => 600,
- "quotesinglbase" => 600, "quotesingle" => 600, "r" => 600,
- "registered" => 600, "return" => 600, "ring" => 600, "s" => 600,
- "scaron" => 600, "scedilla" => 600, "section" => 600,
- "semicolon" => 600, "seven" => 600, "six" => 600, "slash" => 600,
- "space" => 600, "square" => 600, "sterling" => 600, "stop" => 600,
- "t" => 600, "tab" => 600, "thorn" => 600, "three" => 600,
- "threequarters" => 600, "threesuperior" => 600, "tilde" => 600,
- "trademark" => 600, "two" => 600, "twosuperior" => 600, "u" => 600,
- "uacute" => 600, "ucircumflex" => 600, "udieresis" => 600,
- "ugrave" => 600, "underscore" => 600, "up" => 600, "v" => 600,
- "w" => 600, "x" => 600, "y" => 600, "yacute" => 600,
- "ydieresis" => 600, "yen" => 600, "z" => 600, "zcaron" => 600,
- "zero" => 600,
- },
- kern => {
- }
-);
-1;
diff --git a/doc/metrics/pcrro8a.ph b/doc/metrics/pcrro8a.ph
deleted file mode 100644
index eedb4112..00000000
--- a/doc/metrics/pcrro8a.ph
+++ /dev/null
@@ -1,82 +0,0 @@
-%PS_Courier_Oblique = (
- name => 'Courier-Oblique',
- widths => {
- "A" => 600, "AE" => 600, "Aacute" => 600, "Acircumflex" => 600,
- "Adieresis" => 600, "Agrave" => 600, "Aring" => 600,
- "Atilde" => 600, "B" => 600, "C" => 600, "Ccedilla" => 600,
- "D" => 600, "E" => 600, "Eacute" => 600, "Ecircumflex" => 600,
- "Edieresis" => 600, "Egrave" => 600, "Eth" => 600, "F" => 600,
- "G" => 600, "Gcaron" => 600, "H" => 600, "I" => 600, "IJ" => 600,
- "Iacute" => 600, "Icircumflex" => 600, "Idieresis" => 600,
- "Idot" => 600, "Igrave" => 600, "J" => 600, "K" => 600, "L" => 600,
- "LL" => 600, "Lslash" => 600, "M" => 600, "N" => 600,
- "Ntilde" => 600, "O" => 600, "OE" => 600, "Oacute" => 600,
- "Ocircumflex" => 600, "Odieresis" => 600, "Ograve" => 600,
- "Oslash" => 600, "Otilde" => 600, "P" => 600, "Q" => 600,
- "R" => 600, "S" => 600, "Scaron" => 600, "Scedilla" => 600,
- "T" => 600, "Thorn" => 600, "U" => 600, "Uacute" => 600,
- "Ucircumflex" => 600, "Udieresis" => 600, "Ugrave" => 600,
- "V" => 600, "W" => 600, "X" => 600, "Y" => 600, "Yacute" => 600,
- "Ydieresis" => 600, "Z" => 600, "Zcaron" => 600, "a" => 600,
- "aacute" => 600, "acircumflex" => 600, "acute" => 600,
- "adieresis" => 600, "ae" => 600, "agrave" => 600,
- "ampersand" => 600, "aring" => 600, "arrowboth" => 600,
- "arrowdown" => 600, "arrowleft" => 600, "arrowright" => 600,
- "arrowup" => 600, "asciicircum" => 600, "asciitilde" => 600,
- "asterisk" => 600, "at" => 600, "atilde" => 600, "b" => 600,
- "backslash" => 600, "bar" => 600, "braceleft" => 600,
- "braceright" => 600, "bracketleft" => 600, "bracketright" => 600,
- "breve" => 600, "brokenbar" => 600, "bullet" => 600, "c" => 600,
- "caron" => 600, "ccedilla" => 600, "cedilla" => 600, "cent" => 600,
- "center" => 600, "circumflex" => 600, "colon" => 600,
- "comma" => 600, "copyright" => 600, "currency" => 600, "d" => 600,
- "dagger" => 600, "daggerdbl" => 600, "dectab" => 600,
- "degree" => 600, "dieresis" => 600, "divide" => 600,
- "dollar" => 600, "dotaccent" => 600, "dotlessi" => 600,
- "down" => 600, "e" => 600, "eacute" => 600, "ecircumflex" => 600,
- "edieresis" => 600, "egrave" => 600, "eight" => 600,
- "ellipsis" => 600, "emdash" => 600, "endash" => 600,
- "equal" => 600, "eth" => 600, "exclam" => 600, "exclamdown" => 600,
- "f" => 600, "fi" => 600, "five" => 600, "fl" => 600,
- "florin" => 600, "format" => 600, "four" => 600, "fraction" => 600,
- "g" => 600, "gcaron" => 600, "germandbls" => 600, "grave" => 600,
- "graybox" => 600, "greater" => 600, "guillemotleft" => 600,
- "guillemotright" => 600, "guilsinglleft" => 600,
- "guilsinglright" => 600, "h" => 600, "hungarumlaut" => 600,
- "hyphen" => 600, "i" => 600, "iacute" => 600, "icircumflex" => 600,
- "idieresis" => 600, "igrave" => 600, "ij" => 600, "indent" => 600,
- "j" => 600, "k" => 600, "l" => 600, "largebullet" => 600,
- "left" => 600, "less" => 600, "lira" => 600, "ll" => 600,
- "logicalnot" => 600, "lslash" => 600, "m" => 600, "macron" => 600,
- "merge" => 600, "minus" => 600, "mu" => 600, "multiply" => 600,
- "n" => 600, "nine" => 600, "notegraphic" => 600, "ntilde" => 600,
- "numbersign" => 600, "o" => 600, "oacute" => 600,
- "ocircumflex" => 600, "odieresis" => 600, "oe" => 600,
- "ogonek" => 600, "ograve" => 600, "one" => 600, "onehalf" => 600,
- "onequarter" => 600, "onesuperior" => 600, "ordfeminine" => 600,
- "ordmasculine" => 600, "oslash" => 600, "otilde" => 600,
- "overscore" => 600, "p" => 600, "paragraph" => 600,
- "parenleft" => 600, "parenright" => 600, "percent" => 600,
- "period" => 600, "periodcentered" => 600, "perthousand" => 600,
- "plus" => 600, "plusminus" => 600, "prescription" => 600,
- "q" => 600, "question" => 600, "questiondown" => 600,
- "quotedbl" => 600, "quotedblbase" => 600, "quotedblleft" => 600,
- "quotedblright" => 600, "quoteleft" => 600, "quoteright" => 600,
- "quotesinglbase" => 600, "quotesingle" => 600, "r" => 600,
- "registered" => 600, "return" => 600, "ring" => 600, "s" => 600,
- "scaron" => 600, "scedilla" => 600, "section" => 600,
- "semicolon" => 600, "seven" => 600, "six" => 600, "slash" => 600,
- "space" => 600, "square" => 600, "sterling" => 600, "stop" => 600,
- "t" => 600, "tab" => 600, "thorn" => 600, "three" => 600,
- "threequarters" => 600, "threesuperior" => 600, "tilde" => 600,
- "trademark" => 600, "two" => 600, "twosuperior" => 600, "u" => 600,
- "uacute" => 600, "ucircumflex" => 600, "udieresis" => 600,
- "ugrave" => 600, "underscore" => 600, "up" => 600, "v" => 600,
- "w" => 600, "x" => 600, "y" => 600, "yacute" => 600,
- "ydieresis" => 600, "yen" => 600, "z" => 600, "zcaron" => 600,
- "zero" => 600,
- },
- kern => {
- }
-);
-1;
diff --git a/doc/metrics/phvb8a.ph b/doc/metrics/phvb8a.ph
deleted file mode 100644
index cf4d1273..00000000
--- a/doc/metrics/phvb8a.ph
+++ /dev/null
@@ -1,231 +0,0 @@
-%PS_Helvetica_Bold = (
- name => 'Helvetica-Bold',
- widths => {
- "A" => 722, "AE" => 1000, "Aacute" => 722, "Acircumflex" => 722,
- "Adieresis" => 722, "Agrave" => 722, "Aring" => 722,
- "Atilde" => 722, "B" => 722, "C" => 722, "Ccedilla" => 722,
- "D" => 722, "E" => 667, "Eacute" => 667, "Ecircumflex" => 667,
- "Edieresis" => 667, "Egrave" => 667, "Eth" => 722, "F" => 611,
- "G" => 778, "H" => 722, "I" => 278, "Iacute" => 278,
- "Icircumflex" => 278, "Idieresis" => 278, "Igrave" => 278,
- "J" => 556, "K" => 722, "L" => 611, "Lslash" => 611, "M" => 833,
- "N" => 722, "Ntilde" => 722, "O" => 778, "OE" => 1000,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 667,
- "Q" => 778, "R" => 722, "S" => 667, "Scaron" => 667, "T" => 611,
- "Thorn" => 667, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 667, "W" => 944,
- "X" => 667, "Y" => 667, "Yacute" => 667, "Ydieresis" => 667,
- "Z" => 611, "Zcaron" => 611, "a" => 556, "aacute" => 556,
- "acircumflex" => 556, "acute" => 333, "adieresis" => 556,
- "ae" => 889, "agrave" => 556, "ampersand" => 722, "aring" => 556,
- "asciicircum" => 584, "asciitilde" => 584, "asterisk" => 389,
- "at" => 975, "atilde" => 556, "b" => 611, "backslash" => 278,
- "bar" => 280, "braceleft" => 389, "braceright" => 389,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 280, "bullet" => 350, "c" => 556, "caron" => 333,
- "ccedilla" => 556, "cedilla" => 333, "cent" => 556,
- "circumflex" => 333, "colon" => 333, "comma" => 278,
- "copyright" => 737, "currency" => 556, "d" => 611, "dagger" => 556,
- "daggerdbl" => 556, "degree" => 400, "dieresis" => 333,
- "divide" => 584, "dollar" => 556, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 556, "eacute" => 556,
- "ecircumflex" => 556, "edieresis" => 556, "egrave" => 556,
- "eight" => 556, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 556, "equal" => 584, "eth" => 611, "exclam" => 333,
- "exclamdown" => 333, "f" => 333, "fi" => 611, "five" => 556,
- "fl" => 611, "florin" => 556, "four" => 556, "fraction" => 167,
- "g" => 611, "germandbls" => 611, "grave" => 333, "greater" => 584,
- "guillemotleft" => 556, "guillemotright" => 556,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 611,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 278,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 278, "k" => 556, "l" => 278, "less" => 584,
- "logicalnot" => 584, "lslash" => 278, "m" => 889, "macron" => 333,
- "minus" => 584, "mu" => 611, "multiply" => 584, "n" => 611,
- "nine" => 556, "ntilde" => 611, "numbersign" => 556, "o" => 611,
- "oacute" => 611, "ocircumflex" => 611, "odieresis" => 611,
- "oe" => 944, "ogonek" => 333, "ograve" => 611, "one" => 556,
- "onehalf" => 834, "onequarter" => 834, "onesuperior" => 333,
- "ordfeminine" => 370, "ordmasculine" => 365, "oslash" => 611,
- "otilde" => 611, "p" => 611, "paragraph" => 556,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 584, "plusminus" => 584, "q" => 611, "question" => 611,
- "questiondown" => 611, "quotedbl" => 474, "quotedblbase" => 500,
- "quotedblleft" => 500, "quotedblright" => 500, "quoteleft" => 278,
- "quoteright" => 278, "quotesinglbase" => 278, "quotesingle" => 238,
- "r" => 389, "registered" => 737, "ring" => 333, "s" => 556,
- "scaron" => 556, "section" => 556, "semicolon" => 333,
- "seven" => 556, "six" => 556, "slash" => 278, "space" => 278,
- "sterling" => 556, "t" => 333, "thorn" => 611, "three" => 556,
- "threequarters" => 834, "threesuperior" => 333, "tilde" => 333,
- "trademark" => 1000, "two" => 556, "twosuperior" => 333,
- "u" => 611, "uacute" => 611, "ucircumflex" => 611,
- "udieresis" => 611, "ugrave" => 611, "underscore" => 556,
- "v" => 556, "w" => 778, "x" => 556, "y" => 556, "yacute" => 556,
- "ydieresis" => 556, "yen" => 556, "z" => 500, "zcaron" => 500,
- "zero" => 556,
- },
- kern => {
- "A" => {
- "C" => -40, "G" => -50, "O" => -40, "Q" => -40, "T" => -90,
- "U" => -50, "V" => -80, "W" => -60, "Y" => -110, "u" => -30,
- "v" => -40, "w" => -30, "y" => -30,
- },
- "B" => {
- "A" => -30, "U" => -10,
- },
- "D" => {
- "A" => -40, "V" => -40, "W" => -40, "Y" => -70, "comma" => -30,
- "period" => -30,
- },
- "F" => {
- "A" => -80, "a" => -20, "comma" => -100, "period" => -100,
- },
- "J" => {
- "A" => -20, "comma" => -20, "period" => -20, "u" => -20,
- },
- "K" => {
- "O" => -30, "e" => -15, "o" => -35, "u" => -30, "y" => -40,
- },
- "L" => {
- "T" => -90, "V" => -110, "W" => -80, "Y" => -120,
- "quotedblright" => -140, "quoteright" => -140, "y" => -30,
- },
- "O" => {
- "A" => -50, "T" => -40, "V" => -50, "W" => -50, "X" => -50,
- "Y" => -70, "comma" => -40, "period" => -40,
- },
- "P" => {
- "A" => -100, "a" => -30, "comma" => -120, "e" => -30, "o" => -40,
- "period" => -120,
- },
- "Q" => {
- "U" => -10, "comma" => 20, "period" => 20,
- },
- "R" => {
- "O" => -20, "T" => -20, "U" => -20, "V" => -50, "W" => -40,
- "Y" => -50,
- },
- "T" => {
- "A" => -90, "O" => -40, "a" => -80, "colon" => -40,
- "comma" => -80, "e" => -60, "hyphen" => -120, "o" => -80,
- "period" => -80, "r" => -80, "semicolon" => -40, "u" => -90,
- "w" => -60, "y" => -60,
- },
- "U" => {
- "A" => -50, "comma" => -30, "period" => -30,
- },
- "V" => {
- "A" => -80, "G" => -50, "O" => -50, "a" => -60, "colon" => -40,
- "comma" => -120, "e" => -50, "hyphen" => -80, "o" => -90,
- "period" => -120, "semicolon" => -40, "u" => -60,
- },
- "W" => {
- "A" => -60, "O" => -20, "a" => -40, "colon" => -10,
- "comma" => -80, "e" => -35, "hyphen" => -40, "o" => -60,
- "period" => -80, "semicolon" => -10, "u" => -45, "y" => -20,
- },
- "Y" => {
- "A" => -110, "O" => -70, "a" => -90, "colon" => -50,
- "comma" => -100, "e" => -80, "o" => -100, "period" => -100,
- "semicolon" => -50, "u" => -100,
- },
- "a" => {
- "g" => -10, "v" => -15, "w" => -15, "y" => -20,
- },
- "b" => {
- "l" => -10, "u" => -20, "v" => -20, "y" => -20,
- },
- "c" => {
- "h" => -10, "k" => -20, "l" => -20, "y" => -10,
- },
- "colon" => {
- "space" => -40,
- },
- "comma" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -40,
- },
- "d" => {
- "d" => -10, "v" => -15, "w" => -15, "y" => -15,
- },
- "e" => {
- "comma" => 10, "period" => 20, "v" => -15, "w" => -15,
- "x" => -15, "y" => -15,
- },
- "f" => {
- "comma" => -10, "e" => -10, "o" => -20, "period" => -10,
- "quotedblright" => 30, "quoteright" => 30,
- },
- "g" => {
- "e" => 10, "g" => -10,
- },
- "h" => {
- "y" => -20,
- },
- "k" => {
- "o" => -15,
- },
- "l" => {
- "w" => -15, "y" => -15,
- },
- "m" => {
- "u" => -20, "y" => -30,
- },
- "n" => {
- "u" => -10, "v" => -40, "y" => -20,
- },
- "o" => {
- "v" => -20, "w" => -15, "x" => -30, "y" => -20,
- },
- "p" => {
- "y" => -15,
- },
- "period" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -40,
- },
- "quotedblright" => {
- "space" => -80,
- },
- "quoteleft" => {
- "quoteleft" => -46,
- },
- "quoteright" => {
- "d" => -80, "l" => -20, "quoteright" => -46, "r" => -40,
- "s" => -60, "space" => -80, "v" => -20,
- },
- "r" => {
- "c" => -20, "comma" => -60, "d" => -20, "g" => -15,
- "hyphen" => -20, "o" => -20, "period" => -60, "q" => -20,
- "s" => -15, "t" => 20, "v" => 10, "y" => 10,
- },
- "s" => {
- "w" => -15,
- },
- "semicolon" => {
- "space" => -40,
- },
- "space" => {
- "T" => -100, "V" => -80, "W" => -80, "Y" => -120,
- "quotedblleft" => -80, "quoteleft" => -60,
- },
- "v" => {
- "a" => -20, "comma" => -80, "o" => -30, "period" => -80,
- },
- "w" => {
- "comma" => -40, "o" => -20, "period" => -40,
- },
- "x" => {
- "e" => -10,
- },
- "y" => {
- "a" => -30, "comma" => -80, "e" => -10, "o" => -25,
- "period" => -80,
- },
- "z" => {
- "e" => 10,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvb8an.ph b/doc/metrics/phvb8an.ph
deleted file mode 100644
index 807fbe0f..00000000
--- a/doc/metrics/phvb8an.ph
+++ /dev/null
@@ -1,230 +0,0 @@
-%PS_Helvetica_Narrow_Bold = (
- name => 'Helvetica-Narrow-Bold',
- widths => {
- "A" => 592, "AE" => 820, "Aacute" => 592, "Acircumflex" => 592,
- "Adieresis" => 592, "Agrave" => 592, "Aring" => 592,
- "Atilde" => 592, "B" => 592, "C" => 592, "Ccedilla" => 592,
- "D" => 592, "E" => 547, "Eacute" => 547, "Ecircumflex" => 547,
- "Edieresis" => 547, "Egrave" => 547, "Eth" => 592, "F" => 501,
- "G" => 638, "H" => 592, "I" => 228, "Iacute" => 228,
- "Icircumflex" => 228, "Idieresis" => 228, "Igrave" => 228,
- "J" => 456, "K" => 592, "L" => 501, "Lslash" => 501, "M" => 683,
- "N" => 592, "Ntilde" => 592, "O" => 638, "OE" => 820,
- "Oacute" => 638, "Ocircumflex" => 638, "Odieresis" => 638,
- "Ograve" => 638, "Oslash" => 638, "Otilde" => 638, "P" => 547,
- "Q" => 638, "R" => 592, "S" => 547, "Scaron" => 547, "T" => 501,
- "Thorn" => 547, "U" => 592, "Uacute" => 592, "Ucircumflex" => 592,
- "Udieresis" => 592, "Ugrave" => 592, "V" => 547, "W" => 774,
- "X" => 547, "Y" => 547, "Yacute" => 547, "Ydieresis" => 547,
- "Z" => 501, "Zcaron" => 501, "a" => 456, "aacute" => 456,
- "acircumflex" => 456, "acute" => 273, "adieresis" => 456,
- "ae" => 729, "agrave" => 456, "ampersand" => 592, "aring" => 456,
- "asciicircum" => 479, "asciitilde" => 479, "asterisk" => 319,
- "at" => 800, "atilde" => 456, "b" => 501, "backslash" => 228,
- "bar" => 230, "braceleft" => 319, "braceright" => 319,
- "bracketleft" => 273, "bracketright" => 273, "breve" => 273,
- "brokenbar" => 230, "bullet" => 287, "c" => 456, "caron" => 273,
- "ccedilla" => 456, "cedilla" => 273, "cent" => 456,
- "circumflex" => 273, "colon" => 273, "comma" => 228,
- "copyright" => 604, "currency" => 456, "d" => 501, "dagger" => 456,
- "daggerdbl" => 456, "degree" => 328, "dieresis" => 273,
- "divide" => 479, "dollar" => 456, "dotaccent" => 273,
- "dotlessi" => 228, "e" => 456, "eacute" => 456,
- "ecircumflex" => 456, "edieresis" => 456, "egrave" => 456,
- "eight" => 456, "ellipsis" => 820, "emdash" => 820,
- "endash" => 456, "equal" => 479, "eth" => 501, "exclam" => 273,
- "exclamdown" => 273, "f" => 273, "fi" => 501, "five" => 456,
- "fl" => 501, "florin" => 456, "four" => 456, "fraction" => 137,
- "g" => 501, "germandbls" => 501, "grave" => 273, "greater" => 479,
- "guillemotleft" => 456, "guillemotright" => 456,
- "guilsinglleft" => 273, "guilsinglright" => 273, "h" => 501,
- "hungarumlaut" => 273, "hyphen" => 273, "i" => 228,
- "iacute" => 228, "icircumflex" => 228, "idieresis" => 228,
- "igrave" => 228, "j" => 228, "k" => 456, "l" => 228, "less" => 479,
- "logicalnot" => 479, "lslash" => 228, "m" => 729, "macron" => 273,
- "minus" => 479, "mu" => 501, "multiply" => 479, "n" => 501,
- "nine" => 456, "ntilde" => 501, "numbersign" => 456, "o" => 501,
- "oacute" => 501, "ocircumflex" => 501, "odieresis" => 501,
- "oe" => 774, "ogonek" => 273, "ograve" => 501, "one" => 456,
- "onehalf" => 684, "onequarter" => 684, "onesuperior" => 273,
- "ordfeminine" => 303, "ordmasculine" => 299, "oslash" => 501,
- "otilde" => 501, "p" => 501, "paragraph" => 456,
- "parenleft" => 273, "parenright" => 273, "percent" => 729,
- "period" => 228, "periodcentered" => 228, "perthousand" => 820,
- "plus" => 479, "plusminus" => 479, "q" => 501, "question" => 501,
- "questiondown" => 501, "quotedbl" => 389, "quotedblbase" => 410,
- "quotedblleft" => 410, "quotedblright" => 410, "quoteleft" => 228,
- "quoteright" => 228, "quotesinglbase" => 228, "quotesingle" => 195,
- "r" => 319, "registered" => 604, "ring" => 273, "s" => 456,
- "scaron" => 456, "section" => 456, "semicolon" => 273,
- "seven" => 456, "six" => 456, "slash" => 228, "space" => 228,
- "sterling" => 456, "t" => 273, "thorn" => 501, "three" => 456,
- "threequarters" => 684, "threesuperior" => 273, "tilde" => 273,
- "trademark" => 820, "two" => 456, "twosuperior" => 273, "u" => 501,
- "uacute" => 501, "ucircumflex" => 501, "udieresis" => 501,
- "ugrave" => 501, "underscore" => 456, "v" => 456, "w" => 638,
- "x" => 456, "y" => 456, "yacute" => 456, "ydieresis" => 456,
- "yen" => 456, "z" => 410, "zcaron" => 410, "zero" => 456,
- },
- kern => {
- "A" => {
- "C" => -32, "G" => -40, "O" => -32, "Q" => -32, "T" => -73,
- "U" => -40, "V" => -65, "W" => -48, "Y" => -89, "u" => -24,
- "v" => -32, "w" => -24, "y" => -24,
- },
- "B" => {
- "A" => -24, "U" => -7,
- },
- "D" => {
- "A" => -32, "V" => -32, "W" => -32, "Y" => -56, "comma" => -24,
- "period" => -24,
- },
- "F" => {
- "A" => -65, "a" => -15, "comma" => -81, "period" => -81,
- },
- "J" => {
- "A" => -15, "comma" => -15, "period" => -15, "u" => -15,
- },
- "K" => {
- "O" => -24, "e" => -11, "o" => -28, "u" => -24, "y" => -32,
- },
- "L" => {
- "T" => -73, "V" => -89, "W" => -65, "Y" => -97,
- "quotedblright" => -114, "quoteright" => -114, "y" => -24,
- },
- "O" => {
- "A" => -40, "T" => -32, "V" => -40, "W" => -40, "X" => -40,
- "Y" => -56, "comma" => -32, "period" => -32,
- },
- "P" => {
- "A" => -81, "a" => -24, "comma" => -97, "e" => -24, "o" => -32,
- "period" => -97,
- },
- "Q" => {
- "U" => -7, "comma" => 16, "period" => 16,
- },
- "R" => {
- "O" => -15, "T" => -15, "U" => -15, "V" => -40, "W" => -32,
- "Y" => -40,
- },
- "T" => {
- "A" => -73, "O" => -32, "a" => -65, "colon" => -32,
- "comma" => -65, "e" => -48, "hyphen" => -97, "o" => -65,
- "period" => -65, "r" => -65, "semicolon" => -32, "u" => -73,
- "w" => -48, "y" => -48,
- },
- "U" => {
- "A" => -40, "comma" => -24, "period" => -24,
- },
- "V" => {
- "A" => -65, "G" => -40, "O" => -40, "a" => -48, "colon" => -32,
- "comma" => -97, "e" => -40, "hyphen" => -65, "o" => -73,
- "period" => -97, "semicolon" => -32, "u" => -48,
- },
- "W" => {
- "A" => -48, "O" => -15, "a" => -32, "colon" => -7,
- "comma" => -65, "e" => -28, "hyphen" => -32, "o" => -48,
- "period" => -65, "semicolon" => -7, "u" => -36, "y" => -15,
- },
- "Y" => {
- "A" => -89, "O" => -56, "a" => -73, "colon" => -40,
- "comma" => -81, "e" => -65, "o" => -81, "period" => -81,
- "semicolon" => -40, "u" => -81,
- },
- "a" => {
- "g" => -7, "v" => -11, "w" => -11, "y" => -15,
- },
- "b" => {
- "l" => -7, "u" => -15, "v" => -15, "y" => -15,
- },
- "c" => {
- "h" => -7, "k" => -15, "l" => -15, "y" => -7,
- },
- "colon" => {
- "space" => -32,
- },
- "comma" => {
- "quotedblright" => -97, "quoteright" => -97, "space" => -32,
- },
- "d" => {
- "d" => -7, "v" => -11, "w" => -11, "y" => -11,
- },
- "e" => {
- "comma" => 8, "period" => 16, "v" => -11, "w" => -11, "x" => -11,
- "y" => -11,
- },
- "f" => {
- "comma" => -7, "e" => -7, "o" => -15, "period" => -7,
- "quotedblright" => 25, "quoteright" => 25,
- },
- "g" => {
- "e" => 8, "g" => -7,
- },
- "h" => {
- "y" => -15,
- },
- "k" => {
- "o" => -11,
- },
- "l" => {
- "w" => -11, "y" => -11,
- },
- "m" => {
- "u" => -15, "y" => -24,
- },
- "n" => {
- "u" => -7, "v" => -32, "y" => -15,
- },
- "o" => {
- "v" => -15, "w" => -11, "x" => -24, "y" => -15,
- },
- "p" => {
- "y" => -11,
- },
- "period" => {
- "quotedblright" => -97, "quoteright" => -97, "space" => -32,
- },
- "quotedblright" => {
- "space" => -65,
- },
- "quoteleft" => {
- "quoteleft" => -37,
- },
- "quoteright" => {
- "d" => -65, "l" => -15, "quoteright" => -37, "r" => -32,
- "s" => -48, "space" => -65, "v" => -15,
- },
- "r" => {
- "c" => -15, "comma" => -48, "d" => -15, "g" => -11,
- "hyphen" => -15, "o" => -15, "period" => -48, "q" => -15,
- "s" => -11, "t" => 16, "v" => 8, "y" => 8,
- },
- "s" => {
- "w" => -11,
- },
- "semicolon" => {
- "space" => -32,
- },
- "space" => {
- "T" => -81, "V" => -65, "W" => -65, "Y" => -97,
- "quotedblleft" => -65, "quoteleft" => -48,
- },
- "v" => {
- "a" => -15, "comma" => -65, "o" => -24, "period" => -65,
- },
- "w" => {
- "comma" => -32, "o" => -15, "period" => -32,
- },
- "x" => {
- "e" => -7,
- },
- "y" => {
- "a" => -24, "comma" => -65, "e" => -7, "o" => -20,
- "period" => -65,
- },
- "z" => {
- "e" => 8,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvbo8a.ph b/doc/metrics/phvbo8a.ph
deleted file mode 100644
index 4ac56567..00000000
--- a/doc/metrics/phvbo8a.ph
+++ /dev/null
@@ -1,231 +0,0 @@
-%PS_Helvetica_BoldOblique = (
- name => 'Helvetica-BoldOblique',
- widths => {
- "A" => 722, "AE" => 1000, "Aacute" => 722, "Acircumflex" => 722,
- "Adieresis" => 722, "Agrave" => 722, "Aring" => 722,
- "Atilde" => 722, "B" => 722, "C" => 722, "Ccedilla" => 722,
- "D" => 722, "E" => 667, "Eacute" => 667, "Ecircumflex" => 667,
- "Edieresis" => 667, "Egrave" => 667, "Eth" => 722, "F" => 611,
- "G" => 778, "H" => 722, "I" => 278, "Iacute" => 278,
- "Icircumflex" => 278, "Idieresis" => 278, "Igrave" => 278,
- "J" => 556, "K" => 722, "L" => 611, "Lslash" => 611, "M" => 833,
- "N" => 722, "Ntilde" => 722, "O" => 778, "OE" => 1000,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 667,
- "Q" => 778, "R" => 722, "S" => 667, "Scaron" => 667, "T" => 611,
- "Thorn" => 667, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 667, "W" => 944,
- "X" => 667, "Y" => 667, "Yacute" => 667, "Ydieresis" => 667,
- "Z" => 611, "Zcaron" => 611, "a" => 556, "aacute" => 556,
- "acircumflex" => 556, "acute" => 333, "adieresis" => 556,
- "ae" => 889, "agrave" => 556, "ampersand" => 722, "aring" => 556,
- "asciicircum" => 584, "asciitilde" => 584, "asterisk" => 389,
- "at" => 975, "atilde" => 556, "b" => 611, "backslash" => 278,
- "bar" => 280, "braceleft" => 389, "braceright" => 389,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 280, "bullet" => 350, "c" => 556, "caron" => 333,
- "ccedilla" => 556, "cedilla" => 333, "cent" => 556,
- "circumflex" => 333, "colon" => 333, "comma" => 278,
- "copyright" => 737, "currency" => 556, "d" => 611, "dagger" => 556,
- "daggerdbl" => 556, "degree" => 400, "dieresis" => 333,
- "divide" => 584, "dollar" => 556, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 556, "eacute" => 556,
- "ecircumflex" => 556, "edieresis" => 556, "egrave" => 556,
- "eight" => 556, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 556, "equal" => 584, "eth" => 611, "exclam" => 333,
- "exclamdown" => 333, "f" => 333, "fi" => 611, "five" => 556,
- "fl" => 611, "florin" => 556, "four" => 556, "fraction" => 167,
- "g" => 611, "germandbls" => 611, "grave" => 333, "greater" => 584,
- "guillemotleft" => 556, "guillemotright" => 556,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 611,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 278,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 278, "k" => 556, "l" => 278, "less" => 584,
- "logicalnot" => 584, "lslash" => 278, "m" => 889, "macron" => 333,
- "minus" => 584, "mu" => 611, "multiply" => 584, "n" => 611,
- "nine" => 556, "ntilde" => 611, "numbersign" => 556, "o" => 611,
- "oacute" => 611, "ocircumflex" => 611, "odieresis" => 611,
- "oe" => 944, "ogonek" => 333, "ograve" => 611, "one" => 556,
- "onehalf" => 834, "onequarter" => 834, "onesuperior" => 333,
- "ordfeminine" => 370, "ordmasculine" => 365, "oslash" => 611,
- "otilde" => 611, "p" => 611, "paragraph" => 556,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 584, "plusminus" => 584, "q" => 611, "question" => 611,
- "questiondown" => 611, "quotedbl" => 474, "quotedblbase" => 500,
- "quotedblleft" => 500, "quotedblright" => 500, "quoteleft" => 278,
- "quoteright" => 278, "quotesinglbase" => 278, "quotesingle" => 238,
- "r" => 389, "registered" => 737, "ring" => 333, "s" => 556,
- "scaron" => 556, "section" => 556, "semicolon" => 333,
- "seven" => 556, "six" => 556, "slash" => 278, "space" => 278,
- "sterling" => 556, "t" => 333, "thorn" => 611, "three" => 556,
- "threequarters" => 834, "threesuperior" => 333, "tilde" => 333,
- "trademark" => 1000, "two" => 556, "twosuperior" => 333,
- "u" => 611, "uacute" => 611, "ucircumflex" => 611,
- "udieresis" => 611, "ugrave" => 611, "underscore" => 556,
- "v" => 556, "w" => 778, "x" => 556, "y" => 556, "yacute" => 556,
- "ydieresis" => 556, "yen" => 556, "z" => 500, "zcaron" => 500,
- "zero" => 556,
- },
- kern => {
- "A" => {
- "C" => -40, "G" => -50, "O" => -40, "Q" => -40, "T" => -90,
- "U" => -50, "V" => -80, "W" => -60, "Y" => -110, "u" => -30,
- "v" => -40, "w" => -30, "y" => -30,
- },
- "B" => {
- "A" => -30, "U" => -10,
- },
- "D" => {
- "A" => -40, "V" => -40, "W" => -40, "Y" => -70, "comma" => -30,
- "period" => -30,
- },
- "F" => {
- "A" => -80, "a" => -20, "comma" => -100, "period" => -100,
- },
- "J" => {
- "A" => -20, "comma" => -20, "period" => -20, "u" => -20,
- },
- "K" => {
- "O" => -30, "e" => -15, "o" => -35, "u" => -30, "y" => -40,
- },
- "L" => {
- "T" => -90, "V" => -110, "W" => -80, "Y" => -120,
- "quotedblright" => -140, "quoteright" => -140, "y" => -30,
- },
- "O" => {
- "A" => -50, "T" => -40, "V" => -50, "W" => -50, "X" => -50,
- "Y" => -70, "comma" => -40, "period" => -40,
- },
- "P" => {
- "A" => -100, "a" => -30, "comma" => -120, "e" => -30, "o" => -40,
- "period" => -120,
- },
- "Q" => {
- "U" => -10, "comma" => 20, "period" => 20,
- },
- "R" => {
- "O" => -20, "T" => -20, "U" => -20, "V" => -50, "W" => -40,
- "Y" => -50,
- },
- "T" => {
- "A" => -90, "O" => -40, "a" => -80, "colon" => -40,
- "comma" => -80, "e" => -60, "hyphen" => -120, "o" => -80,
- "period" => -80, "r" => -80, "semicolon" => -40, "u" => -90,
- "w" => -60, "y" => -60,
- },
- "U" => {
- "A" => -50, "comma" => -30, "period" => -30,
- },
- "V" => {
- "A" => -80, "G" => -50, "O" => -50, "a" => -60, "colon" => -40,
- "comma" => -120, "e" => -50, "hyphen" => -80, "o" => -90,
- "period" => -120, "semicolon" => -40, "u" => -60,
- },
- "W" => {
- "A" => -60, "O" => -20, "a" => -40, "colon" => -10,
- "comma" => -80, "e" => -35, "hyphen" => -40, "o" => -60,
- "period" => -80, "semicolon" => -10, "u" => -45, "y" => -20,
- },
- "Y" => {
- "A" => -110, "O" => -70, "a" => -90, "colon" => -50,
- "comma" => -100, "e" => -80, "o" => -100, "period" => -100,
- "semicolon" => -50, "u" => -100,
- },
- "a" => {
- "g" => -10, "v" => -15, "w" => -15, "y" => -20,
- },
- "b" => {
- "l" => -10, "u" => -20, "v" => -20, "y" => -20,
- },
- "c" => {
- "h" => -10, "k" => -20, "l" => -20, "y" => -10,
- },
- "colon" => {
- "space" => -40,
- },
- "comma" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -40,
- },
- "d" => {
- "d" => -10, "v" => -15, "w" => -15, "y" => -15,
- },
- "e" => {
- "comma" => 10, "period" => 20, "v" => -15, "w" => -15,
- "x" => -15, "y" => -15,
- },
- "f" => {
- "comma" => -10, "e" => -10, "o" => -20, "period" => -10,
- "quotedblright" => 30, "quoteright" => 30,
- },
- "g" => {
- "e" => 10, "g" => -10,
- },
- "h" => {
- "y" => -20,
- },
- "k" => {
- "o" => -15,
- },
- "l" => {
- "w" => -15, "y" => -15,
- },
- "m" => {
- "u" => -20, "y" => -30,
- },
- "n" => {
- "u" => -10, "v" => -40, "y" => -20,
- },
- "o" => {
- "v" => -20, "w" => -15, "x" => -30, "y" => -20,
- },
- "p" => {
- "y" => -15,
- },
- "period" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -40,
- },
- "quotedblright" => {
- "space" => -80,
- },
- "quoteleft" => {
- "quoteleft" => -46,
- },
- "quoteright" => {
- "d" => -80, "l" => -20, "quoteright" => -46, "r" => -40,
- "s" => -60, "space" => -80, "v" => -20,
- },
- "r" => {
- "c" => -20, "comma" => -60, "d" => -20, "g" => -15,
- "hyphen" => -20, "o" => -20, "period" => -60, "q" => -20,
- "s" => -15, "t" => 20, "v" => 10, "y" => 10,
- },
- "s" => {
- "w" => -15,
- },
- "semicolon" => {
- "space" => -40,
- },
- "space" => {
- "T" => -100, "V" => -80, "W" => -80, "Y" => -120,
- "quotedblleft" => -80, "quoteleft" => -60,
- },
- "v" => {
- "a" => -20, "comma" => -80, "o" => -30, "period" => -80,
- },
- "w" => {
- "comma" => -40, "o" => -20, "period" => -40,
- },
- "x" => {
- "e" => -10,
- },
- "y" => {
- "a" => -30, "comma" => -80, "e" => -10, "o" => -25,
- "period" => -80,
- },
- "z" => {
- "e" => 10,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvbo8an.ph b/doc/metrics/phvbo8an.ph
deleted file mode 100644
index a43adaa4..00000000
--- a/doc/metrics/phvbo8an.ph
+++ /dev/null
@@ -1,230 +0,0 @@
-%PS_Helvetica_Narrow_BoldOblique = (
- name => 'Helvetica-Narrow-BoldOblique',
- widths => {
- "A" => 592, "AE" => 820, "Aacute" => 592, "Acircumflex" => 592,
- "Adieresis" => 592, "Agrave" => 592, "Aring" => 592,
- "Atilde" => 592, "B" => 592, "C" => 592, "Ccedilla" => 592,
- "D" => 592, "E" => 547, "Eacute" => 547, "Ecircumflex" => 547,
- "Edieresis" => 547, "Egrave" => 547, "Eth" => 592, "F" => 501,
- "G" => 638, "H" => 592, "I" => 228, "Iacute" => 228,
- "Icircumflex" => 228, "Idieresis" => 228, "Igrave" => 228,
- "J" => 456, "K" => 592, "L" => 501, "Lslash" => 501, "M" => 683,
- "N" => 592, "Ntilde" => 592, "O" => 638, "OE" => 820,
- "Oacute" => 638, "Ocircumflex" => 638, "Odieresis" => 638,
- "Ograve" => 638, "Oslash" => 638, "Otilde" => 638, "P" => 547,
- "Q" => 638, "R" => 592, "S" => 547, "Scaron" => 547, "T" => 501,
- "Thorn" => 547, "U" => 592, "Uacute" => 592, "Ucircumflex" => 592,
- "Udieresis" => 592, "Ugrave" => 592, "V" => 547, "W" => 774,
- "X" => 547, "Y" => 547, "Yacute" => 547, "Ydieresis" => 547,
- "Z" => 501, "Zcaron" => 501, "a" => 456, "aacute" => 456,
- "acircumflex" => 456, "acute" => 273, "adieresis" => 456,
- "ae" => 729, "agrave" => 456, "ampersand" => 592, "aring" => 456,
- "asciicircum" => 479, "asciitilde" => 479, "asterisk" => 319,
- "at" => 800, "atilde" => 456, "b" => 501, "backslash" => 228,
- "bar" => 230, "braceleft" => 319, "braceright" => 319,
- "bracketleft" => 273, "bracketright" => 273, "breve" => 273,
- "brokenbar" => 230, "bullet" => 287, "c" => 456, "caron" => 273,
- "ccedilla" => 456, "cedilla" => 273, "cent" => 456,
- "circumflex" => 273, "colon" => 273, "comma" => 228,
- "copyright" => 604, "currency" => 456, "d" => 501, "dagger" => 456,
- "daggerdbl" => 456, "degree" => 328, "dieresis" => 273,
- "divide" => 479, "dollar" => 456, "dotaccent" => 273,
- "dotlessi" => 228, "e" => 456, "eacute" => 456,
- "ecircumflex" => 456, "edieresis" => 456, "egrave" => 456,
- "eight" => 456, "ellipsis" => 820, "emdash" => 820,
- "endash" => 456, "equal" => 479, "eth" => 501, "exclam" => 273,
- "exclamdown" => 273, "f" => 273, "fi" => 501, "five" => 456,
- "fl" => 501, "florin" => 456, "four" => 456, "fraction" => 137,
- "g" => 501, "germandbls" => 501, "grave" => 273, "greater" => 479,
- "guillemotleft" => 456, "guillemotright" => 456,
- "guilsinglleft" => 273, "guilsinglright" => 273, "h" => 501,
- "hungarumlaut" => 273, "hyphen" => 273, "i" => 228,
- "iacute" => 228, "icircumflex" => 228, "idieresis" => 228,
- "igrave" => 228, "j" => 228, "k" => 456, "l" => 228, "less" => 479,
- "logicalnot" => 479, "lslash" => 228, "m" => 729, "macron" => 273,
- "minus" => 479, "mu" => 501, "multiply" => 479, "n" => 501,
- "nine" => 456, "ntilde" => 501, "numbersign" => 456, "o" => 501,
- "oacute" => 501, "ocircumflex" => 501, "odieresis" => 501,
- "oe" => 774, "ogonek" => 273, "ograve" => 501, "one" => 456,
- "onehalf" => 684, "onequarter" => 684, "onesuperior" => 273,
- "ordfeminine" => 303, "ordmasculine" => 299, "oslash" => 501,
- "otilde" => 501, "p" => 501, "paragraph" => 456,
- "parenleft" => 273, "parenright" => 273, "percent" => 729,
- "period" => 228, "periodcentered" => 228, "perthousand" => 820,
- "plus" => 479, "plusminus" => 479, "q" => 501, "question" => 501,
- "questiondown" => 501, "quotedbl" => 389, "quotedblbase" => 410,
- "quotedblleft" => 410, "quotedblright" => 410, "quoteleft" => 228,
- "quoteright" => 228, "quotesinglbase" => 228, "quotesingle" => 195,
- "r" => 319, "registered" => 604, "ring" => 273, "s" => 456,
- "scaron" => 456, "section" => 456, "semicolon" => 273,
- "seven" => 456, "six" => 456, "slash" => 228, "space" => 228,
- "sterling" => 456, "t" => 273, "thorn" => 501, "three" => 456,
- "threequarters" => 684, "threesuperior" => 273, "tilde" => 273,
- "trademark" => 820, "two" => 456, "twosuperior" => 273, "u" => 501,
- "uacute" => 501, "ucircumflex" => 501, "udieresis" => 501,
- "ugrave" => 501, "underscore" => 456, "v" => 456, "w" => 638,
- "x" => 456, "y" => 456, "yacute" => 456, "ydieresis" => 456,
- "yen" => 456, "z" => 410, "zcaron" => 410, "zero" => 456,
- },
- kern => {
- "A" => {
- "C" => -40, "G" => -50, "O" => -40, "Q" => -40, "T" => -90,
- "U" => -50, "V" => -80, "W" => -60, "Y" => -110, "u" => -30,
- "v" => -40, "w" => -30, "y" => -30,
- },
- "B" => {
- "A" => -30, "U" => -10,
- },
- "D" => {
- "A" => -40, "V" => -40, "W" => -40, "Y" => -70, "comma" => -30,
- "period" => -30,
- },
- "F" => {
- "A" => -80, "a" => -20, "comma" => -100, "period" => -100,
- },
- "J" => {
- "A" => -20, "comma" => -20, "period" => -20, "u" => -20,
- },
- "K" => {
- "O" => -30, "e" => -15, "o" => -35, "u" => -30, "y" => -40,
- },
- "L" => {
- "T" => -90, "V" => -110, "W" => -80, "Y" => -120,
- "quotedblright" => -140, "quoteright" => -140, "y" => -30,
- },
- "O" => {
- "A" => -50, "T" => -40, "V" => -50, "W" => -50, "X" => -50,
- "Y" => -70, "comma" => -40, "period" => -40,
- },
- "P" => {
- "A" => -100, "a" => -30, "comma" => -120, "e" => -30, "o" => -40,
- "period" => -120,
- },
- "Q" => {
- "U" => -10, "comma" => 20, "period" => 20,
- },
- "R" => {
- "O" => -20, "T" => -20, "U" => -20, "V" => -50, "W" => -40,
- "Y" => -50,
- },
- "T" => {
- "A" => -90, "O" => -40, "a" => -80, "colon" => -40,
- "comma" => -80, "e" => -60, "hyphen" => -120, "o" => -80,
- "period" => -80, "r" => -80, "semicolon" => -40, "u" => -90,
- "w" => -60, "y" => -60,
- },
- "U" => {
- "A" => -50, "comma" => -30, "period" => -30,
- },
- "V" => {
- "A" => -80, "G" => -50, "O" => -50, "a" => -60, "colon" => -40,
- "comma" => -120, "e" => -50, "hyphen" => -80, "o" => -90,
- "period" => -120, "semicolon" => -40, "u" => -60,
- },
- "W" => {
- "A" => -60, "O" => -20, "a" => -40, "colon" => -10,
- "comma" => -80, "e" => -35, "hyphen" => -40, "o" => -60,
- "period" => -80, "semicolon" => -10, "u" => -45, "y" => -20,
- },
- "Y" => {
- "A" => -110, "O" => -70, "a" => -90, "colon" => -50,
- "comma" => -100, "e" => -80, "o" => -100, "period" => -100,
- "semicolon" => -50, "u" => -100,
- },
- "a" => {
- "g" => -10, "v" => -15, "w" => -15, "y" => -20,
- },
- "b" => {
- "l" => -10, "u" => -20, "v" => -20, "y" => -20,
- },
- "c" => {
- "h" => -10, "k" => -20, "l" => -20, "y" => -10,
- },
- "colon" => {
- "space" => -40,
- },
- "comma" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -40,
- },
- "d" => {
- "d" => -10, "v" => -15, "w" => -15, "y" => -15,
- },
- "e" => {
- "comma" => 10, "period" => 20, "v" => -15, "w" => -15,
- "x" => -15, "y" => -15,
- },
- "f" => {
- "comma" => -10, "e" => -10, "o" => -20, "period" => -10,
- "quotedblright" => 30, "quoteright" => 30,
- },
- "g" => {
- "e" => 10, "g" => -10,
- },
- "h" => {
- "y" => -20,
- },
- "k" => {
- "o" => -15,
- },
- "l" => {
- "w" => -15, "y" => -15,
- },
- "m" => {
- "u" => -20, "y" => -30,
- },
- "n" => {
- "u" => -10, "v" => -40, "y" => -20,
- },
- "o" => {
- "v" => -20, "w" => -15, "x" => -30, "y" => -20,
- },
- "p" => {
- "y" => -15,
- },
- "period" => {
- "quotedblright" => -120, "quoteright" => -120, "space" => -40,
- },
- "quotedblright" => {
- "space" => -80,
- },
- "quoteleft" => {
- "quoteleft" => -46,
- },
- "quoteright" => {
- "d" => -80, "l" => -20, "quoteright" => -46, "r" => -40,
- "s" => -60, "space" => -80, "v" => -20,
- },
- "r" => {
- "c" => -20, "comma" => -60, "d" => -20, "g" => -15,
- "hyphen" => -20, "o" => -20, "period" => -60, "q" => -20,
- "s" => -15, "t" => 20, "v" => 10, "y" => 10,
- },
- "s" => {
- "w" => -15,
- },
- "semicolon" => {
- "space" => -40,
- },
- "space" => {
- "T" => -100, "V" => -80, "W" => -80, "Y" => -120,
- "quotedblleft" => -80, "quoteleft" => -60,
- },
- "v" => {
- "a" => -20, "comma" => -80, "o" => -30, "period" => -80,
- },
- "w" => {
- "comma" => -40, "o" => -20, "period" => -40,
- },
- "x" => {
- "e" => -10,
- },
- "y" => {
- "a" => -30, "comma" => -80, "e" => -10, "o" => -25,
- "period" => -80,
- },
- "z" => {
- "e" => 10,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvl8a.ph b/doc/metrics/phvl8a.ph
deleted file mode 100644
index 0e06b39a..00000000
--- a/doc/metrics/phvl8a.ph
+++ /dev/null
@@ -1,137 +0,0 @@
-%PS_Helvetica_Light = (
- name => 'Helvetica-Light',
- widths => {
- "A" => 667, "AE" => 1000, "Aacute" => 667, "Acircumflex" => 667,
- "Adieresis" => 667, "Agrave" => 667, "Aring" => 667,
- "Atilde" => 667, "B" => 667, "C" => 722, "Ccedilla" => 722,
- "D" => 722, "E" => 611, "Eacute" => 611, "Ecircumflex" => 611,
- "Edieresis" => 611, "Egrave" => 611, "Eth" => 722, "F" => 556,
- "G" => 778, "H" => 722, "I" => 278, "Iacute" => 278,
- "Icircumflex" => 278, "Idieresis" => 278, "Igrave" => 278,
- "J" => 500, "K" => 667, "L" => 556, "Lslash" => 556, "M" => 833,
- "N" => 722, "Ntilde" => 722, "O" => 778, "OE" => 1000,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 611,
- "Q" => 778, "R" => 667, "S" => 611, "Scaron" => 611, "T" => 556,
- "Thorn" => 611, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 611, "W" => 889,
- "X" => 611, "Y" => 611, "Yacute" => 611, "Ydieresis" => 611,
- "Z" => 611, "Zcaron" => 611, "a" => 556, "aacute" => 556,
- "acircumflex" => 556, "acute" => 333, "adieresis" => 556,
- "ae" => 889, "agrave" => 556, "ampersand" => 667, "aring" => 556,
- "asciicircum" => 660, "asciitilde" => 660, "asterisk" => 389,
- "at" => 800, "atilde" => 556, "b" => 611, "backslash" => 278,
- "bar" => 222, "braceleft" => 333, "braceright" => 333,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 222, "bullet" => 500, "c" => 556, "caron" => 333,
- "ccedilla" => 556, "cedilla" => 333, "cent" => 556,
- "circumflex" => 333, "colon" => 278, "comma" => 278,
- "copyright" => 800, "currency" => 556, "d" => 611, "dagger" => 556,
- "daggerdbl" => 556, "degree" => 400, "dieresis" => 333,
- "divide" => 660, "dollar" => 556, "dotaccent" => 333,
- "dotlessi" => 222, "e" => 556, "eacute" => 556,
- "ecircumflex" => 556, "edieresis" => 556, "egrave" => 556,
- "eight" => 556, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 660, "eth" => 556, "exclam" => 333,
- "exclamdown" => 333, "f" => 278, "fi" => 500, "five" => 556,
- "fl" => 500, "florin" => 556, "four" => 556, "fraction" => 167,
- "g" => 611, "germandbls" => 500, "grave" => 333, "greater" => 660,
- "guillemotleft" => 556, "guillemotright" => 556,
- "guilsinglleft" => 389, "guilsinglright" => 389, "h" => 556,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 222,
- "iacute" => 222, "icircumflex" => 222, "idieresis" => 222,
- "igrave" => 222, "j" => 222, "k" => 500, "l" => 222, "less" => 660,
- "logicalnot" => 660, "lslash" => 222, "m" => 833, "macron" => 333,
- "minus" => 660, "mu" => 556, "multiply" => 660, "n" => 556,
- "nine" => 556, "ntilde" => 556, "numbersign" => 556, "o" => 556,
- "oacute" => 556, "ocircumflex" => 556, "odieresis" => 556,
- "oe" => 944, "ogonek" => 333, "ograve" => 556, "one" => 556,
- "onehalf" => 834, "onequarter" => 834, "onesuperior" => 333,
- "ordfeminine" => 334, "ordmasculine" => 334, "oslash" => 556,
- "otilde" => 556, "p" => 611, "paragraph" => 650,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 660, "plusminus" => 660, "q" => 611, "question" => 500,
- "questiondown" => 500, "quotedbl" => 278, "quotedblbase" => 389,
- "quotedblleft" => 389, "quotedblright" => 389, "quoteleft" => 222,
- "quoteright" => 222, "quotesinglbase" => 222, "quotesingle" => 222,
- "r" => 333, "registered" => 800, "ring" => 333, "s" => 500,
- "scaron" => 500, "section" => 556, "semicolon" => 278,
- "seven" => 556, "six" => 556, "slash" => 278, "space" => 278,
- "sterling" => 556, "t" => 278, "thorn" => 611, "three" => 556,
- "threequarters" => 834, "threesuperior" => 333, "tilde" => 333,
- "trademark" => 940, "two" => 556, "twosuperior" => 333, "u" => 556,
- "uacute" => 556, "ucircumflex" => 556, "udieresis" => 556,
- "ugrave" => 556, "underscore" => 500, "v" => 500, "w" => 722,
- "x" => 500, "y" => 500, "yacute" => 500, "ydieresis" => 500,
- "yen" => 556, "z" => 500, "zcaron" => 500, "zero" => 556,
- },
- kern => {
- "A" => {
- "T" => -92, "V" => -74, "W" => -37, "Y" => -74,
- "quoteright" => -74, "v" => -18, "w" => -18, "y" => -18,
- },
- "F" => {
- "A" => -55, "comma" => -129, "period" => -129,
- },
- "L" => {
- "T" => -92, "V" => -92, "W" => -55, "Y" => -111,
- "quoteright" => -74, "y" => -37,
- },
- "P" => {
- "A" => -74, "comma" => -129, "period" => -129,
- },
- "R" => {
- "T" => -18, "V" => -18, "W" => -18, "Y" => -37, "y" => 0,
- },
- "T" => {
- "A" => -92, "a" => -111, "c" => -111, "colon" => -111,
- "comma" => -111, "e" => -111, "hyphen" => -129, "i" => 0,
- "o" => -111, "period" => -111, "r" => -92, "s" => -111,
- "semicolon" => -111, "u" => -92, "w" => -84, "y" => -84,
- },
- "V" => {
- "A" => -74, "a" => -55, "colon" => -74, "comma" => -129,
- "e" => -55, "hyphen" => -55, "i" => -18, "o" => -55,
- "period" => -129, "r" => -37, "semicolon" => -74, "u" => -37,
- "y" => -18,
- },
- "W" => {
- "A" => -37, "a" => -37, "colon" => -18, "comma" => -74,
- "e" => -18, "hyphen" => 0, "i" => 0, "o" => -18, "period" => -74,
- "r" => -18, "semicolon" => -18, "u" => -18, "y" => 0,
- },
- "Y" => {
- "A" => -74, "a" => -92, "colon" => -92, "comma" => -111,
- "e" => -92, "hyphen" => -111, "i" => -20, "o" => -92, "p" => -37,
- "period" => -111, "q" => -92, "semicolon" => -92, "u" => -37,
- "v" => -40,
- },
- "f" => {
- "f" => -18, "quoteright" => 18,
- },
- "quoteleft" => {
- "quoteleft" => -18,
- },
- "quoteright" => {
- "quoteright" => -18, "s" => -74, "t" => -18,
- },
- "r" => {
- "c" => -18, "comma" => -92, "d" => -18, "e" => -18, "f" => 18,
- "g" => 0, "h" => 0, "hyphen" => -55, "m" => 18, "n" => 18,
- "o" => -18, "period" => -92, "q" => -18, "quoteright" => 0,
- "r" => 0, "t" => 18, "u" => 0, "v" => 0, "w" => 0, "x" => 0,
- "y" => 18, "z" => 0,
- },
- "v" => {
- "comma" => -74, "period" => -74,
- },
- "w" => {
- "comma" => -55, "period" => -55,
- },
- "y" => {
- "comma" => -92, "period" => -92,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvlo8a.ph b/doc/metrics/phvlo8a.ph
deleted file mode 100644
index 53864f50..00000000
--- a/doc/metrics/phvlo8a.ph
+++ /dev/null
@@ -1,137 +0,0 @@
-%PS_Helvetica_LightOblique = (
- name => 'Helvetica-LightOblique',
- widths => {
- "A" => 667, "AE" => 1000, "Aacute" => 667, "Acircumflex" => 667,
- "Adieresis" => 667, "Agrave" => 667, "Aring" => 667,
- "Atilde" => 667, "B" => 667, "C" => 722, "Ccedilla" => 722,
- "D" => 722, "E" => 611, "Eacute" => 611, "Ecircumflex" => 611,
- "Edieresis" => 611, "Egrave" => 611, "Eth" => 722, "F" => 556,
- "G" => 778, "H" => 722, "I" => 278, "Iacute" => 278,
- "Icircumflex" => 278, "Idieresis" => 278, "Igrave" => 278,
- "J" => 500, "K" => 667, "L" => 556, "Lslash" => 556, "M" => 833,
- "N" => 722, "Ntilde" => 722, "O" => 778, "OE" => 1000,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 611,
- "Q" => 778, "R" => 667, "S" => 611, "Scaron" => 611, "T" => 556,
- "Thorn" => 611, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 611, "W" => 889,
- "X" => 611, "Y" => 611, "Yacute" => 611, "Ydieresis" => 611,
- "Z" => 611, "Zcaron" => 611, "a" => 556, "aacute" => 556,
- "acircumflex" => 556, "acute" => 333, "adieresis" => 556,
- "ae" => 889, "agrave" => 556, "ampersand" => 667, "aring" => 556,
- "asciicircum" => 660, "asciitilde" => 660, "asterisk" => 389,
- "at" => 800, "atilde" => 556, "b" => 611, "backslash" => 278,
- "bar" => 222, "braceleft" => 333, "braceright" => 333,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 222, "bullet" => 500, "c" => 556, "caron" => 333,
- "ccedilla" => 556, "cedilla" => 333, "cent" => 556,
- "circumflex" => 333, "colon" => 278, "comma" => 278,
- "copyright" => 800, "currency" => 556, "d" => 611, "dagger" => 556,
- "daggerdbl" => 556, "degree" => 400, "dieresis" => 333,
- "divide" => 660, "dollar" => 556, "dotaccent" => 333,
- "dotlessi" => 222, "e" => 556, "eacute" => 556,
- "ecircumflex" => 556, "edieresis" => 556, "egrave" => 556,
- "eight" => 556, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 660, "eth" => 556, "exclam" => 333,
- "exclamdown" => 333, "f" => 278, "fi" => 500, "five" => 556,
- "fl" => 500, "florin" => 556, "four" => 556, "fraction" => 167,
- "g" => 611, "germandbls" => 500, "grave" => 333, "greater" => 660,
- "guillemotleft" => 556, "guillemotright" => 556,
- "guilsinglleft" => 389, "guilsinglright" => 389, "h" => 556,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 222,
- "iacute" => 222, "icircumflex" => 222, "idieresis" => 222,
- "igrave" => 222, "j" => 222, "k" => 500, "l" => 222, "less" => 660,
- "logicalnot" => 660, "lslash" => 222, "m" => 833, "macron" => 333,
- "minus" => 660, "mu" => 556, "multiply" => 660, "n" => 556,
- "nine" => 556, "ntilde" => 556, "numbersign" => 556, "o" => 556,
- "oacute" => 556, "ocircumflex" => 556, "odieresis" => 556,
- "oe" => 944, "ogonek" => 333, "ograve" => 556, "one" => 556,
- "onehalf" => 834, "onequarter" => 834, "onesuperior" => 333,
- "ordfeminine" => 334, "ordmasculine" => 334, "oslash" => 556,
- "otilde" => 556, "p" => 611, "paragraph" => 650,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 660, "plusminus" => 660, "q" => 611, "question" => 500,
- "questiondown" => 500, "quotedbl" => 278, "quotedblbase" => 389,
- "quotedblleft" => 389, "quotedblright" => 389, "quoteleft" => 222,
- "quoteright" => 222, "quotesinglbase" => 222, "quotesingle" => 222,
- "r" => 333, "registered" => 800, "ring" => 333, "s" => 500,
- "scaron" => 500, "section" => 556, "semicolon" => 278,
- "seven" => 556, "six" => 556, "slash" => 278, "space" => 278,
- "sterling" => 556, "t" => 278, "thorn" => 611, "three" => 556,
- "threequarters" => 834, "threesuperior" => 333, "tilde" => 333,
- "trademark" => 940, "two" => 556, "twosuperior" => 333, "u" => 556,
- "uacute" => 556, "ucircumflex" => 556, "udieresis" => 556,
- "ugrave" => 556, "underscore" => 500, "v" => 500, "w" => 722,
- "x" => 500, "y" => 500, "yacute" => 500, "ydieresis" => 500,
- "yen" => 556, "z" => 500, "zcaron" => 500, "zero" => 556,
- },
- kern => {
- "A" => {
- "T" => -92, "V" => -74, "W" => -37, "Y" => -74,
- "quoteright" => -74, "v" => -18, "w" => -18, "y" => -18,
- },
- "F" => {
- "A" => -55, "comma" => -129, "period" => -129,
- },
- "L" => {
- "T" => -92, "V" => -92, "W" => -55, "Y" => -111,
- "quoteright" => -74, "y" => -37,
- },
- "P" => {
- "A" => -74, "comma" => -129, "period" => -129,
- },
- "R" => {
- "T" => -18, "V" => -18, "W" => -18, "Y" => -37, "y" => 0,
- },
- "T" => {
- "A" => -92, "a" => -111, "c" => -111, "colon" => -111,
- "comma" => -111, "e" => -111, "hyphen" => -129, "i" => 0,
- "o" => -111, "period" => -111, "r" => -92, "s" => -111,
- "semicolon" => -111, "u" => -92, "w" => -84, "y" => -84,
- },
- "V" => {
- "A" => -74, "a" => -55, "colon" => -74, "comma" => -129,
- "e" => -55, "hyphen" => -55, "i" => -18, "o" => -55,
- "period" => -129, "r" => -37, "semicolon" => -74, "u" => -37,
- "y" => -18,
- },
- "W" => {
- "A" => -37, "a" => -37, "colon" => -18, "comma" => -74,
- "e" => -18, "hyphen" => 0, "i" => 0, "o" => -18, "period" => -74,
- "r" => -18, "semicolon" => -18, "u" => -18, "y" => 0,
- },
- "Y" => {
- "A" => -74, "a" => -92, "colon" => -92, "comma" => -111,
- "e" => -92, "hyphen" => -111, "i" => -20, "o" => -92, "p" => -37,
- "period" => -111, "q" => -92, "semicolon" => -92, "u" => -37,
- "v" => -40,
- },
- "f" => {
- "f" => -18, "quoteright" => 18,
- },
- "quoteleft" => {
- "quoteleft" => -18,
- },
- "quoteright" => {
- "quoteright" => -18, "s" => -74, "t" => -18,
- },
- "r" => {
- "c" => -18, "comma" => -92, "d" => -18, "e" => -18, "f" => 18,
- "g" => 0, "h" => 0, "hyphen" => -55, "m" => 18, "n" => 18,
- "o" => -18, "period" => -92, "q" => -18, "quoteright" => 0,
- "r" => 0, "t" => 18, "u" => 0, "v" => 0, "w" => 0, "x" => 0,
- "y" => 18, "z" => 0,
- },
- "v" => {
- "comma" => -74, "period" => -74,
- },
- "w" => {
- "comma" => -55, "period" => -55,
- },
- "y" => {
- "comma" => -92, "period" => -92,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvr8a.ph b/doc/metrics/phvr8a.ph
deleted file mode 100644
index 419930da..00000000
--- a/doc/metrics/phvr8a.ph
+++ /dev/null
@@ -1,246 +0,0 @@
-%PS_Helvetica = (
- name => 'Helvetica',
- widths => {
- "A" => 667, "AE" => 1000, "Aacute" => 667, "Acircumflex" => 667,
- "Adieresis" => 667, "Agrave" => 667, "Aring" => 667,
- "Atilde" => 667, "B" => 667, "C" => 722, "Ccedilla" => 722,
- "D" => 722, "E" => 667, "Eacute" => 667, "Ecircumflex" => 667,
- "Edieresis" => 667, "Egrave" => 667, "Eth" => 722, "F" => 611,
- "G" => 778, "H" => 722, "I" => 278, "Iacute" => 278,
- "Icircumflex" => 278, "Idieresis" => 278, "Igrave" => 278,
- "J" => 500, "K" => 667, "L" => 556, "Lslash" => 556, "M" => 833,
- "N" => 722, "Ntilde" => 722, "O" => 778, "OE" => 1000,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 667,
- "Q" => 778, "R" => 722, "S" => 667, "Scaron" => 667, "T" => 611,
- "Thorn" => 667, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 667, "W" => 944,
- "X" => 667, "Y" => 667, "Yacute" => 667, "Ydieresis" => 667,
- "Z" => 611, "Zcaron" => 611, "a" => 556, "aacute" => 556,
- "acircumflex" => 556, "acute" => 333, "adieresis" => 556,
- "ae" => 889, "agrave" => 556, "ampersand" => 667, "aring" => 556,
- "asciicircum" => 469, "asciitilde" => 584, "asterisk" => 389,
- "at" => 1015, "atilde" => 556, "b" => 556, "backslash" => 278,
- "bar" => 260, "braceleft" => 334, "braceright" => 334,
- "bracketleft" => 278, "bracketright" => 278, "breve" => 333,
- "brokenbar" => 260, "bullet" => 350, "c" => 500, "caron" => 333,
- "ccedilla" => 500, "cedilla" => 333, "cent" => 556,
- "circumflex" => 333, "colon" => 278, "comma" => 278,
- "copyright" => 737, "currency" => 556, "d" => 556, "dagger" => 556,
- "daggerdbl" => 556, "degree" => 400, "dieresis" => 333,
- "divide" => 584, "dollar" => 556, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 556, "eacute" => 556,
- "ecircumflex" => 556, "edieresis" => 556, "egrave" => 556,
- "eight" => 556, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 556, "equal" => 584, "eth" => 556, "exclam" => 278,
- "exclamdown" => 333, "f" => 278, "fi" => 500, "five" => 556,
- "fl" => 500, "florin" => 556, "four" => 556, "fraction" => 167,
- "g" => 556, "germandbls" => 611, "grave" => 333, "greater" => 584,
- "guillemotleft" => 556, "guillemotright" => 556,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 556,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 222,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 222, "k" => 500, "l" => 222, "less" => 584,
- "logicalnot" => 584, "lslash" => 222, "m" => 833, "macron" => 333,
- "minus" => 584, "mu" => 556, "multiply" => 584, "n" => 556,
- "nine" => 556, "ntilde" => 556, "numbersign" => 556, "o" => 556,
- "oacute" => 556, "ocircumflex" => 556, "odieresis" => 556,
- "oe" => 944, "ogonek" => 333, "ograve" => 556, "one" => 556,
- "onehalf" => 834, "onequarter" => 834, "onesuperior" => 333,
- "ordfeminine" => 370, "ordmasculine" => 365, "oslash" => 611,
- "otilde" => 556, "p" => 556, "paragraph" => 537,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 584, "plusminus" => 584, "q" => 556, "question" => 556,
- "questiondown" => 611, "quotedbl" => 355, "quotedblbase" => 333,
- "quotedblleft" => 333, "quotedblright" => 333, "quoteleft" => 222,
- "quoteright" => 222, "quotesinglbase" => 222, "quotesingle" => 191,
- "r" => 333, "registered" => 737, "ring" => 333, "s" => 500,
- "scaron" => 500, "section" => 556, "semicolon" => 278,
- "seven" => 556, "six" => 556, "slash" => 278, "space" => 278,
- "sterling" => 556, "t" => 278, "thorn" => 556, "three" => 556,
- "threequarters" => 834, "threesuperior" => 333, "tilde" => 333,
- "trademark" => 1000, "two" => 556, "twosuperior" => 333,
- "u" => 556, "uacute" => 556, "ucircumflex" => 556,
- "udieresis" => 556, "ugrave" => 556, "underscore" => 556,
- "v" => 500, "w" => 722, "x" => 500, "y" => 500, "yacute" => 500,
- "ydieresis" => 500, "yen" => 556, "z" => 500, "zcaron" => 500,
- "zero" => 556,
- },
- kern => {
- "A" => {
- "C" => -30, "G" => -30, "O" => -30, "Q" => -30, "T" => -120,
- "U" => -50, "V" => -70, "W" => -50, "Y" => -100, "u" => -30,
- "v" => -40, "w" => -40, "y" => -40,
- },
- "B" => {
- "U" => -10, "comma" => -20, "period" => -20,
- },
- "C" => {
- "comma" => -30, "period" => -30,
- },
- "D" => {
- "A" => -40, "V" => -70, "W" => -40, "Y" => -90, "comma" => -70,
- "period" => -70,
- },
- "F" => {
- "A" => -80, "a" => -50, "comma" => -150, "e" => -30, "o" => -30,
- "period" => -150, "r" => -45,
- },
- "J" => {
- "A" => -20, "a" => -20, "comma" => -30, "period" => -30,
- "u" => -20,
- },
- "K" => {
- "O" => -50, "e" => -40, "o" => -40, "u" => -30, "y" => -50,
- },
- "L" => {
- "T" => -110, "V" => -110, "W" => -70, "Y" => -140,
- "quotedblright" => -140, "quoteright" => -160, "y" => -30,
- },
- "O" => {
- "A" => -20, "T" => -40, "V" => -50, "W" => -30, "X" => -60,
- "Y" => -70, "comma" => -40, "period" => -40,
- },
- "P" => {
- "A" => -120, "a" => -40, "comma" => -180, "e" => -50, "o" => -50,
- "period" => -180,
- },
- "Q" => {
- "U" => -10,
- },
- "R" => {
- "O" => -20, "T" => -30, "U" => -40, "V" => -50, "W" => -30,
- "Y" => -50,
- },
- "S" => {
- "comma" => -20, "period" => -20,
- },
- "T" => {
- "A" => -120, "O" => -40, "a" => -120, "colon" => -20,
- "comma" => -120, "e" => -120, "hyphen" => -140, "o" => -120,
- "period" => -120, "r" => -120, "semicolon" => -20, "u" => -120,
- "w" => -120, "y" => -120,
- },
- "U" => {
- "A" => -40, "comma" => -40, "period" => -40,
- },
- "V" => {
- "A" => -80, "G" => -40, "O" => -40, "a" => -70, "colon" => -40,
- "comma" => -125, "e" => -80, "hyphen" => -80, "o" => -80,
- "period" => -125, "semicolon" => -40, "u" => -70,
- },
- "W" => {
- "A" => -50, "O" => -20, "a" => -40, "comma" => -80, "e" => -30,
- "hyphen" => -40, "o" => -30, "period" => -80, "u" => -30,
- "y" => -20,
- },
- "Y" => {
- "A" => -110, "O" => -85, "a" => -140, "colon" => -60,
- "comma" => -140, "e" => -140, "hyphen" => -140, "i" => -20,
- "o" => -140, "period" => -140, "semicolon" => -60, "u" => -110,
- },
- "a" => {
- "v" => -20, "w" => -20, "y" => -30,
- },
- "b" => {
- "b" => -10, "comma" => -40, "l" => -20, "period" => -40,
- "u" => -20, "v" => -20, "y" => -20,
- },
- "c" => {
- "comma" => -15, "k" => -20,
- },
- "colon" => {
- "space" => -50,
- },
- "comma" => {
- "quotedblright" => -100, "quoteright" => -100,
- },
- "e" => {
- "comma" => -15, "period" => -15, "v" => -30, "w" => -20,
- "x" => -30, "y" => -20,
- },
- "f" => {
- "a" => -30, "comma" => -30, "dotlessi" => -28, "e" => -30,
- "o" => -30, "period" => -30, "quotedblright" => 60,
- "quoteright" => 50,
- },
- "g" => {
- "r" => -10,
- },
- "h" => {
- "y" => -30,
- },
- "k" => {
- "e" => -20, "o" => -20,
- },
- "m" => {
- "u" => -10, "y" => -15,
- },
- "n" => {
- "u" => -10, "v" => -20, "y" => -15,
- },
- "o" => {
- "comma" => -40, "period" => -40, "v" => -15, "w" => -15,
- "x" => -30, "y" => -30,
- },
- "oslash" => {
- "a" => -55, "b" => -55, "c" => -55, "comma" => -95, "d" => -55,
- "e" => -55, "f" => -55, "g" => -55, "h" => -55, "i" => -55,
- "j" => -55, "k" => -55, "l" => -55, "m" => -55, "n" => -55,
- "o" => -55, "p" => -55, "period" => -95, "q" => -55, "r" => -55,
- "s" => -55, "t" => -55, "u" => -55, "v" => -70, "w" => -70,
- "x" => -85, "y" => -70, "z" => -55,
- },
- "p" => {
- "comma" => -35, "period" => -35, "y" => -30,
- },
- "period" => {
- "quotedblright" => -100, "quoteright" => -100, "space" => -60,
- },
- "quotedblright" => {
- "space" => -40,
- },
- "quoteleft" => {
- "quoteleft" => -57,
- },
- "quoteright" => {
- "d" => -50, "quoteright" => -57, "r" => -50, "s" => -50,
- "space" => -70,
- },
- "r" => {
- "a" => -10, "colon" => 30, "comma" => -50, "i" => 15, "k" => 15,
- "l" => 15, "m" => 25, "n" => 25, "p" => 30, "period" => -50,
- "semicolon" => 30, "t" => 40, "u" => 15, "v" => 30, "y" => 30,
- },
- "s" => {
- "comma" => -15, "period" => -15, "w" => -30,
- },
- "semicolon" => {
- "space" => -50,
- },
- "space" => {
- "T" => -50, "V" => -50, "W" => -40, "Y" => -90,
- "quotedblleft" => -30, "quoteleft" => -60,
- },
- "v" => {
- "a" => -25, "comma" => -80, "e" => -25, "o" => -25,
- "period" => -80,
- },
- "w" => {
- "a" => -15, "comma" => -60, "e" => -10, "o" => -10,
- "period" => -60,
- },
- "x" => {
- "e" => -30,
- },
- "y" => {
- "a" => -20, "comma" => -100, "e" => -20, "o" => -20,
- "period" => -100,
- },
- "z" => {
- "e" => -15, "o" => -15,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvr8an.ph b/doc/metrics/phvr8an.ph
deleted file mode 100644
index 911f7ba3..00000000
--- a/doc/metrics/phvr8an.ph
+++ /dev/null
@@ -1,245 +0,0 @@
-%PS_Helvetica_Narrow = (
- name => 'Helvetica-Narrow',
- widths => {
- "A" => 547, "AE" => 820, "Aacute" => 547, "Acircumflex" => 547,
- "Adieresis" => 547, "Agrave" => 547, "Aring" => 547,
- "Atilde" => 547, "B" => 547, "C" => 592, "Ccedilla" => 592,
- "D" => 592, "E" => 547, "Eacute" => 547, "Ecircumflex" => 547,
- "Edieresis" => 547, "Egrave" => 547, "Eth" => 592, "F" => 501,
- "G" => 638, "H" => 592, "I" => 228, "Iacute" => 228,
- "Icircumflex" => 228, "Idieresis" => 228, "Igrave" => 228,
- "J" => 410, "K" => 547, "L" => 456, "Lslash" => 456, "M" => 683,
- "N" => 592, "Ntilde" => 592, "O" => 638, "OE" => 820,
- "Oacute" => 638, "Ocircumflex" => 638, "Odieresis" => 638,
- "Ograve" => 638, "Oslash" => 638, "Otilde" => 638, "P" => 547,
- "Q" => 638, "R" => 592, "S" => 547, "Scaron" => 547, "T" => 501,
- "Thorn" => 547, "U" => 592, "Uacute" => 592, "Ucircumflex" => 592,
- "Udieresis" => 592, "Ugrave" => 592, "V" => 547, "W" => 774,
- "X" => 547, "Y" => 547, "Yacute" => 547, "Ydieresis" => 547,
- "Z" => 501, "Zcaron" => 501, "a" => 456, "aacute" => 456,
- "acircumflex" => 456, "acute" => 273, "adieresis" => 456,
- "ae" => 729, "agrave" => 456, "ampersand" => 547, "aring" => 456,
- "asciicircum" => 385, "asciitilde" => 479, "asterisk" => 319,
- "at" => 832, "atilde" => 456, "b" => 456, "backslash" => 228,
- "bar" => 213, "braceleft" => 274, "braceright" => 274,
- "bracketleft" => 228, "bracketright" => 228, "breve" => 273,
- "brokenbar" => 213, "bullet" => 287, "c" => 410, "caron" => 273,
- "ccedilla" => 410, "cedilla" => 273, "cent" => 456,
- "circumflex" => 273, "colon" => 228, "comma" => 228,
- "copyright" => 604, "currency" => 456, "d" => 456, "dagger" => 456,
- "daggerdbl" => 456, "degree" => 328, "dieresis" => 273,
- "divide" => 479, "dollar" => 456, "dotaccent" => 273,
- "dotlessi" => 228, "e" => 456, "eacute" => 456,
- "ecircumflex" => 456, "edieresis" => 456, "egrave" => 456,
- "eight" => 456, "ellipsis" => 820, "emdash" => 820,
- "endash" => 456, "equal" => 479, "eth" => 456, "exclam" => 228,
- "exclamdown" => 273, "f" => 228, "fi" => 410, "five" => 456,
- "fl" => 410, "florin" => 456, "four" => 456, "fraction" => 137,
- "g" => 456, "germandbls" => 501, "grave" => 273, "greater" => 479,
- "guillemotleft" => 456, "guillemotright" => 456,
- "guilsinglleft" => 273, "guilsinglright" => 273, "h" => 456,
- "hungarumlaut" => 273, "hyphen" => 273, "i" => 182,
- "iacute" => 228, "icircumflex" => 228, "idieresis" => 228,
- "igrave" => 228, "j" => 182, "k" => 410, "l" => 182, "less" => 479,
- "logicalnot" => 479, "lslash" => 182, "m" => 683, "macron" => 273,
- "minus" => 479, "mu" => 456, "multiply" => 479, "n" => 456,
- "nine" => 456, "ntilde" => 456, "numbersign" => 456, "o" => 456,
- "oacute" => 456, "ocircumflex" => 456, "odieresis" => 456,
- "oe" => 774, "ogonek" => 273, "ograve" => 456, "one" => 456,
- "onehalf" => 684, "onequarter" => 684, "onesuperior" => 273,
- "ordfeminine" => 303, "ordmasculine" => 299, "oslash" => 501,
- "otilde" => 456, "p" => 456, "paragraph" => 440,
- "parenleft" => 273, "parenright" => 273, "percent" => 729,
- "period" => 228, "periodcentered" => 228, "perthousand" => 820,
- "plus" => 479, "plusminus" => 479, "q" => 456, "question" => 456,
- "questiondown" => 501, "quotedbl" => 291, "quotedblbase" => 273,
- "quotedblleft" => 273, "quotedblright" => 273, "quoteleft" => 182,
- "quoteright" => 182, "quotesinglbase" => 182, "quotesingle" => 157,
- "r" => 273, "registered" => 604, "ring" => 273, "s" => 410,
- "scaron" => 410, "section" => 456, "semicolon" => 228,
- "seven" => 456, "six" => 456, "slash" => 228, "space" => 228,
- "sterling" => 456, "t" => 228, "thorn" => 456, "three" => 456,
- "threequarters" => 684, "threesuperior" => 273, "tilde" => 273,
- "trademark" => 820, "two" => 456, "twosuperior" => 273, "u" => 456,
- "uacute" => 456, "ucircumflex" => 456, "udieresis" => 456,
- "ugrave" => 456, "underscore" => 456, "v" => 410, "w" => 592,
- "x" => 410, "y" => 410, "yacute" => 410, "ydieresis" => 410,
- "yen" => 456, "z" => 410, "zcaron" => 410, "zero" => 456,
- },
- kern => {
- "A" => {
- "C" => -24, "G" => -24, "O" => -24, "Q" => -24, "T" => -97,
- "U" => -40, "V" => -56, "W" => -40, "Y" => -81, "u" => -24,
- "v" => -32, "w" => -32, "y" => -32,
- },
- "B" => {
- "U" => -7, "comma" => -15, "period" => -15,
- },
- "C" => {
- "comma" => -24, "period" => -24,
- },
- "D" => {
- "A" => -32, "V" => -56, "W" => -32, "Y" => -73, "comma" => -56,
- "period" => -56,
- },
- "F" => {
- "A" => -65, "a" => -40, "comma" => -122, "e" => -24, "o" => -24,
- "period" => -122, "r" => -36,
- },
- "J" => {
- "A" => -15, "a" => -15, "comma" => -24, "period" => -24,
- "u" => -15,
- },
- "K" => {
- "O" => -40, "e" => -32, "o" => -32, "u" => -24, "y" => -40,
- },
- "L" => {
- "T" => -89, "V" => -89, "W" => -56, "Y" => -114,
- "quotedblright" => -114, "quoteright" => -130, "y" => -24,
- },
- "O" => {
- "A" => -15, "T" => -32, "V" => -40, "W" => -24, "X" => -48,
- "Y" => -56, "comma" => -32, "period" => -32,
- },
- "P" => {
- "A" => -97, "a" => -32, "comma" => -147, "e" => -40, "o" => -40,
- "period" => -147,
- },
- "Q" => {
- "U" => -7,
- },
- "R" => {
- "O" => -15, "T" => -24, "U" => -32, "V" => -40, "W" => -24,
- "Y" => -40,
- },
- "S" => {
- "comma" => -15, "period" => -15,
- },
- "T" => {
- "A" => -97, "O" => -32, "a" => -97, "colon" => -15,
- "comma" => -97, "e" => -97, "hyphen" => -114, "o" => -97,
- "period" => -97, "r" => -97, "semicolon" => -15, "u" => -97,
- "w" => -97, "y" => -97,
- },
- "U" => {
- "A" => -32, "comma" => -32, "period" => -32,
- },
- "V" => {
- "A" => -65, "G" => -32, "O" => -32, "a" => -56, "colon" => -32,
- "comma" => -102, "e" => -65, "hyphen" => -65, "o" => -65,
- "period" => -102, "semicolon" => -32, "u" => -56,
- },
- "W" => {
- "A" => -40, "O" => -15, "a" => -32, "comma" => -65, "e" => -24,
- "hyphen" => -32, "o" => -24, "period" => -65, "u" => -24,
- "y" => -15,
- },
- "Y" => {
- "A" => -89, "O" => -69, "a" => -114, "colon" => -48,
- "comma" => -114, "e" => -114, "hyphen" => -114, "i" => -15,
- "o" => -114, "period" => -114, "semicolon" => -48, "u" => -89,
- },
- "a" => {
- "v" => -15, "w" => -15, "y" => -24,
- },
- "b" => {
- "b" => -7, "comma" => -32, "l" => -15, "period" => -32,
- "u" => -15, "v" => -15, "y" => -15,
- },
- "c" => {
- "comma" => -11, "k" => -15,
- },
- "colon" => {
- "space" => -40,
- },
- "comma" => {
- "quotedblright" => -81, "quoteright" => -81,
- },
- "e" => {
- "comma" => -11, "period" => -11, "v" => -24, "w" => -15,
- "x" => -24, "y" => -15,
- },
- "f" => {
- "a" => -24, "comma" => -24, "dotlessi" => -22, "e" => -24,
- "o" => -24, "period" => -24, "quotedblright" => 49,
- "quoteright" => 41,
- },
- "g" => {
- "r" => -7,
- },
- "h" => {
- "y" => -24,
- },
- "k" => {
- "e" => -15, "o" => -15,
- },
- "m" => {
- "u" => -7, "y" => -11,
- },
- "n" => {
- "u" => -7, "v" => -15, "y" => -11,
- },
- "o" => {
- "comma" => -32, "period" => -32, "v" => -11, "w" => -11,
- "x" => -24, "y" => -24,
- },
- "oslash" => {
- "a" => -44, "b" => -44, "c" => -44, "comma" => -77, "d" => -44,
- "e" => -44, "f" => -44, "g" => -44, "h" => -44, "i" => -44,
- "j" => -44, "k" => -44, "l" => -44, "m" => -44, "n" => -44,
- "o" => -44, "p" => -44, "period" => -77, "q" => -44, "r" => -44,
- "s" => -44, "t" => -44, "u" => -44, "v" => -56, "w" => -56,
- "x" => -69, "y" => -56, "z" => -44,
- },
- "p" => {
- "comma" => -28, "period" => -28, "y" => -24,
- },
- "period" => {
- "quotedblright" => -81, "quoteright" => -81, "space" => -48,
- },
- "quotedblright" => {
- "space" => -32,
- },
- "quoteleft" => {
- "quoteleft" => -46,
- },
- "quoteright" => {
- "d" => -40, "quoteright" => -46, "r" => -40, "s" => -40,
- "space" => -56,
- },
- "r" => {
- "a" => -7, "colon" => 25, "comma" => -40, "i" => 12, "k" => 12,
- "l" => 12, "m" => 21, "n" => 21, "p" => 25, "period" => -40,
- "semicolon" => 25, "t" => 33, "u" => 12, "v" => 25, "y" => 25,
- },
- "s" => {
- "comma" => -11, "period" => -11, "w" => -24,
- },
- "semicolon" => {
- "space" => -40,
- },
- "space" => {
- "T" => -40, "V" => -40, "W" => -32, "Y" => -73,
- "quotedblleft" => -24, "quoteleft" => -48,
- },
- "v" => {
- "a" => -20, "comma" => -65, "e" => -20, "o" => -20,
- "period" => -65,
- },
- "w" => {
- "a" => -11, "comma" => -48, "e" => -7, "o" => -7,
- "period" => -48,
- },
- "x" => {
- "e" => -24,
- },
- "y" => {
- "a" => -15, "comma" => -81, "e" => -15, "o" => -15,
- "period" => -81,
- },
- "z" => {
- "e" => -11, "o" => -11,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvro8a.ph b/doc/metrics/phvro8a.ph
deleted file mode 100644
index ba6ccb66..00000000
--- a/doc/metrics/phvro8a.ph
+++ /dev/null
@@ -1,246 +0,0 @@
-%PS_Helvetica_Oblique = (
- name => 'Helvetica-Oblique',
- widths => {
- "A" => 667, "AE" => 1000, "Aacute" => 667, "Acircumflex" => 667,
- "Adieresis" => 667, "Agrave" => 667, "Aring" => 667,
- "Atilde" => 667, "B" => 667, "C" => 722, "Ccedilla" => 722,
- "D" => 722, "E" => 667, "Eacute" => 667, "Ecircumflex" => 667,
- "Edieresis" => 667, "Egrave" => 667, "Eth" => 722, "F" => 611,
- "G" => 778, "H" => 722, "I" => 278, "Iacute" => 278,
- "Icircumflex" => 278, "Idieresis" => 278, "Igrave" => 278,
- "J" => 500, "K" => 667, "L" => 556, "Lslash" => 556, "M" => 833,
- "N" => 722, "Ntilde" => 722, "O" => 778, "OE" => 1000,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 667,
- "Q" => 778, "R" => 722, "S" => 667, "Scaron" => 667, "T" => 611,
- "Thorn" => 667, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 667, "W" => 944,
- "X" => 667, "Y" => 667, "Yacute" => 667, "Ydieresis" => 667,
- "Z" => 611, "Zcaron" => 611, "a" => 556, "aacute" => 556,
- "acircumflex" => 556, "acute" => 333, "adieresis" => 556,
- "ae" => 889, "agrave" => 556, "ampersand" => 667, "aring" => 556,
- "asciicircum" => 469, "asciitilde" => 584, "asterisk" => 389,
- "at" => 1015, "atilde" => 556, "b" => 556, "backslash" => 278,
- "bar" => 260, "braceleft" => 334, "braceright" => 334,
- "bracketleft" => 278, "bracketright" => 278, "breve" => 333,
- "brokenbar" => 260, "bullet" => 350, "c" => 500, "caron" => 333,
- "ccedilla" => 500, "cedilla" => 333, "cent" => 556,
- "circumflex" => 333, "colon" => 278, "comma" => 278,
- "copyright" => 737, "currency" => 556, "d" => 556, "dagger" => 556,
- "daggerdbl" => 556, "degree" => 400, "dieresis" => 333,
- "divide" => 584, "dollar" => 556, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 556, "eacute" => 556,
- "ecircumflex" => 556, "edieresis" => 556, "egrave" => 556,
- "eight" => 556, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 556, "equal" => 584, "eth" => 556, "exclam" => 278,
- "exclamdown" => 333, "f" => 278, "fi" => 500, "five" => 556,
- "fl" => 500, "florin" => 556, "four" => 556, "fraction" => 167,
- "g" => 556, "germandbls" => 611, "grave" => 333, "greater" => 584,
- "guillemotleft" => 556, "guillemotright" => 556,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 556,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 222,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 222, "k" => 500, "l" => 222, "less" => 584,
- "logicalnot" => 584, "lslash" => 222, "m" => 833, "macron" => 333,
- "minus" => 584, "mu" => 556, "multiply" => 584, "n" => 556,
- "nine" => 556, "ntilde" => 556, "numbersign" => 556, "o" => 556,
- "oacute" => 556, "ocircumflex" => 556, "odieresis" => 556,
- "oe" => 944, "ogonek" => 333, "ograve" => 556, "one" => 556,
- "onehalf" => 834, "onequarter" => 834, "onesuperior" => 333,
- "ordfeminine" => 370, "ordmasculine" => 365, "oslash" => 611,
- "otilde" => 556, "p" => 556, "paragraph" => 537,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 584, "plusminus" => 584, "q" => 556, "question" => 556,
- "questiondown" => 611, "quotedbl" => 355, "quotedblbase" => 333,
- "quotedblleft" => 333, "quotedblright" => 333, "quoteleft" => 222,
- "quoteright" => 222, "quotesinglbase" => 222, "quotesingle" => 191,
- "r" => 333, "registered" => 737, "ring" => 333, "s" => 500,
- "scaron" => 500, "section" => 556, "semicolon" => 278,
- "seven" => 556, "six" => 556, "slash" => 278, "space" => 278,
- "sterling" => 556, "t" => 278, "thorn" => 556, "three" => 556,
- "threequarters" => 834, "threesuperior" => 333, "tilde" => 333,
- "trademark" => 1000, "two" => 556, "twosuperior" => 333,
- "u" => 556, "uacute" => 556, "ucircumflex" => 556,
- "udieresis" => 556, "ugrave" => 556, "underscore" => 556,
- "v" => 500, "w" => 722, "x" => 500, "y" => 500, "yacute" => 500,
- "ydieresis" => 500, "yen" => 556, "z" => 500, "zcaron" => 500,
- "zero" => 556,
- },
- kern => {
- "A" => {
- "C" => -30, "G" => -30, "O" => -30, "Q" => -30, "T" => -120,
- "U" => -50, "V" => -70, "W" => -50, "Y" => -100, "u" => -30,
- "v" => -40, "w" => -40, "y" => -40,
- },
- "B" => {
- "U" => -10, "comma" => -20, "period" => -20,
- },
- "C" => {
- "comma" => -30, "period" => -30,
- },
- "D" => {
- "A" => -40, "V" => -70, "W" => -40, "Y" => -90, "comma" => -70,
- "period" => -70,
- },
- "F" => {
- "A" => -80, "a" => -50, "comma" => -150, "e" => -30, "o" => -30,
- "period" => -150, "r" => -45,
- },
- "J" => {
- "A" => -20, "a" => -20, "comma" => -30, "period" => -30,
- "u" => -20,
- },
- "K" => {
- "O" => -50, "e" => -40, "o" => -40, "u" => -30, "y" => -50,
- },
- "L" => {
- "T" => -110, "V" => -110, "W" => -70, "Y" => -140,
- "quotedblright" => -140, "quoteright" => -160, "y" => -30,
- },
- "O" => {
- "A" => -20, "T" => -40, "V" => -50, "W" => -30, "X" => -60,
- "Y" => -70, "comma" => -40, "period" => -40,
- },
- "P" => {
- "A" => -120, "a" => -40, "comma" => -180, "e" => -50, "o" => -50,
- "period" => -180,
- },
- "Q" => {
- "U" => -10,
- },
- "R" => {
- "O" => -20, "T" => -30, "U" => -40, "V" => -50, "W" => -30,
- "Y" => -50,
- },
- "S" => {
- "comma" => -20, "period" => -20,
- },
- "T" => {
- "A" => -120, "O" => -40, "a" => -120, "colon" => -20,
- "comma" => -120, "e" => -120, "hyphen" => -140, "o" => -120,
- "period" => -120, "r" => -120, "semicolon" => -20, "u" => -120,
- "w" => -120, "y" => -120,
- },
- "U" => {
- "A" => -40, "comma" => -40, "period" => -40,
- },
- "V" => {
- "A" => -80, "G" => -40, "O" => -40, "a" => -70, "colon" => -40,
- "comma" => -125, "e" => -80, "hyphen" => -80, "o" => -80,
- "period" => -125, "semicolon" => -40, "u" => -70,
- },
- "W" => {
- "A" => -50, "O" => -20, "a" => -40, "comma" => -80, "e" => -30,
- "hyphen" => -40, "o" => -30, "period" => -80, "u" => -30,
- "y" => -20,
- },
- "Y" => {
- "A" => -110, "O" => -85, "a" => -140, "colon" => -60,
- "comma" => -140, "e" => -140, "hyphen" => -140, "i" => -20,
- "o" => -140, "period" => -140, "semicolon" => -60, "u" => -110,
- },
- "a" => {
- "v" => -20, "w" => -20, "y" => -30,
- },
- "b" => {
- "b" => -10, "comma" => -40, "l" => -20, "period" => -40,
- "u" => -20, "v" => -20, "y" => -20,
- },
- "c" => {
- "comma" => -15, "k" => -20,
- },
- "colon" => {
- "space" => -50,
- },
- "comma" => {
- "quotedblright" => -100, "quoteright" => -100,
- },
- "e" => {
- "comma" => -15, "period" => -15, "v" => -30, "w" => -20,
- "x" => -30, "y" => -20,
- },
- "f" => {
- "a" => -30, "comma" => -30, "dotlessi" => -28, "e" => -30,
- "o" => -30, "period" => -30, "quotedblright" => 60,
- "quoteright" => 50,
- },
- "g" => {
- "r" => -10,
- },
- "h" => {
- "y" => -30,
- },
- "k" => {
- "e" => -20, "o" => -20,
- },
- "m" => {
- "u" => -10, "y" => -15,
- },
- "n" => {
- "u" => -10, "v" => -20, "y" => -15,
- },
- "o" => {
- "comma" => -40, "period" => -40, "v" => -15, "w" => -15,
- "x" => -30, "y" => -30,
- },
- "oslash" => {
- "a" => -55, "b" => -55, "c" => -55, "comma" => -95, "d" => -55,
- "e" => -55, "f" => -55, "g" => -55, "h" => -55, "i" => -55,
- "j" => -55, "k" => -55, "l" => -55, "m" => -55, "n" => -55,
- "o" => -55, "p" => -55, "period" => -95, "q" => -55, "r" => -55,
- "s" => -55, "t" => -55, "u" => -55, "v" => -70, "w" => -70,
- "x" => -85, "y" => -70, "z" => -55,
- },
- "p" => {
- "comma" => -35, "period" => -35, "y" => -30,
- },
- "period" => {
- "quotedblright" => -100, "quoteright" => -100, "space" => -60,
- },
- "quotedblright" => {
- "space" => -40,
- },
- "quoteleft" => {
- "quoteleft" => -57,
- },
- "quoteright" => {
- "d" => -50, "quoteright" => -57, "r" => -50, "s" => -50,
- "space" => -70,
- },
- "r" => {
- "a" => -10, "colon" => 30, "comma" => -50, "i" => 15, "k" => 15,
- "l" => 15, "m" => 25, "n" => 25, "p" => 30, "period" => -50,
- "semicolon" => 30, "t" => 40, "u" => 15, "v" => 30, "y" => 30,
- },
- "s" => {
- "comma" => -15, "period" => -15, "w" => -30,
- },
- "semicolon" => {
- "space" => -50,
- },
- "space" => {
- "T" => -50, "V" => -50, "W" => -40, "Y" => -90,
- "quotedblleft" => -30, "quoteleft" => -60,
- },
- "v" => {
- "a" => -25, "comma" => -80, "e" => -25, "o" => -25,
- "period" => -80,
- },
- "w" => {
- "a" => -15, "comma" => -60, "e" => -10, "o" => -10,
- "period" => -60,
- },
- "x" => {
- "e" => -30,
- },
- "y" => {
- "a" => -20, "comma" => -100, "e" => -20, "o" => -20,
- "period" => -100,
- },
- "z" => {
- "e" => -15, "o" => -15,
- }
- }
-);
-1;
diff --git a/doc/metrics/phvro8an.ph b/doc/metrics/phvro8an.ph
deleted file mode 100644
index a2f25235..00000000
--- a/doc/metrics/phvro8an.ph
+++ /dev/null
@@ -1,245 +0,0 @@
-%PS_Helvetica_Narrow_Oblique = (
- name => 'Helvetica-Narrow-Oblique',
- widths => {
- "A" => 547, "AE" => 820, "Aacute" => 547, "Acircumflex" => 547,
- "Adieresis" => 547, "Agrave" => 547, "Aring" => 547,
- "Atilde" => 547, "B" => 547, "C" => 592, "Ccedilla" => 592,
- "D" => 592, "E" => 547, "Eacute" => 547, "Ecircumflex" => 547,
- "Edieresis" => 547, "Egrave" => 547, "Eth" => 592, "F" => 501,
- "G" => 638, "H" => 592, "I" => 228, "Iacute" => 228,
- "Icircumflex" => 228, "Idieresis" => 228, "Igrave" => 228,
- "J" => 410, "K" => 547, "L" => 456, "Lslash" => 456, "M" => 683,
- "N" => 592, "Ntilde" => 592, "O" => 638, "OE" => 820,
- "Oacute" => 638, "Ocircumflex" => 638, "Odieresis" => 638,
- "Ograve" => 638, "Oslash" => 638, "Otilde" => 638, "P" => 547,
- "Q" => 638, "R" => 592, "S" => 547, "Scaron" => 547, "T" => 501,
- "Thorn" => 547, "U" => 592, "Uacute" => 592, "Ucircumflex" => 592,
- "Udieresis" => 592, "Ugrave" => 592, "V" => 547, "W" => 774,
- "X" => 547, "Y" => 547, "Yacute" => 547, "Ydieresis" => 547,
- "Z" => 501, "Zcaron" => 501, "a" => 456, "aacute" => 456,
- "acircumflex" => 456, "acute" => 273, "adieresis" => 456,
- "ae" => 729, "agrave" => 456, "ampersand" => 547, "aring" => 456,
- "asciicircum" => 385, "asciitilde" => 479, "asterisk" => 319,
- "at" => 832, "atilde" => 456, "b" => 456, "backslash" => 228,
- "bar" => 213, "braceleft" => 274, "braceright" => 274,
- "bracketleft" => 228, "bracketright" => 228, "breve" => 273,
- "brokenbar" => 213, "bullet" => 287, "c" => 410, "caron" => 273,
- "ccedilla" => 410, "cedilla" => 273, "cent" => 456,
- "circumflex" => 273, "colon" => 228, "comma" => 228,
- "copyright" => 604, "currency" => 456, "d" => 456, "dagger" => 456,
- "daggerdbl" => 456, "degree" => 328, "dieresis" => 273,
- "divide" => 479, "dollar" => 456, "dotaccent" => 273,
- "dotlessi" => 228, "e" => 456, "eacute" => 456,
- "ecircumflex" => 456, "edieresis" => 456, "egrave" => 456,
- "eight" => 456, "ellipsis" => 820, "emdash" => 820,
- "endash" => 456, "equal" => 479, "eth" => 456, "exclam" => 228,
- "exclamdown" => 273, "f" => 228, "fi" => 410, "five" => 456,
- "fl" => 410, "florin" => 456, "four" => 456, "fraction" => 137,
- "g" => 456, "germandbls" => 501, "grave" => 273, "greater" => 479,
- "guillemotleft" => 456, "guillemotright" => 456,
- "guilsinglleft" => 273, "guilsinglright" => 273, "h" => 456,
- "hungarumlaut" => 273, "hyphen" => 273, "i" => 182,
- "iacute" => 228, "icircumflex" => 228, "idieresis" => 228,
- "igrave" => 228, "j" => 182, "k" => 410, "l" => 182, "less" => 479,
- "logicalnot" => 479, "lslash" => 182, "m" => 683, "macron" => 273,
- "minus" => 479, "mu" => 456, "multiply" => 479, "n" => 456,
- "nine" => 456, "ntilde" => 456, "numbersign" => 456, "o" => 456,
- "oacute" => 456, "ocircumflex" => 456, "odieresis" => 456,
- "oe" => 774, "ogonek" => 273, "ograve" => 456, "one" => 456,
- "onehalf" => 684, "onequarter" => 684, "onesuperior" => 273,
- "ordfeminine" => 303, "ordmasculine" => 299, "oslash" => 501,
- "otilde" => 456, "p" => 456, "paragraph" => 440,
- "parenleft" => 273, "parenright" => 273, "percent" => 729,
- "period" => 228, "periodcentered" => 228, "perthousand" => 820,
- "plus" => 479, "plusminus" => 479, "q" => 456, "question" => 456,
- "questiondown" => 501, "quotedbl" => 291, "quotedblbase" => 273,
- "quotedblleft" => 273, "quotedblright" => 273, "quoteleft" => 182,
- "quoteright" => 182, "quotesinglbase" => 182, "quotesingle" => 157,
- "r" => 273, "registered" => 604, "ring" => 273, "s" => 410,
- "scaron" => 410, "section" => 456, "semicolon" => 228,
- "seven" => 456, "six" => 456, "slash" => 228, "space" => 228,
- "sterling" => 456, "t" => 228, "thorn" => 456, "three" => 456,
- "threequarters" => 684, "threesuperior" => 273, "tilde" => 273,
- "trademark" => 820, "two" => 456, "twosuperior" => 273, "u" => 456,
- "uacute" => 456, "ucircumflex" => 456, "udieresis" => 456,
- "ugrave" => 456, "underscore" => 456, "v" => 410, "w" => 592,
- "x" => 410, "y" => 410, "yacute" => 410, "ydieresis" => 410,
- "yen" => 456, "z" => 410, "zcaron" => 410, "zero" => 456,
- },
- kern => {
- "A" => {
- "C" => -30, "G" => -30, "O" => -30, "Q" => -30, "T" => -120,
- "U" => -50, "V" => -70, "W" => -50, "Y" => -100, "u" => -30,
- "v" => -40, "w" => -40, "y" => -40,
- },
- "B" => {
- "U" => -10, "comma" => -20, "period" => -20,
- },
- "C" => {
- "comma" => -30, "period" => -30,
- },
- "D" => {
- "A" => -40, "V" => -70, "W" => -40, "Y" => -90, "comma" => -70,
- "period" => -70,
- },
- "F" => {
- "A" => -80, "a" => -50, "comma" => -150, "e" => -30, "o" => -30,
- "period" => -150, "r" => -45,
- },
- "J" => {
- "A" => -20, "a" => -20, "comma" => -30, "period" => -30,
- "u" => -20,
- },
- "K" => {
- "O" => -50, "e" => -40, "o" => -40, "u" => -30, "y" => -50,
- },
- "L" => {
- "T" => -110, "V" => -110, "W" => -70, "Y" => -140,
- "quotedblright" => -140, "quoteright" => -160, "y" => -30,
- },
- "O" => {
- "A" => -20, "T" => -40, "V" => -50, "W" => -30, "X" => -60,
- "Y" => -70, "comma" => -40, "period" => -40,
- },
- "P" => {
- "A" => -120, "a" => -40, "comma" => -180, "e" => -50, "o" => -50,
- "period" => -180,
- },
- "Q" => {
- "U" => -10,
- },
- "R" => {
- "O" => -20, "T" => -30, "U" => -40, "V" => -50, "W" => -30,
- "Y" => -50,
- },
- "S" => {
- "comma" => -20, "period" => -20,
- },
- "T" => {
- "A" => -120, "O" => -40, "a" => -120, "colon" => -20,
- "comma" => -120, "e" => -120, "hyphen" => -140, "o" => -120,
- "period" => -120, "r" => -120, "semicolon" => -20, "u" => -120,
- "w" => -120, "y" => -120,
- },
- "U" => {
- "A" => -40, "comma" => -40, "period" => -40,
- },
- "V" => {
- "A" => -80, "G" => -40, "O" => -40, "a" => -70, "colon" => -40,
- "comma" => -125, "e" => -80, "hyphen" => -80, "o" => -80,
- "period" => -125, "semicolon" => -40, "u" => -70,
- },
- "W" => {
- "A" => -50, "O" => -20, "a" => -40, "comma" => -80, "e" => -30,
- "hyphen" => -40, "o" => -30, "period" => -80, "u" => -30,
- "y" => -20,
- },
- "Y" => {
- "A" => -110, "O" => -85, "a" => -140, "colon" => -60,
- "comma" => -140, "e" => -140, "hyphen" => -140, "i" => -20,
- "o" => -140, "period" => -140, "semicolon" => -60, "u" => -110,
- },
- "a" => {
- "v" => -20, "w" => -20, "y" => -30,
- },
- "b" => {
- "b" => -10, "comma" => -40, "l" => -20, "period" => -40,
- "u" => -20, "v" => -20, "y" => -20,
- },
- "c" => {
- "comma" => -15, "k" => -20,
- },
- "colon" => {
- "space" => -50,
- },
- "comma" => {
- "quotedblright" => -100, "quoteright" => -100,
- },
- "e" => {
- "comma" => -15, "period" => -15, "v" => -30, "w" => -20,
- "x" => -30, "y" => -20,
- },
- "f" => {
- "a" => -30, "comma" => -30, "dotlessi" => -28, "e" => -30,
- "o" => -30, "period" => -30, "quotedblright" => 60,
- "quoteright" => 50,
- },
- "g" => {
- "r" => -10,
- },
- "h" => {
- "y" => -30,
- },
- "k" => {
- "e" => -20, "o" => -20,
- },
- "m" => {
- "u" => -10, "y" => -15,
- },
- "n" => {
- "u" => -10, "v" => -20, "y" => -15,
- },
- "o" => {
- "comma" => -40, "period" => -40, "v" => -15, "w" => -15,
- "x" => -30, "y" => -30,
- },
- "oslash" => {
- "a" => -55, "b" => -55, "c" => -55, "comma" => -95, "d" => -55,
- "e" => -55, "f" => -55, "g" => -55, "h" => -55, "i" => -55,
- "j" => -55, "k" => -55, "l" => -55, "m" => -55, "n" => -55,
- "o" => -55, "p" => -55, "period" => -95, "q" => -55, "r" => -55,
- "s" => -55, "t" => -55, "u" => -55, "v" => -70, "w" => -70,
- "x" => -85, "y" => -70, "z" => -55,
- },
- "p" => {
- "comma" => -35, "period" => -35, "y" => -30,
- },
- "period" => {
- "quotedblright" => -100, "quoteright" => -100, "space" => -60,
- },
- "quotedblright" => {
- "space" => -40,
- },
- "quoteleft" => {
- "quoteleft" => -57,
- },
- "quoteright" => {
- "d" => -50, "quoteright" => -57, "r" => -50, "s" => -50,
- "space" => -70,
- },
- "r" => {
- "a" => -10, "colon" => 30, "comma" => -50, "i" => 15, "k" => 15,
- "l" => 15, "m" => 25, "n" => 25, "p" => 30, "period" => -50,
- "semicolon" => 30, "t" => 40, "u" => 15, "v" => 30, "y" => 30,
- },
- "s" => {
- "comma" => -15, "period" => -15, "w" => -30,
- },
- "semicolon" => {
- "space" => -50,
- },
- "space" => {
- "T" => -50, "V" => -50, "W" => -40, "Y" => -90,
- "quotedblleft" => -30, "quoteleft" => -60,
- },
- "v" => {
- "a" => -25, "comma" => -80, "e" => -25, "o" => -25,
- "period" => -80,
- },
- "w" => {
- "a" => -15, "comma" => -60, "e" => -10, "o" => -10,
- "period" => -60,
- },
- "x" => {
- "e" => -30,
- },
- "y" => {
- "a" => -20, "comma" => -100, "e" => -20, "o" => -20,
- "period" => -100,
- },
- "z" => {
- "e" => -15, "o" => -15,
- }
- }
-);
-1;
diff --git a/doc/metrics/pncb8a.ph b/doc/metrics/pncb8a.ph
deleted file mode 100644
index 8775f69e..00000000
--- a/doc/metrics/pncb8a.ph
+++ /dev/null
@@ -1,178 +0,0 @@
-%PS_NewCenturySchlbk_Bold = (
- name => 'NewCenturySchlbk-Bold',
- widths => {
- "A" => 759, "AE" => 981, "Aacute" => 759, "Acircumflex" => 759,
- "Adieresis" => 759, "Agrave" => 759, "Aring" => 759,
- "Atilde" => 759, "B" => 778, "C" => 778, "Ccedilla" => 778,
- "D" => 833, "E" => 759, "Eacute" => 759, "Ecircumflex" => 759,
- "Edieresis" => 759, "Egrave" => 759, "Eth" => 833, "F" => 722,
- "G" => 833, "H" => 870, "I" => 444, "Iacute" => 444,
- "Icircumflex" => 444, "Idieresis" => 444, "Igrave" => 444,
- "J" => 648, "K" => 815, "L" => 722, "Lslash" => 722, "M" => 981,
- "N" => 833, "Ntilde" => 833, "O" => 833, "OE" => 1000,
- "Oacute" => 833, "Ocircumflex" => 833, "Odieresis" => 833,
- "Ograve" => 833, "Oslash" => 833, "Otilde" => 833, "P" => 759,
- "Q" => 833, "R" => 815, "S" => 667, "Scaron" => 667, "T" => 722,
- "Thorn" => 759, "U" => 833, "Uacute" => 833, "Ucircumflex" => 833,
- "Udieresis" => 833, "Ugrave" => 833, "V" => 759, "W" => 981,
- "X" => 722, "Y" => 722, "Yacute" => 722, "Ydieresis" => 722,
- "Z" => 667, "Zcaron" => 667, "a" => 611, "aacute" => 611,
- "acircumflex" => 611, "acute" => 333, "adieresis" => 611,
- "ae" => 870, "agrave" => 611, "ampersand" => 852, "aring" => 611,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 500,
- "at" => 747, "atilde" => 611, "b" => 648, "backslash" => 606,
- "bar" => 606, "braceleft" => 389, "braceright" => 389,
- "bracketleft" => 389, "bracketright" => 389, "breve" => 333,
- "brokenbar" => 606, "bullet" => 606, "c" => 556, "caron" => 333,
- "ccedilla" => 556, "cedilla" => 333, "cent" => 574,
- "circumflex" => 333, "colon" => 278, "comma" => 278,
- "copyright" => 747, "currency" => 574, "d" => 667, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 606, "dollar" => 574, "dotaccent" => 333,
- "dotlessi" => 370, "e" => 574, "eacute" => 574,
- "ecircumflex" => 574, "edieresis" => 574, "egrave" => 574,
- "eight" => 574, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 611, "exclam" => 296,
- "exclamdown" => 296, "f" => 389, "fi" => 685, "five" => 574,
- "fl" => 685, "florin" => 574, "four" => 574, "fraction" => 167,
- "g" => 611, "germandbls" => 611, "grave" => 333, "greater" => 606,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 685,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 370,
- "iacute" => 370, "icircumflex" => 370, "idieresis" => 370,
- "igrave" => 370, "j" => 352, "k" => 667, "l" => 352, "less" => 606,
- "logicalnot" => 606, "lslash" => 352, "m" => 963, "macron" => 333,
- "minus" => 606, "mu" => 685, "multiply" => 606, "n" => 685,
- "nine" => 574, "ntilde" => 685, "numbersign" => 574, "o" => 611,
- "oacute" => 611, "ocircumflex" => 611, "odieresis" => 611,
- "oe" => 907, "ogonek" => 333, "ograve" => 611, "one" => 574,
- "onehalf" => 861, "onequarter" => 861, "onesuperior" => 344,
- "ordfeminine" => 367, "ordmasculine" => 367, "oslash" => 611,
- "otilde" => 611, "p" => 667, "paragraph" => 747,
- "parenleft" => 389, "parenright" => 389, "percent" => 833,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 606, "plusminus" => 606, "q" => 648, "question" => 500,
- "questiondown" => 500, "quotedbl" => 333, "quotedblbase" => 481,
- "quotedblleft" => 481, "quotedblright" => 481, "quoteleft" => 241,
- "quoteright" => 241, "quotesinglbase" => 241, "quotesingle" => 241,
- "r" => 519, "registered" => 747, "ring" => 333, "s" => 500,
- "scaron" => 500, "section" => 500, "semicolon" => 278,
- "seven" => 574, "six" => 574, "slash" => 278, "space" => 287,
- "sterling" => 574, "t" => 426, "thorn" => 667, "three" => 574,
- "threequarters" => 861, "threesuperior" => 344, "tilde" => 333,
- "trademark" => 1000, "two" => 574, "twosuperior" => 344,
- "u" => 685, "uacute" => 685, "ucircumflex" => 685,
- "udieresis" => 685, "ugrave" => 685, "underscore" => 500,
- "v" => 611, "w" => 889, "x" => 611, "y" => 611, "yacute" => 611,
- "ydieresis" => 611, "yen" => 574, "z" => 537, "zcaron" => 537,
- "zero" => 574,
- },
- kern => {
- "A" => {
- "T" => -55, "U" => -18, "V" => -74, "W" => -74, "Y" => -91,
- "quotedblright" => -74, "quoteright" => -74, "v" => -18,
- "w" => -18, "y" => -18,
- },
- "C" => {
- "comma" => -18, "period" => -18,
- },
- "D" => {
- "comma" => -25, "period" => -25,
- },
- "F" => {
- "a" => -74, "comma" => -125, "e" => -55, "i" => -18, "o" => -55,
- "period" => -125, "r" => -18,
- },
- "J" => {
- "A" => -18, "a" => -18, "comma" => -55, "e" => -18, "o" => -18,
- "period" => -55, "u" => -18,
- },
- "K" => {
- "u" => -18, "y" => -25,
- },
- "L" => {
- "T" => -100, "V" => -100, "W" => -74, "Y" => -74,
- "quotedblright" => -100, "quoteright" => -100, "y" => -25,
- },
- "N" => {
- "comma" => -18, "period" => -18,
- },
- "O" => {
- "T" => 10, "comma" => -25, "period" => -25,
- },
- "P" => {
- "A" => -74, "a" => -55, "comma" => -150, "e" => -55, "o" => -55,
- "period" => -150,
- },
- "S" => {
- "comma" => -18, "period" => -18,
- },
- "T" => {
- "A" => -55, "O" => 10, "a" => -74, "comma" => -100, "e" => -74,
- "hyphen" => -125, "i" => -18, "o" => -74, "period" => -100,
- "r" => -18, "u" => -18,
- },
- "U" => {
- "A" => -18, "comma" => -25, "period" => -25,
- },
- "V" => {
- "A" => -74, "a" => -74, "colon" => -37, "comma" => -125,
- "e" => -74, "hyphen" => -100, "i" => -18, "o" => -74,
- "period" => -125, "semicolon" => -37, "u" => -55,
- },
- "W" => {
- "A" => -74, "a" => -74, "colon" => -55, "comma" => -100,
- "e" => -74, "hyphen" => -100, "i" => -18, "o" => -74,
- "period" => -100, "semicolon" => -55, "u" => -37, "y" => -25,
- },
- "Y" => {
- "A" => -91, "a" => -100, "colon" => -25, "comma" => -100,
- "e" => -100, "hyphen" => -125, "i" => -18, "o" => -100,
- "period" => -100, "semicolon" => -25, "u" => -55,
- },
- "colon" => {
- "space" => -18,
- },
- "comma" => {
- "quotedblright" => -18, "quoteright" => -18, "space" => -18,
- },
- "f" => {
- "quotedblright" => 75, "quoteright" => 75,
- },
- "period" => {
- "quotedblright" => -18, "quoteright" => -18, "space" => -18,
- },
- "quotedblleft" => {
- "A" => -74,
- },
- "quotedblright" => {
- "space" => -18,
- },
- "quoteleft" => {
- "A" => -74,
- },
- "quoteright" => {
- "d" => -25, "s" => -25,
- },
- "r" => {
- "comma" => -74, "period" => -74,
- },
- "semicolon" => {
- "space" => -18,
- },
- "space" => {
- "A" => -18, "T" => -18, "V" => -18, "W" => -18, "Y" => -18,
- "quotedblleft" => -18, "quoteleft" => -18,
- },
- "v" => {
- "comma" => -100, "period" => -100,
- },
- "w" => {
- "comma" => -100, "period" => -100,
- },
- "y" => {
- "comma" => -100, "period" => -100,
- }
- }
-);
-1;
diff --git a/doc/metrics/pncbi8a.ph b/doc/metrics/pncbi8a.ph
deleted file mode 100644
index 1043aea9..00000000
--- a/doc/metrics/pncbi8a.ph
+++ /dev/null
@@ -1,248 +0,0 @@
-%PS_NewCenturySchlbk_BoldItalic = (
- name => 'NewCenturySchlbk-BoldItalic',
- widths => {
- "A" => 741, "AE" => 889, "Aacute" => 741, "Acircumflex" => 741,
- "Adieresis" => 741, "Agrave" => 741, "Aring" => 741,
- "Atilde" => 741, "B" => 759, "C" => 759, "Ccedilla" => 759,
- "D" => 833, "E" => 741, "Eacute" => 741, "Ecircumflex" => 741,
- "Edieresis" => 741, "Egrave" => 741, "Eth" => 833, "F" => 704,
- "G" => 815, "H" => 870, "I" => 444, "Iacute" => 444,
- "Icircumflex" => 444, "Idieresis" => 444, "Igrave" => 444,
- "J" => 667, "K" => 778, "L" => 704, "Lslash" => 704, "M" => 944,
- "N" => 852, "Ntilde" => 852, "O" => 833, "OE" => 963,
- "Oacute" => 833, "Ocircumflex" => 833, "Odieresis" => 833,
- "Ograve" => 833, "Oslash" => 833, "Otilde" => 833, "P" => 741,
- "Q" => 833, "R" => 796, "S" => 685, "Scaron" => 685, "T" => 722,
- "Thorn" => 741, "U" => 833, "Uacute" => 833, "Ucircumflex" => 833,
- "Udieresis" => 833, "Ugrave" => 833, "V" => 741, "W" => 944,
- "X" => 741, "Y" => 704, "Yacute" => 704, "Ydieresis" => 704,
- "Z" => 704, "Zcaron" => 704, "a" => 667, "aacute" => 667,
- "acircumflex" => 667, "acute" => 333, "adieresis" => 667,
- "ae" => 815, "agrave" => 667, "ampersand" => 889, "aring" => 667,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 500,
- "at" => 747, "atilde" => 667, "b" => 611, "backslash" => 606,
- "bar" => 606, "braceleft" => 407, "braceright" => 407,
- "bracketleft" => 407, "bracketright" => 407, "breve" => 333,
- "brokenbar" => 606, "bullet" => 606, "c" => 537, "caron" => 333,
- "ccedilla" => 537, "cedilla" => 333, "cent" => 574,
- "circumflex" => 333, "colon" => 287, "comma" => 287,
- "copyright" => 747, "currency" => 574, "d" => 667, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 606, "dollar" => 574, "dotaccent" => 333,
- "dotlessi" => 389, "e" => 519, "eacute" => 519,
- "ecircumflex" => 519, "edieresis" => 519, "egrave" => 519,
- "eight" => 574, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 574, "exclam" => 333,
- "exclamdown" => 333, "f" => 389, "fi" => 685, "five" => 574,
- "fl" => 685, "florin" => 574, "four" => 574, "fraction" => 167,
- "g" => 611, "germandbls" => 574, "grave" => 333, "greater" => 606,
- "guillemotleft" => 481, "guillemotright" => 481,
- "guilsinglleft" => 278, "guilsinglright" => 278, "h" => 685,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 389,
- "iacute" => 389, "icircumflex" => 389, "idieresis" => 389,
- "igrave" => 389, "j" => 370, "k" => 648, "l" => 389, "less" => 606,
- "logicalnot" => 606, "lslash" => 389, "m" => 944, "macron" => 333,
- "minus" => 606, "mu" => 685, "multiply" => 606, "n" => 685,
- "nine" => 574, "ntilde" => 685, "numbersign" => 574, "o" => 574,
- "oacute" => 574, "ocircumflex" => 574, "odieresis" => 574,
- "oe" => 852, "ogonek" => 333, "ograve" => 574, "one" => 574,
- "onehalf" => 861, "onequarter" => 861, "onesuperior" => 344,
- "ordfeminine" => 412, "ordmasculine" => 356, "oslash" => 574,
- "otilde" => 574, "p" => 648, "paragraph" => 650,
- "parenleft" => 407, "parenright" => 407, "percent" => 889,
- "period" => 287, "periodcentered" => 287, "perthousand" => 1167,
- "plus" => 606, "plusminus" => 606, "q" => 630, "question" => 481,
- "questiondown" => 481, "quotedbl" => 400, "quotedblbase" => 481,
- "quotedblleft" => 481, "quotedblright" => 481, "quoteleft" => 259,
- "quoteright" => 259, "quotesinglbase" => 259, "quotesingle" => 287,
- "r" => 519, "registered" => 747, "ring" => 333, "s" => 481,
- "scaron" => 481, "section" => 500, "semicolon" => 287,
- "seven" => 574, "six" => 574, "slash" => 278, "space" => 287,
- "sterling" => 574, "t" => 407, "thorn" => 648, "three" => 574,
- "threequarters" => 861, "threesuperior" => 344, "tilde" => 333,
- "trademark" => 950, "two" => 574, "twosuperior" => 344, "u" => 685,
- "uacute" => 685, "ucircumflex" => 685, "udieresis" => 685,
- "ugrave" => 685, "underscore" => 500, "v" => 556, "w" => 833,
- "x" => 574, "y" => 519, "yacute" => 519, "ydieresis" => 519,
- "yen" => 574, "z" => 519, "zcaron" => 519, "zero" => 574,
- },
- kern => {
- "A" => {
- "C" => 5, "G" => 5, "O" => 5, "Q" => 5, "T" => 5, "U" => -32,
- "V" => -100, "W" => -84, "Y" => -70, "quotedblright" => -95,
- "quoteright" => -95, "u" => -15, "v" => -10, "w" => -25,
- "y" => -33,
- },
- "B" => {
- "A" => -11, "U" => 15, "comma" => 15, "period" => 15,
- },
- "C" => {
- "A" => -5,
- },
- "D" => {
- "V" => -18, "W" => -11, "Y" => 6, "comma" => -11,
- "period" => -11,
- },
- "F" => {
- "A" => -79, "a" => -47, "comma" => -91, "e" => -41, "i" => -41,
- "o" => -47, "period" => -91, "r" => -27,
- },
- "J" => {
- "A" => -30, "a" => -40, "comma" => -74, "e" => -33, "o" => -40,
- "period" => -74, "u" => -39,
- },
- "K" => {
- "e" => 18, "o" => -4, "u" => -4, "y" => -48,
- },
- "L" => {
- "T" => -75, "V" => -97, "W" => -69, "Y" => -55,
- "quotedblright" => -100, "quoteright" => -100, "y" => -30,
- },
- "N" => {
- "comma" => -49, "period" => -49,
- },
- "O" => {
- "A" => -5, "V" => -24, "W" => -15, "X" => -18, "comma" => -18,
- "period" => -18,
- },
- "P" => {
- "A" => -80, "a" => -40, "comma" => -100, "e" => -33, "o" => -40,
- "period" => -100,
- },
- "R" => {
- "V" => -24, "W" => -14,
- },
- "S" => {
- "comma" => -18, "period" => -18,
- },
- "T" => {
- "A" => -60, "O" => 11, "a" => -40, "comma" => -55, "e" => -33,
- "h" => -9, "hyphen" => -75, "i" => -22, "o" => -40,
- "period" => -55, "r" => -9, "u" => -22, "w" => -30, "y" => -30,
- },
- "U" => {
- "A" => -42, "comma" => -25, "period" => -25,
- },
- "V" => {
- "A" => -100, "G" => -12, "O" => -19, "a" => -55, "colon" => -49,
- "comma" => -94, "e" => -66, "hyphen" => -94, "i" => -35,
- "o" => -71, "period" => -94, "semicolon" => 6, "u" => -70,
- },
- "W" => {
- "A" => -66, "O" => -11, "a" => -33, "colon" => -22,
- "comma" => -86, "e" => -39, "h" => 5, "hyphen" => -61,
- "i" => -27, "o" => -33, "period" => -86, "semicolon" => -22,
- "u" => -25, "y" => -41,
- },
- "Y" => {
- "A" => -79, "a" => -77, "colon" => -55, "comma" => -91,
- "e" => -71, "hyphen" => -91, "i" => -22, "o" => -77,
- "period" => -91, "semicolon" => -55, "u" => -58,
- },
- "a" => {
- "v" => 6, "w" => -8, "y" => -8,
- },
- "b" => {
- "comma" => 6, "period" => 6, "v" => 8, "y" => -6,
- },
- "c" => {
- "comma" => -8, "h" => -18, "k" => -8, "l" => -13, "period" => -8,
- "y" => -20,
- },
- "colon" => {
- "space" => -18,
- },
- "comma" => {
- "quotedblright" => -18, "quoteright" => -18, "space" => -18,
- },
- "d" => {
- "w" => -15, "y" => -15,
- },
- "e" => {
- "b" => -8, "g" => -4, "p" => -11, "w" => -15, "x" => -5,
- "y" => -15,
- },
- "f" => {
- "a" => 8, "comma" => -28, "dotlessi" => 7, "e" => 14, "i" => 7,
- "l" => 7, "o" => 7, "period" => -28, "quotedblright" => 105,
- "quoteright" => 105,
- },
- "g" => {
- "comma" => -5, "period" => -5, "r" => 11, "y" => -11,
- },
- "h" => {
- "y" => -20,
- },
- "i" => {
- "v" => 7,
- },
- "k" => {
- "e" => -16, "o" => -22, "y" => -15,
- },
- "l" => {
- "w" => -7, "y" => -7,
- },
- "m" => {
- "u" => -11, "y" => -20,
- },
- "n" => {
- "u" => -11, "v" => -7, "y" => -20,
- },
- "o" => {
- "v" => 6, "w" => -8, "y" => -11,
- },
- "p" => {
- "comma" => 8, "period" => 8, "y" => -4,
- },
- "period" => {
- "quotedblright" => -18, "quoteright" => -18, "space" => -18,
- },
- "quotedblleft" => {
- "A" => -60, "quoteleft" => 20,
- },
- "quotedblright" => {
- "space" => -18,
- },
- "quoteleft" => {
- "A" => -80,
- },
- "quoteright" => {
- "d" => -41, "l" => -22, "r" => -9, "s" => -46, "t" => -22,
- "v" => -16,
- },
- "r" => {
- "a" => -11, "colon" => 9, "comma" => -90, "d" => -7, "e" => -7,
- "g" => -11, "hyphen" => -16, "i" => -14, "k" => 9, "l" => -14,
- "o" => -11, "p" => -17, "period" => -90, "quoteright" => 9,
- "s" => -20, "semicolon" => 9, "t" => -11, "u" => -11, "v" => -7,
- "y" => -20,
- },
- "s" => {
- "comma" => 11, "period" => 11,
- },
- "semicolon" => {
- "space" => -18,
- },
- "space" => {
- "A" => -22, "T" => -18, "V" => -24, "W" => -33, "Y" => -18,
- "quotedblleft" => -18,
- },
- "v" => {
- "a" => -6, "comma" => -11, "o" => -6, "period" => -11,
- },
- "w" => {
- "a" => -14, "comma" => -17, "e" => -8, "o" => -14,
- "period" => -17,
- },
- "x" => {
- "e" => 5,
- },
- "y" => {
- "a" => 8, "comma" => -25, "e" => 15, "o" => 8, "period" => -25,
- },
- "z" => {
- "e" => 4,
- }
- }
-);
-1;
diff --git a/doc/metrics/pncr8a.ph b/doc/metrics/pncr8a.ph
deleted file mode 100644
index 03097d9c..00000000
--- a/doc/metrics/pncr8a.ph
+++ /dev/null
@@ -1,213 +0,0 @@
-%PS_NewCenturySchlbk_Roman = (
- name => 'NewCenturySchlbk-Roman',
- widths => {
- "A" => 722, "AE" => 1000, "Aacute" => 722, "Acircumflex" => 722,
- "Adieresis" => 722, "Agrave" => 722, "Aring" => 722,
- "Atilde" => 722, "B" => 722, "C" => 722, "Ccedilla" => 722,
- "D" => 778, "E" => 722, "Eacute" => 722, "Ecircumflex" => 722,
- "Edieresis" => 722, "Egrave" => 722, "Eth" => 778, "F" => 667,
- "G" => 778, "H" => 833, "I" => 407, "Iacute" => 407,
- "Icircumflex" => 407, "Idieresis" => 407, "Igrave" => 407,
- "J" => 556, "K" => 778, "L" => 667, "Lslash" => 667, "M" => 944,
- "N" => 815, "Ntilde" => 815, "O" => 778, "OE" => 1000,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 667,
- "Q" => 778, "R" => 722, "S" => 630, "Scaron" => 630, "T" => 667,
- "Thorn" => 667, "U" => 815, "Uacute" => 815, "Ucircumflex" => 815,
- "Udieresis" => 815, "Ugrave" => 815, "V" => 722, "W" => 981,
- "X" => 704, "Y" => 704, "Yacute" => 704, "Ydieresis" => 704,
- "Z" => 611, "Zcaron" => 611, "a" => 556, "aacute" => 556,
- "acircumflex" => 556, "acute" => 333, "adieresis" => 556,
- "ae" => 796, "agrave" => 556, "ampersand" => 815, "aring" => 556,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 500,
- "at" => 737, "atilde" => 556, "b" => 556, "backslash" => 606,
- "bar" => 606, "braceleft" => 333, "braceright" => 333,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 606, "bullet" => 606, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 556,
- "circumflex" => 333, "colon" => 278, "comma" => 278,
- "copyright" => 737, "currency" => 556, "d" => 574, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 606, "dollar" => 556, "dotaccent" => 333,
- "dotlessi" => 315, "e" => 500, "eacute" => 500,
- "ecircumflex" => 500, "edieresis" => 500, "egrave" => 500,
- "eight" => 556, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 556, "equal" => 606, "eth" => 500, "exclam" => 296,
- "exclamdown" => 296, "f" => 333, "fi" => 611, "five" => 556,
- "fl" => 611, "florin" => 556, "four" => 556, "fraction" => 167,
- "g" => 537, "germandbls" => 574, "grave" => 333, "greater" => 606,
- "guillemotleft" => 426, "guillemotright" => 426,
- "guilsinglleft" => 259, "guilsinglright" => 259, "h" => 611,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 315,
- "iacute" => 315, "icircumflex" => 315, "idieresis" => 315,
- "igrave" => 315, "j" => 296, "k" => 593, "l" => 315, "less" => 606,
- "logicalnot" => 606, "lslash" => 315, "m" => 889, "macron" => 333,
- "minus" => 606, "mu" => 611, "multiply" => 606, "n" => 611,
- "nine" => 556, "ntilde" => 611, "numbersign" => 556, "o" => 500,
- "oacute" => 500, "ocircumflex" => 500, "odieresis" => 500,
- "oe" => 833, "ogonek" => 333, "ograve" => 500, "one" => 556,
- "onehalf" => 834, "onequarter" => 834, "onesuperior" => 333,
- "ordfeminine" => 334, "ordmasculine" => 300, "oslash" => 500,
- "otilde" => 500, "p" => 574, "paragraph" => 606,
- "parenleft" => 333, "parenright" => 333, "percent" => 833,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 606, "plusminus" => 606, "q" => 556, "question" => 444,
- "questiondown" => 444, "quotedbl" => 389, "quotedblbase" => 389,
- "quotedblleft" => 389, "quotedblright" => 389, "quoteleft" => 204,
- "quoteright" => 204, "quotesinglbase" => 204, "quotesingle" => 204,
- "r" => 444, "registered" => 737, "ring" => 333, "s" => 463,
- "scaron" => 463, "section" => 500, "semicolon" => 278,
- "seven" => 556, "six" => 556, "slash" => 278, "space" => 278,
- "sterling" => 556, "t" => 389, "thorn" => 574, "three" => 556,
- "threequarters" => 834, "threesuperior" => 333, "tilde" => 333,
- "trademark" => 1000, "two" => 556, "twosuperior" => 333,
- "u" => 611, "uacute" => 611, "ucircumflex" => 611,
- "udieresis" => 611, "ugrave" => 611, "underscore" => 500,
- "v" => 537, "w" => 778, "x" => 537, "y" => 537, "yacute" => 537,
- "ydieresis" => 537, "yen" => 556, "z" => 481, "zcaron" => 481,
- "zero" => 556,
- },
- kern => {
- "A" => {
- "T" => -18, "U" => -30, "V" => -75, "W" => -50, "Y" => -75,
- "quotedblright" => -74, "quoteright" => -74, "v" => -37,
- "w" => -25, "y" => -37,
- },
- "B" => {
- "A" => -18, "comma" => -37, "period" => -37,
- },
- "C" => {
- "A" => -18, "comma" => -37, "period" => -37,
- },
- "D" => {
- "V" => -18, "Y" => -18, "comma" => -37, "period" => -37,
- },
- "F" => {
- "A" => -50, "a" => -65, "comma" => -125, "e" => -55, "i" => -10,
- "o" => -55, "period" => -125, "r" => -10,
- },
- "G" => {
- "comma" => -37, "period" => -37,
- },
- "J" => {
- "A" => -18, "a" => -25, "comma" => -74, "e" => -25, "o" => -25,
- "period" => -74, "u" => -25,
- },
- "K" => {
- "e" => 10, "o" => 10, "y" => -25,
- },
- "L" => {
- "T" => -75, "V" => -91, "W" => -74, "Y" => -74,
- "quotedblright" => -100, "quoteright" => -100, "y" => -25,
- },
- "N" => {
- "comma" => -55, "period" => -55,
- },
- "O" => {
- "T" => 10, "V" => -18, "Y" => -18, "comma" => -37,
- "period" => -37,
- },
- "P" => {
- "A" => -55, "a" => -37, "comma" => -125, "e" => -37, "o" => -37,
- "period" => -125,
- },
- "Q" => {
- "comma" => -25, "period" => -25,
- },
- "S" => {
- "comma" => -37, "period" => -37,
- },
- "T" => {
- "A" => -18, "O" => 10, "a" => -55, "colon" => -37,
- "comma" => -125, "e" => -55, "hyphen" => -100, "o" => -55,
- "period" => -125, "semicolon" => -37,
- },
- "U" => {
- "A" => -30, "comma" => -100, "period" => -100,
- },
- "V" => {
- "A" => -74, "O" => -18, "a" => -85, "colon" => -75,
- "comma" => -125, "e" => -75, "hyphen" => -100, "i" => -18,
- "o" => -75, "period" => -125, "semicolon" => -75, "u" => -75,
- },
- "W" => {
- "A" => -50, "a" => -75, "colon" => -100, "comma" => -125,
- "e" => -60, "hyphen" => -100, "i" => -18, "o" => -60,
- "period" => -125, "semicolon" => -100, "u" => -55, "y" => -55,
- },
- "Y" => {
- "A" => -75, "O" => -18, "a" => -100, "colon" => -75,
- "comma" => -100, "e" => -100, "hyphen" => -125, "i" => -18,
- "o" => -100, "period" => -100, "semicolon" => -75, "u" => -91,
- },
- "a" => {
- "v" => -10, "w" => -10, "y" => -10,
- },
- "b" => {
- "comma" => -18, "period" => -18,
- },
- "c" => {
- "comma" => -18, "h" => -7, "k" => -7, "l" => -7, "period" => -18,
- },
- "colon" => {
- "space" => -37,
- },
- "comma" => {
- "quotedblright" => -37, "quoteright" => -37, "space" => -37,
- },
- "e" => {
- "comma" => -18, "period" => -18,
- },
- "f" => {
- "comma" => -37, "period" => -37, "quotedblright" => 100,
- "quoteright" => 100,
- },
- "g" => {
- "comma" => -25, "period" => -25,
- },
- "o" => {
- "comma" => -18, "period" => -18,
- },
- "p" => {
- "comma" => -18, "period" => -18,
- },
- "period" => {
- "quotedblright" => -37, "quoteright" => -37, "space" => -37,
- },
- "quotedblleft" => {
- "A" => -74,
- },
- "quotedblright" => {
- "space" => -37,
- },
- "quoteleft" => {
- "A" => -74, "quoteleft" => -25,
- },
- "quoteright" => {
- "d" => -37, "quoteright" => -25, "s" => -25,
- },
- "r" => {
- "comma" => -100, "hyphen" => -37, "period" => -100,
- },
- "s" => {
- "comma" => -25, "period" => -25,
- },
- "semicolon" => {
- "space" => -37,
- },
- "space" => {
- "A" => -37, "T" => -37, "V" => -37, "W" => -37, "Y" => -37,
- "quotedblleft" => -37, "quoteleft" => -37,
- },
- "v" => {
- "comma" => -125, "period" => -125,
- },
- "w" => {
- "a" => -18, "comma" => -125, "period" => -125,
- },
- "y" => {
- "comma" => -125, "period" => -125,
- }
- }
-);
-1;
diff --git a/doc/metrics/pncri8a.ph b/doc/metrics/pncri8a.ph
deleted file mode 100644
index 1b2c8430..00000000
--- a/doc/metrics/pncri8a.ph
+++ /dev/null
@@ -1,216 +0,0 @@
-%PS_NewCenturySchlbk_Italic = (
- name => 'NewCenturySchlbk-Italic',
- widths => {
- "A" => 704, "AE" => 870, "Aacute" => 704, "Acircumflex" => 704,
- "Adieresis" => 704, "Agrave" => 704, "Aring" => 704,
- "Atilde" => 704, "B" => 722, "C" => 722, "Ccedilla" => 722,
- "D" => 778, "E" => 722, "Eacute" => 722, "Ecircumflex" => 722,
- "Edieresis" => 722, "Egrave" => 722, "Eth" => 778, "F" => 667,
- "G" => 778, "H" => 833, "I" => 407, "Iacute" => 407,
- "Icircumflex" => 407, "Idieresis" => 407, "Igrave" => 407,
- "J" => 611, "K" => 741, "L" => 667, "Lslash" => 667, "M" => 944,
- "N" => 815, "Ntilde" => 815, "O" => 778, "OE" => 981,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 667,
- "Q" => 778, "R" => 741, "S" => 667, "Scaron" => 667, "T" => 685,
- "Thorn" => 667, "U" => 815, "Uacute" => 815, "Ucircumflex" => 815,
- "Udieresis" => 815, "Ugrave" => 815, "V" => 704, "W" => 926,
- "X" => 704, "Y" => 685, "Yacute" => 685, "Ydieresis" => 685,
- "Z" => 667, "Zcaron" => 667, "a" => 574, "aacute" => 574,
- "acircumflex" => 574, "acute" => 333, "adieresis" => 574,
- "ae" => 722, "agrave" => 574, "ampersand" => 852, "aring" => 574,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 500,
- "at" => 747, "atilde" => 574, "b" => 556, "backslash" => 606,
- "bar" => 606, "braceleft" => 333, "braceright" => 333,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 606, "bullet" => 606, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 556,
- "circumflex" => 333, "colon" => 278, "comma" => 278,
- "copyright" => 747, "currency" => 556, "d" => 611, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 606, "dollar" => 556, "dotaccent" => 333,
- "dotlessi" => 333, "e" => 444, "eacute" => 444,
- "ecircumflex" => 444, "edieresis" => 444, "egrave" => 444,
- "eight" => 556, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 500, "exclam" => 333,
- "exclamdown" => 333, "f" => 333, "fi" => 611, "five" => 556,
- "fl" => 611, "florin" => 556, "four" => 556, "fraction" => 167,
- "g" => 537, "germandbls" => 556, "grave" => 333, "greater" => 606,
- "guillemotleft" => 426, "guillemotright" => 426,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 611,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 333,
- "iacute" => 333, "icircumflex" => 333, "idieresis" => 333,
- "igrave" => 333, "j" => 315, "k" => 556, "l" => 333, "less" => 606,
- "logicalnot" => 606, "lslash" => 333, "m" => 889, "macron" => 333,
- "minus" => 606, "mu" => 611, "multiply" => 606, "n" => 611,
- "nine" => 556, "ntilde" => 611, "numbersign" => 556, "o" => 500,
- "oacute" => 500, "ocircumflex" => 500, "odieresis" => 500,
- "oe" => 778, "ogonek" => 333, "ograve" => 500, "one" => 556,
- "onehalf" => 834, "onequarter" => 834, "onesuperior" => 333,
- "ordfeminine" => 422, "ordmasculine" => 372, "oslash" => 500,
- "otilde" => 500, "p" => 574, "paragraph" => 650,
- "parenleft" => 333, "parenright" => 333, "percent" => 833,
- "period" => 278, "periodcentered" => 278, "perthousand" => 1000,
- "plus" => 606, "plusminus" => 606, "q" => 556, "question" => 444,
- "questiondown" => 444, "quotedbl" => 400, "quotedblbase" => 389,
- "quotedblleft" => 389, "quotedblright" => 389, "quoteleft" => 204,
- "quoteright" => 204, "quotesinglbase" => 204, "quotesingle" => 278,
- "r" => 444, "registered" => 747, "ring" => 333, "s" => 444,
- "scaron" => 444, "section" => 500, "semicolon" => 278,
- "seven" => 556, "six" => 556, "slash" => 606, "space" => 278,
- "sterling" => 556, "t" => 352, "thorn" => 574, "three" => 556,
- "threequarters" => 834, "threesuperior" => 333, "tilde" => 333,
- "trademark" => 950, "two" => 556, "twosuperior" => 333, "u" => 611,
- "uacute" => 611, "ucircumflex" => 611, "udieresis" => 611,
- "ugrave" => 611, "underscore" => 500, "v" => 519, "w" => 778,
- "x" => 500, "y" => 500, "yacute" => 500, "ydieresis" => 500,
- "yen" => 556, "z" => 463, "zcaron" => 463, "zero" => 556,
- },
- kern => {
- "A" => {
- "C" => -18, "G" => -18, "O" => -18, "Q" => -18, "T" => -30,
- "U" => -37, "V" => -74, "W" => -74, "Y" => -55,
- "quotedblright" => -125, "quoteright" => -125, "u" => -18,
- "v" => -18, "w" => -18, "y" => -55,
- },
- "B" => {
- "comma" => -50, "period" => -50,
- },
- "C" => {
- "comma" => -50, "period" => -50,
- },
- "D" => {
- "V" => -18, "W" => -18, "Y" => -18, "comma" => -50,
- "period" => -50,
- },
- "F" => {
- "A" => -35, "a" => -55, "comma" => -125, "e" => -55, "i" => -10,
- "o" => -55, "period" => -125, "r" => -55,
- },
- "G" => {
- "comma" => -50, "period" => -50,
- },
- "J" => {
- "A" => -18, "a" => -37, "comma" => -100, "e" => -37, "o" => -37,
- "period" => -100, "u" => -18,
- },
- "L" => {
- "T" => -100, "V" => -100, "W" => -100, "Y" => -100,
- "quotedblright" => -125, "quoteright" => -125, "y" => -50,
- },
- "N" => {
- "comma" => -60, "period" => -60,
- },
- "O" => {
- "T" => 18, "V" => -18, "X" => -18, "Y" => -18, "comma" => -50,
- "period" => -50,
- },
- "P" => {
- "A" => -50, "a" => -55, "comma" => -125, "e" => -55, "o" => -55,
- "period" => -125,
- },
- "Q" => {
- "comma" => -20, "period" => -20,
- },
- "R" => {
- "U" => -18, "V" => -18, "W" => -18, "Y" => -18,
- },
- "S" => {
- "comma" => -50, "period" => -50,
- },
- "T" => {
- "O" => 18, "a" => -74, "colon" => -50, "comma" => -100,
- "e" => -74, "h" => -25, "hyphen" => -100, "i" => -18, "o" => -74,
- "period" => -100, "r" => -50, "semicolon" => -50, "u" => -50,
- "w" => -50, "y" => -50,
- },
- "U" => {
- "A" => -18, "comma" => -100, "period" => -100,
- },
- "V" => {
- "A" => -37, "a" => -75, "colon" => -75, "comma" => -100,
- "e" => -75, "hyphen" => -100, "i" => -50, "o" => -75,
- "period" => -100, "semicolon" => -75, "u" => -75,
- },
- "W" => {
- "A" => -55, "a" => -55, "colon" => -75, "comma" => -100,
- "e" => -55, "h" => -20, "hyphen" => -75, "i" => -20, "o" => -55,
- "period" => -100, "semicolon" => -75, "u" => -55, "y" => -55,
- },
- "Y" => {
- "A" => -55, "a" => -100, "colon" => -75, "comma" => -100,
- "e" => -100, "hyphen" => -100, "i" => -25, "o" => -100,
- "period" => -100, "semicolon" => -75, "u" => -100,
- },
- "b" => {
- "b" => -10, "comma" => -50, "period" => -50,
- },
- "c" => {
- "comma" => -50, "h" => -18, "k" => -18, "period" => -50,
- },
- "colon" => {
- "space" => -37,
- },
- "comma" => {
- "quotedblright" => -37, "quoteright" => -37, "space" => -37,
- },
- "e" => {
- "comma" => -37, "period" => -37,
- },
- "f" => {
- "comma" => -75, "o" => -10, "period" => -75,
- "quotedblright" => 75, "quoteright" => 75,
- },
- "g" => {
- "comma" => -50, "period" => -50,
- },
- "l" => {
- "y" => -10,
- },
- "o" => {
- "comma" => -50, "period" => -50,
- },
- "p" => {
- "comma" => -50, "period" => -50,
- },
- "period" => {
- "quotedblright" => -37, "quoteright" => -37, "space" => -37,
- },
- "quotedblleft" => {
- "A" => -75,
- },
- "quotedblright" => {
- "space" => -37,
- },
- "quoteleft" => {
- "A" => -75, "quoteleft" => -37,
- },
- "quoteright" => {
- "d" => -37, "quoteright" => -37, "s" => -25,
- },
- "r" => {
- "colon" => -25, "comma" => -125, "hyphen" => -75, "k" => -18,
- "period" => -125, "s" => -10, "semicolon" => -25,
- },
- "s" => {
- "comma" => -50, "period" => -50,
- },
- "semicolon" => {
- "space" => -37,
- },
- "space" => {
- "A" => -37, "T" => -37, "V" => -37, "W" => -37, "Y" => -37,
- "quotedblleft" => -37, "quoteleft" => -37,
- },
- "v" => {
- "comma" => -75, "period" => -75,
- },
- "w" => {
- "comma" => -75, "period" => -75,
- },
- "y" => {
- "comma" => -75, "period" => -75,
- }
- }
-);
-1;
diff --git a/doc/metrics/pplb8a.ph b/doc/metrics/pplb8a.ph
deleted file mode 100644
index 52b1f3b8..00000000
--- a/doc/metrics/pplb8a.ph
+++ /dev/null
@@ -1,139 +0,0 @@
-%PS_Palatino_Bold = (
- name => 'Palatino-Bold',
- widths => {
- "A" => 778, "AE" => 1000, "Aacute" => 778, "Acircumflex" => 778,
- "Adieresis" => 778, "Agrave" => 778, "Aring" => 778,
- "Atilde" => 778, "B" => 667, "C" => 722, "Ccedilla" => 722,
- "D" => 833, "E" => 611, "Eacute" => 611, "Ecircumflex" => 611,
- "Edieresis" => 611, "Egrave" => 611, "Eth" => 833, "F" => 556,
- "G" => 833, "H" => 833, "I" => 389, "Iacute" => 389,
- "Icircumflex" => 389, "Idieresis" => 389, "Igrave" => 389,
- "J" => 389, "K" => 778, "L" => 611, "Lslash" => 611, "M" => 1000,
- "N" => 833, "Ntilde" => 833, "O" => 833, "OE" => 1000,
- "Oacute" => 833, "Ocircumflex" => 833, "Odieresis" => 833,
- "Ograve" => 833, "Oslash" => 833, "Otilde" => 833, "P" => 611,
- "Q" => 833, "R" => 722, "S" => 611, "Scaron" => 611, "T" => 667,
- "Thorn" => 611, "U" => 778, "Uacute" => 778, "Ucircumflex" => 778,
- "Udieresis" => 778, "Ugrave" => 778, "V" => 778, "W" => 1000,
- "X" => 667, "Y" => 667, "Yacute" => 667, "Ydieresis" => 667,
- "Z" => 667, "Zcaron" => 667, "a" => 500, "aacute" => 500,
- "acircumflex" => 500, "acute" => 333, "adieresis" => 500,
- "ae" => 778, "agrave" => 500, "ampersand" => 833, "aring" => 500,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 444,
- "at" => 747, "atilde" => 500, "b" => 611, "backslash" => 606,
- "bar" => 606, "braceleft" => 310, "braceright" => 310,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 606, "bullet" => 606, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 500,
- "circumflex" => 333, "colon" => 250, "comma" => 250,
- "copyright" => 747, "currency" => 500, "d" => 611, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 606, "dollar" => 500, "dotaccent" => 333,
- "dotlessi" => 333, "e" => 500, "eacute" => 500,
- "ecircumflex" => 500, "edieresis" => 500, "egrave" => 500,
- "eight" => 500, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 556, "exclam" => 278,
- "exclamdown" => 278, "f" => 389, "fi" => 611, "five" => 500,
- "fl" => 611, "florin" => 500, "four" => 500, "fraction" => 167,
- "g" => 556, "germandbls" => 611, "grave" => 333, "greater" => 606,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 389, "guilsinglright" => 389, "h" => 611,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 333,
- "iacute" => 333, "icircumflex" => 333, "idieresis" => 333,
- "igrave" => 333, "j" => 333, "k" => 611, "l" => 333, "less" => 606,
- "logicalnot" => 606, "lslash" => 333, "m" => 889, "macron" => 333,
- "minus" => 606, "mu" => 611, "multiply" => 606, "n" => 611,
- "nine" => 500, "ntilde" => 611, "numbersign" => 500, "o" => 556,
- "oacute" => 556, "ocircumflex" => 556, "odieresis" => 556,
- "oe" => 833, "ogonek" => 333, "ograve" => 556, "one" => 500,
- "onehalf" => 750, "onequarter" => 750, "onesuperior" => 300,
- "ordfeminine" => 438, "ordmasculine" => 488, "oslash" => 556,
- "otilde" => 556, "p" => 611, "paragraph" => 641,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 250, "periodcentered" => 250, "perthousand" => 1000,
- "plus" => 606, "plusminus" => 606, "q" => 611, "question" => 444,
- "questiondown" => 444, "quotedbl" => 402, "quotedblbase" => 500,
- "quotedblleft" => 500, "quotedblright" => 500, "quoteleft" => 278,
- "quoteright" => 278, "quotesinglbase" => 333, "quotesingle" => 227,
- "r" => 389, "registered" => 747, "ring" => 333, "s" => 444,
- "scaron" => 444, "section" => 500, "semicolon" => 250,
- "seven" => 500, "six" => 500, "slash" => 296, "space" => 250,
- "sterling" => 500, "t" => 333, "thorn" => 611, "three" => 500,
- "threequarters" => 750, "threesuperior" => 300, "tilde" => 333,
- "trademark" => 998, "two" => 500, "twosuperior" => 300, "u" => 611,
- "uacute" => 611, "ucircumflex" => 611, "udieresis" => 611,
- "ugrave" => 611, "underscore" => 500, "v" => 556, "w" => 833,
- "x" => 500, "y" => 556, "yacute" => 556, "ydieresis" => 556,
- "yen" => 500, "z" => 500, "zcaron" => 500, "zero" => 500,
- },
- kern => {
- "A" => {
- "T" => -92, "V" => -129, "W" => -90, "Y" => -111,
- "quoteright" => -92, "space" => -18, "v" => -70, "w" => -70,
- "y" => -70,
- },
- "F" => {
- "A" => -55, "comma" => -111, "period" => -111,
- },
- "L" => {
- "T" => -74, "V" => -92, "W" => -92, "Y" => -92,
- "quoteright" => -74, "space" => -18, "y" => -74,
- },
- "P" => {
- "A" => -74, "comma" => -129, "period" => -129,
- },
- "R" => {
- "T" => -55, "V" => -74, "W" => -37, "Y" => -55, "y" => -30,
- },
- "T" => {
- "A" => -92, "a" => -111, "c" => -129, "colon" => -74,
- "comma" => -92, "e" => -111, "hyphen" => -92, "i" => -55,
- "o" => -111, "period" => -92, "r" => -111, "s" => -111,
- "semicolon" => -74, "u" => -129, "w" => -90, "y" => -90,
- },
- "V" => {
- "A" => -129, "a" => -111, "colon" => -74, "comma" => -129,
- "e" => -111, "hyphen" => -92, "i" => -55, "o" => -111,
- "period" => -129, "r" => -111, "semicolon" => -74, "u" => -92,
- "y" => -90,
- },
- "W" => {
- "A" => -90, "a" => -74, "colon" => -37, "comma" => -92,
- "e" => -74, "hyphen" => -37, "i" => -37, "o" => -74,
- "period" => -37, "r" => -74, "semicolon" => -37, "u" => -74,
- "y" => -74,
- },
- "Y" => {
- "A" => -55, "a" => -74, "colon" => -55, "comma" => -74,
- "e" => -74, "hyphen" => -74, "i" => -55, "o" => -74, "p" => -74,
- "period" => -74, "q" => -92, "semicolon" => -55, "u" => -74,
- "v" => -74,
- },
- "f" => {
- "f" => -18, "quoteright" => 37,
- },
- "one" => {
- "one" => -37,
- },
- "quoteleft" => {
- "quoteleft" => -55,
- },
- "quoteright" => {
- "quoteright" => -55, "s" => -55, "space" => -55, "t" => -18,
- },
- "r" => {
- "comma" => -55, "hyphen" => -18, "period" => -55,
- "quoteright" => 55,
- },
- "v" => {
- "comma" => -111, "period" => -111,
- },
- "w" => {
- "comma" => -92, "period" => -92,
- },
- "y" => {
- "comma" => -92, "period" => -92,
- }
- }
-);
-1;
diff --git a/doc/metrics/pplbi8a.ph b/doc/metrics/pplbi8a.ph
deleted file mode 100644
index 51f07a33..00000000
--- a/doc/metrics/pplbi8a.ph
+++ /dev/null
@@ -1,139 +0,0 @@
-%PS_Palatino_BoldItalic = (
- name => 'Palatino-BoldItalic',
- widths => {
- "A" => 722, "AE" => 944, "Aacute" => 722, "Acircumflex" => 722,
- "Adieresis" => 722, "Agrave" => 722, "Aring" => 722,
- "Atilde" => 722, "B" => 667, "C" => 685, "Ccedilla" => 685,
- "D" => 778, "E" => 611, "Eacute" => 611, "Ecircumflex" => 611,
- "Edieresis" => 611, "Egrave" => 611, "Eth" => 778, "F" => 556,
- "G" => 778, "H" => 778, "I" => 389, "Iacute" => 389,
- "Icircumflex" => 389, "Idieresis" => 389, "Igrave" => 389,
- "J" => 389, "K" => 722, "L" => 611, "Lslash" => 611, "M" => 944,
- "N" => 778, "Ntilde" => 778, "O" => 833, "OE" => 944,
- "Oacute" => 833, "Ocircumflex" => 833, "Odieresis" => 833,
- "Ograve" => 833, "Oslash" => 833, "Otilde" => 833, "P" => 667,
- "Q" => 833, "R" => 722, "S" => 556, "Scaron" => 556, "T" => 611,
- "Thorn" => 667, "U" => 778, "Uacute" => 778, "Ucircumflex" => 778,
- "Udieresis" => 778, "Ugrave" => 778, "V" => 667, "W" => 1000,
- "X" => 722, "Y" => 611, "Yacute" => 611, "Ydieresis" => 611,
- "Z" => 667, "Zcaron" => 667, "a" => 556, "aacute" => 556,
- "acircumflex" => 556, "acute" => 333, "adieresis" => 556,
- "ae" => 738, "agrave" => 556, "ampersand" => 833, "aring" => 556,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 444,
- "at" => 833, "atilde" => 556, "b" => 537, "backslash" => 606,
- "bar" => 606, "braceleft" => 333, "braceright" => 333,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 606, "bullet" => 606, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 500,
- "circumflex" => 333, "colon" => 250, "comma" => 250,
- "copyright" => 747, "currency" => 500, "d" => 556, "dagger" => 556,
- "daggerdbl" => 556, "degree" => 400, "dieresis" => 333,
- "divide" => 606, "dollar" => 500, "dotaccent" => 333,
- "dotlessi" => 333, "e" => 444, "eacute" => 444,
- "ecircumflex" => 444, "edieresis" => 444, "egrave" => 444,
- "eight" => 500, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 556, "exclam" => 333,
- "exclamdown" => 333, "f" => 333, "fi" => 611, "five" => 500,
- "fl" => 611, "florin" => 500, "four" => 500, "fraction" => 167,
- "g" => 500, "germandbls" => 556, "grave" => 333, "greater" => 606,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 556,
- "hungarumlaut" => 333, "hyphen" => 389, "i" => 333,
- "iacute" => 333, "icircumflex" => 333, "idieresis" => 333,
- "igrave" => 333, "j" => 333, "k" => 556, "l" => 333, "less" => 606,
- "logicalnot" => 606, "lslash" => 333, "m" => 833, "macron" => 333,
- "minus" => 606, "mu" => 556, "multiply" => 606, "n" => 556,
- "nine" => 500, "ntilde" => 556, "numbersign" => 500, "o" => 556,
- "oacute" => 556, "ocircumflex" => 556, "odieresis" => 556,
- "oe" => 778, "ogonek" => 333, "ograve" => 556, "one" => 500,
- "onehalf" => 750, "onequarter" => 750, "onesuperior" => 300,
- "ordfeminine" => 333, "ordmasculine" => 333, "oslash" => 556,
- "otilde" => 556, "p" => 556, "paragraph" => 556,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 250, "periodcentered" => 250, "perthousand" => 1000,
- "plus" => 606, "plusminus" => 606, "q" => 537, "question" => 444,
- "questiondown" => 444, "quotedbl" => 500, "quotedblbase" => 500,
- "quotedblleft" => 500, "quotedblright" => 500, "quoteleft" => 278,
- "quoteright" => 278, "quotesinglbase" => 250, "quotesingle" => 250,
- "r" => 389, "registered" => 747, "ring" => 556, "s" => 444,
- "scaron" => 444, "section" => 556, "semicolon" => 250,
- "seven" => 500, "six" => 500, "slash" => 315, "space" => 250,
- "sterling" => 500, "t" => 389, "thorn" => 556, "three" => 500,
- "threequarters" => 750, "threesuperior" => 300, "tilde" => 333,
- "trademark" => 1000, "two" => 500, "twosuperior" => 300,
- "u" => 556, "uacute" => 556, "ucircumflex" => 556,
- "udieresis" => 556, "ugrave" => 556, "underscore" => 500,
- "v" => 556, "w" => 833, "x" => 500, "y" => 556, "yacute" => 556,
- "ydieresis" => 556, "yen" => 500, "z" => 500, "zcaron" => 500,
- "zero" => 500,
- },
- kern => {
- "A" => {
- "T" => -55, "V" => -74, "W" => -74, "Y" => -74,
- "quoteright" => -55, "space" => -55, "v" => -55, "w" => -37,
- "y" => -55,
- },
- "F" => {
- "A" => -74, "comma" => -111, "period" => -111, "space" => -18,
- },
- "L" => {
- "T" => -74, "V" => -74, "W" => -74, "Y" => -74,
- "quoteright" => -55, "space" => -18, "y" => -37,
- },
- "P" => {
- "A" => -92, "comma" => -129, "period" => -129, "space" => -55,
- },
- "R" => {
- "T" => -37, "V" => -55, "W" => -55, "Y" => -37, "y" => -20,
- },
- "T" => {
- "A" => -55, "O" => -18, "a" => -111, "c" => -92, "colon" => -55,
- "comma" => -55, "e" => -111, "hyphen" => -92, "i" => -74,
- "o" => -111, "period" => -55, "r" => -92, "s" => -92,
- "semicolon" => -55, "u" => -92, "w" => -50, "y" => -80,
- },
- "V" => {
- "A" => -74, "a" => -92, "colon" => -37, "comma" => -111,
- "e" => -74, "hyphen" => -37, "i" => -50, "o" => -74,
- "period" => -111, "r" => -74, "semicolon" => -37, "u" => -50,
- "y" => -50,
- },
- "W" => {
- "A" => -74, "a" => -74, "colon" => -28, "comma" => -55,
- "e" => -55, "i" => -30, "o" => -55, "period" => -55, "r" => -30,
- "semicolon" => -18, "u" => -30, "y" => -30,
- },
- "Y" => {
- "A" => -55, "a" => -111, "colon" => -55, "comma" => -55,
- "e" => -92, "hyphen" => -55, "i" => -54, "o" => -111, "p" => -74,
- "period" => -55, "q" => -92, "semicolon" => -55, "u" => -50,
- "v" => -30,
- },
- "f" => {
- "f" => -37, "quoteright" => 37,
- },
- "one" => {
- "one" => -55,
- },
- "quoteleft" => {
- "quoteleft" => -55,
- },
- "quoteright" => {
- "quoteright" => -55, "s" => -37, "space" => -37, "t" => -18,
- },
- "r" => {
- "c" => -18, "comma" => -55, "e" => -18, "g" => -18, "h" => -18,
- "o" => -18, "period" => -55, "q" => -18, "quoteright" => 55,
- },
- "v" => {
- "comma" => -55, "period" => -55,
- },
- "w" => {
- "comma" => -55, "period" => -55,
- },
- "y" => {
- "comma" => -37, "period" => -37,
- }
- }
-);
-1;
diff --git a/doc/metrics/pplr8a.ph b/doc/metrics/pplr8a.ph
deleted file mode 100644
index e57a7315..00000000
--- a/doc/metrics/pplr8a.ph
+++ /dev/null
@@ -1,143 +0,0 @@
-%PS_Palatino_Roman = (
- name => 'Palatino-Roman',
- widths => {
- "A" => 778, "AE" => 944, "Aacute" => 778, "Acircumflex" => 778,
- "Adieresis" => 778, "Agrave" => 778, "Aring" => 778,
- "Atilde" => 778, "B" => 611, "C" => 709, "Ccedilla" => 709,
- "D" => 774, "E" => 611, "Eacute" => 611, "Ecircumflex" => 611,
- "Edieresis" => 611, "Egrave" => 611, "Eth" => 774, "F" => 556,
- "G" => 763, "H" => 832, "I" => 337, "Iacute" => 337,
- "Icircumflex" => 337, "Idieresis" => 337, "Igrave" => 337,
- "J" => 333, "K" => 726, "L" => 611, "Lslash" => 611, "M" => 946,
- "N" => 831, "Ntilde" => 831, "O" => 786, "OE" => 998,
- "Oacute" => 786, "Ocircumflex" => 786, "Odieresis" => 786,
- "Ograve" => 786, "Oslash" => 833, "Otilde" => 786, "P" => 604,
- "Q" => 786, "R" => 668, "S" => 525, "Scaron" => 525, "T" => 613,
- "Thorn" => 604, "U" => 778, "Uacute" => 778, "Ucircumflex" => 778,
- "Udieresis" => 778, "Ugrave" => 778, "V" => 722, "W" => 1000,
- "X" => 667, "Y" => 667, "Yacute" => 667, "Ydieresis" => 667,
- "Z" => 667, "Zcaron" => 667, "a" => 500, "aacute" => 500,
- "acircumflex" => 500, "acute" => 333, "adieresis" => 500,
- "ae" => 758, "agrave" => 500, "ampersand" => 778, "aring" => 500,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 389,
- "at" => 747, "atilde" => 500, "b" => 553, "backslash" => 606,
- "bar" => 606, "braceleft" => 333, "braceright" => 333,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 606, "bullet" => 606, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 500,
- "circumflex" => 333, "colon" => 250, "comma" => 250,
- "copyright" => 747, "currency" => 500, "d" => 611, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 606, "dollar" => 500, "dotaccent" => 250,
- "dotlessi" => 287, "e" => 479, "eacute" => 479,
- "ecircumflex" => 479, "edieresis" => 479, "egrave" => 479,
- "eight" => 500, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 546, "exclam" => 278,
- "exclamdown" => 278, "f" => 333, "fi" => 605, "five" => 500,
- "fl" => 608, "florin" => 500, "four" => 500, "fraction" => 167,
- "g" => 556, "germandbls" => 556, "grave" => 333, "greater" => 606,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 331, "guilsinglright" => 331, "h" => 582,
- "hungarumlaut" => 380, "hyphen" => 333, "i" => 291,
- "iacute" => 287, "icircumflex" => 287, "idieresis" => 287,
- "igrave" => 287, "j" => 234, "k" => 556, "l" => 291, "less" => 606,
- "logicalnot" => 606, "lslash" => 291, "m" => 883, "macron" => 333,
- "minus" => 606, "mu" => 603, "multiply" => 606, "n" => 582,
- "nine" => 500, "ntilde" => 582, "numbersign" => 500, "o" => 546,
- "oacute" => 546, "ocircumflex" => 546, "odieresis" => 546,
- "oe" => 827, "ogonek" => 313, "ograve" => 546, "one" => 500,
- "onehalf" => 750, "onequarter" => 750, "onesuperior" => 300,
- "ordfeminine" => 333, "ordmasculine" => 333, "oslash" => 556,
- "otilde" => 546, "p" => 601, "paragraph" => 628,
- "parenleft" => 333, "parenright" => 333, "percent" => 840,
- "period" => 250, "periodcentered" => 250, "perthousand" => 1144,
- "plus" => 606, "plusminus" => 606, "q" => 560, "question" => 444,
- "questiondown" => 444, "quotedbl" => 371, "quotedblbase" => 500,
- "quotedblleft" => 500, "quotedblright" => 500, "quoteleft" => 278,
- "quoteright" => 278, "quotesinglbase" => 278, "quotesingle" => 208,
- "r" => 395, "registered" => 747, "ring" => 333, "s" => 424,
- "scaron" => 424, "section" => 500, "semicolon" => 250,
- "seven" => 500, "six" => 500, "slash" => 606, "space" => 250,
- "sterling" => 500, "t" => 326, "thorn" => 601, "three" => 500,
- "threequarters" => 750, "threesuperior" => 300, "tilde" => 333,
- "trademark" => 979, "two" => 500, "twosuperior" => 300, "u" => 603,
- "uacute" => 603, "ucircumflex" => 603, "udieresis" => 603,
- "ugrave" => 603, "underscore" => 500, "v" => 565, "w" => 834,
- "x" => 516, "y" => 556, "yacute" => 556, "ydieresis" => 556,
- "yen" => 500, "z" => 500, "zcaron" => 500, "zero" => 500,
- },
- kern => {
- "A" => {
- "T" => -74, "V" => -111, "W" => -74, "Y" => -111,
- "quoteright" => -74, "space" => -55, "v" => -92, "w" => -74,
- "y" => -74,
- },
- "F" => {
- "A" => -74, "comma" => -92, "period" => -92,
- },
- "L" => {
- "T" => -74, "V" => -92, "W" => -74, "Y" => -92,
- "quoteright" => -74, "space" => -37, "y" => -55,
- },
- "P" => {
- "A" => -92, "comma" => -129, "period" => -129, "space" => -18,
- },
- "R" => {
- "T" => -37, "V" => -55, "W" => -37, "Y" => -37, "y" => -37,
- },
- "T" => {
- "A" => -74, "O" => -18, "a" => -92, "c" => -111, "colon" => -55,
- "comma" => -74, "e" => -92, "hyphen" => -55, "i" => -55,
- "o" => -92, "period" => -74, "r" => -90, "s" => -90,
- "semicolon" => -55, "u" => -90, "w" => -90, "y" => -90,
- },
- "V" => {
- "A" => -111, "a" => -92, "colon" => -55, "comma" => -129,
- "e" => -111, "hyphen" => -74, "i" => -55, "o" => -111,
- "period" => -129, "r" => -92, "semicolon" => -55, "u" => -92,
- "y" => -92,
- },
- "W" => {
- "A" => -92, "a" => -92, "colon" => -18, "comma" => -92,
- "e" => -92, "hyphen" => -55, "i" => -55, "o" => -92,
- "period" => -92, "r" => -74, "semicolon" => -18, "u" => -50,
- "y" => -50,
- },
- "Y" => {
- "A" => -92, "a" => -92, "colon" => -74, "comma" => -111,
- "e" => -92, "hyphen" => -92, "i" => -55, "o" => -92, "p" => -111,
- "period" => -111, "q" => -90, "semicolon" => -74, "space" => -18,
- "u" => -90, "v" => -90,
- },
- "f" => {
- "f" => -18, "quoteright" => 55,
- },
- "one" => {
- "one" => -55,
- },
- "quoteleft" => {
- "quoteleft" => -37,
- },
- "quoteright" => {
- "quoteright" => -37,
- },
- "r" => {
- "c" => -18, "comma" => -74, "d" => -18, "e" => -18, "g" => -18,
- "h" => -18, "hyphen" => -18, "o" => -18, "period" => -74,
- "q" => -18, "quoteright" => 74, "u" => -8,
- },
- "space" => {
- "A" => -37, "Y" => -18,
- },
- "v" => {
- "comma" => -111, "period" => -111,
- },
- "w" => {
- "comma" => -92, "period" => -92,
- },
- "y" => {
- "comma" => -111, "period" => -111,
- }
- }
-);
-1;
diff --git a/doc/metrics/pplri8a.ph b/doc/metrics/pplri8a.ph
deleted file mode 100644
index ecc009dd..00000000
--- a/doc/metrics/pplri8a.ph
+++ /dev/null
@@ -1,140 +0,0 @@
-%PS_Palatino_Italic = (
- name => 'Palatino-Italic',
- widths => {
- "A" => 722, "AE" => 941, "Aacute" => 722, "Acircumflex" => 722,
- "Adieresis" => 722, "Agrave" => 722, "Aring" => 722,
- "Atilde" => 722, "B" => 611, "C" => 667, "Ccedilla" => 667,
- "D" => 778, "E" => 611, "Eacute" => 611, "Ecircumflex" => 611,
- "Edieresis" => 611, "Egrave" => 611, "Eth" => 778, "F" => 556,
- "G" => 722, "H" => 778, "I" => 333, "Iacute" => 333,
- "Icircumflex" => 333, "Idieresis" => 333, "Igrave" => 333,
- "J" => 333, "K" => 667, "L" => 556, "Lslash" => 556, "M" => 944,
- "N" => 778, "Ntilde" => 778, "O" => 778, "OE" => 1028,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 611,
- "Q" => 778, "R" => 667, "S" => 556, "Scaron" => 556, "T" => 611,
- "Thorn" => 611, "U" => 778, "Uacute" => 778, "Ucircumflex" => 778,
- "Udieresis" => 778, "Ugrave" => 778, "V" => 722, "W" => 944,
- "X" => 722, "Y" => 667, "Yacute" => 667, "Ydieresis" => 667,
- "Z" => 667, "Zcaron" => 667, "a" => 444, "aacute" => 444,
- "acircumflex" => 444, "acute" => 333, "adieresis" => 444,
- "ae" => 638, "agrave" => 444, "ampersand" => 778, "aring" => 444,
- "asciicircum" => 606, "asciitilde" => 606, "asterisk" => 389,
- "at" => 747, "atilde" => 444, "b" => 463, "backslash" => 606,
- "bar" => 606, "braceleft" => 333, "braceright" => 333,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 606, "bullet" => 500, "c" => 407, "caron" => 333,
- "ccedilla" => 407, "cedilla" => 333, "cent" => 500,
- "circumflex" => 333, "colon" => 250, "comma" => 250,
- "copyright" => 747, "currency" => 500, "d" => 500, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 606, "dollar" => 500, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 389, "eacute" => 389,
- "ecircumflex" => 389, "edieresis" => 389, "egrave" => 389,
- "eight" => 500, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 606, "eth" => 444, "exclam" => 333,
- "exclamdown" => 333, "f" => 278, "fi" => 528, "five" => 500,
- "fl" => 545, "florin" => 500, "four" => 500, "fraction" => 167,
- "g" => 500, "germandbls" => 500, "grave" => 333, "greater" => 606,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 500,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 278,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 278, "k" => 444, "l" => 278, "less" => 606,
- "logicalnot" => 606, "lslash" => 278, "m" => 778, "macron" => 333,
- "minus" => 606, "mu" => 556, "multiply" => 606, "n" => 556,
- "nine" => 500, "ntilde" => 556, "numbersign" => 500, "o" => 444,
- "oacute" => 444, "ocircumflex" => 444, "odieresis" => 444,
- "oe" => 669, "ogonek" => 333, "ograve" => 444, "one" => 500,
- "onehalf" => 750, "onequarter" => 750, "onesuperior" => 300,
- "ordfeminine" => 333, "ordmasculine" => 333, "oslash" => 444,
- "otilde" => 444, "p" => 500, "paragraph" => 500,
- "parenleft" => 333, "parenright" => 333, "percent" => 889,
- "period" => 250, "periodcentered" => 250, "perthousand" => 1000,
- "plus" => 606, "plusminus" => 606, "q" => 463, "question" => 500,
- "questiondown" => 500, "quotedbl" => 500, "quotedblbase" => 500,
- "quotedblleft" => 500, "quotedblright" => 500, "quoteleft" => 278,
- "quoteright" => 278, "quotesinglbase" => 278, "quotesingle" => 333,
- "r" => 389, "registered" => 747, "ring" => 333, "s" => 389,
- "scaron" => 389, "section" => 500, "semicolon" => 250,
- "seven" => 500, "six" => 500, "slash" => 296, "space" => 250,
- "sterling" => 500, "t" => 333, "thorn" => 500, "three" => 500,
- "threequarters" => 750, "threesuperior" => 300, "tilde" => 333,
- "trademark" => 1000, "two" => 500, "twosuperior" => 300,
- "u" => 556, "uacute" => 556, "ucircumflex" => 556,
- "udieresis" => 556, "ugrave" => 556, "underscore" => 500,
- "v" => 500, "w" => 722, "x" => 500, "y" => 500, "yacute" => 500,
- "ydieresis" => 500, "yen" => 500, "z" => 444, "zcaron" => 444,
- "zero" => 500,
- },
- kern => {
- "A" => {
- "T" => -55, "V" => -74, "W" => -55, "Y" => -55,
- "quoteright" => -55, "space" => -37, "v" => -37, "w" => -37,
- "y" => -55,
- },
- "F" => {
- "A" => -111, "comma" => -111, "period" => -111,
- },
- "L" => {
- "T" => -74, "V" => -74, "W" => -74, "Y" => -74,
- "quoteright" => -37, "space" => -18, "y" => -37,
- },
- "P" => {
- "A" => -129, "comma" => -129, "period" => -129,
- },
- "R" => {
- "T" => -55, "V" => -74, "W" => -55, "Y" => -55, "y" => -37,
- },
- "T" => {
- "A" => -92, "O" => -18, "a" => -111, "c" => -111, "colon" => -74,
- "comma" => -74, "e" => -111, "hyphen" => -55, "i" => -55,
- "o" => -111, "period" => -74, "r" => -111, "s" => -111,
- "semicolon" => -74, "u" => -111, "w" => -92, "y" => -92,
- },
- "V" => {
- "A" => -210, "a" => -74, "colon" => -37, "comma" => -129,
- "e" => -92, "hyphen" => -55, "i" => -74, "o" => -74,
- "period" => -129, "r" => -92, "semicolon" => -37, "u" => -74,
- "y" => -74,
- },
- "W" => {
- "A" => -92, "a" => -20, "colon" => -18, "comma" => -55,
- "e" => -20, "hyphen" => -18, "i" => -20, "o" => -20,
- "period" => -55, "r" => -20, "semicolon" => -18, "u" => -20,
- "y" => -20,
- },
- "Y" => {
- "A" => -92, "a" => -92, "colon" => -74, "comma" => -92,
- "e" => -111, "hyphen" => -74, "i" => -55, "o" => -111,
- "p" => -74, "period" => -92, "q" => -92, "semicolon" => -74,
- "u" => -92, "v" => -74,
- },
- "f" => {
- "quoteright" => 55,
- },
- "one" => {
- "one" => -55,
- },
- "quoteleft" => {
- "quoteleft" => -74,
- },
- "quoteright" => {
- "quoteright" => -74, "s" => -55, "space" => -55, "t" => -37,
- },
- "r" => {
- "c" => -18, "comma" => -74, "e" => -18, "g" => -18, "h" => -18,
- "o" => -18, "period" => -74, "q" => -18, "quoteright" => 37,
- },
- "v" => {
- "comma" => -55, "period" => -55,
- },
- "w" => {
- "comma" => -55, "period" => -55,
- },
- "y" => {
- "comma" => -37, "period" => -37,
- }
- }
-);
-1;
diff --git a/doc/metrics/psyr.ph b/doc/metrics/psyr.ph
deleted file mode 100644
index 47e4f6c7..00000000
--- a/doc/metrics/psyr.ph
+++ /dev/null
@@ -1,69 +0,0 @@
-%PS_Symbol = (
- name => 'Symbol',
- widths => {
- "Alpha" => 722, "Beta" => 667, "Chi" => 722, "Delta" => 612,
- "Epsilon" => 611, "Eta" => 722, "Gamma" => 603, "Ifraktur" => 686,
- "Iota" => 333, "Kappa" => 722, "Lambda" => 686, "Mu" => 889,
- "Nu" => 722, "Omega" => 768, "Omicron" => 722, "Phi" => 763,
- "Pi" => 768, "Psi" => 795, "Rfraktur" => 795, "Rho" => 556,
- "Sigma" => 592, "Tau" => 611, "Theta" => 741, "Upsilon" => 690,
- "Upsilon1" => 620, "Xi" => 645, "Zeta" => 611, "aleph" => 823,
- "alpha" => 631, "ampersand" => 778, "angle" => 768,
- "angleleft" => 329, "angleright" => 329, "apple" => 790,
- "approxequal" => 549, "arrowboth" => 1042, "arrowdblboth" => 1042,
- "arrowdbldown" => 603, "arrowdblleft" => 987,
- "arrowdblright" => 987, "arrowdblup" => 603, "arrowdown" => 603,
- "arrowhorizex" => 1000, "arrowleft" => 987, "arrowright" => 987,
- "arrowup" => 603, "arrowvertex" => 603, "asteriskmath" => 500,
- "bar" => 200, "beta" => 549, "braceex" => 494, "braceleft" => 480,
- "braceleftbt" => 494, "braceleftmid" => 494, "bracelefttp" => 494,
- "braceright" => 480, "bracerightbt" => 494, "bracerightmid" => 494,
- "bracerighttp" => 494, "bracketleft" => 333,
- "bracketleftbt" => 384, "bracketleftex" => 384,
- "bracketlefttp" => 384, "bracketright" => 333,
- "bracketrightbt" => 384, "bracketrightex" => 384,
- "bracketrighttp" => 384, "bullet" => 460, "carriagereturn" => 658,
- "chi" => 549, "circlemultiply" => 768, "circleplus" => 768,
- "club" => 753, "colon" => 278, "comma" => 250, "congruent" => 549,
- "copyrightsans" => 790, "copyrightserif" => 790, "degree" => 400,
- "delta" => 494, "diamond" => 753, "divide" => 549,
- "dotmath" => 250, "eight" => 500, "element" => 713,
- "ellipsis" => 1000, "emptyset" => 823, "epsilon" => 439,
- "equal" => 549, "equivalence" => 549, "eta" => 603,
- "exclam" => 333, "existential" => 549, "five" => 500,
- "florin" => 500, "four" => 500, "fraction" => 167, "gamma" => 411,
- "gradient" => 713, "greater" => 549, "greaterequal" => 549,
- "heart" => 753, "infinity" => 713, "integral" => 274,
- "integralbt" => 686, "integralex" => 686, "integraltp" => 686,
- "intersection" => 768, "iota" => 329, "kappa" => 549,
- "lambda" => 549, "less" => 549, "lessequal" => 549,
- "logicaland" => 603, "logicalnot" => 713, "logicalor" => 603,
- "lozenge" => 494, "minus" => 549, "minute" => 247, "mu" => 576,
- "multiply" => 549, "nine" => 500, "notelement" => 713,
- "notequal" => 549, "notsubset" => 713, "nu" => 521,
- "numbersign" => 500, "omega" => 686, "omega1" => 713,
- "omicron" => 549, "one" => 500, "parenleft" => 333,
- "parenleftbt" => 384, "parenleftex" => 384, "parenlefttp" => 384,
- "parenright" => 333, "parenrightbt" => 384, "parenrightex" => 384,
- "parenrighttp" => 384, "partialdiff" => 494, "percent" => 833,
- "period" => 250, "perpendicular" => 658, "phi" => 521,
- "phi1" => 603, "pi" => 549, "plus" => 549, "plusminus" => 549,
- "product" => 823, "propersubset" => 713, "propersuperset" => 713,
- "proportional" => 713, "psi" => 686, "question" => 444,
- "radical" => 549, "radicalex" => 500, "reflexsubset" => 713,
- "reflexsuperset" => 713, "registersans" => 790,
- "registerserif" => 790, "rho" => 549, "second" => 411,
- "semicolon" => 278, "seven" => 500, "sigma" => 603,
- "sigma1" => 439, "similar" => 549, "six" => 500, "slash" => 278,
- "space" => 250, "spade" => 753, "suchthat" => 439,
- "summation" => 713, "tau" => 439, "therefore" => 863,
- "theta" => 521, "theta1" => 631, "three" => 500,
- "trademarksans" => 786, "trademarkserif" => 890, "two" => 500,
- "underscore" => 500, "union" => 768, "universal" => 713,
- "upsilon" => 576, "weierstrass" => 987, "xi" => 493, "zero" => 500,
- "zeta" => 494,
- },
- kern => {
- }
-);
-1;
diff --git a/doc/metrics/ptmb8a.ph b/doc/metrics/ptmb8a.ph
deleted file mode 100644
index edb78694..00000000
--- a/doc/metrics/ptmb8a.ph
+++ /dev/null
@@ -1,257 +0,0 @@
-%PS_Times_Bold = (
- name => 'Times-Bold',
- widths => {
- "A" => 722, "AE" => 1000, "Aacute" => 722, "Acircumflex" => 722,
- "Adieresis" => 722, "Agrave" => 722, "Aring" => 722,
- "Atilde" => 722, "B" => 667, "C" => 722, "Ccedilla" => 722,
- "D" => 722, "E" => 667, "Eacute" => 667, "Ecircumflex" => 667,
- "Edieresis" => 667, "Egrave" => 667, "Eth" => 722, "F" => 611,
- "G" => 778, "H" => 778, "I" => 389, "Iacute" => 389,
- "Icircumflex" => 389, "Idieresis" => 389, "Igrave" => 389,
- "J" => 500, "K" => 778, "L" => 667, "Lslash" => 667, "M" => 944,
- "N" => 722, "Ntilde" => 722, "O" => 778, "OE" => 1000,
- "Oacute" => 778, "Ocircumflex" => 778, "Odieresis" => 778,
- "Ograve" => 778, "Oslash" => 778, "Otilde" => 778, "P" => 611,
- "Q" => 778, "R" => 722, "S" => 556, "Scaron" => 556, "T" => 667,
- "Thorn" => 611, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 722, "W" => 1000,
- "X" => 722, "Y" => 722, "Yacute" => 722, "Ydieresis" => 722,
- "Z" => 667, "Zcaron" => 667, "a" => 500, "aacute" => 500,
- "acircumflex" => 500, "acute" => 333, "adieresis" => 500,
- "ae" => 722, "agrave" => 500, "ampersand" => 833, "aring" => 500,
- "asciicircum" => 581, "asciitilde" => 520, "asterisk" => 500,
- "at" => 930, "atilde" => 500, "b" => 556, "backslash" => 278,
- "bar" => 220, "braceleft" => 394, "braceright" => 394,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 220, "bullet" => 350, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 500,
- "circumflex" => 333, "colon" => 333, "comma" => 250,
- "copyright" => 747, "currency" => 500, "d" => 556, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 570, "dollar" => 500, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 444, "eacute" => 444,
- "ecircumflex" => 444, "edieresis" => 444, "egrave" => 444,
- "eight" => 500, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 570, "eth" => 500, "exclam" => 333,
- "exclamdown" => 333, "f" => 333, "fi" => 556, "five" => 500,
- "fl" => 556, "florin" => 500, "four" => 500, "fraction" => 167,
- "g" => 500, "germandbls" => 556, "grave" => 333, "greater" => 570,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 556,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 278,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 333, "k" => 556, "l" => 278, "less" => 570,
- "logicalnot" => 570, "lslash" => 278, "m" => 833, "macron" => 333,
- "minus" => 570, "mu" => 556, "multiply" => 570, "n" => 556,
- "nine" => 500, "ntilde" => 556, "numbersign" => 500, "o" => 500,
- "oacute" => 500, "ocircumflex" => 500, "odieresis" => 500,
- "oe" => 722, "ogonek" => 333, "ograve" => 500, "one" => 500,
- "onehalf" => 750, "onequarter" => 750, "onesuperior" => 300,
- "ordfeminine" => 300, "ordmasculine" => 330, "oslash" => 500,
- "otilde" => 500, "p" => 556, "paragraph" => 540,
- "parenleft" => 333, "parenright" => 333, "percent" => 1000,
- "period" => 250, "periodcentered" => 250, "perthousand" => 1000,
- "plus" => 570, "plusminus" => 570, "q" => 556, "question" => 500,
- "questiondown" => 500, "quotedbl" => 555, "quotedblbase" => 500,
- "quotedblleft" => 500, "quotedblright" => 500, "quoteleft" => 333,
- "quoteright" => 333, "quotesinglbase" => 333, "quotesingle" => 278,
- "r" => 444, "registered" => 747, "ring" => 333, "s" => 389,
- "scaron" => 389, "section" => 500, "semicolon" => 333,
- "seven" => 500, "six" => 500, "slash" => 278, "space" => 250,
- "sterling" => 500, "t" => 333, "thorn" => 556, "three" => 500,
- "threequarters" => 750, "threesuperior" => 300, "tilde" => 333,
- "trademark" => 1000, "two" => 500, "twosuperior" => 300,
- "u" => 556, "uacute" => 556, "ucircumflex" => 556,
- "udieresis" => 556, "ugrave" => 556, "underscore" => 500,
- "v" => 500, "w" => 722, "x" => 500, "y" => 500, "yacute" => 500,
- "ydieresis" => 500, "yen" => 500, "z" => 444, "zcaron" => 444,
- "zero" => 500,
- },
- kern => {
- "A" => {
- "C" => -55, "G" => -55, "O" => -45, "Q" => -45, "T" => -95,
- "U" => -50, "V" => -145, "W" => -130, "Y" => -100, "p" => -25,
- "quotedblright" => 0, "quoteright" => -74, "u" => -50,
- "v" => -100, "w" => -90, "y" => -74,
- },
- "B" => {
- "A" => -30, "U" => -10, "comma" => 0, "period" => 0,
- },
- "D" => {
- "A" => -35, "V" => -40, "W" => -40, "Y" => -40, "comma" => 0,
- "period" => -20,
- },
- "F" => {
- "A" => -90, "a" => -25, "comma" => -92, "e" => -25, "i" => 0,
- "o" => -25, "period" => -110, "r" => 0,
- },
- "G" => {
- "comma" => 0, "period" => 0,
- },
- "J" => {
- "A" => -30, "a" => -15, "comma" => 0, "e" => -15, "o" => -15,
- "period" => -20, "u" => -15,
- },
- "K" => {
- "O" => -30, "e" => -25, "o" => -25, "u" => -15, "y" => -45,
- },
- "L" => {
- "T" => -92, "V" => -92, "W" => -92, "Y" => -92,
- "quotedblright" => -20, "quoteright" => -110, "y" => -55,
- },
- "N" => {
- "A" => -20, "comma" => 0, "period" => 0,
- },
- "O" => {
- "A" => -40, "T" => -40, "V" => -50, "W" => -50, "X" => -40,
- "Y" => -50, "comma" => 0, "period" => 0,
- },
- "P" => {
- "A" => -74, "a" => -10, "comma" => -92, "e" => -20, "o" => -20,
- "period" => -110,
- },
- "Q" => {
- "U" => -10, "comma" => 0, "period" => -20,
- },
- "R" => {
- "O" => -30, "T" => -40, "U" => -30, "V" => -55, "W" => -35,
- "Y" => -35,
- },
- "S" => {
- "comma" => 0, "period" => 0,
- },
- "T" => {
- "A" => -90, "O" => -18, "a" => -92, "colon" => -74,
- "comma" => -74, "e" => -92, "h" => 0, "hyphen" => -92,
- "i" => -18, "o" => -92, "period" => -90, "r" => -74,
- "semicolon" => -74, "u" => -92, "w" => -74, "y" => -74,
- },
- "U" => {
- "A" => -60, "comma" => -50, "period" => -50,
- },
- "V" => {
- "A" => -135, "G" => -30, "O" => -45, "a" => -92, "colon" => -92,
- "comma" => -129, "e" => -100, "hyphen" => -74, "i" => -37,
- "o" => -100, "period" => -145, "semicolon" => -92, "u" => -92,
- },
- "W" => {
- "A" => -120, "O" => -10, "a" => -65, "colon" => -55,
- "comma" => -92, "e" => -65, "h" => 0, "hyphen" => -37,
- "i" => -18, "o" => -75, "period" => -92, "semicolon" => -55,
- "u" => -50, "y" => -60,
- },
- "Y" => {
- "A" => -110, "O" => -35, "a" => -85, "colon" => -92,
- "comma" => -92, "e" => -111, "hyphen" => -92, "i" => -37,
- "o" => -111, "period" => -92, "semicolon" => -92, "u" => -92,
- },
- "a" => {
- "b" => 0, "g" => 0, "p" => 0, "t" => 0, "v" => -25, "w" => 0,
- "y" => 0,
- },
- "b" => {
- "b" => -10, "comma" => 0, "l" => 0, "period" => -40, "u" => -20,
- "v" => -15, "y" => 0,
- },
- "c" => {
- "comma" => 0, "h" => 0, "k" => 0, "l" => 0, "period" => 0,
- "y" => 0,
- },
- "colon" => {
- "space" => 0,
- },
- "comma" => {
- "quotedblright" => -45, "quoteright" => -55, "space" => 0,
- },
- "d" => {
- "comma" => 0, "d" => 0, "period" => 0, "v" => 0, "w" => -15,
- "y" => 0,
- },
- "e" => {
- "b" => 0, "comma" => 0, "g" => 0, "p" => 0, "period" => 0,
- "v" => -15, "w" => 0, "x" => 0, "y" => 0,
- },
- "f" => {
- "a" => 0, "comma" => -15, "dotlessi" => -35, "e" => 0, "f" => 0,
- "i" => -25, "l" => 0, "o" => -25, "period" => -15,
- "quotedblright" => 50, "quoteright" => 55,
- },
- "g" => {
- "a" => 0, "comma" => 0, "e" => 0, "g" => 0, "i" => 0, "o" => 0,
- "period" => -15, "r" => 0, "y" => 0,
- },
- "h" => {
- "y" => -15,
- },
- "i" => {
- "v" => -10,
- },
- "k" => {
- "e" => -10, "o" => -15, "y" => -15,
- },
- "l" => {
- "w" => 0, "y" => 0,
- },
- "m" => {
- "u" => 0, "y" => 0,
- },
- "n" => {
- "u" => 0, "v" => -40, "y" => 0,
- },
- "o" => {
- "g" => 0, "v" => -10, "w" => -10, "x" => 0, "y" => 0,
- },
- "p" => {
- "y" => 0,
- },
- "period" => {
- "quotedblright" => -55, "quoteright" => -55,
- },
- "quotedblleft" => {
- "A" => -10, "quoteleft" => 0,
- },
- "quotedblright" => {
- "space" => 0,
- },
- "quoteleft" => {
- "A" => -10, "quoteleft" => -63,
- },
- "quoteright" => {
- "d" => -20, "l" => 0, "quotedblright" => 0, "quoteright" => -63,
- "r" => -20, "s" => -37, "space" => -74, "t" => 0, "v" => -20,
- },
- "r" => {
- "a" => 0, "c" => -18, "comma" => -92, "d" => 0, "e" => -18,
- "g" => -10, "hyphen" => -37, "i" => 0, "k" => 0, "l" => 0,
- "m" => 0, "n" => -15, "o" => -18, "p" => -10, "period" => -100,
- "q" => -18, "r" => 0, "s" => 0, "t" => 0, "u" => 0, "v" => -10,
- "y" => 0,
- },
- "s" => {
- "w" => 0,
- },
- "space" => {
- "A" => -55, "T" => -30, "V" => -45, "W" => -30, "Y" => -55,
- "quotedblleft" => 0, "quoteleft" => 0,
- },
- "v" => {
- "a" => -10, "comma" => -55, "e" => -10, "o" => -10,
- "period" => -70,
- },
- "w" => {
- "a" => 0, "comma" => -55, "e" => 0, "h" => 0, "o" => -10,
- "period" => -70,
- },
- "x" => {
- "e" => 0,
- },
- "y" => {
- "a" => 0, "comma" => -55, "e" => -10, "o" => -25,
- "period" => -70,
- },
- "z" => {
- "e" => 0, "o" => 0,
- }
- }
-);
-1;
diff --git a/doc/metrics/ptmbi8a.ph b/doc/metrics/ptmbi8a.ph
deleted file mode 100644
index b7ef593f..00000000
--- a/doc/metrics/ptmbi8a.ph
+++ /dev/null
@@ -1,255 +0,0 @@
-%PS_Times_BoldItalic = (
- name => 'Times-BoldItalic',
- widths => {
- "A" => 667, "AE" => 944, "Aacute" => 667, "Acircumflex" => 667,
- "Adieresis" => 667, "Agrave" => 667, "Aring" => 667,
- "Atilde" => 667, "B" => 667, "C" => 667, "Ccedilla" => 667,
- "D" => 722, "E" => 667, "Eacute" => 667, "Ecircumflex" => 667,
- "Edieresis" => 667, "Egrave" => 667, "Eth" => 722, "F" => 667,
- "G" => 722, "H" => 778, "I" => 389, "Iacute" => 389,
- "Icircumflex" => 389, "Idieresis" => 389, "Igrave" => 389,
- "J" => 500, "K" => 667, "L" => 611, "Lslash" => 611, "M" => 889,
- "N" => 722, "Ntilde" => 722, "O" => 722, "OE" => 944,
- "Oacute" => 722, "Ocircumflex" => 722, "Odieresis" => 722,
- "Ograve" => 722, "Oslash" => 722, "Otilde" => 722, "P" => 611,
- "Q" => 722, "R" => 667, "S" => 556, "Scaron" => 556, "T" => 611,
- "Thorn" => 611, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 667, "W" => 889,
- "X" => 667, "Y" => 611, "Yacute" => 611, "Ydieresis" => 611,
- "Z" => 611, "Zcaron" => 611, "a" => 500, "aacute" => 500,
- "acircumflex" => 500, "acute" => 333, "adieresis" => 500,
- "ae" => 722, "agrave" => 500, "ampersand" => 778, "aring" => 500,
- "asciicircum" => 570, "asciitilde" => 570, "asterisk" => 500,
- "at" => 832, "atilde" => 500, "b" => 500, "backslash" => 278,
- "bar" => 220, "braceleft" => 348, "braceright" => 348,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 220, "bullet" => 350, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 500,
- "circumflex" => 333, "colon" => 333, "comma" => 250,
- "copyright" => 747, "currency" => 500, "d" => 500, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 570, "dollar" => 500, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 444, "eacute" => 444,
- "ecircumflex" => 444, "edieresis" => 444, "egrave" => 444,
- "eight" => 500, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 570, "eth" => 500, "exclam" => 389,
- "exclamdown" => 389, "f" => 333, "fi" => 556, "five" => 500,
- "fl" => 556, "florin" => 500, "four" => 500, "fraction" => 167,
- "g" => 500, "germandbls" => 500, "grave" => 333, "greater" => 570,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 556,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 278,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 278, "k" => 500, "l" => 278, "less" => 570,
- "logicalnot" => 606, "lslash" => 278, "m" => 778, "macron" => 333,
- "minus" => 606, "mu" => 576, "multiply" => 570, "n" => 556,
- "nine" => 500, "ntilde" => 556, "numbersign" => 500, "o" => 500,
- "oacute" => 500, "ocircumflex" => 500, "odieresis" => 500,
- "oe" => 722, "ogonek" => 333, "ograve" => 500, "one" => 500,
- "onehalf" => 750, "onequarter" => 750, "onesuperior" => 300,
- "ordfeminine" => 266, "ordmasculine" => 300, "oslash" => 500,
- "otilde" => 500, "p" => 500, "paragraph" => 500,
- "parenleft" => 333, "parenright" => 333, "percent" => 833,
- "period" => 250, "periodcentered" => 250, "perthousand" => 1000,
- "plus" => 570, "plusminus" => 570, "q" => 500, "question" => 500,
- "questiondown" => 500, "quotedbl" => 555, "quotedblbase" => 500,
- "quotedblleft" => 500, "quotedblright" => 500, "quoteleft" => 333,
- "quoteright" => 333, "quotesinglbase" => 333, "quotesingle" => 278,
- "r" => 389, "registered" => 747, "ring" => 333, "s" => 389,
- "scaron" => 389, "section" => 500, "semicolon" => 333,
- "seven" => 500, "six" => 500, "slash" => 278, "space" => 250,
- "sterling" => 500, "t" => 278, "thorn" => 500, "three" => 500,
- "threequarters" => 750, "threesuperior" => 300, "tilde" => 333,
- "trademark" => 1000, "two" => 500, "twosuperior" => 300,
- "u" => 556, "uacute" => 556, "ucircumflex" => 556,
- "udieresis" => 556, "ugrave" => 556, "underscore" => 500,
- "v" => 444, "w" => 667, "x" => 500, "y" => 444, "yacute" => 444,
- "ydieresis" => 444, "yen" => 500, "z" => 389, "zcaron" => 389,
- "zero" => 500,
- },
- kern => {
- "A" => {
- "C" => -65, "G" => -60, "O" => -50, "Q" => -55, "T" => -55,
- "U" => -50, "V" => -95, "W" => -100, "Y" => -70, "p" => 0,
- "quotedblright" => 0, "quoteright" => -74, "u" => -30,
- "v" => -74, "w" => -74, "y" => -74,
- },
- "B" => {
- "A" => -25, "U" => -10, "comma" => 0, "period" => 0,
- },
- "D" => {
- "A" => -25, "V" => -50, "W" => -40, "Y" => -50, "comma" => 0,
- "period" => 0,
- },
- "F" => {
- "A" => -100, "a" => -95, "comma" => -129, "e" => -100,
- "i" => -40, "o" => -70, "period" => -129, "r" => -50,
- },
- "G" => {
- "comma" => 0, "period" => 0,
- },
- "J" => {
- "A" => -25, "a" => -40, "comma" => -10, "e" => -40, "o" => -40,
- "period" => -10, "u" => -40,
- },
- "K" => {
- "O" => -30, "e" => -25, "o" => -25, "u" => -20, "y" => -20,
- },
- "L" => {
- "T" => -18, "V" => -37, "W" => -37, "Y" => -37,
- "quotedblright" => 0, "quoteright" => -55, "y" => -37,
- },
- "N" => {
- "A" => -30, "comma" => 0, "period" => 0,
- },
- "O" => {
- "A" => -40, "T" => -40, "V" => -50, "W" => -50, "X" => -40,
- "Y" => -50, "comma" => 0, "period" => 0,
- },
- "P" => {
- "A" => -85, "a" => -40, "comma" => -129, "e" => -50, "o" => -55,
- "period" => -129,
- },
- "Q" => {
- "U" => -10, "comma" => 0, "period" => 0,
- },
- "R" => {
- "O" => -40, "T" => -30, "U" => -40, "V" => -18, "W" => -18,
- "Y" => -18,
- },
- "S" => {
- "comma" => 0, "period" => 0,
- },
- "T" => {
- "A" => -55, "O" => -18, "a" => -92, "colon" => -74,
- "comma" => -92, "e" => -92, "h" => 0, "hyphen" => -92,
- "i" => -37, "o" => -95, "period" => -92, "r" => -37,
- "semicolon" => -74, "u" => -37, "w" => -37, "y" => -37,
- },
- "U" => {
- "A" => -45, "comma" => 0, "period" => 0,
- },
- "V" => {
- "A" => -85, "G" => -10, "O" => -30, "a" => -111, "colon" => -74,
- "comma" => -129, "e" => -111, "hyphen" => -70, "i" => -55,
- "o" => -111, "period" => -129, "semicolon" => -74, "u" => -55,
- },
- "W" => {
- "A" => -74, "O" => -15, "a" => -85, "colon" => -55,
- "comma" => -74, "e" => -90, "h" => 0, "hyphen" => -50,
- "i" => -37, "o" => -80, "period" => -74, "semicolon" => -55,
- "u" => -55, "y" => -55,
- },
- "Y" => {
- "A" => -74, "O" => -25, "a" => -92, "colon" => -92,
- "comma" => -92, "e" => -111, "hyphen" => -92, "i" => -55,
- "o" => -111, "period" => -74, "semicolon" => -92, "u" => -92,
- },
- "a" => {
- "b" => 0, "g" => 0, "p" => 0, "t" => 0, "v" => 0, "w" => 0,
- "y" => 0,
- },
- "b" => {
- "b" => -10, "comma" => 0, "l" => 0, "period" => -40, "u" => -20,
- "v" => 0, "y" => 0,
- },
- "c" => {
- "comma" => 0, "h" => -10, "k" => -10, "l" => 0, "period" => 0,
- "y" => 0,
- },
- "colon" => {
- "space" => 0,
- },
- "comma" => {
- "quotedblright" => -95, "quoteright" => -95, "space" => 0,
- },
- "d" => {
- "comma" => 0, "d" => 0, "period" => 0, "v" => 0, "w" => 0,
- "y" => 0,
- },
- "e" => {
- "b" => -10, "comma" => 0, "g" => 0, "p" => 0, "period" => 0,
- "v" => 0, "w" => 0, "x" => 0, "y" => 0,
- },
- "f" => {
- "a" => 0, "comma" => -10, "dotlessi" => -30, "e" => -10,
- "f" => -18, "i" => 0, "l" => 0, "o" => -10, "period" => -10,
- "quotedblright" => 0, "quoteright" => 55,
- },
- "g" => {
- "a" => 0, "comma" => 0, "e" => 0, "g" => 0, "i" => 0, "o" => 0,
- "period" => 0, "r" => 0, "y" => 0,
- },
- "h" => {
- "y" => 0,
- },
- "i" => {
- "v" => 0,
- },
- "k" => {
- "e" => -30, "o" => -10, "y" => 0,
- },
- "l" => {
- "w" => 0, "y" => 0,
- },
- "m" => {
- "u" => 0, "y" => 0,
- },
- "n" => {
- "u" => 0, "v" => -40, "y" => 0,
- },
- "o" => {
- "g" => 0, "v" => -15, "w" => -25, "x" => -10, "y" => -10,
- },
- "p" => {
- "y" => 0,
- },
- "period" => {
- "quotedblright" => -95, "quoteright" => -95,
- },
- "quotedblleft" => {
- "A" => 0, "quoteleft" => 0,
- },
- "quotedblright" => {
- "space" => 0,
- },
- "quoteleft" => {
- "A" => 0, "quoteleft" => -74,
- },
- "quoteright" => {
- "d" => -15, "l" => 0, "quotedblright" => 0, "quoteright" => -74,
- "r" => -15, "s" => -74, "space" => -74, "t" => -37, "v" => -15,
- },
- "r" => {
- "a" => 0, "c" => 0, "comma" => -65, "d" => 0, "e" => 0, "g" => 0,
- "hyphen" => 0, "i" => 0, "k" => 0, "l" => 0, "m" => 0, "n" => 0,
- "o" => 0, "p" => 0, "period" => -65, "q" => 0, "r" => 0,
- "s" => 0, "t" => 0, "u" => 0, "v" => 0, "y" => 0,
- },
- "s" => {
- "w" => 0,
- },
- "space" => {
- "A" => -37, "T" => 0, "V" => -70, "W" => -70, "Y" => -70,
- "quotedblleft" => 0, "quoteleft" => 0,
- },
- "v" => {
- "a" => 0, "comma" => -37, "e" => -15, "o" => -15,
- "period" => -37,
- },
- "w" => {
- "a" => -10, "comma" => -37, "e" => -10, "h" => 0, "o" => -15,
- "period" => -37,
- },
- "x" => {
- "e" => -10,
- },
- "y" => {
- "a" => 0, "comma" => -37, "e" => 0, "o" => 0, "period" => -37,
- },
- "z" => {
- "e" => 0, "o" => 0,
- }
- }
-);
-1;
diff --git a/doc/metrics/ptmr8a.ph b/doc/metrics/ptmr8a.ph
deleted file mode 100644
index d1e7f69f..00000000
--- a/doc/metrics/ptmr8a.ph
+++ /dev/null
@@ -1,256 +0,0 @@
-%PS_Times_Roman = (
- name => 'Times-Roman',
- widths => {
- "A" => 722, "AE" => 889, "Aacute" => 722, "Acircumflex" => 722,
- "Adieresis" => 722, "Agrave" => 722, "Aring" => 722,
- "Atilde" => 722, "B" => 667, "C" => 667, "Ccedilla" => 667,
- "D" => 722, "E" => 611, "Eacute" => 611, "Ecircumflex" => 611,
- "Edieresis" => 611, "Egrave" => 611, "Eth" => 722, "F" => 556,
- "G" => 722, "H" => 722, "I" => 333, "Iacute" => 333,
- "Icircumflex" => 333, "Idieresis" => 333, "Igrave" => 333,
- "J" => 389, "K" => 722, "L" => 611, "Lslash" => 611, "M" => 889,
- "N" => 722, "Ntilde" => 722, "O" => 722, "OE" => 889,
- "Oacute" => 722, "Ocircumflex" => 722, "Odieresis" => 722,
- "Ograve" => 722, "Oslash" => 722, "Otilde" => 722, "P" => 556,
- "Q" => 722, "R" => 667, "S" => 556, "Scaron" => 556, "T" => 611,
- "Thorn" => 556, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 722, "W" => 944,
- "X" => 722, "Y" => 722, "Yacute" => 722, "Ydieresis" => 722,
- "Z" => 611, "Zcaron" => 611, "a" => 444, "aacute" => 444,
- "acircumflex" => 444, "acute" => 333, "adieresis" => 444,
- "ae" => 667, "agrave" => 444, "ampersand" => 778, "aring" => 444,
- "asciicircum" => 469, "asciitilde" => 541, "asterisk" => 500,
- "at" => 921, "atilde" => 444, "b" => 500, "backslash" => 278,
- "bar" => 200, "braceleft" => 480, "braceright" => 480,
- "bracketleft" => 333, "bracketright" => 333, "breve" => 333,
- "brokenbar" => 200, "bullet" => 350, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 500,
- "circumflex" => 333, "colon" => 278, "comma" => 250,
- "copyright" => 760, "currency" => 500, "d" => 500, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 564, "dollar" => 500, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 444, "eacute" => 444,
- "ecircumflex" => 444, "edieresis" => 444, "egrave" => 444,
- "eight" => 500, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 564, "eth" => 500, "exclam" => 333,
- "exclamdown" => 333, "f" => 333, "fi" => 556, "five" => 500,
- "fl" => 556, "florin" => 500, "four" => 500, "fraction" => 167,
- "g" => 500, "germandbls" => 500, "grave" => 333, "greater" => 564,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 500,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 278,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 278, "k" => 500, "l" => 278, "less" => 564,
- "logicalnot" => 564, "lslash" => 278, "m" => 778, "macron" => 333,
- "minus" => 564, "mu" => 500, "multiply" => 564, "n" => 500,
- "nine" => 500, "ntilde" => 500, "numbersign" => 500, "o" => 500,
- "oacute" => 500, "ocircumflex" => 500, "odieresis" => 500,
- "oe" => 722, "ogonek" => 333, "ograve" => 500, "one" => 500,
- "onehalf" => 750, "onequarter" => 750, "onesuperior" => 300,
- "ordfeminine" => 276, "ordmasculine" => 310, "oslash" => 500,
- "otilde" => 500, "p" => 500, "paragraph" => 453,
- "parenleft" => 333, "parenright" => 333, "percent" => 833,
- "period" => 250, "periodcentered" => 250, "perthousand" => 1000,
- "plus" => 564, "plusminus" => 564, "q" => 500, "question" => 444,
- "questiondown" => 444, "quotedbl" => 408, "quotedblbase" => 444,
- "quotedblleft" => 444, "quotedblright" => 444, "quoteleft" => 333,
- "quoteright" => 333, "quotesinglbase" => 333, "quotesingle" => 180,
- "r" => 333, "registered" => 760, "ring" => 333, "s" => 389,
- "scaron" => 389, "section" => 500, "semicolon" => 278,
- "seven" => 500, "six" => 500, "slash" => 278, "space" => 250,
- "sterling" => 500, "t" => 278, "thorn" => 500, "three" => 500,
- "threequarters" => 750, "threesuperior" => 300, "tilde" => 333,
- "trademark" => 980, "two" => 500, "twosuperior" => 300, "u" => 500,
- "uacute" => 500, "ucircumflex" => 500, "udieresis" => 500,
- "ugrave" => 500, "underscore" => 500, "v" => 500, "w" => 722,
- "x" => 500, "y" => 500, "yacute" => 500, "ydieresis" => 500,
- "yen" => 500, "z" => 444, "zcaron" => 444, "zero" => 500,
- },
- kern => {
- "A" => {
- "C" => -40, "G" => -40, "O" => -55, "Q" => -55, "T" => -111,
- "U" => -55, "V" => -135, "W" => -90, "Y" => -105, "p" => 0,
- "quotedblright" => 0, "quoteright" => -111, "u" => 0, "v" => -74,
- "w" => -92, "y" => -92,
- },
- "B" => {
- "A" => -35, "U" => -10, "comma" => 0, "period" => 0,
- },
- "D" => {
- "A" => -40, "V" => -40, "W" => -30, "Y" => -55, "comma" => 0,
- "period" => 0,
- },
- "F" => {
- "A" => -74, "a" => -15, "comma" => -80, "e" => 0, "i" => 0,
- "o" => -15, "period" => -80, "r" => 0,
- },
- "G" => {
- "comma" => 0, "period" => 0,
- },
- "J" => {
- "A" => -60, "a" => 0, "comma" => 0, "e" => 0, "o" => 0,
- "period" => 0, "u" => 0,
- },
- "K" => {
- "O" => -30, "e" => -25, "o" => -35, "u" => -15, "y" => -25,
- },
- "L" => {
- "T" => -92, "V" => -100, "W" => -74, "Y" => -100,
- "quotedblright" => 0, "quoteright" => -92, "y" => -55,
- },
- "N" => {
- "A" => -35, "comma" => 0, "period" => 0,
- },
- "O" => {
- "A" => -35, "T" => -40, "V" => -50, "W" => -35, "X" => -40,
- "Y" => -50, "comma" => 0, "period" => 0,
- },
- "P" => {
- "A" => -92, "a" => -15, "comma" => -111, "e" => 0, "o" => 0,
- "period" => -111,
- },
- "Q" => {
- "U" => -10, "comma" => 0, "period" => 0,
- },
- "R" => {
- "O" => -40, "T" => -60, "U" => -40, "V" => -80, "W" => -55,
- "Y" => -65,
- },
- "S" => {
- "comma" => 0, "period" => 0,
- },
- "T" => {
- "A" => -93, "O" => -18, "a" => -80, "colon" => -50,
- "comma" => -74, "e" => -70, "h" => 0, "hyphen" => -92,
- "i" => -35, "o" => -80, "period" => -74, "r" => -35,
- "semicolon" => -55, "u" => -45, "w" => -80, "y" => -80,
- },
- "U" => {
- "A" => -40, "comma" => 0, "period" => 0,
- },
- "V" => {
- "A" => -135, "G" => -15, "O" => -40, "a" => -111, "colon" => -74,
- "comma" => -129, "e" => -111, "hyphen" => -100, "i" => -60,
- "o" => -129, "period" => -129, "semicolon" => -74, "u" => -75,
- },
- "W" => {
- "A" => -120, "O" => -10, "a" => -80, "colon" => -37,
- "comma" => -92, "e" => -80, "h" => 0, "hyphen" => -65,
- "i" => -40, "o" => -80, "period" => -92, "semicolon" => -37,
- "u" => -50, "y" => -73,
- },
- "Y" => {
- "A" => -120, "O" => -30, "a" => -100, "colon" => -92,
- "comma" => -129, "e" => -100, "hyphen" => -111, "i" => -55,
- "o" => -110, "period" => -129, "semicolon" => -92, "u" => -111,
- },
- "a" => {
- "b" => 0, "g" => 0, "p" => 0, "t" => 0, "v" => -20, "w" => -15,
- "y" => 0,
- },
- "b" => {
- "b" => 0, "comma" => 0, "l" => 0, "period" => -40, "u" => -20,
- "v" => -15, "y" => 0,
- },
- "c" => {
- "comma" => 0, "h" => 0, "k" => 0, "l" => 0, "period" => 0,
- "y" => -15,
- },
- "colon" => {
- "space" => 0,
- },
- "comma" => {
- "quotedblright" => -70, "quoteright" => -70, "space" => 0,
- },
- "d" => {
- "comma" => 0, "d" => 0, "period" => 0, "v" => 0, "w" => 0,
- "y" => 0,
- },
- "e" => {
- "b" => 0, "comma" => 0, "g" => -15, "p" => 0, "period" => 0,
- "v" => -25, "w" => -25, "x" => -15, "y" => -15,
- },
- "f" => {
- "a" => -10, "comma" => 0, "dotlessi" => -50, "e" => 0,
- "f" => -25, "i" => -20, "l" => 0, "o" => 0, "period" => 0,
- "quotedblright" => 0, "quoteright" => 55,
- },
- "g" => {
- "a" => -5, "comma" => 0, "e" => 0, "g" => 0, "i" => 0, "o" => 0,
- "period" => 0, "r" => 0, "y" => 0,
- },
- "h" => {
- "y" => -5,
- },
- "i" => {
- "v" => -25,
- },
- "k" => {
- "e" => -10, "o" => -10, "y" => -15,
- },
- "l" => {
- "w" => -10, "y" => 0,
- },
- "m" => {
- "u" => 0, "y" => 0,
- },
- "n" => {
- "u" => 0, "v" => -40, "y" => -15,
- },
- "o" => {
- "g" => 0, "v" => -15, "w" => -25, "x" => 0, "y" => -10,
- },
- "p" => {
- "y" => -10,
- },
- "period" => {
- "quotedblright" => -70, "quoteright" => -70,
- },
- "quotedblleft" => {
- "A" => -80, "quoteleft" => 0,
- },
- "quotedblright" => {
- "space" => 0,
- },
- "quoteleft" => {
- "A" => -80, "quoteleft" => -74,
- },
- "quoteright" => {
- "d" => -50, "l" => -10, "quotedblright" => 0,
- "quoteright" => -74, "r" => -50, "s" => -55, "space" => -74,
- "t" => -18, "v" => -50,
- },
- "r" => {
- "a" => 0, "c" => 0, "comma" => -40, "d" => 0, "e" => 0,
- "g" => -18, "hyphen" => -20, "i" => 0, "k" => 0, "l" => 0,
- "m" => 0, "n" => 0, "o" => 0, "p" => 0, "period" => -55,
- "q" => 0, "r" => 0, "s" => 0, "t" => 0, "u" => 0, "v" => 0,
- "y" => 0,
- },
- "s" => {
- "w" => 0,
- },
- "space" => {
- "A" => -55, "T" => -18, "V" => -50, "W" => -30, "Y" => -90,
- "quotedblleft" => 0, "quoteleft" => 0,
- },
- "v" => {
- "a" => -25, "comma" => -65, "e" => -15, "o" => -20,
- "period" => -65,
- },
- "w" => {
- "a" => -10, "comma" => -65, "e" => 0, "h" => 0, "o" => -10,
- "period" => -65,
- },
- "x" => {
- "e" => -15,
- },
- "y" => {
- "a" => 0, "comma" => -65, "e" => 0, "o" => 0, "period" => -65,
- },
- "z" => {
- "e" => 0, "o" => 0,
- }
- }
-);
-1;
diff --git a/doc/metrics/ptmri8a.ph b/doc/metrics/ptmri8a.ph
deleted file mode 100644
index 5d701b7d..00000000
--- a/doc/metrics/ptmri8a.ph
+++ /dev/null
@@ -1,254 +0,0 @@
-%PS_Times_Italic = (
- name => 'Times-Italic',
- widths => {
- "A" => 611, "AE" => 889, "Aacute" => 611, "Acircumflex" => 611,
- "Adieresis" => 611, "Agrave" => 611, "Aring" => 611,
- "Atilde" => 611, "B" => 611, "C" => 667, "Ccedilla" => 667,
- "D" => 722, "E" => 611, "Eacute" => 611, "Ecircumflex" => 611,
- "Edieresis" => 611, "Egrave" => 611, "Eth" => 722, "F" => 611,
- "G" => 722, "H" => 722, "I" => 333, "Iacute" => 333,
- "Icircumflex" => 333, "Idieresis" => 333, "Igrave" => 333,
- "J" => 444, "K" => 667, "L" => 556, "Lslash" => 556, "M" => 833,
- "N" => 667, "Ntilde" => 667, "O" => 722, "OE" => 944,
- "Oacute" => 722, "Ocircumflex" => 722, "Odieresis" => 722,
- "Ograve" => 722, "Oslash" => 722, "Otilde" => 722, "P" => 611,
- "Q" => 722, "R" => 611, "S" => 500, "Scaron" => 500, "T" => 556,
- "Thorn" => 611, "U" => 722, "Uacute" => 722, "Ucircumflex" => 722,
- "Udieresis" => 722, "Ugrave" => 722, "V" => 611, "W" => 833,
- "X" => 611, "Y" => 556, "Yacute" => 556, "Ydieresis" => 556,
- "Z" => 556, "Zcaron" => 556, "a" => 500, "aacute" => 500,
- "acircumflex" => 500, "acute" => 333, "adieresis" => 500,
- "ae" => 667, "agrave" => 500, "ampersand" => 778, "aring" => 500,
- "asciicircum" => 422, "asciitilde" => 541, "asterisk" => 500,
- "at" => 920, "atilde" => 500, "b" => 500, "backslash" => 278,
- "bar" => 275, "braceleft" => 400, "braceright" => 400,
- "bracketleft" => 389, "bracketright" => 389, "breve" => 333,
- "brokenbar" => 275, "bullet" => 350, "c" => 444, "caron" => 333,
- "ccedilla" => 444, "cedilla" => 333, "cent" => 500,
- "circumflex" => 333, "colon" => 333, "comma" => 250,
- "copyright" => 760, "currency" => 500, "d" => 500, "dagger" => 500,
- "daggerdbl" => 500, "degree" => 400, "dieresis" => 333,
- "divide" => 675, "dollar" => 500, "dotaccent" => 333,
- "dotlessi" => 278, "e" => 444, "eacute" => 444,
- "ecircumflex" => 444, "edieresis" => 444, "egrave" => 444,
- "eight" => 500, "ellipsis" => 889, "emdash" => 889,
- "endash" => 500, "equal" => 675, "eth" => 500, "exclam" => 333,
- "exclamdown" => 389, "f" => 278, "fi" => 500, "five" => 500,
- "fl" => 500, "florin" => 500, "four" => 500, "fraction" => 167,
- "g" => 500, "germandbls" => 500, "grave" => 333, "greater" => 675,
- "guillemotleft" => 500, "guillemotright" => 500,
- "guilsinglleft" => 333, "guilsinglright" => 333, "h" => 500,
- "hungarumlaut" => 333, "hyphen" => 333, "i" => 278,
- "iacute" => 278, "icircumflex" => 278, "idieresis" => 278,
- "igrave" => 278, "j" => 278, "k" => 444, "l" => 278, "less" => 675,
- "logicalnot" => 675, "lslash" => 278, "m" => 722, "macron" => 333,
- "minus" => 675, "mu" => 500, "multiply" => 675, "n" => 500,
- "nine" => 500, "ntilde" => 500, "numbersign" => 500, "o" => 500,
- "oacute" => 500, "ocircumflex" => 500, "odieresis" => 500,
- "oe" => 667, "ogonek" => 333, "ograve" => 500, "one" => 500,
- "onehalf" => 750, "onequarter" => 750, "onesuperior" => 300,
- "ordfeminine" => 276, "ordmasculine" => 310, "oslash" => 500,
- "otilde" => 500, "p" => 500, "paragraph" => 523,
- "parenleft" => 333, "parenright" => 333, "percent" => 833,
- "period" => 250, "periodcentered" => 250, "perthousand" => 1000,
- "plus" => 675, "plusminus" => 675, "q" => 500, "question" => 500,
- "questiondown" => 500, "quotedbl" => 420, "quotedblbase" => 556,
- "quotedblleft" => 556, "quotedblright" => 556, "quoteleft" => 333,
- "quoteright" => 333, "quotesinglbase" => 333, "quotesingle" => 214,
- "r" => 389, "registered" => 760, "ring" => 333, "s" => 389,
- "scaron" => 389, "section" => 500, "semicolon" => 333,
- "seven" => 500, "six" => 500, "slash" => 278, "space" => 250,
- "sterling" => 500, "t" => 278, "thorn" => 500, "three" => 500,
- "threequarters" => 750, "threesuperior" => 300, "tilde" => 333,
- "trademark" => 980, "two" => 500, "twosuperior" => 300, "u" => 500,
- "uacute" => 500, "ucircumflex" => 500, "udieresis" => 500,
- "ugrave" => 500, "underscore" => 500, "v" => 444, "w" => 667,
- "x" => 444, "y" => 444, "yacute" => 444, "ydieresis" => 444,
- "yen" => 500, "z" => 389, "zcaron" => 389, "zero" => 500,
- },
- kern => {
- "A" => {
- "C" => -30, "G" => -35, "O" => -40, "Q" => -40, "T" => -37,
- "U" => -50, "V" => -105, "W" => -95, "Y" => -55, "p" => 0,
- "quotedblright" => 0, "quoteright" => -37, "u" => -20,
- "v" => -55, "w" => -55, "y" => -55,
- },
- "B" => {
- "A" => -25, "U" => -10, "comma" => 0, "period" => 0,
- },
- "D" => {
- "A" => -35, "V" => -40, "W" => -40, "Y" => -40, "comma" => 0,
- "period" => 0,
- },
- "F" => {
- "A" => -115, "a" => -75, "comma" => -135, "e" => -75, "i" => -45,
- "o" => -105, "period" => -135, "r" => -55,
- },
- "G" => {
- "comma" => 0, "period" => 0,
- },
- "J" => {
- "A" => -40, "a" => -35, "comma" => -25, "e" => -25, "o" => -25,
- "period" => -25, "u" => -35,
- },
- "K" => {
- "O" => -50, "e" => -35, "o" => -40, "u" => -40, "y" => -40,
- },
- "L" => {
- "T" => -20, "V" => -55, "W" => -55, "Y" => -20,
- "quotedblright" => 0, "quoteright" => -37, "y" => -30,
- },
- "N" => {
- "A" => -27, "comma" => 0, "period" => 0,
- },
- "O" => {
- "A" => -55, "T" => -40, "V" => -50, "W" => -50, "X" => -40,
- "Y" => -50, "comma" => 0, "period" => 0,
- },
- "P" => {
- "A" => -90, "a" => -80, "comma" => -135, "e" => -80, "o" => -80,
- "period" => -135,
- },
- "Q" => {
- "U" => -10, "comma" => 0, "period" => 0,
- },
- "R" => {
- "O" => -40, "T" => 0, "U" => -40, "V" => -18, "W" => -18,
- "Y" => -18,
- },
- "S" => {
- "comma" => 0, "period" => 0,
- },
- "T" => {
- "A" => -50, "O" => -18, "a" => -92, "colon" => -55,
- "comma" => -74, "e" => -92, "h" => 0, "hyphen" => -74,
- "i" => -55, "o" => -92, "period" => -74, "r" => -55,
- "semicolon" => -65, "u" => -55, "w" => -74, "y" => -74,
- },
- "U" => {
- "A" => -40, "comma" => -25, "period" => -25,
- },
- "V" => {
- "A" => -60, "G" => 0, "O" => -30, "a" => -111, "colon" => -65,
- "comma" => -129, "e" => -111, "hyphen" => -55, "i" => -74,
- "o" => -111, "period" => -129, "semicolon" => -74, "u" => -74,
- },
- "W" => {
- "A" => -60, "O" => -25, "a" => -92, "colon" => -65,
- "comma" => -92, "e" => -92, "h" => 0, "hyphen" => -37,
- "i" => -55, "o" => -92, "period" => -92, "semicolon" => -65,
- "u" => -55, "y" => -70,
- },
- "Y" => {
- "A" => -50, "O" => -15, "a" => -92, "colon" => -65,
- "comma" => -92, "e" => -92, "hyphen" => -74, "i" => -74,
- "o" => -92, "period" => -92, "semicolon" => -65, "u" => -92,
- },
- "a" => {
- "b" => 0, "g" => -10, "p" => 0, "t" => 0, "v" => 0, "w" => 0,
- "y" => 0,
- },
- "b" => {
- "b" => 0, "comma" => 0, "l" => 0, "period" => -40, "u" => -20,
- "v" => 0, "y" => 0,
- },
- "c" => {
- "comma" => 0, "h" => -15, "k" => -20, "l" => 0, "period" => 0,
- "y" => 0,
- },
- "colon" => {
- "space" => 0,
- },
- "comma" => {
- "quotedblright" => -140, "quoteright" => -140, "space" => 0,
- },
- "d" => {
- "comma" => 0, "d" => 0, "period" => 0, "v" => 0, "w" => 0,
- "y" => 0,
- },
- "e" => {
- "b" => 0, "comma" => -10, "g" => -40, "p" => 0, "period" => -15,
- "v" => -15, "w" => -15, "x" => -20, "y" => -30,
- },
- "f" => {
- "a" => 0, "comma" => -10, "dotlessi" => -60, "e" => 0,
- "f" => -18, "i" => -20, "l" => 0, "o" => 0, "period" => -15,
- "quotedblright" => 0, "quoteright" => 92,
- },
- "g" => {
- "a" => 0, "comma" => -10, "e" => -10, "g" => -10, "i" => 0,
- "o" => 0, "period" => -15, "r" => 0, "y" => 0,
- },
- "h" => {
- "y" => 0,
- },
- "i" => {
- "v" => 0,
- },
- "k" => {
- "e" => -10, "o" => -10, "y" => -10,
- },
- "l" => {
- "w" => 0, "y" => 0,
- },
- "m" => {
- "u" => 0, "y" => 0,
- },
- "n" => {
- "u" => 0, "v" => -40, "y" => 0,
- },
- "o" => {
- "g" => -10, "v" => -10, "w" => 0, "x" => 0, "y" => 0,
- },
- "p" => {
- "y" => 0,
- },
- "period" => {
- "quotedblright" => -140, "quoteright" => -140,
- },
- "quotedblleft" => {
- "A" => 0, "quoteleft" => 0,
- },
- "quotedblright" => {
- "space" => 0,
- },
- "quoteleft" => {
- "A" => 0, "quoteleft" => -111,
- },
- "quoteright" => {
- "d" => -25, "l" => 0, "quotedblright" => 0, "quoteright" => -111,
- "r" => -25, "s" => -40, "space" => -111, "t" => -30, "v" => -10,
- },
- "r" => {
- "a" => -15, "c" => -37, "comma" => -111, "d" => -37, "e" => -37,
- "g" => -37, "hyphen" => -20, "i" => 0, "k" => 0, "l" => 0,
- "m" => 0, "n" => 0, "o" => -45, "p" => 0, "period" => -111,
- "q" => -37, "r" => 0, "s" => -10, "t" => 0, "u" => 0, "v" => 0,
- "y" => 0,
- },
- "s" => {
- "w" => 0,
- },
- "space" => {
- "A" => -18, "T" => -18, "V" => -35, "W" => -40, "Y" => -75,
- "quotedblleft" => 0, "quoteleft" => 0,
- },
- "v" => {
- "a" => 0, "comma" => -74, "e" => 0, "o" => 0, "period" => -74,
- },
- "w" => {
- "a" => 0, "comma" => -74, "e" => 0, "h" => 0, "o" => 0,
- "period" => -74,
- },
- "x" => {
- "e" => 0,
- },
- "y" => {
- "a" => 0, "comma" => -55, "e" => 0, "o" => 0, "period" => -55,
- },
- "z" => {
- "e" => 0, "o" => 0,
- }
- }
-);
-1;
diff --git a/doc/metrics/putb8a.ph b/doc/metrics/putb8a.ph
deleted file mode 100644
index cc5c506e..00000000
--- a/doc/metrics/putb8a.ph
+++ /dev/null
@@ -1,378 +0,0 @@
-%PS_Utopia_Bold = (
- name => 'Utopia-Bold',
- widths => {
- "A" => 644, "AE" => 879, "Aacute" => 644, "Acircumflex" => 644,
- "Adieresis" => 644, "Agrave" => 644, "Aring" => 644,
- "Atilde" => 644, "B" => 683, "C" => 689, "Ccedilla" => 689,
- "D" => 777, "E" => 629, "Eacute" => 629, "Ecircumflex" => 629,
- "Edieresis" => 629, "Egrave" => 629, "Eth" => 783, "F" => 593,
- "G" => 726, "H" => 807, "I" => 384, "Iacute" => 384,
- "Icircumflex" => 384, "Idieresis" => 384, "Igrave" => 384,
- "J" => 386, "K" => 707, "L" => 585, "Lslash" => 591, "M" => 918,
- "N" => 739, "Ntilde" => 739, "O" => 768, "OE" => 1049,
- "Oacute" => 768, "Ocircumflex" => 768, "Odieresis" => 768,
- "Ograve" => 768, "Oslash" => 768, "Otilde" => 768, "P" => 650,
- "Q" => 768, "R" => 684, "S" => 561, "Scaron" => 561, "T" => 624,
- "Thorn" => 640, "U" => 786, "Uacute" => 786, "Ucircumflex" => 786,
- "Udieresis" => 786, "Ugrave" => 786, "V" => 645, "W" => 933,
- "X" => 634, "Y" => 617, "Yacute" => 617, "Ydieresis" => 617,
- "Z" => 614, "Zcaron" => 614, "a" => 544, "aacute" => 544,
- "acircumflex" => 544, "acute" => 430, "adieresis" => 544,
- "ae" => 806, "agrave" => 544, "ampersand" => 748, "aring" => 544,
- "asciicircum" => 600, "asciitilde" => 600, "asterisk" => 442,
- "at" => 833, "atilde" => 544, "b" => 605, "backslash" => 379,
- "bar" => 284, "braceleft" => 365, "braceright" => 365,
- "bracketleft" => 335, "bracketright" => 335, "breve" => 430,
- "brokenbar" => 284, "bullet" => 455, "c" => 494, "caron" => 430,
- "ccedilla" => 494, "cedilla" => 430, "cent" => 560,
- "circumflex" => 430, "colon" => 280, "comma" => 280,
- "copyright" => 800, "currency" => 560, "d" => 605, "dagger" => 510,
- "daggerdbl" => 486, "degree" => 396, "dieresis" => 430,
- "divide" => 600, "dollar" => 560, "dotaccent" => 430,
- "dotlessi" => 316, "e" => 519, "eacute" => 519,
- "ecircumflex" => 519, "edieresis" => 519, "egrave" => 519,
- "eight" => 560, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 600, "eth" => 585, "exclam" => 278,
- "exclamdown" => 278, "f" => 342, "fi" => 639, "five" => 560,
- "fl" => 639, "florin" => 560, "four" => 560, "fraction" => 100,
- "g" => 533, "germandbls" => 662, "grave" => 430, "greater" => 600,
- "guillemotleft" => 487, "guillemotright" => 487,
- "guilsinglleft" => 287, "guilsinglright" => 287, "h" => 631,
- "hungarumlaut" => 430, "hyphen" => 392, "i" => 316,
- "iacute" => 316, "icircumflex" => 316, "idieresis" => 316,
- "igrave" => 316, "j" => 316, "k" => 582, "l" => 309, "less" => 600,
- "logicalnot" => 600, "lslash" => 321, "m" => 948, "macron" => 430,
- "minus" => 600, "mu" => 629, "multiply" => 600, "n" => 638,
- "nine" => 560, "ntilde" => 638, "numbersign" => 560, "o" => 585,
- "oacute" => 585, "ocircumflex" => 585, "odieresis" => 585,
- "oe" => 866, "ogonek" => 430, "ograve" => 585, "one" => 560,
- "onehalf" => 900, "onequarter" => 900, "onesuperior" => 402,
- "ordfeminine" => 405, "ordmasculine" => 427, "oslash" => 585,
- "otilde" => 585, "p" => 615, "paragraph" => 552,
- "parenleft" => 365, "parenright" => 365, "percent" => 887,
- "period" => 280, "periodcentered" => 280, "perthousand" => 1289,
- "plus" => 600, "plusminus" => 600, "q" => 597, "question" => 456,
- "questiondown" => 456, "quotedbl" => 473, "quotedblbase" => 473,
- "quotedblleft" => 473, "quotedblright" => 473, "quoteleft" => 252,
- "quoteright" => 252, "quotesinglbase" => 252, "quotesingle" => 252,
- "r" => 440, "registered" => 800, "ring" => 430, "s" => 446,
- "scaron" => 446, "section" => 566, "semicolon" => 280,
- "seven" => 560, "six" => 560, "slash" => 378, "space" => 210,
- "sterling" => 560, "t" => 370, "thorn" => 609, "three" => 560,
- "threequarters" => 900, "threesuperior" => 402, "tilde" => 430,
- "trademark" => 1090, "two" => 560, "twosuperior" => 402,
- "u" => 629, "uacute" => 629, "ucircumflex" => 629,
- "udieresis" => 629, "ugrave" => 629, "underscore" => 500,
- "v" => 520, "w" => 774, "x" => 522, "y" => 524, "yacute" => 524,
- "ydieresis" => 524, "yen" => 560, "z" => 483, "zcaron" => 483,
- "zero" => 560,
- },
- kern => {
- "A" => {
- "C" => -18, "G" => -18, "O" => -18, "Q" => -18, "T" => -58,
- "U" => -40, "V" => -70, "W" => -54, "X" => -18, "Y" => -64,
- "a" => -6, "b" => -12, "c" => -12, "d" => -12, "e" => -6,
- "o" => -12, "p" => -18, "q" => -6, "quotedblright" => -80,
- "quoteright" => -110, "s" => 6, "t" => -12, "u" => -18,
- "v" => -48, "w" => -42, "y" => -40, "z" => 25,
- },
- "B" => {
- "T" => -20, "U" => -25, "V" => -20, "W" => -20, "a" => -12,
- "b" => -10, "e" => -6, "h" => -15, "i" => -12, "k" => -15,
- "l" => -15, "o" => -6, "r" => -12, "u" => -12, "y" => -18,
- },
- "C" => {
- "C" => -6, "G" => -6, "O" => -6, "Q" => -6, "a" => -16,
- "e" => -12, "o" => -12, "r" => -6, "u" => -18, "y" => -24,
- "z" => -5,
- },
- "D" => {
- "V" => -40, "W" => -40, "Y" => -60, "a" => -15, "comma" => -40,
- "e" => -5, "h" => -18, "i" => -12, "o" => -5, "period" => -40,
- "r" => -12, "u" => -12,
- },
- "E" => {
- "V" => -6, "W" => -6, "Y" => -6, "a" => -4, "b" => -5, "c" => -6,
- "comma" => 10, "d" => -6, "e" => -6, "g" => -6, "i" => -6,
- "j" => -6, "m" => -4, "n" => -4, "o" => -6, "p" => -18,
- "period" => 10, "q" => -6, "r" => -4, "s" => -12, "t" => -18,
- "u" => -12, "v" => -24, "w" => -24, "y" => -30,
- },
- "F" => {
- "A" => -60, "a" => -48, "comma" => -150, "e" => -36, "i" => -22,
- "l" => -12, "o" => -36, "period" => -150, "quotedblright" => 20,
- "quoteright" => 20, "r" => -36, "u" => -12, "y" => -18,
- },
- "G" => {
- "a" => -12, "h" => -12, "i" => -12, "l" => -6, "n" => -18,
- "quotedblright" => -20, "r" => -18, "u" => -12, "y" => -12,
- },
- "H" => {
- "a" => -25, "e" => -30, "i" => -18, "o" => -30, "u" => -26,
- "y" => -24,
- },
- "I" => {
- "a" => -24, "b" => -6, "c" => -30, "d" => -30, "e" => -30,
- "f" => -6, "g" => -6, "h" => -6, "k" => -6, "l" => -6,
- "m" => -18, "n" => -18, "o" => -30, "p" => -26, "r" => -12,
- "s" => -18, "t" => -24, "u" => -26, "v" => -24, "w" => -18,
- "x" => -6, "y" => -6, "z" => -6,
- },
- "J" => {
- "a" => -36, "braceright" => 15, "bracketright" => 15, "e" => -35,
- "i" => -20, "o" => -35, "u" => -36, "y" => -20,
- },
- "K" => {
- "A" => 20, "C" => -36, "G" => -36, "O" => -36, "Q" => -36,
- "a" => -6, "e" => -18, "h" => 10, "i" => 6, "l" => 10,
- "o" => -30, "u" => -42, "v" => -80, "w" => -60, "y" => -70,
- },
- "L" => {
- "A" => 30, "C" => -12, "G" => -12, "O" => -12, "Q" => -12,
- "T" => -80, "U" => -32, "V" => -95, "W" => -78, "Y" => -70,
- "j" => -6, "l" => 6, "quotedblright" => -130,
- "quoteright" => -130, "u" => -12, "w" => -58, "y" => -52,
- },
- "M" => {
- "a" => -25, "c" => -30, "d" => -30, "e" => -30, "i" => -12,
- "j" => -12, "n" => -6, "o" => -30, "u" => -36, "y" => -24,
- },
- "N" => {
- "a" => -30, "e" => -30, "i" => -24, "o" => -30, "u" => -30,
- "y" => -24,
- },
- "O" => {
- "A" => -30, "T" => -40, "V" => -35, "W" => -35, "X" => -40,
- "Y" => -50, "a" => -12, "b" => -15, "c" => -6, "comma" => -40,
- "d" => -6, "e" => -6, "g" => -6, "h" => -15, "i" => -6,
- "k" => -15, "l" => -15, "m" => -10, "n" => -10, "o" => -6,
- "p" => -10, "period" => -40, "q" => -6, "r" => -10, "s" => -6,
- "t" => -6, "u" => -6, "z" => -6,
- },
- "P" => {
- "A" => -85, "E" => -20, "H" => -20, "I" => -20, "a" => -36,
- "comma" => -200, "e" => -36, "h" => -15, "hyphen" => -30,
- "i" => -6, "l" => -15, "n" => -12, "o" => -36, "period" => -200,
- "quotedblright" => 20, "quoteright" => 20, "r" => -12,
- "s" => -30, "t" => -6, "u" => -18, "y" => 10,
- },
- "Q" => {
- "A" => -30, "T" => -40, "U" => -25, "V" => -35, "W" => -35,
- "X" => -40, "Y" => -50, "a" => -18, "u" => -6,
- },
- "R" => {
- "C" => -10, "G" => -10, "O" => -10, "Q" => -10, "T" => -20,
- "U" => -30, "V" => -26, "W" => -18, "X" => 20, "Y" => -32,
- "a" => -6, "e" => -18, "o" => -12, "quotedblright" => -10,
- "quoteright" => -10, "t" => -25, "u" => -12, "y" => -20,
- },
- "S" => {
- "a" => -18, "h" => -12, "i" => -12, "j" => -30, "k" => -24,
- "l" => -18, "m" => -24, "n" => -24, "p" => -24,
- "quotedblright" => -15, "quoteright" => -15, "r" => -10,
- "t" => -24, "u" => -24, "v" => -40, "w" => -30, "y" => -35,
- },
- "T" => {
- "A" => -52, "C" => -25, "G" => -25, "O" => -25, "Q" => -25,
- "S" => -12, "T" => 30, "V" => 6, "W" => 15, "X" => 10, "Y" => 12,
- "a" => -90, "braceright" => 30, "bracketright" => 40,
- "comma" => -95, "e" => -80, "emdash" => -60, "endash" => -40,
- "hyphen" => -110, "i" => -28, "m" => -72, "o" => -90,
- "parenright" => 40, "period" => -95, "quotedblright" => 24,
- "quoteright" => 24, "r" => -74, "s" => -82, "semicolon" => -50,
- "u" => -74, "w" => -72, "y" => -74, "z" => -64,
- },
- "U" => {
- "A" => -50, "a" => -50, "b" => -12, "c" => -40, "d" => -40,
- "f" => -20, "g" => -40, "h" => -6, "i" => -22, "k" => -12,
- "l" => -12, "m" => -50, "n" => -50, "p" => -50, "r" => -50,
- "s" => -45, "t" => -36, "v" => -30, "x" => -30, "y" => -30,
- "z" => -35,
- },
- "V" => {
- "A" => -60, "C" => -20, "G" => -20, "O" => -20, "Q" => -20,
- "a" => -70, "braceright" => 80, "bracketright" => 80,
- "colon" => -45, "comma" => -135, "e" => -70, "emdash" => -20,
- "hyphen" => -90, "i" => 20, "o" => -70, "parenright" => 80,
- "period" => -135, "quotedblright" => 36, "quoteright" => 50,
- "r" => -75, "semicolon" => -45, "u" => -50, "y" => -36,
- },
- "W" => {
- "A" => -58, "C" => -20, "G" => -20, "O" => -20, "Q" => -20,
- "T" => 30, "a" => -75, "braceright" => 70, "bracketright" => 80,
- "colon" => -40, "comma" => -100, "d" => -60, "e" => -60,
- "h" => 20, "hyphen" => -70, "i" => 5, "m" => -50, "o" => -60,
- "parenright" => 80, "period" => -100, "quotedblright" => 24,
- "quoteright" => 40, "r" => -50, "semicolon" => -40, "t" => -30,
- "u" => -46, "y" => -50,
- },
- "X" => {
- "A" => 20, "C" => -30, "G" => -30, "O" => -30, "Q" => -24,
- "a" => -6, "e" => -6, "quoteright" => 15, "u" => -24, "y" => -40,
- },
- "Y" => {
- "A" => -55, "C" => -40, "G" => -40, "O" => -40, "Q" => -40,
- "T" => 30, "V" => 12, "W" => 12, "X" => 12, "Y" => 12,
- "a" => -80, "braceright" => 64, "bracketright" => 80,
- "colon" => -60, "comma" => -90, "d" => -90, "e" => -90,
- "emdash" => -50, "endash" => -30, "hyphen" => -100, "i" => 15,
- "l" => 25, "o" => -90, "parenright" => 60, "period" => -90,
- "q" => -100, "quotedblright" => 36, "quoteright" => 50,
- "semicolon" => -37, "t" => -46, "u" => -65, "v" => -50,
- },
- "Z" => {
- "A" => 25, "C" => -18, "G" => -18, "O" => -18, "Q" => -18,
- "a" => -6, "e" => -6, "i" => -12, "o" => -12, "u" => -6,
- "w" => -36, "y" => -36,
- },
- "a" => {
- "quotedblright" => -40, "quoteright" => -45,
- },
- "b" => {
- "comma" => -10, "period" => -10, "quotedblright" => -40,
- "quoteright" => -45, "v" => -20, "w" => -20, "y" => -15,
- },
- "braceleft" => {
- "J" => 50, "T" => 25, "V" => 64, "W" => 64, "Y" => 64,
- },
- "bracketleft" => {
- "J" => 60, "T" => 35, "V" => 64, "W" => 64, "Y" => 64,
- },
- "c" => {
- "quoteright" => -5,
- },
- "colon" => {
- "space" => -20,
- },
- "comma" => {
- "quotedblright" => -100, "quoteright" => -100, "space" => -40,
- },
- "d" => {
- "quotedblright" => -24, "quoteright" => -24,
- },
- "e" => {
- "quotedblright" => -20, "quoteright" => -25, "z" => -4,
- },
- "f" => {
- "braceright" => 80, "bracketright" => 100, "comma" => -20,
- "parenright" => 110, "period" => -10, "quotedblright" => 68,
- "quoteright" => 68, "quotesingle" => 70,
- },
- "g" => {
- "comma" => 10, "f" => 20, "p" => 20, "y" => 20,
- },
- "h" => {
- "quotedblright" => -60, "quoteright" => -60,
- },
- "i" => {
- "quotedblright" => -20, "quoteright" => -20,
- },
- "j" => {
- "comma" => -10, "period" => -10, "quotedblright" => -20,
- "quoteright" => -20,
- },
- "k" => {
- "quotedblright" => -30, "quoteright" => -30,
- },
- "l" => {
- "quotedblright" => -24, "quoteright" => -24,
- },
- "m" => {
- "quotedblright" => -60, "quoteright" => -60,
- },
- "n" => {
- "quotedblright" => -60, "quoteright" => -60,
- },
- "o" => {
- "comma" => -10, "period" => -10, "quotedblright" => -40,
- "quoteright" => -45, "v" => -30, "w" => -30, "x" => -18,
- "y" => -25, "z" => -12,
- },
- "p" => {
- "comma" => -10, "period" => -10, "quotedblright" => -60,
- "quoteright" => -45, "w" => -15, "y" => -15, "z" => -10,
- },
- "parenleft" => {
- "J" => 50, "T" => 50, "V" => 64, "W" => 64, "Y" => 64,
- },
- "period" => {
- "quotedblright" => -100, "quoteright" => -100, "space" => -40,
- },
- "q" => {
- "comma" => -10, "period" => -10, "quotedblright" => -50,
- "quoteright" => -50,
- },
- "quotedblleft" => {
- "A" => -122, "J" => -24, "T" => 18, "V" => 40, "W" => 40,
- "X" => 20, "Y" => 30, "a" => -60, "c" => -70, "d" => -70,
- "e" => -70, "f" => -30, "g" => -50, "m" => -40, "n" => -40,
- "o" => -70, "p" => -40, "q" => -70, "r" => -40, "s" => -32,
- "t" => -40, "u" => -40, "w" => 10, "z" => -26,
- },
- "quotedblright" => {
- "comma" => -100, "period" => -100, "space" => -40,
- },
- "quoteleft" => {
- "A" => -122, "J" => -24, "T" => 35, "V" => 35, "W" => 35,
- "X" => 30, "Y" => 35, "a" => -60, "c" => -70, "d" => -70,
- "e" => -70, "f" => -10, "g" => -50, "m" => -40, "n" => -40,
- "o" => -70, "p" => -40, "q" => -70, "quoteleft" => -30,
- "r" => -40, "s" => -40, "t" => -25, "u" => -25, "v" => -5,
- "w" => 5, "x" => -5, "y" => -5, "z" => -26,
- },
- "quoteright" => {
- "comma" => -100, "d" => -100, "l" => -6, "m" => -42,
- "period" => -100, "quoteright" => -30, "r" => -42, "s" => -70,
- "space" => -40, "t" => -50, "v" => -20,
- },
- "r" => {
- "c" => -20, "colon" => 20, "comma" => -80, "d" => -20,
- "e" => -20, "emdash" => -20, "f" => 8, "g" => 5, "h" => -10,
- "hyphen" => -60, "i" => 8, "k" => -10, "l" => -10, "m" => 8,
- "n" => 8, "o" => -6, "period" => -60, "q" => -6,
- "quotedblright" => -10, "quoteright" => -20, "semicolon" => 20,
- "t" => 8, "u" => 8, "v" => 30, "w" => 30, "x" => 12, "y" => 18,
- "z" => 20,
- },
- "s" => {
- "quotedblright" => -40, "quoteright" => -40,
- },
- "semicolon" => {
- "space" => -20,
- },
- "space" => {
- "T" => -40, "V" => -60, "W" => -60, "Y" => -60,
- "quotedblbase" => -100, "quotedblleft" => -40,
- "quoteleft" => -40, "quotesinglbase" => -100,
- },
- "t" => {
- "comma" => 10, "period" => 15,
- },
- "u" => {
- "quotedblright" => -60, "quoteright" => -60,
- },
- "v" => {
- "a" => -15, "c" => -15, "colon" => 20, "comma" => -90,
- "d" => -15, "e" => -15, "o" => -15, "period" => -75, "q" => -15,
- "quotedblright" => 10, "quoteright" => 5, "semicolon" => 20,
- },
- "w" => {
- "c" => -10, "colon" => 20, "comma" => -68, "d" => -10,
- "e" => -10, "o" => -10, "period" => -60, "q" => -10,
- "quotedblright" => 20, "quoteright" => 15, "semicolon" => 20,
- },
- "x" => {
- "c" => -12, "d" => -12, "e" => -12, "o" => -6, "q" => -6,
- "quotedblright" => -20, "quoteright" => -25,
- },
- "y" => {
- "colon" => 20, "comma" => -72, "hyphen" => -20, "period" => -72,
- "quotedblright" => 10, "quoteright" => 5, "semicolon" => 20,
- },
- "z" => {
- "c" => -6, "d" => -6, "e" => -6, "o" => -6,
- "quotedblright" => -20, "quoteright" => -20,
- }
- }
-);
-1;
diff --git a/doc/metrics/putbi8a.ph b/doc/metrics/putbi8a.ph
deleted file mode 100644
index 8bef1cd4..00000000
--- a/doc/metrics/putbi8a.ph
+++ /dev/null
@@ -1,392 +0,0 @@
-%PS_Utopia_BoldItalic = (
- name => 'Utopia-BoldItalic',
- widths => {
- "A" => 634, "AE" => 890, "Aacute" => 634, "Acircumflex" => 634,
- "Adieresis" => 634, "Agrave" => 634, "Aring" => 634,
- "Atilde" => 634, "B" => 680, "C" => 672, "Ccedilla" => 672,
- "D" => 774, "E" => 622, "Eacute" => 622, "Ecircumflex" => 622,
- "Edieresis" => 622, "Egrave" => 622, "Eth" => 780, "F" => 585,
- "G" => 726, "H" => 800, "I" => 386, "Iacute" => 386,
- "Icircumflex" => 386, "Idieresis" => 386, "Igrave" => 386,
- "J" => 388, "K" => 688, "L" => 586, "Lslash" => 592, "M" => 921,
- "N" => 741, "Ntilde" => 741, "O" => 761, "OE" => 1016,
- "Oacute" => 761, "Ocircumflex" => 761, "Odieresis" => 761,
- "Ograve" => 761, "Oslash" => 761, "Otilde" => 761, "P" => 660,
- "Q" => 761, "R" => 681, "S" => 551, "Scaron" => 551, "T" => 616,
- "Thorn" => 629, "U" => 776, "Uacute" => 776, "Ucircumflex" => 776,
- "Udieresis" => 776, "Ugrave" => 776, "V" => 630, "W" => 920,
- "X" => 630, "Y" => 622, "Yacute" => 622, "Ydieresis" => 622,
- "Z" => 618, "Zcaron" => 618, "a" => 596, "aacute" => 596,
- "acircumflex" => 596, "acute" => 400, "adieresis" => 596,
- "ae" => 789, "agrave" => 596, "ampersand" => 752, "aring" => 596,
- "asciicircum" => 600, "asciitilde" => 600, "asterisk" => 500,
- "at" => 828, "atilde" => 596, "b" => 586, "backslash" => 460,
- "bar" => 265, "braceleft" => 340, "braceright" => 340,
- "bracketleft" => 350, "bracketright" => 350, "breve" => 400,
- "brokenbar" => 265, "bullet" => 465, "c" => 456, "caron" => 400,
- "ccedilla" => 456, "cedilla" => 400, "cent" => 560,
- "circumflex" => 400, "colon" => 280, "comma" => 280,
- "copyright" => 824, "currency" => 560, "d" => 609, "dagger" => 514,
- "daggerdbl" => 490, "degree" => 375, "dieresis" => 400,
- "divide" => 600, "dollar" => 560, "dotaccent" => 402,
- "dotlessi" => 339, "e" => 476, "eacute" => 476,
- "ecircumflex" => 476, "edieresis" => 476, "egrave" => 476,
- "eight" => 560, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 600, "eth" => 562, "exclam" => 285,
- "exclamdown" => 285, "f" => 348, "fi" => 651, "five" => 560,
- "fl" => 652, "florin" => 560, "four" => 560, "fraction" => 100,
- "g" => 522, "germandbls" => 628, "grave" => 400, "greater" => 600,
- "guillemotleft" => 560, "guillemotright" => 560,
- "guilsinglleft" => 360, "guilsinglright" => 360, "h" => 629,
- "hungarumlaut" => 400, "hyphen" => 392, "i" => 339,
- "iacute" => 339, "icircumflex" => 339, "idieresis" => 339,
- "igrave" => 339, "j" => 333, "k" => 570, "l" => 327, "less" => 600,
- "logicalnot" => 600, "lslash" => 339, "m" => 914, "macron" => 400,
- "minus" => 600, "mu" => 634, "multiply" => 600, "n" => 635,
- "nine" => 560, "ntilde" => 635, "numbersign" => 560, "o" => 562,
- "oacute" => 562, "ocircumflex" => 562, "odieresis" => 562,
- "oe" => 811, "ogonek" => 350, "ograve" => 562, "one" => 560,
- "onehalf" => 940, "onequarter" => 940, "onesuperior" => 402,
- "ordfeminine" => 444, "ordmasculine" => 412, "oslash" => 562,
- "otilde" => 562, "p" => 606, "paragraph" => 580,
- "parenleft" => 350, "parenright" => 350, "percent" => 896,
- "period" => 280, "periodcentered" => 280, "perthousand" => 1297,
- "plus" => 600, "plusminus" => 600, "q" => 584, "question" => 454,
- "questiondown" => 454, "quotedbl" => 455, "quotedblbase" => 455,
- "quotedblleft" => 455, "quotedblright" => 455, "quoteleft" => 246,
- "quoteright" => 246, "quotesinglbase" => 246, "quotesingle" => 246,
- "r" => 440, "registered" => 824, "ring" => 400, "s" => 417,
- "scaron" => 417, "section" => 568, "semicolon" => 280,
- "seven" => 560, "six" => 560, "slash" => 260, "space" => 210,
- "sterling" => 560, "t" => 359, "thorn" => 600, "three" => 560,
- "threequarters" => 940, "threesuperior" => 402, "tilde" => 400,
- "trademark" => 1100, "two" => 560, "twosuperior" => 402,
- "u" => 634, "uacute" => 634, "ucircumflex" => 634,
- "udieresis" => 634, "ugrave" => 634, "underscore" => 500,
- "v" => 518, "w" => 795, "x" => 516, "y" => 489, "yacute" => 489,
- "ydieresis" => 489, "yen" => 560, "z" => 466, "zcaron" => 466,
- "zero" => 560,
- },
- kern => {
- "A" => {
- "C" => -30, "G" => -30, "O" => -30, "Q" => -30, "T" => -60,
- "U" => -50, "V" => -75, "W" => -46, "X" => -8, "Y" => -56,
- "a" => 10, "b" => -6, "c" => -6, "d" => 4, "h" => -6, "l" => -18,
- "m" => -12, "n" => -12, "o" => -18, "p" => -6,
- "quotedblright" => -92, "quoteright" => -92, "r" => -6, "s" => 6,
- "t" => -6, "u" => -18, "v" => -30, "w" => -30, "x" => 16,
- "y" => -40, "z" => 18,
- },
- "B" => {
- "T" => -20, "U" => -30, "V" => -45, "W" => -30, "a" => 10,
- "e" => 4, "h" => -15, "i" => -12, "k" => -10, "l" => -20,
- "o" => 6, "quotedblright" => -32, "quoteright" => -20, "r" => -6,
- "u" => -12, "y" => -6,
- },
- "C" => {
- "C" => -12, "G" => -12, "O" => -12, "Q" => -12, "a" => -6,
- "e" => -6, "i" => -6, "quotedblright" => 20, "quoteright" => 12,
- "r" => -12, "u" => -12, "y" => -18, "z" => -6,
- },
- "D" => {
- "V" => -65, "W" => -40, "Y" => -80, "a" => 6, "comma" => -20,
- "e" => 6, "h" => -15, "o" => 6, "period" => -20,
- "quotedblright" => -20, "quoteright" => -20, "y" => 18,
- },
- "E" => {
- "a" => 10, "comma" => 15, "d" => 10, "g" => -12, "i" => -12,
- "j" => -6, "l" => -6, "m" => -12, "n" => -12, "p" => -12,
- "period" => 15, "q" => 10, "quoteright" => 10, "r" => -6,
- "s" => -6, "t" => -18, "u" => -24, "v" => -18, "w" => -30,
- "x" => 15, "y" => -24, "z" => -6,
- },
- "F" => {
- "A" => -45, "a" => -30, "comma" => -110, "e" => -24, "i" => -6,
- "o" => -24, "period" => -120, "quotedblright" => 35,
- "quoteright" => 40, "r" => -12, "u" => -24, "y" => -12,
- },
- "G" => {
- "e" => 5, "h" => -18, "i" => -12, "l" => -24, "n" => -22,
- "quotedblright" => -30, "quoteright" => -30, "r" => -22,
- "u" => -22, "y" => -25,
- },
- "H" => {
- "a" => -25, "e" => -25, "i" => -25, "o" => -25, "u" => -30,
- "y" => -18,
- },
- "I" => {
- "a" => -15, "b" => -6, "c" => -25, "d" => -15, "e" => -25,
- "f" => -6, "g" => -24, "i" => -10, "j" => -20, "k" => -6,
- "l" => -6, "m" => -18, "n" => -18, "o" => -25, "p" => -18,
- "r" => -12, "s" => -18, "t" => -18, "u" => -30, "v" => -30,
- "w" => -30, "x" => -6, "y" => -6, "z" => -20,
- },
- "J" => {
- "a" => -36, "braceright" => 15, "e" => -30, "i" => -30,
- "o" => -36, "quotedblright" => 6, "quoteright" => 6, "u" => -32,
- "y" => -12,
- },
- "K" => {
- "A" => 15, "C" => -50, "G" => -50, "O" => -50, "Q" => -50,
- "a" => -12, "e" => -30, "h" => 15, "i" => -12, "l" => 10,
- "n" => -24, "o" => -30, "quotedblright" => 36,
- "quoteright" => 36, "r" => -24, "u" => -30, "v" => -30,
- "w" => -36, "y" => -70,
- },
- "L" => {
- "A" => 40, "C" => -48, "G" => -48, "O" => -48, "Q" => -48,
- "T" => -100, "U" => -42, "V" => -110, "W" => -78, "Y" => -80,
- "i" => -18, "j" => -18, "l" => -16, "quotedblright" => -110,
- "quoteright" => -110, "u" => -18, "w" => -30, "y" => -70,
- },
- "M" => {
- "a" => -20, "c" => -25, "d" => -20, "e" => -25, "i" => -20,
- "j" => -35, "n" => -20, "o" => -25, "quotedblright" => 6,
- "quoteright" => 6, "u" => -24, "y" => -18,
- },
- "N" => {
- "a" => -22, "e" => -16, "i" => -12, "o" => -18, "u" => -24,
- "y" => -18,
- },
- "O" => {
- "A" => -8, "T" => -42, "V" => -50, "W" => -35, "X" => -30,
- "Y" => -70, "a" => 6, "comma" => -10, "d" => 6, "e" => 6,
- "g" => -6, "h" => -10, "j" => -6, "k" => -10, "l" => -15,
- "m" => -6, "n" => -6, "p" => -6, "period" => -10, "q" => 6,
- "quotedblright" => -20, "quoteright" => -20, "r" => -6,
- "s" => -6, "t" => -6, "u" => -6, "y" => 12, "z" => -6,
- },
- "P" => {
- "A" => -70, "E" => -45, "H" => -45, "I" => -45, "a" => -40,
- "comma" => -170, "e" => -24, "h" => -20, "l" => -20, "n" => -12,
- "o" => -24, "period" => -170, "quoteright" => -12, "r" => -6,
- "s" => -24, "t" => -6, "u" => -18, "y" => 6,
- },
- "Q" => {
- "A" => -18, "T" => -36, "U" => -30, "V" => -50, "W" => -35,
- "X" => -12, "Y" => -70, "a" => -6, "quotedblright" => -38,
- "quoteright" => -20, "u" => -6,
- },
- "R" => {
- "A" => 15, "C" => -8, "G" => -8, "O" => -8, "Q" => -8,
- "T" => -18, "U" => -40, "V" => -35, "W" => -25, "X" => 15,
- "Y" => -45, "e" => -12, "o" => -20, "quotedblright" => -22,
- "quoteright" => -22, "u" => -12, "y" => -6,
- },
- "S" => {
- "e" => -6, "h" => -12, "i" => -20, "j" => -25, "k" => -18,
- "l" => -20, "m" => -24, "n" => -24, "p" => -18,
- "quotedblright" => -50, "quoteright" => -38, "r" => -20,
- "t" => -18, "u" => -18, "v" => -20, "w" => -30, "y" => -30,
- },
- "T" => {
- "A" => -40, "C" => -6, "G" => -6, "O" => -6, "Q" => -6,
- "T" => 40, "V" => 20, "W" => 30, "X" => 18, "Y" => 12,
- "a" => -78, "braceright" => 30, "bracketright" => 20,
- "comma" => -90, "e" => -78, "emdash" => -40, "endash" => -40,
- "h" => 6, "hyphen" => -100, "i" => -22, "m" => -54, "o" => -78,
- "parenright" => 25, "period" => -70, "quotedblright" => 36,
- "quoteright" => 36, "r" => -54, "s" => -60, "semicolon" => -6,
- "u" => -54, "w" => -54, "y" => -52, "z" => -48,
- },
- "U" => {
- "A" => -40, "a" => -30, "b" => -6, "c" => -30, "d" => -30,
- "f" => -10, "g" => -30, "h" => -6, "i" => -24, "k" => -12,
- "l" => -12, "m" => -30, "n" => -30, "p" => -30, "r" => -30,
- "s" => -40, "t" => -24, "v" => -20, "x" => -30, "z" => -18,
- },
- "V" => {
- "A" => -70, "T" => 12, "a" => -80, "braceright" => 64,
- "bracketright" => 64, "colon" => -18, "comma" => -110,
- "e" => -55, "emdash" => -20, "endash" => -20, "hyphen" => -60,
- "i" => 15, "o" => -55, "parenright" => 64, "period" => -110,
- "quotedblright" => 60, "quoteright" => 46, "r" => -55,
- "semicolon" => -45, "u" => -42, "y" => -34,
- },
- "W" => {
- "A" => -45, "C" => -5, "G" => -5, "O" => -5, "Q" => -5,
- "T" => 30, "a" => -60, "braceright" => 64, "bracketright" => 64,
- "colon" => -12, "comma" => -80, "d" => -60, "e" => -55,
- "h" => 16, "hyphen" => -40, "i" => 5, "m" => -30, "o" => -55,
- "parenright" => 55, "period" => -80, "quotedblright" => 55,
- "quoteright" => 42, "r" => -30, "semicolon" => -12, "t" => -10,
- "u" => -30, "y" => -36,
- },
- "X" => {
- "C" => -45, "G" => -45, "O" => -45, "Q" => -45, "W" => -6,
- "Y" => -6, "a" => -6, "e" => -18, "i" => -6,
- "quotedblright" => 40, "quoteright" => 24, "r" => -6, "u" => -30,
- "y" => -40,
- },
- "Y" => {
- "A" => -40, "C" => -25, "G" => -25, "O" => -25, "Q" => -25,
- "T" => 30, "V" => 6, "W" => 12, "X" => 12, "Y" => 12, "a" => -85,
- "braceright" => 64, "bracketright" => 64, "colon" => -20,
- "comma" => -80, "d" => -85, "e" => -95, "emdash" => -40,
- "endash" => -40, "hyphen" => -110, "i" => 15, "l" => 15,
- "o" => -95, "parenright" => 5, "period" => -80, "q" => -100,
- "quotedblright" => 70, "quoteright" => 56, "semicolon" => -20,
- "t" => -32, "u" => -70, "v" => -60,
- },
- "Z" => {
- "A" => 30, "C" => -20, "G" => -20, "O" => -20, "Q" => -20,
- "a" => -6, "e" => -6, "i" => -12, "o" => -6,
- "quotedblright" => 18, "quoteright" => 18, "u" => -12,
- "w" => -36, "y" => -36,
- },
- "a" => {
- "quotedblright" => -54, "quoteright" => -54,
- },
- "b" => {
- "comma" => -15, "period" => -15, "quotedblright" => -30,
- "quoteright" => -30, "v" => -5, "w" => -5, "y" => -6,
- },
- "braceleft" => {
- "J" => 60, "T" => 40, "V" => 64, "W" => 64, "Y" => 64,
- },
- "bracketleft" => {
- "J" => 30, "T" => 35, "V" => 64, "W" => 64, "Y" => 60,
- },
- "c" => {
- "quotedblright" => 5, "quoteright" => 5,
- },
- "colon" => {
- "space" => -30,
- },
- "comma" => {
- "quotedblright" => -100, "quoteright" => -100, "space" => -40,
- },
- "d" => {
- "comma" => 15, "period" => 15, "quotedblright" => -12,
- "quoteright" => -12,
- },
- "e" => {
- "quotedblright" => -25, "quoteright" => -25, "v" => -10,
- "w" => -10, "x" => -10, "y" => 6,
- },
- "f" => {
- "braceright" => 110, "bracketright" => 110, "comma" => -30,
- "parenright" => 100, "period" => -30, "quotedblright" => 120,
- "quoteright" => 120,
- },
- "g" => {
- "comma" => 20, "f" => 42, "p" => 30, "quotedblright" => -20,
- "y" => 50,
- },
- "h" => {
- "quotedblright" => -78, "quoteright" => -78,
- },
- "i" => {
- "quotedblright" => -20, "quoteright" => -20,
- },
- "j" => {
- "comma" => -20, "period" => -20, "quotedblright" => -20,
- "quoteright" => -20,
- },
- "k" => {
- "quotedblright" => -38, "quoteright" => -38,
- },
- "l" => {
- "quotedblright" => -12, "quoteright" => -12,
- },
- "m" => {
- "quotedblright" => -78, "quoteright" => -78,
- },
- "n" => {
- "quotedblright" => -88, "quoteright" => -88,
- },
- "o" => {
- "comma" => -10, "period" => -10, "quotedblright" => -50,
- "quoteright" => -50, "v" => -25, "w" => -25, "x" => -20,
- "y" => -12,
- },
- "p" => {
- "comma" => -15, "period" => -15, "quotedblright" => -52,
- "quoteright" => -30, "w" => -6,
- },
- "parenleft" => {
- "J" => 50, "T" => 30, "V" => 64, "W" => 64, "Y" => 64,
- },
- "period" => {
- "quotedblright" => -100, "quoteright" => -100, "space" => -40,
- },
- "q" => {
- "comma" => -5, "period" => -10, "quotedblright" => -40,
- "quoteright" => -40,
- },
- "quotedblleft" => {
- "A" => -100, "T" => 36, "V" => 40, "W" => 55, "X" => 45,
- "Y" => 30, "a" => -50, "b" => 24, "c" => -30, "d" => -50,
- "e" => -30, "g" => -30, "h" => 10, "k" => 10, "l" => 10,
- "m" => -12, "n" => -12, "o" => -30, "p" => -12, "q" => -50,
- "r" => -12, "s" => -30, "t" => 5, "u" => -12, "v" => -12,
- "w" => -12, "x" => -60, "z" => -30,
- },
- "quotedblright" => {
- "comma" => -200, "period" => -200, "space" => -50,
- },
- "quoteleft" => {
- "A" => -100, "T" => 36, "V" => 28, "W" => 46, "X" => 46,
- "Y" => 12, "a" => -30, "b" => 24, "c" => -30, "d" => -30,
- "e" => -30, "g" => -30, "h" => 10, "k" => 10, "l" => 10,
- "m" => -12, "n" => -12, "o" => -30, "p" => -12, "q" => -30,
- "r" => -12, "s" => -30, "t" => -30, "u" => -12, "w" => -12,
- "x" => -10, "y" => 30, "z" => -30,
- },
- "quoteright" => {
- "comma" => -140, "d" => -65, "l" => -12, "m" => -12,
- "period" => -140, "r" => -12, "s" => -45, "space" => -50,
- "v" => -20,
- },
- "r" => {
- "a" => -25, "c" => -12, "colon" => 20, "comma" => -100,
- "d" => -25, "e" => -26, "endash" => -20, "f" => 8, "h" => -10,
- "hyphen" => -40, "k" => -12, "l" => -12, "o" => -6,
- "period" => -100, "q" => -24, "quotedblright" => -6,
- "quoteright" => -6, "semicolon" => 20, "t" => 8, "v" => 6,
- "w" => 6, "x" => 12, "y" => 18, "z" => 20,
- },
- "s" => {
- "quotedblright" => -30, "quoteright" => -25,
- },
- "semicolon" => {
- "space" => -30,
- },
- "space" => {
- "A" => -50, "T" => -50, "V" => -70, "W" => -50, "Y" => -70,
- "quotedblbase" => -60, "quotedblleft" => -60, "quoteleft" => -60,
- "quotesinglbase" => -60,
- },
- "t" => {
- "comma" => 15, "period" => 15, "quotedblright" => 15,
- "quoteright" => 15,
- },
- "u" => {
- "comma" => 20, "period" => 20, "quotedblright" => -78,
- "quoteright" => -65,
- },
- "v" => {
- "a" => -6, "c" => -6, "comma" => -62, "d" => -6, "e" => -6,
- "o" => -6, "period" => -62, "q" => -6, "quotedblright" => -10,
- "quoteright" => -10,
- },
- "w" => {
- "comma" => -50, "period" => -40, "quotedblright" => -10,
- "quoteright" => -10,
- },
- "x" => {
- "c" => -6, "d" => -6, "e" => -6, "o" => -6, "q" => -6,
- "quotedblright" => -30, "quoteright" => -30, "w" => -6,
- "y" => 12,
- },
- "y" => {
- "comma" => -56, "d" => -10, "period" => -56, "q" => -10,
- "quotedblright" => -10, "quoteright" => -10,
- },
- "z" => {
- "c" => -6, "d" => -6, "e" => -6, "o" => -6,
- "quotedblright" => -40, "quoteright" => -40,
- }
- }
-);
-1;
diff --git a/doc/metrics/putr8a.ph b/doc/metrics/putr8a.ph
deleted file mode 100644
index e35be74f..00000000
--- a/doc/metrics/putr8a.ph
+++ /dev/null
@@ -1,382 +0,0 @@
-%PS_Utopia_Regular = (
- name => 'Utopia-Regular',
- widths => {
- "A" => 635, "AE" => 876, "Aacute" => 635, "Acircumflex" => 635,
- "Adieresis" => 635, "Agrave" => 635, "Aring" => 627,
- "Atilde" => 635, "B" => 646, "C" => 684, "Ccedilla" => 680,
- "D" => 779, "E" => 606, "Eacute" => 606, "Ecircumflex" => 606,
- "Edieresis" => 606, "Egrave" => 606, "Eth" => 785, "F" => 580,
- "G" => 734, "H" => 798, "I" => 349, "Iacute" => 349,
- "Icircumflex" => 349, "Idieresis" => 349, "Igrave" => 349,
- "J" => 350, "K" => 658, "L" => 568, "Lslash" => 574, "M" => 944,
- "N" => 780, "Ntilde" => 780, "O" => 762, "OE" => 1025,
- "Oacute" => 762, "Ocircumflex" => 762, "Odieresis" => 762,
- "Ograve" => 762, "Oslash" => 762, "Otilde" => 762, "P" => 600,
- "Q" => 762, "R" => 644, "S" => 541, "Scaron" => 541, "T" => 621,
- "Thorn" => 593, "U" => 791, "Uacute" => 791, "Ucircumflex" => 791,
- "Udieresis" => 791, "Ugrave" => 791, "V" => 634, "W" => 940,
- "X" => 624, "Y" => 588, "Yacute" => 588, "Ydieresis" => 588,
- "Z" => 610, "Zcaron" => 610, "a" => 523, "aacute" => 523,
- "acircumflex" => 523, "acute" => 400, "adieresis" => 523,
- "ae" => 797, "agrave" => 523, "ampersand" => 706, "aring" => 523,
- "asciicircum" => 570, "asciitilde" => 570, "asterisk" => 412,
- "at" => 793, "atilde" => 523, "b" => 598, "backslash" => 460,
- "bar" => 228, "braceleft" => 340, "braceright" => 340,
- "bracketleft" => 330, "bracketright" => 330, "breve" => 400,
- "brokenbar" => 228, "bullet" => 409, "c" => 496, "caron" => 400,
- "ccedilla" => 496, "cedilla" => 400, "cent" => 530,
- "circumflex" => 400, "colon" => 265, "comma" => 265,
- "copyright" => 818, "currency" => 530, "d" => 598, "dagger" => 504,
- "daggerdbl" => 488, "degree" => 350, "dieresis" => 400,
- "divide" => 570, "dollar" => 530, "dotaccent" => 400,
- "dotlessi" => 291, "e" => 514, "eacute" => 514,
- "ecircumflex" => 514, "edieresis" => 514, "egrave" => 514,
- "eight" => 530, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 570, "eth" => 577, "exclam" => 242,
- "exclamdown" => 242, "f" => 319, "fi" => 610, "five" => 530,
- "fl" => 610, "florin" => 530, "four" => 530, "fraction" => 150,
- "g" => 520, "germandbls" => 601, "grave" => 400, "greater" => 570,
- "guillemotleft" => 442, "guillemotright" => 442,
- "guilsinglleft" => 257, "guilsinglright" => 257, "h" => 607,
- "hungarumlaut" => 400, "hyphen" => 392, "i" => 291,
- "iacute" => 291, "icircumflex" => 291, "idieresis" => 291,
- "igrave" => 291, "j" => 280, "k" => 524, "l" => 279, "less" => 570,
- "logicalnot" => 570, "lslash" => 294, "m" => 923, "macron" => 400,
- "minus" => 570, "mu" => 606, "multiply" => 570, "n" => 619,
- "nine" => 530, "ntilde" => 619, "numbersign" => 530, "o" => 577,
- "oacute" => 577, "ocircumflex" => 577, "odieresis" => 577,
- "oe" => 882, "ogonek" => 400, "ograve" => 577, "one" => 530,
- "onehalf" => 860, "onequarter" => 860, "onesuperior" => 380,
- "ordfeminine" => 390, "ordmasculine" => 398, "oslash" => 577,
- "otilde" => 577, "p" => 608, "paragraph" => 555,
- "parenleft" => 350, "parenright" => 350, "percent" => 838,
- "period" => 265, "periodcentered" => 265, "perthousand" => 1208,
- "plus" => 570, "plusminus" => 570, "q" => 591, "question" => 389,
- "questiondown" => 389, "quotedbl" => 458, "quotedblbase" => 458,
- "quotedblleft" => 458, "quotedblright" => 458, "quoteleft" => 278,
- "quoteright" => 278, "quotesinglbase" => 278, "quotesingle" => 278,
- "r" => 389, "registered" => 818, "ring" => 400, "s" => 436,
- "scaron" => 436, "section" => 554, "semicolon" => 265,
- "seven" => 530, "six" => 530, "slash" => 460, "space" => 225,
- "sterling" => 530, "t" => 344, "thorn" => 606, "three" => 530,
- "threequarters" => 860, "threesuperior" => 380, "tilde" => 400,
- "trademark" => 1100, "two" => 530, "twosuperior" => 380,
- "u" => 606, "uacute" => 606, "ucircumflex" => 606,
- "udieresis" => 606, "ugrave" => 606, "underscore" => 500,
- "v" => 504, "w" => 768, "x" => 486, "y" => 506, "yacute" => 506,
- "ydieresis" => 506, "yen" => 530, "z" => 480, "zcaron" => 480,
- "zero" => 530,
- },
- kern => {
- "A" => {
- "C" => -24, "G" => -24, "O" => -24, "Q" => -24, "T" => -70,
- "U" => -50, "V" => -72, "W" => -58, "X" => -6, "Y" => -70,
- "b" => -12, "c" => -12, "d" => -12, "e" => -6, "o" => -12,
- "p" => -18, "q" => -6, "quotedblright" => -120,
- "quoteright" => -120, "t" => -12, "u" => -25, "v" => -60,
- "w" => -45, "y" => -50, "z" => 6,
- },
- "B" => {
- "T" => -20, "U" => -20, "V" => -20, "W" => -25, "a" => -12,
- "comma" => -20, "e" => -6, "h" => -12, "i" => -12, "l" => -12,
- "o" => -6, "period" => -30, "r" => -12, "u" => -12, "y" => -18,
- },
- "C" => {
- "C" => -6, "G" => -6, "O" => -6, "Q" => -6, "a" => -12,
- "e" => -12, "o" => -12, "r" => -6, "u" => -18, "y" => -24,
- "z" => -18,
- },
- "D" => {
- "V" => -35, "W" => -35, "Y" => -45, "a" => -6, "comma" => -50,
- "e" => -6, "h" => -12, "i" => -6, "period" => -60,
- "quotedblright" => -20, "quoteright" => -20, "r" => -12,
- "u" => -12, "y" => 6,
- },
- "E" => {
- "V" => -6, "W" => -6, "Y" => -6, "b" => -12, "c" => -6,
- "d" => -6, "e" => -6, "f" => -12, "g" => -6, "i" => -6,
- "j" => -6, "k" => 5, "l" => 5, "m" => -4, "n" => -4, "o" => -6,
- "p" => -18, "q" => -6, "r" => -4, "t" => -18, "u" => -12,
- "v" => -24, "w" => -24, "x" => -6, "y" => -30, "z" => -6,
- },
- "F" => {
- "A" => -60, "a" => -48, "comma" => -180, "e" => -36,
- "endash" => 20, "i" => -10, "l" => -12, "o" => -36,
- "period" => -180, "r" => -20, "u" => -12, "y" => -18,
- },
- "G" => {
- "a" => -12, "e" => 5, "h" => -12, "i" => -12, "l" => -6,
- "n" => -5, "o" => 5, "r" => -5, "u" => -12, "y" => -18,
- },
- "H" => {
- "a" => -24, "e" => -30, "i" => -18, "o" => -30, "u" => -26,
- "y" => -24,
- },
- "I" => {
- "a" => -24, "b" => -6, "c" => -30, "d" => -30, "e" => -30,
- "f" => -6, "g" => -10, "h" => -6, "k" => -6, "l" => -6,
- "m" => -18, "n" => -18, "o" => -30, "p" => -26, "r" => -12,
- "s" => -18, "t" => -24, "u" => -26, "v" => -24, "w" => -18,
- "x" => -6, "y" => -6, "z" => -6,
- },
- "J" => {
- "a" => -36, "braceright" => 20, "bracketright" => 20, "e" => -30,
- "i" => -20, "o" => -30, "u" => -36, "y" => -12,
- },
- "K" => {
- "C" => -42, "G" => -42, "O" => -42, "Q" => -42, "a" => -12,
- "e" => -24, "i" => 6, "o" => -30, "u" => -42, "v" => -70,
- "w" => -70, "y" => -60,
- },
- "L" => {
- "A" => 12, "C" => -18, "G" => -18, "O" => -10, "Q" => -18,
- "T" => -100, "U" => -24, "V" => -100, "W" => -90, "Y" => -70,
- "j" => -6, "l" => 6, "quotedblright" => -50,
- "quoteright" => -130, "u" => -12, "w" => -58, "y" => -52,
- },
- "M" => {
- "a" => -12, "c" => -30, "d" => -30, "e" => -30, "i" => -12,
- "j" => -12, "n" => -6, "o" => -30, "u" => -36, "y" => -24,
- },
- "N" => {
- "a" => -30, "e" => -30, "i" => -24, "o" => -30, "u" => -30,
- "y" => -24,
- },
- "O" => {
- "A" => -18, "T" => -30, "V" => -18, "W" => -30, "X" => -24,
- "Y" => -55, "a" => -12, "c" => -6, "comma" => -50, "d" => -6,
- "e" => -6, "g" => -6, "h" => -12, "i" => -5, "k" => -6,
- "l" => -6, "m" => -5, "n" => -5, "o" => -6, "p" => -6,
- "period" => -60, "q" => -6, "s" => -6, "t" => -6, "u" => -6,
- "z" => -6,
- },
- "P" => {
- "A" => -55, "E" => -6, "H" => -12, "I" => -6, "a" => -36,
- "comma" => -200, "e" => -30, "h" => -6, "hyphen" => -40,
- "l" => -6, "n" => -12, "o" => -30, "period" => -200, "r" => -12,
- "s" => -24, "t" => -6, "u" => -12,
- },
- "Q" => {
- "A" => -18, "T" => -24, "U" => -30, "V" => -18, "W" => -24,
- "X" => -24, "Y" => -30, "a" => -18, "u" => -6,
- },
- "R" => {
- "C" => -24, "G" => -24, "O" => -24, "Q" => -24, "T" => -32,
- "U" => -30, "V" => -32, "W" => -24, "Y" => -45, "a" => -12,
- "d" => -20, "e" => -20, "hyphen" => -30, "o" => -20,
- "quotedblright" => -20, "quoteright" => -20, "u" => -12,
- "y" => -20,
- },
- "S" => {
- "a" => -18, "e" => -12, "h" => -12, "i" => -20, "j" => -12,
- "k" => -24, "l" => -18, "m" => -20, "n" => -20, "o" => -12,
- "p" => -24, "q" => -5, "quotedblright" => -10,
- "quoteright" => -10, "r" => -20, "t" => -24, "u" => -24,
- "v" => -30, "w" => -30, "y" => -25,
- },
- "T" => {
- "A" => -65, "C" => -18, "G" => -18, "O" => -18, "Q" => -18,
- "S" => -12, "T" => 12, "V" => 6, "W" => 6, "X" => 18, "Y" => 12,
- "a" => -100, "braceright" => 54, "bracketright" => 54,
- "colon" => -50, "comma" => -110, "e" => -100, "emdash" => -50,
- "endash" => -50, "hyphen" => -100, "i" => -34, "m" => -82,
- "o" => -100, "parenright" => 54, "period" => -110,
- "quoteright" => 24, "r" => -82, "s" => -82, "semicolon" => -56,
- "u" => -82, "w" => -100, "y" => -84, "z" => -64,
- },
- "U" => {
- "A" => -40, "a" => -40, "b" => -12, "c" => -45, "d" => -45,
- "f" => -12, "g" => -50, "h" => -6, "i" => -28, "k" => -12,
- "l" => -12, "m" => -40, "n" => -40, "p" => -42, "r" => -40,
- "s" => -40, "t" => -36, "v" => -20, "x" => -30, "y" => -20,
- "z" => -30,
- },
- "V" => {
- "A" => -60, "C" => -12, "G" => -12, "O" => -12, "Q" => -12,
- "T" => 6, "a" => -60, "braceright" => 64, "bracketright" => 64,
- "colon" => -45, "comma" => -140, "e" => -70, "emdash" => -20,
- "endash" => -20, "hyphen" => -60, "i" => 6, "o" => -70,
- "parenright" => 85, "period" => -140, "quotedblright" => 20,
- "quoteright" => 36, "r" => -70, "semicolon" => -45, "u" => -40,
- "y" => -36,
- },
- "W" => {
- "A" => -48, "C" => -6, "G" => -6, "O" => -6, "Q" => -6,
- "T" => 18, "a" => -60, "braceright" => 64, "bracketright" => 64,
- "colon" => -40, "comma" => -100, "d" => -65, "e" => -65,
- "hyphen" => -40, "i" => -10, "m" => -45, "o" => -65,
- "parenright" => 85, "period" => -110, "quotedblright" => 20,
- "quoteright" => 36, "r" => -45, "semicolon" => -40, "u" => -46,
- "y" => -50,
- },
- "X" => {
- "A" => 6, "C" => -30, "G" => -30, "O" => -30, "Q" => -24,
- "a" => -6, "e" => -6, "quoteright" => 15, "u" => -24, "y" => -18,
- },
- "Y" => {
- "A" => -32, "C" => -18, "G" => -18, "O" => -18, "Q" => -18,
- "T" => 12, "V" => 12, "W" => 12, "X" => 12, "Y" => 12,
- "a" => -68, "braceright" => 64, "bracketright" => 64,
- "colon" => -50, "comma" => -90, "d" => -90, "e" => -90,
- "emdash" => -20, "hyphen" => -50, "l" => 10, "o" => -90,
- "parenright" => 60, "period" => -90, "q" => -100,
- "quotedblright" => 20, "quoteright" => 36, "semicolon" => -37,
- "t" => -46, "u" => -54, "v" => -50,
- },
- "Z" => {
- "A" => 20, "C" => -20, "G" => -30, "O" => -20, "Q" => -20,
- "a" => -6, "e" => -6, "i" => -12, "o" => -12, "u" => -6,
- "w" => -36, "y" => -36,
- },
- "a" => {
- "quotedblright" => -80, "quoteright" => -70,
- },
- "b" => {
- "comma" => -40, "period" => -40, "quotedblright" => -70,
- "quoteright" => -70, "v" => -35, "w" => -30, "y" => -25,
- },
- "braceleft" => {
- "J" => 80, "T" => 54, "V" => 64, "W" => 64, "Y" => 64,
- },
- "bracketleft" => {
- "J" => 80, "T" => 54, "V" => 64, "W" => 64, "Y" => 64,
- },
- "c" => {
- "period" => -10, "quotedblright" => -28, "quoteright" => -28,
- },
- "comma" => {
- "quotedblright" => -50, "quoteright" => -50,
- },
- "d" => {
- "quotedblright" => -24, "quoteright" => -24,
- },
- "e" => {
- "comma" => -20, "period" => -20, "quotedblright" => -60,
- "quoteright" => -60, "z" => -4,
- },
- "f" => {
- "braceright" => 100, "bracketright" => 100, "parenright" => 100,
- "quotedbl" => 30, "quotedblright" => 56, "quoteright" => 65,
- "quotesingle" => 30,
- },
- "g" => {
- "quotedblright" => -10, "quoteright" => -18,
- },
- "h" => {
- "quotedblright" => -80, "quoteright" => -80,
- },
- "j" => {
- "comma" => -30, "period" => -30, "quotedblright" => -20,
- "quoteright" => -20,
- },
- "k" => {
- "quotedblright" => -40, "quoteright" => -40,
- },
- "l" => {
- "quotedblright" => -10, "quoteright" => -10,
- },
- "m" => {
- "quotedblright" => -80, "quoteright" => -80,
- },
- "n" => {
- "quotedblright" => -80, "quoteright" => -80,
- },
- "o" => {
- "comma" => -40, "period" => -40, "quotedblright" => -70,
- "quoteright" => -70, "v" => -30, "w" => -30, "x" => -18,
- "y" => -30, "z" => -12,
- },
- "p" => {
- "comma" => -40, "period" => -40, "quotedblright" => -70,
- "quoteright" => -70, "w" => -30, "y" => -25, "z" => -20,
- },
- "parenleft" => {
- "J" => 80, "T" => 64, "V" => 64, "W" => 64, "Y" => 64,
- },
- "period" => {
- "quotedblright" => -50, "quoteright" => -50,
- },
- "q" => {
- "comma" => -10, "period" => -20, "quotedblright" => -50,
- "quoteright" => -50,
- },
- "quotedblleft" => {
- "A" => -130, "B" => -20, "C" => -30, "D" => -20, "E" => -20,
- "F" => -20, "G" => -30, "H" => -20, "I" => -20, "J" => -40,
- "K" => -20, "L" => -20, "M" => -20, "N" => -20, "O" => -30,
- "P" => -20, "Q" => -20, "R" => -20, "S" => -20, "T" => 10,
- "U" => -20, "V" => 18, "W" => 18, "Y" => 12, "Z" => -20,
- "a" => -70, "c" => -80, "d" => -80, "e" => -80, "f" => -50,
- "g" => -70, "m" => -50, "n" => -50, "o" => -80, "p" => -50,
- "q" => -80, "r" => -50, "s" => -50, "t" => -40, "u" => -40,
- "v" => -20, "w" => -20, "x" => -40, "y" => -30, "z" => -60,
- },
- "quotedblright" => {
- "comma" => -130, "period" => -130,
- },
- "quoteleft" => {
- "A" => -130, "B" => -20, "C" => -30, "D" => -20, "E" => -20,
- "F" => -20, "G" => -40, "H" => -20, "I" => -20, "J" => -40,
- "K" => -20, "L" => -20, "M" => -20, "N" => -20, "O" => -30,
- "P" => -20, "Q" => -20, "R" => -20, "T" => 10, "U" => -20,
- "V" => 18, "W" => 18, "X" => 12, "Y" => 18, "Z" => -20,
- "a" => -60, "c" => -70, "d" => -70, "e" => -70, "f" => -40,
- "g" => -65, "m" => -50, "n" => -50, "o" => -70, "p" => -50,
- "q" => -70, "quoteleft" => -72, "r" => -50, "s" => -45,
- "t" => -40, "u" => -50, "v" => -20, "w" => -20, "x" => -30,
- "y" => -35, "z" => -40,
- },
- "quoteright" => {
- "comma" => -130, "d" => -120, "l" => -6, "m" => -70,
- "period" => -130, "quoteright" => -72, "r" => -70, "s" => -110,
- "t" => -75, "v" => -40,
- },
- "r" => {
- "a" => -10, "c" => -20, "colon" => 10, "comma" => -60,
- "d" => -20, "e" => -20, "f" => 8, "g" => -6, "h" => 6,
- "hyphen" => -20, "i" => 8, "k" => -6, "m" => 8, "n" => 8,
- "o" => -6, "period" => -60, "q" => -6, "quotedblright" => -20,
- "quoteright" => -20, "semicolon" => 10, "t" => 8, "u" => 8,
- "v" => 18, "w" => 18, "x" => 12, "y" => 18, "z" => 10,
- },
- "s" => {
- "comma" => -10, "period" => -20, "quotedblright" => -40,
- "quoteright" => -40,
- },
- "space" => {
- "T" => -36, "V" => -60, "W" => -60, "Y" => -60,
- "quotedblbase" => -60, "quotedblleft" => -40, "quoteleft" => -40,
- "quotesinglbase" => -60,
- },
- "t" => {
- "quotedblright" => -18, "quoteright" => -18,
- },
- "u" => {
- "quotedblright" => -30, "quoteright" => -30,
- },
- "v" => {
- "a" => -6, "c" => -6, "colon" => 10, "comma" => -90, "d" => -10,
- "e" => -5, "o" => -5, "period" => -90, "q" => -10,
- "quotedblright" => 20, "quoteright" => 20, "semicolon" => 10,
- },
- "w" => {
- "c" => -6, "colon" => 10, "comma" => -75, "d" => -6, "e" => -6,
- "period" => -80, "q" => -6, "quotedblright" => 20,
- "quoteright" => 20, "semicolon" => 10,
- },
- "x" => {
- "c" => -12, "d" => -12, "o" => -6, "q" => -6,
- "quotedblright" => -20, "quoteright" => -10,
- },
- "y" => {
- "c" => -6, "colon" => 10, "comma" => -85, "d" => -6, "e" => -6,
- "hyphen" => -30, "o" => -6, "period" => -95, "q" => -6,
- "semicolon" => 10,
- },
- "z" => {
- "c" => -6, "d" => -6, "e" => -6, "o" => -6,
- "quotedblright" => -30, "quoteright" => -20,
- }
- }
-);
-1;
diff --git a/doc/metrics/putri8a.ph b/doc/metrics/putri8a.ph
deleted file mode 100644
index 12159bc9..00000000
--- a/doc/metrics/putri8a.ph
+++ /dev/null
@@ -1,387 +0,0 @@
-%PS_Utopia_Italic = (
- name => 'Utopia-Italic',
- widths => {
- "A" => 624, "AE" => 880, "Aacute" => 624, "Acircumflex" => 624,
- "Adieresis" => 624, "Agrave" => 624, "Aring" => 624,
- "Atilde" => 624, "B" => 632, "C" => 661, "Ccedilla" => 661,
- "D" => 763, "E" => 596, "Eacute" => 596, "Ecircumflex" => 596,
- "Edieresis" => 596, "Egrave" => 596, "Eth" => 770, "F" => 571,
- "G" => 709, "H" => 775, "I" => 345, "Iacute" => 345,
- "Icircumflex" => 345, "Idieresis" => 345, "Igrave" => 345,
- "J" => 352, "K" => 650, "L" => 565, "Lslash" => 571, "M" => 920,
- "N" => 763, "Ntilde" => 763, "O" => 753, "OE" => 1020,
- "Oacute" => 753, "Ocircumflex" => 753, "Odieresis" => 753,
- "Ograve" => 753, "Oslash" => 753, "Otilde" => 753, "P" => 614,
- "Q" => 753, "R" => 640, "S" => 533, "Scaron" => 533, "T" => 606,
- "Thorn" => 604, "U" => 794, "Uacute" => 794, "Ucircumflex" => 794,
- "Udieresis" => 794, "Ugrave" => 794, "V" => 637, "W" => 946,
- "X" => 632, "Y" => 591, "Yacute" => 591, "Ydieresis" => 591,
- "Z" => 622, "Zcaron" => 622, "a" => 561, "aacute" => 561,
- "acircumflex" => 561, "acute" => 400, "adieresis" => 561,
- "ae" => 779, "agrave" => 561, "ampersand" => 725, "aring" => 561,
- "asciicircum" => 570, "asciitilde" => 570, "asterisk" => 412,
- "at" => 794, "atilde" => 561, "b" => 559, "backslash" => 390,
- "bar" => 270, "braceleft" => 340, "braceright" => 340,
- "bracketleft" => 330, "bracketright" => 330, "breve" => 400,
- "brokenbar" => 270, "bullet" => 500, "c" => 441, "caron" => 400,
- "ccedilla" => 441, "cedilla" => 400, "cent" => 530,
- "circumflex" => 400, "colon" => 265, "comma" => 265,
- "copyright" => 836, "currency" => 530, "d" => 587, "dagger" => 500,
- "daggerdbl" => 490, "degree" => 400, "dieresis" => 400,
- "divide" => 570, "dollar" => 530, "dotaccent" => 402,
- "dotlessi" => 317, "e" => 453, "eacute" => 453,
- "ecircumflex" => 453, "edieresis" => 453, "egrave" => 453,
- "eight" => 530, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 570, "eth" => 537, "exclam" => 240,
- "exclamdown" => 240, "f" => 315, "fi" => 607, "five" => 530,
- "fl" => 603, "florin" => 530, "four" => 530, "fraction" => 100,
- "g" => 499, "germandbls" => 577, "grave" => 400, "greater" => 570,
- "guillemotleft" => 462, "guillemotright" => 462,
- "guilsinglleft" => 277, "guilsinglright" => 277, "h" => 607,
- "hungarumlaut" => 400, "hyphen" => 392, "i" => 317,
- "iacute" => 317, "icircumflex" => 317, "idieresis" => 317,
- "igrave" => 317, "j" => 309, "k" => 545, "l" => 306, "less" => 570,
- "logicalnot" => 570, "lslash" => 318, "m" => 912, "macron" => 400,
- "minus" => 570, "mu" => 618, "multiply" => 570, "n" => 618,
- "nine" => 530, "ntilde" => 618, "numbersign" => 530, "o" => 537,
- "oacute" => 537, "ocircumflex" => 537, "odieresis" => 537,
- "oe" => 806, "ogonek" => 350, "ograve" => 537, "one" => 530,
- "onehalf" => 890, "onequarter" => 890, "onesuperior" => 370,
- "ordfeminine" => 425, "ordmasculine" => 389, "oslash" => 537,
- "otilde" => 537, "p" => 590, "paragraph" => 560,
- "parenleft" => 350, "parenright" => 350, "percent" => 826,
- "period" => 265, "periodcentered" => 265, "perthousand" => 1200,
- "plus" => 570, "plusminus" => 570, "q" => 559, "question" => 425,
- "questiondown" => 425, "quotedbl" => 402, "quotedblbase" => 402,
- "quotedblleft" => 402, "quotedblright" => 402, "quoteleft" => 216,
- "quoteright" => 216, "quotesinglbase" => 216, "quotesingle" => 216,
- "r" => 402, "registered" => 836, "ring" => 400, "s" => 389,
- "scaron" => 389, "section" => 530, "semicolon" => 265,
- "seven" => 530, "six" => 530, "slash" => 270, "space" => 225,
- "sterling" => 530, "t" => 341, "thorn" => 584, "three" => 530,
- "threequarters" => 890, "threesuperior" => 370, "tilde" => 400,
- "trademark" => 1100, "two" => 530, "twosuperior" => 370,
- "u" => 618, "uacute" => 618, "ucircumflex" => 618,
- "udieresis" => 618, "ugrave" => 618, "underscore" => 500,
- "v" => 510, "w" => 785, "x" => 516, "y" => 468, "yacute" => 468,
- "ydieresis" => 468, "yen" => 530, "z" => 468, "zcaron" => 468,
- "zero" => 530,
- },
- kern => {
- "A" => {
- "C" => -30, "G" => -30, "O" => -30, "Q" => -30, "T" => -72,
- "U" => -60, "V" => -90, "W" => -80, "X" => -8, "Y" => -76,
- "a" => 12, "b" => -6, "c" => -6, "d" => 10, "h" => -6, "j" => 6,
- "l" => -18, "m" => -18, "n" => -18, "o" => -10, "p" => -12,
- "q" => 10, "quotedblright" => -110, "quoteright" => -110,
- "r" => -12, "s" => 15, "t" => -6, "u" => -10, "v" => -30,
- "w" => -30, "x" => 10, "y" => -20,
- },
- "B" => {
- "T" => -20, "U" => -50, "V" => -50, "W" => -20, "a" => 12,
- "e" => 6, "h" => -15, "i" => -12, "k" => -15, "l" => -20,
- "o" => 6, "quotedblright" => -30, "quoteright" => -40,
- "r" => -15, "u" => -20, "y" => -6,
- },
- "C" => {
- "a" => -6, "e" => -6, "i" => -5, "quotedblright" => 20,
- "u" => -18, "y" => -18, "z" => -6,
- },
- "D" => {
- "V" => -60, "W" => -50, "Y" => -70, "a" => 6, "comma" => -20,
- "e" => 6, "h" => -25, "i" => 6, "o" => 6, "period" => -30,
- "quotedblright" => -50, "quoteright" => -40, "u" => -10,
- "y" => 18,
- },
- "E" => {
- "b" => -6, "comma" => 10, "d" => 10, "e" => 5, "g" => -12,
- "i" => -12, "j" => -6, "k" => -10, "l" => -12, "m" => -12,
- "n" => -12, "o" => -6, "p" => -12, "period" => 10, "q" => 10,
- "quotedblright" => 10, "quoteright" => 10, "r" => -6, "s" => 5,
- "t" => -18, "u" => -24, "v" => -18, "w" => -20, "x" => 5,
- "y" => -18, "z" => -6,
- },
- "F" => {
- "A" => -45, "a" => -30, "comma" => -170, "e" => -30, "i" => -12,
- "l" => -6, "o" => -30, "period" => -180, "quotedblright" => 35,
- "quoteright" => 15, "r" => -18, "u" => -30, "y" => -12,
- },
- "G" => {
- "a" => 5, "e" => 10, "h" => -18, "i" => -12, "l" => -24,
- "n" => -22, "o" => 10, "quotedblright" => -20,
- "quoteright" => -20, "r" => -22, "u" => -22, "y" => -16,
- },
- "H" => {
- "a" => -12, "e" => -12, "i" => -12, "o" => -12,
- "quotedblright" => 10, "quoteright" => 10, "u" => -30,
- "y" => -18,
- },
- "I" => {
- "a" => -6, "b" => -6, "c" => -12, "d" => -6, "f" => -6,
- "g" => -12, "k" => -6, "l" => -6, "m" => -18, "n" => -18,
- "o" => -12, "p" => -18, "quotedblright" => 10,
- "quoteright" => 10, "r" => -12, "s" => -18, "t" => -18,
- "u" => -30, "v" => -30, "w" => -30, "x" => -6, "y" => -6,
- "z" => -20,
- },
- "J" => {
- "a" => -36, "braceright" => 10, "e" => -36, "i" => -30,
- "o" => -36, "quotedblright" => 15, "quoteright" => 6, "u" => -36,
- "y" => -12,
- },
- "K" => {
- "C" => -24, "G" => -24, "O" => -24, "Q" => -24, "a" => -6,
- "e" => -12, "h" => 6, "i" => -6, "n" => -18, "o" => -24,
- "quotedblright" => 40, "quoteright" => 25, "r" => -12,
- "u" => -24, "v" => -20, "w" => -30, "y" => -40,
- },
- "L" => {
- "A" => 30, "C" => -48, "G" => -48, "O" => -48, "Q" => -48,
- "T" => -80, "U" => -42, "V" => -110, "W" => -90, "Y" => -80,
- "a" => 10, "i" => -18, "j" => -18, "l" => -16,
- "quotedblright" => -110, "quoteright" => -110, "u" => -18,
- "w" => -30, "y" => -55,
- },
- "M" => {
- "a" => -6, "c" => -20, "d" => -10, "e" => -20, "i" => -12,
- "j" => -18, "n" => -12, "o" => -25, "quotedblright" => 15,
- "quoteright" => 6, "u" => -24, "y" => -18,
- },
- "N" => {
- "a" => -22, "e" => -20, "i" => -12, "o" => -25,
- "quotedblright" => 10, "quoteright" => 10, "u" => -24,
- "y" => -18,
- },
- "O" => {
- "A" => -18, "T" => -48, "V" => -60, "W" => -40, "X" => -30,
- "Y" => -75, "a" => 5, "b" => -6, "c" => 5, "comma" => -10,
- "d" => 6, "e" => 5, "g" => -6, "h" => -10, "j" => -6, "k" => -10,
- "l" => -20, "m" => -6, "n" => -6, "p" => -6, "period" => -20,
- "q" => 5, "quotedblright" => -40, "quoteright" => -40, "r" => -6,
- "s" => -6, "t" => -6, "u" => -6, "v" => -10, "w" => -10,
- "y" => 12, "z" => -6,
- },
- "P" => {
- "A" => -75, "E" => -30, "H" => -30, "I" => -30, "a" => -24,
- "comma" => -220, "e" => -24, "h" => -15, "l" => -25, "n" => -12,
- "o" => -24, "period" => -220, "r" => -6, "s" => -24, "t" => -6,
- "u" => -18, "y" => 6,
- },
- "Q" => {
- "A" => -18, "T" => -36, "U" => -35, "V" => -60, "W" => -35,
- "X" => -12, "Y" => -70, "a" => -6, "quotedblright" => -50,
- "quoteright" => -40, "u" => -6,
- },
- "R" => {
- "A" => -6, "C" => -10, "G" => -10, "O" => -10, "Q" => -10,
- "T" => -30, "U" => -40, "V" => -40, "W" => -30, "Y" => -50,
- "e" => -12, "hyphen" => -20, "o" => -12, "quotedblright" => -20,
- "quoteright" => -30, "u" => -12, "y" => -14,
- },
- "S" => {
- "e" => -6, "h" => -30, "i" => -30, "j" => -25, "k" => -24,
- "l" => -30, "m" => -24, "n" => -24, "p" => -18,
- "quotedblright" => -30, "quoteright" => -38, "r" => -20,
- "t" => -30, "u" => -18, "v" => -30, "w" => -30, "y" => -30,
- },
- "T" => {
- "A" => -56, "C" => -12, "G" => -12, "O" => -12, "Q" => -12,
- "T" => 18, "W" => 6, "X" => 18, "Y" => 12, "a" => -90,
- "braceright" => 54, "bracketright" => 45, "colon" => -10,
- "comma" => -110, "e" => -90, "emdash" => -60, "endash" => -60,
- "hyphen" => -100, "i" => -34, "m" => -64, "o" => -90,
- "parenright" => 54, "period" => -100, "quotedblright" => 50,
- "quoteright" => 45, "r" => -64, "s" => -72, "semicolon" => -36,
- "u" => -74, "w" => -64, "y" => -60, "z" => -70,
- },
- "U" => {
- "A" => -45, "a" => -40, "b" => -6, "c" => -35, "d" => -40,
- "g" => -30, "h" => -6, "i" => -24, "k" => -12, "l" => -12,
- "m" => -45, "n" => -45, "p" => -40, "quotedblright" => 10,
- "quoteright" => 10, "r" => -30, "s" => -30, "t" => -24,
- "x" => -40, "z" => -30,
- },
- "V" => {
- "A" => -70, "T" => 6, "a" => -60, "braceright" => 64,
- "bracketright" => 64, "colon" => -18, "comma" => -120,
- "e" => -52, "emdash" => -20, "endash" => -20, "hyphen" => -60,
- "i" => -10, "o" => -62, "parenright" => 64, "period" => -130,
- "quotedblright" => 70, "quoteright" => 75, "r" => -50,
- "semicolon" => -35, "u" => -42, "y" => -46,
- },
- "W" => {
- "A" => -58, "C" => -10, "G" => -10, "O" => -10, "Q" => -10,
- "T" => 12, "a" => -60, "braceright" => 64, "bracketright" => 55,
- "colon" => -28, "comma" => -108, "d" => -50, "e" => -54,
- "emdash" => -10, "endash" => -2, "hyphen" => -40, "i" => -10,
- "m" => -35, "o" => -60, "parenright" => 64, "period" => -108,
- "quotedblright" => 60, "quoteright" => 55, "r" => -40,
- "semicolon" => -28, "t" => -20, "u" => -56, "y" => -42,
- },
- "X" => {
- "A" => -18, "C" => -30, "G" => -30, "O" => -30, "Q" => -30,
- "W" => -6, "Y" => -6, "a" => 5, "e" => -10, "i" => -6,
- "quotedblright" => 15, "quoteright" => 35, "r" => -6, "u" => -30,
- "y" => -35,
- },
- "Y" => {
- "A" => -36, "C" => -5, "G" => -5, "O" => -5, "Q" => -5,
- "T" => 25, "V" => 6, "W" => 12, "X" => 12, "Y" => 12, "a" => -82,
- "braceright" => 75, "bracketright" => 64, "colon" => -36,
- "comma" => -80, "d" => -80, "e" => -72, "emdash" => -20,
- "endash" => -20, "hyphen" => -95, "l" => 10, "o" => -72,
- "parenright" => 60, "period" => -90, "q" => -100,
- "quotedblright" => 70, "quoteright" => 65, "semicolon" => -36,
- "t" => -32, "u" => -58, "v" => -50,
- },
- "Z" => {
- "A" => 12, "C" => -30, "G" => -30, "O" => -30, "Q" => -30,
- "a" => -6, "e" => -6, "i" => -12, "o" => -6,
- "quotedblright" => 10, "quoteright" => 10, "u" => -12,
- "w" => -36, "y" => -36,
- },
- "a" => {
- "quotedblright" => -40, "quoteright" => -40,
- },
- "b" => {
- "comma" => -30, "period" => -40, "quotedblright" => -50,
- "quoteright" => -50, "v" => -15, "w" => -15, "y" => -6,
- },
- "braceleft" => {
- "J" => 80, "T" => 54, "V" => 64, "W" => 64, "Y" => 64,
- },
- "bracketleft" => {
- "J" => 80, "T" => 54, "V" => 64, "W" => 64, "Y" => 64,
- },
- "c" => {
- "quotedblright" => -20, "quoteright" => -20,
- },
- "colon" => {
- "space" => -30,
- },
- "comma" => {
- "quotedblright" => -80, "quoteright" => -80, "space" => -40,
- },
- "d" => {
- "quotedblright" => -12, "quoteright" => -12,
- },
- "e" => {
- "quotedblright" => -30, "quoteright" => -30, "w" => -10,
- "x" => -10,
- },
- "f" => {
- "braceright" => 90, "bracketright" => 90, "comma" => -20,
- "parenright" => 100, "period" => -20, "quotedblright" => 110,
- "quoteright" => 110,
- },
- "g" => {
- "f" => 42, "p" => 12, "y" => 30,
- },
- "h" => {
- "quotedblright" => -80, "quoteright" => -80,
- },
- "j" => {
- "comma" => -20, "period" => -35, "quotedblright" => -20,
- "quoteright" => -20,
- },
- "k" => {
- "quotedblright" => -50, "quoteright" => -30,
- },
- "m" => {
- "quotedblright" => -80, "quoteright" => -80,
- },
- "n" => {
- "quotedblright" => -80, "quoteright" => -80,
- },
- "o" => {
- "comma" => -20, "period" => -30, "quotedblright" => -50,
- "quoteright" => -60, "v" => -35, "w" => -30, "x" => -20,
- "y" => -20, "z" => -10,
- },
- "p" => {
- "comma" => -20, "period" => -30, "quotedblright" => -70,
- "quoteright" => -50, "w" => -15, "z" => -10,
- },
- "parenleft" => {
- "J" => 80, "T" => 64, "V" => 75, "W" => 75, "Y" => 75,
- },
- "period" => {
- "quotedblright" => -80, "quoteright" => -80, "space" => -40,
- },
- "q" => {
- "comma" => -10, "period" => -20, "quotedblright" => -30,
- "quoteright" => -20,
- },
- "quotedblleft" => {
- "A" => -90, "T" => 36, "V" => 28, "W" => 28, "X" => 28,
- "Y" => 12, "a" => -60, "b" => 24, "c" => -40, "d" => -40,
- "e" => -40, "g" => -30, "h" => 10, "k" => 10, "l" => 10,
- "m" => -12, "n" => -12, "o" => -30, "p" => -12, "q" => -40,
- "r" => -12, "s" => -30, "t" => -12, "u" => -12, "v" => -12,
- "w" => -12, "x" => -40, "z" => -30,
- },
- "quotedblright" => {
- "comma" => -100, "period" => -100, "space" => -40,
- },
- "quoteleft" => {
- "A" => -90, "T" => 36, "V" => 28, "W" => 28, "X" => 28,
- "Y" => 12, "a" => -45, "b" => 24, "c" => -30, "d" => -30,
- "e" => -30, "g" => -30, "h" => 10, "k" => 10, "l" => 10,
- "m" => -12, "n" => -12, "o" => -30, "p" => -12, "q" => -30,
- "quoteleft" => -18, "r" => -12, "s" => -30, "t" => -12,
- "u" => -12, "v" => -12, "w" => -12, "x" => -40, "y" => -10,
- "z" => -30,
- },
- "quoteright" => {
- "comma" => -100, "d" => -70, "l" => -12, "m" => -25,
- "period" => -100, "quoteright" => -18, "r" => -25, "s" => -55,
- "space" => -40, "t" => -35, "v" => -35,
- },
- "r" => {
- "a" => -20, "c" => -12, "comma" => -110, "d" => -26, "e" => -26,
- "emdash" => -20, "f" => 8, "h" => -20, "hyphen" => -30,
- "k" => -20, "l" => -20, "o" => -6, "period" => -120, "q" => -24,
- "quotedblright" => -15, "t" => 8, "v" => 6, "w" => 6, "y" => 18,
- },
- "s" => {
- "quotedblright" => -45, "quoteright" => -40,
- },
- "semicolon" => {
- "space" => -30,
- },
- "space" => {
- "V" => -70, "W" => -70, "Y" => -70, "quotedblbase" => -30,
- "quotedblleft" => -40, "quoteleft" => -40,
- "quotesinglbase" => -30,
- },
- "t" => {
- "quotedblright" => -10, "quoteright" => 10,
- },
- "u" => {
- "quotedblright" => -50, "quoteright" => -55,
- },
- "v" => {
- "a" => -6, "c" => -6, "comma" => -70, "d" => -6, "e" => -6,
- "o" => -6, "period" => -70, "q" => -6, "quotedblright" => -30,
- "quoteright" => -20,
- },
- "w" => {
- "comma" => -62, "period" => -62, "quotedblright" => -30,
- "quoteright" => -20,
- },
- "x" => {
- "c" => -6, "d" => -6, "e" => -6, "o" => -6, "q" => -6,
- "quotedblright" => -50, "quoteright" => -40, "w" => -6,
- "y" => 12,
- },
- "y" => {
- "comma" => -60, "emdash" => 40, "period" => -70,
- "quotedblright" => -20, "quoteright" => -10,
- },
- "z" => {
- "c" => -6, "d" => -6, "e" => -6, "o" => -6,
- "quotedblright" => -50, "quoteright" => -40,
- }
- }
-);
-1;
diff --git a/doc/metrics/pzcmi8a.ph b/doc/metrics/pzcmi8a.ph
deleted file mode 100644
index 94d5cf66..00000000
--- a/doc/metrics/pzcmi8a.ph
+++ /dev/null
@@ -1,189 +0,0 @@
-%PS_ZapfChancery_MediumItalic = (
- name => 'ZapfChancery-MediumItalic',
- widths => {
- "A" => 620, "AE" => 740, "Aacute" => 620, "Acircumflex" => 620,
- "Adieresis" => 620, "Agrave" => 620, "Aring" => 620,
- "Atilde" => 620, "B" => 600, "C" => 520, "Ccedilla" => 520,
- "D" => 700, "E" => 620, "Eacute" => 620, "Ecircumflex" => 620,
- "Edieresis" => 620, "Egrave" => 620, "Eth" => 700, "F" => 580,
- "G" => 620, "H" => 680, "I" => 380, "Iacute" => 380,
- "Icircumflex" => 380, "Idieresis" => 380, "Igrave" => 380,
- "J" => 400, "K" => 660, "L" => 580, "Lslash" => 580, "M" => 840,
- "N" => 700, "Ntilde" => 700, "O" => 600, "OE" => 820,
- "Oacute" => 600, "Ocircumflex" => 600, "Odieresis" => 600,
- "Ograve" => 600, "Oslash" => 660, "Otilde" => 600, "P" => 540,
- "Q" => 600, "R" => 600, "S" => 460, "Scaron" => 460, "T" => 500,
- "Thorn" => 540, "U" => 740, "Uacute" => 740, "Ucircumflex" => 740,
- "Udieresis" => 740, "Ugrave" => 740, "V" => 640, "W" => 880,
- "X" => 560, "Y" => 560, "Yacute" => 560, "Ydieresis" => 560,
- "Z" => 620, "Zcaron" => 620, "a" => 420, "aacute" => 420,
- "acircumflex" => 420, "acute" => 300, "adieresis" => 420,
- "ae" => 540, "agrave" => 420, "ampersand" => 780, "aring" => 420,
- "asciicircum" => 520, "asciitilde" => 520, "asterisk" => 420,
- "at" => 700, "atilde" => 420, "b" => 420, "backslash" => 480,
- "bar" => 520, "braceleft" => 240, "braceright" => 240,
- "bracketleft" => 240, "bracketright" => 320, "breve" => 440,
- "brokenbar" => 520, "bullet" => 600, "c" => 340, "caron" => 340,
- "ccedilla" => 340, "cedilla" => 300, "cent" => 440,
- "circumflex" => 340, "colon" => 260, "comma" => 220,
- "copyright" => 740, "currency" => 440, "d" => 440, "dagger" => 460,
- "daggerdbl" => 480, "degree" => 400, "dieresis" => 360,
- "divide" => 520, "dollar" => 440, "dotaccent" => 220,
- "dotlessi" => 240, "e" => 340, "eacute" => 340,
- "ecircumflex" => 340, "edieresis" => 340, "egrave" => 340,
- "eight" => 440, "ellipsis" => 1000, "emdash" => 1000,
- "endash" => 500, "equal" => 520, "eth" => 400, "exclam" => 280,
- "exclamdown" => 280, "f" => 320, "fi" => 520, "five" => 440,
- "fl" => 520, "florin" => 440, "four" => 440, "fraction" => 60,
- "g" => 400, "germandbls" => 420, "grave" => 220, "greater" => 520,
- "guillemotleft" => 340, "guillemotright" => 380,
- "guilsinglleft" => 240, "guilsinglright" => 260, "h" => 440,
- "hungarumlaut" => 400, "hyphen" => 280, "i" => 240,
- "iacute" => 240, "icircumflex" => 240, "idieresis" => 240,
- "igrave" => 240, "j" => 220, "k" => 440, "l" => 240, "less" => 520,
- "logicalnot" => 520, "lslash" => 300, "m" => 620, "macron" => 440,
- "minus" => 520, "mu" => 460, "multiply" => 520, "n" => 460,
- "nine" => 440, "ntilde" => 460, "numbersign" => 440, "o" => 400,
- "oacute" => 400, "ocircumflex" => 400, "odieresis" => 400,
- "oe" => 560, "ogonek" => 280, "ograve" => 400, "one" => 440,
- "onehalf" => 660, "onequarter" => 660, "onesuperior" => 264,
- "ordfeminine" => 260, "ordmasculine" => 260, "oslash" => 440,
- "otilde" => 400, "p" => 440, "paragraph" => 500,
- "parenleft" => 260, "parenright" => 220, "percent" => 680,
- "period" => 220, "periodcentered" => 220, "perthousand" => 960,
- "plus" => 520, "plusminus" => 520, "q" => 400, "question" => 380,
- "questiondown" => 400, "quotedbl" => 220, "quotedblbase" => 280,
- "quotedblleft" => 340, "quotedblright" => 360, "quoteleft" => 240,
- "quoteright" => 240, "quotesinglbase" => 180, "quotesingle" => 160,
- "r" => 300, "registered" => 740, "ring" => 300, "s" => 320,
- "scaron" => 320, "section" => 420, "semicolon" => 240,
- "seven" => 440, "six" => 440, "slash" => 340, "space" => 220,
- "sterling" => 440, "t" => 320, "thorn" => 440, "three" => 440,
- "threequarters" => 660, "threesuperior" => 264, "tilde" => 440,
- "trademark" => 1000, "two" => 440, "twosuperior" => 264,
- "u" => 460, "uacute" => 460, "ucircumflex" => 460,
- "udieresis" => 460, "ugrave" => 460, "underscore" => 500,
- "v" => 440, "w" => 680, "x" => 420, "y" => 400, "yacute" => 400,
- "ydieresis" => 400, "yen" => 440, "z" => 440, "zcaron" => 440,
- "zero" => 440,
- },
- kern => {
- "A" => {
- "C" => 20, "G" => -30, "O" => 10, "Q" => 10, "T" => 10,
- "U" => -10, "quotedblright" => -40, "quoteright" => -40,
- },
- "D" => {
- "A" => -10, "Y" => 10, "comma" => -20, "period" => -30,
- },
- "F" => {
- "comma" => -30, "i" => 10, "period" => -40,
- },
- "G" => {
- "comma" => -10, "period" => -20,
- },
- "J" => {
- "comma" => -10, "period" => -20,
- },
- "K" => {
- "e" => -20, "o" => -20, "u" => -20,
- },
- "L" => {
- "V" => -20, "W" => -10, "quotedblright" => -25,
- "quoteright" => -25, "y" => -10,
- },
- "O" => {
- "A" => -20, "T" => 20, "Y" => 10, "comma" => -10,
- "period" => -20,
- },
- "P" => {
- "A" => -10, "a" => -20, "comma" => -40, "e" => -10, "o" => -10,
- "period" => -50,
- },
- "Q" => {
- "U" => -10,
- },
- "R" => {
- "T" => 20, "W" => 10, "Y" => 10,
- },
- "T" => {
- "A" => 10, "O" => 30, "a" => -20, "e" => -20, "h" => 20,
- "hyphen" => -20, "i" => 20, "o" => -20,
- },
- "V" => {
- "G" => -20, "O" => 10, "a" => -20, "comma" => -90, "e" => -20,
- "o" => -20, "period" => -100,
- },
- "W" => {
- "O" => 10, "a" => -20, "comma" => -40, "e" => -20, "h" => 10,
- "i" => 10, "o" => -20, "period" => -50,
- },
- "Y" => {
- "a" => -60, "comma" => -40, "e" => -40, "i" => 10, "o" => -50,
- "period" => -50, "u" => -20,
- },
- "b" => {
- "b" => -20, "comma" => -20, "l" => -20, "period" => -30,
- },
- "c" => {
- "k" => -10,
- },
- "comma" => {
- "quotedblright" => -70, "quoteright" => -70,
- },
- "d" => {
- "d" => -40, "v" => -10, "w" => -20,
- },
- "e" => {
- "y" => 10,
- },
- "f" => {
- "a" => -20, "comma" => -40, "e" => -10, "f" => -50,
- "period" => -50, "quotedblright" => 30, "quoteright" => 30,
- },
- "g" => {
- "a" => 10, "comma" => -20, "e" => 10, "i" => 10, "period" => -30,
- "y" => 10,
- },
- "k" => {
- "e" => -20, "o" => -10, "y" => 10,
- },
- "m" => {
- "u" => 10, "y" => 10,
- },
- "n" => {
- "y" => 20,
- },
- "o" => {
- "comma" => -20, "period" => -30,
- },
- "p" => {
- "comma" => -20, "p" => -10, "period" => -30,
- },
- "period" => {
- "quotedblright" => -80, "quoteright" => -80,
- },
- "quotedblleft" => {
- "A" => 10, "quoteleft" => 20,
- },
- "quoteleft" => {
- "A" => 10, "quoteleft" => -115,
- },
- "quoteright" => {
- "l" => 20, "quotedblright" => 20, "quoteright" => -115,
- "r" => 30, "s" => -25, "t" => 20, "v" => 30,
- },
- "r" => {
- "comma" => -40, "i" => 10, "period" => -50,
- },
- "s" => {
- "comma" => -10, "period" => -20,
- },
- "v" => {
- "comma" => -20, "period" => -30,
- },
- "w" => {
- "comma" => -20, "h" => 20, "o" => 10, "period" => -30,
- }
- }
-);
-1;
diff --git a/doc/metrics/pzdr.ph b/doc/metrics/pzdr.ph
deleted file mode 100644
index 1b54f6a1..00000000
--- a/doc/metrics/pzdr.ph
+++ /dev/null
@@ -1,59 +0,0 @@
-%PS_ZapfDingbats = (
- name => 'ZapfDingbats',
- widths => {
- "a1" => 974, "a10" => 692, "a100" => 668, "a101" => 732,
- "a102" => 544, "a103" => 544, "a104" => 910, "a105" => 911,
- "a106" => 667, "a107" => 760, "a108" => 760, "a109" => 626,
- "a11" => 960, "a110" => 694, "a111" => 595, "a112" => 776,
- "a117" => 690, "a118" => 791, "a119" => 790, "a12" => 939,
- "a120" => 788, "a121" => 788, "a122" => 788, "a123" => 788,
- "a124" => 788, "a125" => 788, "a126" => 788, "a127" => 788,
- "a128" => 788, "a129" => 788, "a13" => 549, "a130" => 788,
- "a131" => 788, "a132" => 788, "a133" => 788, "a134" => 788,
- "a135" => 788, "a136" => 788, "a137" => 788, "a138" => 788,
- "a139" => 788, "a14" => 855, "a140" => 788, "a141" => 788,
- "a142" => 788, "a143" => 788, "a144" => 788, "a145" => 788,
- "a146" => 788, "a147" => 788, "a148" => 788, "a149" => 788,
- "a15" => 911, "a150" => 788, "a151" => 788, "a152" => 788,
- "a153" => 788, "a154" => 788, "a155" => 788, "a156" => 788,
- "a157" => 788, "a158" => 788, "a159" => 788, "a16" => 933,
- "a160" => 894, "a161" => 838, "a162" => 924, "a163" => 1016,
- "a164" => 458, "a165" => 924, "a166" => 918, "a167" => 927,
- "a168" => 928, "a169" => 928, "a17" => 945, "a170" => 834,
- "a171" => 873, "a172" => 828, "a173" => 924, "a174" => 917,
- "a175" => 930, "a176" => 931, "a177" => 463, "a178" => 883,
- "a179" => 836, "a18" => 974, "a180" => 867, "a181" => 696,
- "a182" => 874, "a183" => 760, "a184" => 946, "a185" => 865,
- "a186" => 967, "a187" => 831, "a188" => 873, "a189" => 927,
- "a19" => 755, "a190" => 970, "a191" => 918, "a192" => 748,
- "a193" => 836, "a194" => 771, "a195" => 888, "a196" => 748,
- "a197" => 771, "a198" => 888, "a199" => 867, "a2" => 961,
- "a20" => 846, "a200" => 696, "a201" => 874, "a202" => 974,
- "a203" => 762, "a204" => 759, "a205" => 509, "a206" => 410,
- "a21" => 762, "a22" => 761, "a23" => 571, "a24" => 677,
- "a25" => 763, "a26" => 760, "a27" => 759, "a28" => 754,
- "a29" => 786, "a3" => 980, "a30" => 788, "a31" => 788,
- "a32" => 790, "a33" => 793, "a34" => 794, "a35" => 816,
- "a36" => 823, "a37" => 789, "a38" => 841, "a39" => 823,
- "a4" => 719, "a40" => 833, "a41" => 816, "a42" => 831,
- "a43" => 923, "a44" => 744, "a45" => 723, "a46" => 749,
- "a47" => 790, "a48" => 792, "a49" => 695, "a5" => 789,
- "a50" => 776, "a51" => 768, "a52" => 792, "a53" => 759,
- "a54" => 707, "a55" => 708, "a56" => 682, "a57" => 701,
- "a58" => 826, "a59" => 815, "a6" => 494, "a60" => 789,
- "a61" => 789, "a62" => 707, "a63" => 687, "a64" => 696,
- "a65" => 689, "a66" => 786, "a67" => 787, "a68" => 713,
- "a69" => 791, "a7" => 552, "a70" => 785, "a71" => 791,
- "a72" => 873, "a73" => 761, "a74" => 762, "a75" => 759,
- "a76" => 892, "a77" => 892, "a78" => 788, "a79" => 784,
- "a8" => 537, "a81" => 438, "a82" => 138, "a83" => 277,
- "a84" => 415, "a85" => 509, "a86" => 410, "a87" => 234,
- "a88" => 234, "a89" => 390, "a9" => 577, "a90" => 390,
- "a91" => 276, "a92" => 276, "a93" => 317, "a94" => 317,
- "a95" => 334, "a96" => 334, "a97" => 392, "a98" => 392,
- "a99" => 668, "space" => 278,
- },
- kern => {
- }
-);
-1;
diff --git a/doc/nasmdoc.css b/doc/nasmdoc.css
new file mode 100644
index 00000000..af095273
--- /dev/null
+++ b/doc/nasmdoc.css
@@ -0,0 +1,125 @@
+body {
+ font-family: "source sans pro", "clear sans", "liberation sans",
+ "arial", "sans-serif";
+ background: white;
+}
+div.title {
+ text-align: center;
+ font-weight: bold;
+ margin: 0.67em 0;
+}
+h1 {
+ font-size: 2em;
+ margin: 0;
+}
+span.subtitle {
+ font-size: 1.25em;
+ font-style: italic;
+}
+code, pre {
+ font-family: "source code pro", "liberation mono", "monospace";
+}
+pre, blockquote {
+ margin-left: 4em;
+ margin-right: 4em;
+}
+code {
+ display: inline;
+ white-space: nowrap;
+}
+a {
+ text-decoration: none;
+}
+div.toc {
+ padding-left: 0;
+ font-size: 195%;
+}
+div.toc li {
+ list-style-type: none;
+ padding-left: 0;
+}
+div.toc ol {
+ padding-left: 2em;
+ font-size: 80%;
+}
+li.toc1 {
+ padding-top: 0.7em;
+}
+li.toc2 {
+ padding-top: 0.3em;
+}
+ul.index {
+ list-style-type: none;
+}
+@media not screen {
+ ul.navbar {
+ display: none;
+ }
+}
+@media print {
+ a {
+ color: inherit;
+ }
+}
+@media screen {
+ /* Setting an explicit margin to keep the navbar from moving */
+ body {
+ padding: 0;
+ margin: 10px;
+ }
+
+ /* Link styles */
+ a:link {
+ color: #33c;
+ }
+ a:visited {
+ color: #338;
+ }
+ a:hover {
+ background: #ccc;
+ }
+ a:active {
+ color: #f33;
+ background: #ccc;
+ }
+
+ /* Trick to avoid the navbar hiding the the target of an # link */
+ :target {
+ margin-top: -10vh;
+ padding-top: 10vh;
+ background: #ffa; /* Highlight the jump target */
+ background-clip: content-box;
+ }
+
+ ul.navbar {
+ display: block;
+ position: sticky;
+ top: 10px;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ white-space: nowrap;
+ list-style-type: none;
+ background: #336 url("nasmlogw.png") no-repeat right center;
+ background-size: contain;
+ }
+
+ ul.navbar li {
+ float: left;
+ }
+ ul.navbar li.last {
+ border-right: none;
+ }
+ ul.navbar a {
+ border-right: 1px solid #bbb;
+ display: block;
+ color: white;
+ text-align: center;
+ padding: 1em 1.5em;
+ text-decoration: none;
+ }
+ ul.navbar a:hover {
+ background-color: #448;
+ }
+}
diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src
index 0df4911f..79eb59d0 100644
--- a/doc/nasmdoc.src
+++ b/doc/nasmdoc.src
@@ -214,6 +214,8 @@ convention
\IR{nan} NaN
\IR{nasm version} NASM version
\IR{netbsd} NetBSD
+\IR{nsis} NSIS
+\IR{nullsoft scriptable installer} Nullsoft Scriptable Installer
\IR{omf} OMF
\IR{openbsd} OpenBSD
\IR{operating system} operating system
@@ -293,50 +295,15 @@ Object File Format
The Netwide Assembler, NASM, is an 80x86 and x86-64 assembler designed
for portability and modularity. It supports a range of object file
formats, including Linux and \c{*BSD} \c{a.out}, \c{ELF}, \c{COFF},
-\c{Mach-O}, Microsoft 16-bit \c{OBJ}, \c{Win32} and \c{Win64}. It will
-also output plain binary files. Its syntax is designed to be simple
-and easy to understand, similar to Intel's but less complex. It
-supports all currently known x86 architectural extensions, and has
-strong support for macros.
-
-
-\S{yaasm} Why Yet Another Assembler?
-
-The Netwide Assembler grew out of an idea on \i\c{comp.lang.asm.x86}
-(or possibly \i\c{alt.lang.asm} - I forget which), which was
-essentially that there didn't seem to be a good \e{free} x86-series
-assembler around, and that maybe someone ought to write one.
-
-\b \i\c{a86} is good, but not free, and in particular you don't get any
-32-bit capability until you pay. It's DOS only, too.
-
-\b \i\c{gas} is free, and ports over to DOS and Unix, but it's not
-very good, since it's designed to be a back end to \i\c{gcc}, which
-always feeds it correct code. So its error checking is minimal. Also,
-its syntax is horrible, from the point of view of anyone trying to
-actually \e{write} anything in it. Plus you can't write 16-bit code in
-it (properly.)
-
-\b \i\c{as86} is specific to Minix and Linux, and (my version at least)
-doesn't seem to have much (or any) documentation.
-
-\b \i\c{MASM} isn't very good, and it's (was) expensive, and it runs only under
-DOS.
-
-\b \i\c{TASM} is better, but still strives for MASM compatibility,
-which means millions of directives and tons of red tape. And its syntax
-is essentially MASM's, with the contradictions and quirks that
-entails (although it sorts out some of those by means of Ideal mode.)
-It's expensive too. And it's DOS-only.
-
-So here, for your coding pleasure, is NASM. At present it's
-still in prototype stage - we don't promise that it can outperform
-any of these assemblers. But please, \e{please} send us bug reports,
-fixes, helpful information, and anything else you can get your hands
-on (and thanks to the many people who've done this already! You all
-know who you are), and we'll improve it out of all recognition.
-Again.
+\c{Mach-O}, 16-bit and 32-bit \c{OBJ} (OMF) format, \c{Win32} and
+\c{Win64}. It will also output plain binary files, Intel hex and
+Motorola S-Record formats. Its syntax is designed to be simple and
+easy to understand, similar to the syntax in the Intel Software
+Developer Manual with minimal complexity. It supports all currently
+known x86 architectural extensions, and has strong support for macros.
+NASM also comes with a set of utilities for handling the \c{RDOFF}
+custom object-file format.
\S{legal} \i{License} Conditions
@@ -345,7 +312,7 @@ distribution archive, for the license conditions under which you may
use NASM. NASM is now under the so-called 2-clause BSD license, also
known as the simplified BSD license.
-Copyright 1996-2016 the NASM Authors - All rights reserved.
+Copyright 1996-2017 the NASM Authors - All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
@@ -357,7 +324,7 @@ notice, this list of conditions and the following disclaimer.
\b Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
-
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -372,97 +339,6 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-\H{contact} Contact Information
-
-The current version of NASM (since about 0.98.08) is maintained by a
-team of developers, accessible through the \c{nasm-devel} mailing list
-(see below for the link).
-If you want to report a bug, please read \k{bugs} first.
-
-NASM has a \i{website} at
-\W{http://www.nasm.us/}\c{http://www.nasm.us/}. If it's not there,
-google for us!
-
-\i{New releases}, \i{release candidates}, and \I{snapshots, daily
-development}\i{daily development snapshots} of NASM are available from
-the official web site.
-
-If you want information about the current development status, please
-subscribe to the \i\c{nasm-devel} email list; see link from the
-website.
-
-
-\H{install} Installation
-
-\S{instdos} \i{Installing} NASM under MS-\i{DOS} or Windows
-
-Once you've obtained the appropriate archive for NASM,
-\i\c{nasm-XXX-dos.zip} or \i\c{nasm-XXX-win32.zip} (where \c{XXX}
-denotes the version number of NASM contained in the archive), unpack
-it into its own directory (for example \c{c:\\nasm}).
-
-The archive will contain a set of executable files: the NASM
-executable file \i\c{nasm.exe}, the NDISASM executable file
-\i\c{ndisasm.exe}, and possibly additional utilities to handle the
-RDOFF file format.
-
-The only file NASM needs to run is its own executable, so copy
-\c{nasm.exe} to a directory on your PATH, or alternatively edit
-\i\c{autoexec.bat} to add the \c{nasm} directory to your
-\i\c{PATH} (to do that under Windows XP, go to Start > Control Panel >
-System > Advanced > Environment Variables; these instructions may work
-under other versions of Windows as well.)
-
-That's it - NASM is installed. You don't need the nasm directory
-to be present to run NASM (unless you've added it to your \c{PATH}),
-so you can delete it if you need to save space; however, you may
-want to keep the documentation or test programs.
-
-If you've downloaded the \i{DOS source archive}, \i\c{nasm-XXX.zip},
-the \c{nasm} directory will also contain the full NASM \i{source
-code}, and a selection of \i{Makefiles} you can (hopefully) use to
-rebuild your copy of NASM from scratch. See the file \c{INSTALL} in
-the source archive.
-
-Note that a number of files are generated from other files by Perl
-scripts. Although the NASM source distribution includes these
-generated files, you will need to rebuild them (and hence, will need a
-Perl interpreter) if you change insns.dat, standard.mac or the
-documentation. It is possible future source distributions may not
-include these files at all. Ports of \i{Perl} for a variety of
-platforms, including DOS and Windows, are available from
-\W{http://www.cpan.org/ports/}\i{www.cpan.org}.
-
-
-\S{instdos} Installing NASM under \i{Unix}
-
-Once you've obtained the \i{Unix source archive} for NASM,
-\i\c{nasm-XXX.tar.gz} (where \c{XXX} denotes the version number of
-NASM contained in the archive), unpack it into a directory such
-as \c{/usr/local/src}. The archive, when unpacked, will create its
-own subdirectory \c{nasm-XXX}.
-
-NASM is an \I{Autoconf}\I\c{configure}auto-configuring package: once
-you've unpacked it, \c{cd} to the directory it's been unpacked into
-and type \c{./configure}. This shell script will find the best C
-compiler to use for building NASM and set up \i{Makefiles}
-accordingly.
-
-Once NASM has auto-configured, you can type \i\c{make} to build the
-\c{nasm} and \c{ndisasm} binaries, and then \c{make install} to
-install them in \c{/usr/local/bin} and install the \i{man pages}
-\i\c{nasm.1} and \i\c{ndisasm.1} in \c{/usr/local/man/man1}.
-Alternatively, you can give options such as \c{--prefix} to the
-configure script (see the file \i\c{INSTALL} for more details), or
-install the programs yourself.
-
-NASM also comes with a set of utilities for handling the \c{RDOFF}
-custom object-file format, which are in the \i\c{rdoff} subdirectory
-of the NASM archive. You can build these with \c{make rdf} and
-install them with \c{make rdf_install}, if you want them.
-
-
\C{running} Running NASM
\H{syntax} NASM \i{Command-Line} Syntax
@@ -993,8 +869,9 @@ Thus, \c{-w+all} enables all available warnings, and \c{-w-all}
disables warnings entirely (since NASM 2.13).
Since version 2.00, NASM has also supported the gcc-like syntax
-\c{-Wwarning-class} and \c{-Wno-warning-class} instead of \c{-w+warning-class} and
-\c{-w-warning-class}, respectively; both syntaxes work identically.
+\c{-Wwarning-class} and \c{-Wno-warning-class} instead of
+\c{-w+warning-class} and \c{-w-warning-class}, respectively; both
+syntaxes work identically.
The option \c{-w+error} or \i\c{-Werror} can be used to treat warnings
as errors. This can be controlled on a per warning class basis
@@ -1350,7 +1227,7 @@ For example:
\c wordvar: resw 1 ; reserve a word
\c realarray resq 10 ; array of ten reals
\c ymmval: resy 1 ; one YMM register
-\c zmmvals: resz 32 ; 32 ZMM registers
+\c zmmvals: resz 32 ; 32 ZMM registers
\S{incbin} \i\c{INCBIN}: Including External \i{Binary Files}
@@ -4329,7 +4206,7 @@ This packages contains the following floating-point convenience macros:
\c %define NaN __QNaN__
\c %define QNaN __QNaN__
\c %define SNaN __SNaN__
-\c
+\c
\c %define float8(x) __float8__(x)
\c %define float16(x) __float16__(x)
\c %define float32(x) __float32__(x)
@@ -5763,6 +5640,14 @@ comma. The following flags can also be specified:
\b \c{bss} - this section is uninitialized and filled with zero
+\b \c{zerofill} - same as \c{bss}
+
+\b \c{no_dead_strip} - inhibit dead code stripping for this section
+
+\b \c{live_support} - set the live support flag for this section
+
+\b \c{strip_static_syms} - strip static symbols for this section
+
\b \c{align=}\e{alignment} - specify section alignment
The default is \c{data}, unless the section name is \c{__text} or
@@ -5800,14 +5685,26 @@ The directive \c{subsections_via_symbols} sets the
the linker that the symbols in the file matches the conventions
required to allow for link-time dead code elimination.
-This directive takes no arguments. Like most directives, it is
-wrapped in a macro; it is therefore possible to support older versions
-of NASM (without the dead code elimination support) simply by:
+This directive takes no arguments.
+
+This is a macro implemented as a \c{%pragma}. It can also be
+specified in its \c{%pragma} form, in which case it will not affect
+non-Mach-O builds of the same source code:
+
+\c %pragma macho subsections_via_symbols
+
+\S{macho-ssvs} \c{macho} specfic directive \i\c{no_dead_strip}
+
+The directive \c{no_dead_strip} sets the Mach-O \c{SH_NO_DEAD_STRIP}
+section flag on the section containing a a specific symbol. This
+directive takes a list of symbols as its arguments.
+
+This is a macro implemented as a \c{%pragma}. It can also be
+specified in its \c{%pragma} form, in which case it will not affect
+non-Mach-O builds of the same source code:
+
+\c %pragma macho no_dead_strip symbol...
-\c %ifnmacro subsections_via_symbols
-\c %imacro subsections_via_symbols 0
-\c %endmacro
-\c %endif
\H{elffmt} \i\c{elf32}, \i\c{elf64}, \i\c{elfx32}: \I{ELF}\I{linux, elf}\i{Executable and Linkable
Format} Object Files
@@ -5948,8 +5845,8 @@ causes the linker to build an entry \e{in} the GOT containing the
offset of the symbol within the TLS block, so you can access the value
of the symbol with code such as:
-\c mov eax,[tid wrt ..tlsie]
-\c mov [gs:eax],ebx
+\c mov eax,[tid wrt ..tlsie]
+\c mov [gs:eax],ebx
\b In ELF64 or ELFx32 mode, referring to an external or global symbol using
@@ -5958,7 +5855,7 @@ causes the linker to build an entry \e{in} the GOT containing the
offset of the symbol within the TLS block, so you can access the value
of the symbol with code such as:
-\c mov rax,[rel tid wrt ..gottpoff]
+\c mov rax,[rel tid wrt ..gottpoff]
\c mov rcx,[fs:rax]
@@ -6197,11 +6094,6 @@ a hint as to where to find requested symbols.
\H{dbgfmt} \i\c{dbg}: Debugging Format
-The \c{dbg} output format is not built into NASM in the default
-configuration. If you are building your own NASM executable from the
-sources, you can define \i\c{OF_DBG} in \c{output/outform.h} or on the
-compiler command line, and obtain the \c{dbg} output format.
-
The \c{dbg} format does not output an object file as such; instead,
it outputs a text file which contains a complete list of all the
transactions between the main body of NASM and the output-format
@@ -6242,6 +6134,15 @@ yourself (using \c{EXTERN}, for example) if you really need to get a
\c{dbg} accepts any section name and any directives at all, and logs
them all to its output file.
+\c{dbg} accepts and logs any \c{%pragma}, but the specific
+\c{%pragma}:
+
+\c %pragma dbg maxdump <size>
+
+where \c{<size>} is either a number or \c{unlimited}, can be used to
+control the maximum size for dumping the full contents of a
+\c{rawdata} output object.
+
\C{16bit} Writing 16-bit Code (DOS, Windows 3/3.1)
@@ -7914,9 +7815,8 @@ Integer and SSE register arguments are counted together, so for the case of
\C{trouble} Troubleshooting
This chapter describes some of the common problems that users have
-been known to encounter with NASM, and answers them. It also gives
-instructions for reporting bugs in NASM if you find a difficulty
-that isn't listed here.
+been known to encounter with NASM, and answers them. If you think you
+have found a bug in NASM, please see \k{bugs}.
\H{problems} Common Problems
@@ -8019,93 +7919,6 @@ in which \c{$} and \c{$$} are offsets from the same section base,
and so their difference is a pure number. This will solve the
problem and generate sensible code.
-
-\H{bugs} \i{Bugs}\I{reporting bugs}
-
-We have never yet released a version of NASM with any \e{known}
-bugs. That doesn't usually stop there being plenty we didn't know
-about, though. Any that you find should be reported firstly via the
-\i\c{bugtracker} at
-\W{http://www.nasm.us/}\c{http://www.nasm.us/}
-(click on "Bug Tracker"), or if that fails then through one of the
-contacts in \k{contact}.
-
-Please read \k{qstart} first, and don't report the bug if it's
-listed in there as a deliberate feature. (If you think the feature
-is badly thought out, feel free to send us reasons why you think it
-should be changed, but don't just send us mail saying `This is a
-bug' if the documentation says we did it on purpose.) Then read
-\k{problems}, and don't bother reporting the bug if it's listed
-there.
-
-If you do report a bug, \e{please} give us all of the following
-information:
-
-\b What operating system you're running NASM under. DOS, Linux,
-NetBSD, Win16, Win32, VMS (I'd be impressed), whatever.
-
-\b If you're running NASM under DOS or Win32, tell us whether you've
-compiled your own executable from the DOS source archive, or whether
-you were using the standard distribution binaries out of the
-archive. If you were using a locally built executable, try to
-reproduce the problem using one of the standard binaries, as this
-will make it easier for us to reproduce your problem prior to fixing
-it.
-
-\b Which version of NASM you're using, and exactly how you invoked
-it. Give us the precise command line, and the contents of the
-\c{NASMENV} environment variable if any.
-
-\b Which versions of any supplementary programs you're using, and
-how you invoked them. If the problem only becomes visible at link
-time, tell us what linker you're using, what version of it you've
-got, and the exact linker command line. If the problem involves
-linking against object files generated by a compiler, tell us what
-compiler, what version, and what command line or options you used.
-(If you're compiling in an IDE, please try to reproduce the problem
-with the command-line version of the compiler.)
-
-\b If at all possible, send us a NASM source file which exhibits the
-problem. If this causes copyright problems (e.g. you can only
-reproduce the bug in restricted-distribution code) then bear in mind
-the following two points: firstly, we guarantee that any source code
-sent to us for the purposes of debugging NASM will be used \e{only}
-for the purposes of debugging NASM, and that we will delete all our
-copies of it as soon as we have found and fixed the bug or bugs in
-question; and secondly, we would prefer \e{not} to be mailed large
-chunks of code anyway. The smaller the file, the better. A
-three-line sample file that does nothing useful \e{except}
-demonstrate the problem is much easier to work with than a
-fully fledged ten-thousand-line program. (Of course, some errors
-\e{do} only crop up in large files, so this may not be possible.)
-
-\b A description of what the problem actually \e{is}. `It doesn't
-work' is \e{not} a helpful description! Please describe exactly what
-is happening that shouldn't be, or what isn't happening that should.
-Examples might be: `NASM generates an error message saying Line 3
-for an error that's actually on Line 5'; `NASM generates an error
-message that I believe it shouldn't be generating at all'; `NASM
-fails to generate an error message that I believe it \e{should} be
-generating'; `the object file produced from this source code crashes
-my linker'; `the ninth byte of the output file is 66 and I think it
-should be 77 instead'.
-
-\b If you believe the output file from NASM to be faulty, send it to
-us. That allows us to determine whether our own copy of NASM
-generates the same file, or whether the problem is related to
-portability issues between our development platforms and yours. We
-can handle binary files mailed to us as MIME attachments, uuencoded,
-and even BinHex. Alternatively, we may be able to provide an FTP
-site you can upload the suspect files to; but mailing them is easier
-for us.
-
-\b Any other information or data files that might be helpful. If,
-for example, the problem involves NASM failing to generate an object
-file while TASM can generate an equivalent file without trouble,
-then send us \e{both} object files, so we can see what TASM is doing
-differently from us.
-
-
\A{ndisasm} \i{Ndisasm}
The Netwide Disassembler, NDISASM
@@ -8126,13 +7939,6 @@ not understand \c{DOS .EXE} files like \c{debug} will. It just
disassembles.
-\H{ndisstart} Getting Started: Installation
-
-See \k{install} for installation instructions. NDISASM, like NASM,
-has a \c{man page} which you may want to put somewhere useful, if you
-are on a Unix system.
-
-
\H{ndisrun} Running NDISASM
To disassemble a file, you will typically use a command of the form
@@ -8281,16 +8087,6 @@ data section which wouldn't contain anything you wanted to see
anyway.
-\H{ndisbugs} Bugs and Improvements
-
-There are no known bugs. However, any you find, with patches if
-possible, should be sent to
-\W{mailto:nasm-bugs@lists.sourceforge.net}\c{nasm-bugs@lists.sourceforge.net}, or to the
-developer's site at
-\W{http://www.nasm.us/}\c{http://www.nasm.us/}
-and we'll try to fix them. Feel free to send contributions and
-new features as well.
-
\A{inslist} \i{Instruction List}
\H{inslistintro} Introduction
@@ -8305,3 +8101,157 @@ column shows the processor type in which the instruction was introduced and,
\A{changelog} \i{NASM Version History}
\& changes.src
+
+\A{source} Building NASM from Source
+
+The source code for NASM is available from our website,
+\W{http://www.nasm.us/}{http://wwww.nasm.us/}, see \k{website}.
+
+\H{tarball} Building from a Source Archive
+
+The source archives available on the web site should be capable of
+building on a number of platforms. This is the recommended method for
+building NASM to support platforms for which executables are not
+available.
+
+On a system which has Unix shell (\c{sh}), run:
+
+\c sh configure
+\c make everything
+
+A number of options can be passed to \c{configure}; see
+\c{sh configure --help}.
+
+A set of Makefiles for some other environments are also available;
+please see the file \c{Mkfiles/README}.
+
+To build the installer for the Windows platform, you will need the
+\i\e{Nullsoft Scriptable Installer}, \i{NSIS}, installed.
+
+To build the documentation, you will need a set of additional tools.
+The documentation is not likely to be able to build on non-Unix
+systems.
+
+\H{git} Building from the \i\c{git} Repository
+
+The NASM development tree is kept in a source code repository using
+the \c{git} distributed source control system. The link is available
+on the website. This is recommended only to participate in the
+development of NASM or to assist with testing the development code.
+
+To build NASM from the \c{git} repository you will need a Perl and, if
+building on a Unix system, GNU autoconf.
+
+To build on a Unix system, run:
+
+\c sh autogen.sh
+
+to create the \c{configure} script and then build as listed above.
+
+\A{contact} Contact Information
+
+\H{website} Website
+
+NASM has a \i{website} at
+\W{http://www.nasm.us/}\c{http://www.nasm.us/}.
+
+\i{New releases}, \i{release candidates}, and \I{snapshots, daily
+development}\i{daily development snapshots} of NASM are available from
+the official web site in source form as well as binaries for a number
+of common platforms.
+
+\S{forums} User Forums
+
+Users of NASM may find the Forums on the website useful. These are,
+however, not frequented much by the developers of NASM, so they are
+not suitable for reporting bugs.
+
+\S{develcom} Development Community
+
+The development of NASM is coordinated primarily though the
+\i\c{nasm-devel} mailing list. If you wish to participate in
+development of NASM, please join this mailing list. Subscription
+links and archives of past posts are available on the website.
+
+\H{bugs} \i{Reporting Bugs}\I{bugs}
+
+To report bugs in NASM, please use the \i{bug tracker} at
+\W{http://www.nasm.us/}\c{http://www.nasm.us/} (click on "Bug
+Tracker"), or if that fails then through one of the contacts in
+\k{website}.
+
+Please read \k{qstart} first, and don't report the bug if it's
+listed in there as a deliberate feature. (If you think the feature
+is badly thought out, feel free to send us reasons why you think it
+should be changed, but don't just send us mail saying `This is a
+bug' if the documentation says we did it on purpose.) Then read
+\k{problems}, and don't bother reporting the bug if it's listed
+there.
+
+If you do report a bug, \e{please} make sure your bug report includes
+the following information:
+
+\b What operating system you're running NASM under. Linux,
+FreeBSD, NetBSD, MacOS X, Win16, Win32, Win64, MS-DOS, OS/2, VMS,
+whatever.
+
+\b If you compiled your own executable from a source archive, compiled
+your own executable from \c{git}, used the standard distribution
+binaries from the website, or got an executable from somewhere else
+(e.g. a Linux distribution.) If you were using a locally built
+executable, try to reproduce the problem using one of the standard
+binaries, as this will make it easier for us to reproduce your problem
+prior to fixing it.
+
+\b Which version of NASM you're using, and exactly how you invoked
+it. Give us the precise command line, and the contents of the
+\c{NASMENV} environment variable if any.
+
+\b Which versions of any supplementary programs you're using, and
+how you invoked them. If the problem only becomes visible at link
+time, tell us what linker you're using, what version of it you've
+got, and the exact linker command line. If the problem involves
+linking against object files generated by a compiler, tell us what
+compiler, what version, and what command line or options you used.
+(If you're compiling in an IDE, please try to reproduce the problem
+with the command-line version of the compiler.)
+
+\b If at all possible, send us a NASM source file which exhibits the
+problem. If this causes copyright problems (e.g. you can only
+reproduce the bug in restricted-distribution code) then bear in mind
+the following two points: firstly, we guarantee that any source code
+sent to us for the purposes of debugging NASM will be used \e{only}
+for the purposes of debugging NASM, and that we will delete all our
+copies of it as soon as we have found and fixed the bug or bugs in
+question; and secondly, we would prefer \e{not} to be mailed large
+chunks of code anyway. The smaller the file, the better. A
+three-line sample file that does nothing useful \e{except}
+demonstrate the problem is much easier to work with than a
+fully fledged ten-thousand-line program. (Of course, some errors
+\e{do} only crop up in large files, so this may not be possible.)
+
+\b A description of what the problem actually \e{is}. `It doesn't
+work' is \e{not} a helpful description! Please describe exactly what
+is happening that shouldn't be, or what isn't happening that should.
+Examples might be: `NASM generates an error message saying Line 3
+for an error that's actually on Line 5'; `NASM generates an error
+message that I believe it shouldn't be generating at all'; `NASM
+fails to generate an error message that I believe it \e{should} be
+generating'; `the object file produced from this source code crashes
+my linker'; `the ninth byte of the output file is 66 and I think it
+should be 77 instead'.
+
+\b If you believe the output file from NASM to be faulty, send it to
+us. That allows us to determine whether our own copy of NASM
+generates the same file, or whether the problem is related to
+portability issues between our development platforms and yours. We
+can handle binary files mailed to us as MIME attachments, uuencoded,
+and even BinHex. Alternatively, we may be able to provide an FTP
+site you can upload the suspect files to; but mailing them is easier
+for us.
+
+\b Any other information or data files that might be helpful. If,
+for example, the problem involves NASM failing to generate an object
+file while TASM can generate an equivalent file without trouble,
+then send us \e{both} object files, so we can see what TASM is doing
+differently from us.
diff --git a/doc/nasmlogw.png b/doc/nasmlogw.png
new file mode 100644
index 00000000..72594e80
--- /dev/null
+++ b/doc/nasmlogw.png
Binary files differ
diff --git a/doc/psfonts.ph b/doc/psfonts.ph
index 5203a80f..093d9dc4 100644
--- a/doc/psfonts.ph
+++ b/doc/psfonts.ph
@@ -3,110 +3,51 @@
# Font metrics for the PS code generator
#
-# These files are generated from AFM files
-require 'metrics/ptmr8a.ph'; # Times-Roman
-require 'metrics/ptmb8a.ph'; # Times-Bold
-require 'metrics/ptmri8a.ph'; # Times-Italic
-require 'metrics/ptmbi8a.ph'; # Times-BoldItalic
-require 'metrics/pcrr8a.ph'; # Courier
-require 'metrics/pcrb8a.ph'; # Courier-Bold
-require 'metrics/phvr8a.ph'; # Helvetica
-require 'metrics/phvro8a.ph'; # Helvetica-Oblique
-require 'metrics/phvb8a.ph'; # Helvetica-Bold
-require 'metrics/phvbo8a.ph'; # Helvetica-BoldOblique
+# Font substitution lists, in order of preference
+my @TText = ('SourceSansPro-Bold', 'ClearSans-Bold', 'LiberationSans-Bold',
+ 'Arial-Bold', 'Helvetica-Bold');
+my @TItal = ('SourceSansPro-BoldIt', 'ClearSans-BoldItalic', 'LiberationSans-BoldItalic',
+ 'Arial-BoldItalic', 'Helvetica-BoldItalic');
+my @TCode = ('SourceCodePro-Bold', 'LiberationMono-Bold', 'Courier-Bold');
+my @HText = ('SourceSansPro-Semibold', 'ClearSans-Bold', 'Arial-Bold', 'Helvetica-Bold');
+my @HItal = ('SourceSansPro-SemiboldIt', 'ClearSans-BoldItalic',
+ 'Arial-BoldItalic', 'Helvetica-BoldItalic');
+my @HCode = ('SourceCodePro-Semibold', 'LiberationMono-Bold', 'Courier-Bold');
+my @BText = ('SourceSansPro-Regular', 'ClearSans', 'LiberationSans', 'Arial', 'Helvetica');
+my @BItal = ('SourceSansPro-It', 'ClearSans-Italic', 'LiberationSans-Italic',
+ 'Arial-Italic', 'Helvetica-Italic');
+my @BCode = ('SourceCodePro-Regular', 'LiberationMono', 'Courier');
+my @QText = ('SourceSansPro-It', 'ClearSans-Italic', 'LiberationSans-Italic',
+ 'Arial-Italic', 'Helvetica-Italic');
+my @QBold = ('SourceSansPro-BoldIt', 'ClearSans-BoldItalic', 'LiberationSans-BoldItalic', 'Arial-Bold', 'Helvetica-BoldItalic');
+my @QCode = ('SourceCodePro-Regular', 'LiberationMono', 'Courier');
# The fonts we want to use for various things
# The order is: <normal> <emphatic> <code>
-if ( 1 ) {
- # Times family fonts
-
- %TitlFont = (name => 'tfont',
- leading => 24,
- fonts => [[20,\%PS_Times_Bold],
- [20,\%PS_Times_BoldItalic],
- [20,\%PS_Courier_Bold]]);
- %ChapFont = (name => 'cfont',
- leading => 21.6,
- fonts => [[18,\%PS_Times_Bold],
- [18,\%PS_Times_BoldItalic],
- [18,\%PS_Courier_Bold]]);
- %HeadFont = (name => 'hfont',
- leading => 16.8,
- fonts => [[14,\%PS_Times_Bold],
- [14,\%PS_Times_BoldItalic],
- [14,\%PS_Courier_Bold]]);
- %SubhFont = (name => 'sfont',
- leading => 14.4,
- fonts => [[12,\%PS_Times_Bold],
- [12,\%PS_Times_BoldItalic],
- [12,\%PS_Courier_Bold]]);
- %BodyFont = (name => 'bfont',
- leading => 12,
- fonts => [[10,\%PS_Times_Roman],
- [10,\%PS_Times_Italic],
- [10,\%PS_Courier]]);
-} elsif ( 0 ) {
- # Helvetica family fonts
-
- %TitlFont = (name => 'tfont',
- leading => 24,
- fonts => [[20,\%PS_Helvetica_Bold],
- [20,\%PS_Helvetica_BoldOblique],
- [20,\%PS_Courier_Bold]]);
- %ChapFont = (name => 'cfont',
- leading => 21.6,
- fonts => [[18,\%PS_Helvetica_Bold],
- [18,\%PS_Helvetica_BoldOblique],
- [18,\%PS_Courier_Bold]]);
- %HeadFont = (name => 'hfont',
- leading => 16.8,
- fonts => [[14,\%PS_Helvetica_Bold],
- [14,\%PS_Helvetica_BoldOblique],
- [14,\%PS_Courier_Bold]]);
- %SubhFont = (name => 'sfont',
- leading => 14.4,
- fonts => [[12,\%PS_Helvetica_Bold],
- [12,\%PS_Helvetica_BoldOblique],
- [12,\%PS_Courier_Bold]]);
- %BodyFont = (name => 'bfont',
- leading => 12,
- fonts => [[10,\%PS_Helvetica],
- [10,\%PS_Helvetica_Oblique],
- [10,\%PS_Courier]]);
-} else {
- # Body text Times; headings Helvetica
- %TitlFont = (name => 'tfont',
- leading => 24,
- fonts => [[20,\%PS_Helvetica_Bold],
- [20,\%PS_Helvetica_BoldOblique],
- [20,\%PS_Courier_Bold]]);
- %ChapFont = (name => 'cfont',
- leading => 21.6,
- fonts => [[18,\%PS_Helvetica_Bold],
- [18,\%PS_Helvetica_BoldOblique],
- [18,\%PS_Courier_Bold]]);
- %HeadFont = (name => 'hfont',
- leading => 16.8,
- fonts => [[14,\%PS_Helvetica_Bold],
- [14,\%PS_Helvetica_BoldOblique],
- [14,\%PS_Courier_Bold]]);
- %SubhFont = (name => 'sfont',
- leading => 14.4,
- fonts => [[12,\%PS_Helvetica_Bold],
- [12,\%PS_Helvetica_BoldOblique],
- [12,\%PS_Courier_Bold]]);
- %BodyFont = (name => 'bfont',
- leading => 12,
- fonts => [[10,\%PS_Times_Roman],
- [10,\%PS_Times_Italic],
- [10,\%PS_Courier]]);
-}
-
+%TitlFont = (name => 'tfont',
+ leading => 24,
+ fonts => [[20, \@TText], [20, \@TItal], [20, \@TCode]]);
+%ChapFont = (name => 'cfont',
+ leading => 21.6,
+ fonts => [[18, \@HText], [18, \@HItal], [18, \@HCode]]);
+%HeadFont = (name => 'hfont',
+ leading => 16.8,
+ fonts => [[14, \@HText], [14, \@HItal], [14, \@HCode]]);
+%SubhFont = (name => 'sfont',
+ leading => 14.4,
+ fonts => [[12, \@HText], [12, \@HItal], [12, \@HCode]]);
+%BodyFont = (name => 'bfont',
+ leading => 12,
+ fonts => [[10, \@BText], [10, \@BItal], [10, \@BCode]]);
+%BquoFont = (name => 'qfont',
+ leading => 10.8,
+ fonts => [[9, \@QText], [9, \@QBold], [9, \@QCode]]);
#
# List of all fontsets; used to compute the list of fonts needed
#
-@AllFonts = ( \%TitlFont, \%ChapFont, \%HeadFont, \%SubhFont, \%BodyFont );
+@AllFonts = ( \%TitlFont, \%ChapFont, \%HeadFont, \%SubhFont, \%BodyFont,
+ \%BquoFont);
# OK
1;
diff --git a/doc/pspdf.pl b/doc/pspdf.pl
new file mode 100755
index 00000000..961a8ae1
--- /dev/null
+++ b/doc/pspdf.pl
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+#
+# Wrapper around a variety of programs that can do PS -> PDF conversion
+#
+
+use strict;
+
+my $compress = 1;
+
+while ($ARGV[0] =~ /^-(.*)$/) {
+ my $opt = $1;
+ shift @ARGV;
+
+ if ($opt eq '-nocompress') {
+ $compress = 0;
+ }
+}
+
+my ($in, $out) = @ARGV;
+
+if (!defined($out)) {
+ die "Usage: $0 [-nocompress] infile outfile\n";
+}
+
+# Remove output file
+unlink($out);
+
+# 1. Acrobat distiller
+my $r = system('acrodist', '-n', '-q', '--nosecurity', '-o', $out, $in);
+exit 0 if ( !$r && -f $out );
+
+# 2. ps2pdf (from Ghostscript)
+my $r = system('ps2pdf', '-dOptimize=true', '-dEmbedAllFonts=true',
+ '-dCompressPages=' . ($compress ? 'true' : 'false'),
+ '-dUseFlateCompression=true', $in, $out);
+exit 0 if ( !$r && -f $out );
+
+# 3. pstopdf (BSD/MacOS X utility)
+my $r = system('pstopdf', $in, '-o', $out);
+exit 0 if ( !$r && -f $out );
+
+# Otherwise, fail
+unlink($out);
+exit 1;
diff --git a/doc/pswidth.ph b/doc/pswidth.ph
index 36fc07aa..a2a90856 100644
--- a/doc/pswidth.ph
+++ b/doc/pswidth.ph
@@ -1,8 +1,7 @@
#!/usr/bin/perl
#
-# Get the width of a PostScript string in font units
-# (1000 font units == the font point height) given a set of
-# font metrics and an encoding vector.
+# Get the width of a PostScript string in PostScript points (1/72")
+# given a set of font metrics and an encoding vector.
#
sub ps_width($$$) {
my($str, $met, $encoding) = @_;
@@ -19,7 +18,7 @@ sub ps_width($$$) {
$p = $c;
}
- return $w;
+ return $w / $met->{scale};
}
# OK
diff --git a/doc/rdsrc.pl b/doc/rdsrc.pl
index da9cf252..bc066584 100644
--- a/doc/rdsrc.pl
+++ b/doc/rdsrc.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
## --------------------------------------------------------------------------
##
-## Copyright 1996-2016 The NASM Authors - All Rights Reserved
+## Copyright 1996-2017 The NASM Authors - All Rights Reserved
## See the file AUTHORS included with the NASM distribution for
## the specific copyright holders.
##
@@ -48,6 +48,14 @@
# HTML, consecutive groups of bulleted paragraphs become unordered
# lists.
#
+# Indent \>
+# Indents the paragraph equvalently to a bulleted paragraph. In HTML,
+# an indented paragraph following a bulleted paragraph is included in the
+# same list item.
+#
+# Blockquote \q
+# Marks the paragraph as a block quote.
+#
# Emphasis \e{foobar}
# produces `_foobar_' in text and italics in HTML, PS, RTF
#
@@ -120,11 +128,17 @@
use File::Spec;
@include_path = ();
-
-$diag = 1, shift @ARGV if $ARGV[0] eq "-d";
-while ($ARGV[0] =~ /^\-[Ii](.*)$/) {
- push(@include_path, $1);
- shift;
+$out_path = File::Spec->curdir();
+
+while ($ARGV[0] =~ /^-/) {
+ my $opt = shift @ARGV;
+ if ($opt eq '-d') {
+ $diag = 1;
+ } elsif ($opt =~ /^\-[Ii](.*)$/) {
+ push(@include_path, $1);
+ } elsif ($opt =~ /^\-[Oo](.*)$/) {
+ $out_path = $1;
+ }
}
$out_format = shift(@ARGV);
@@ -161,6 +175,9 @@ print "Sorting index tags...";
&indexsort;
print "done.\n";
+# Make output directory if necessary
+mkdir($out_path);
+
if ($diag) {
print "Writing index-diagnostic file...";
&indexdiag;
@@ -176,14 +193,6 @@ if ($out_format eq 'txt') {
print "Producing HTML output: ";
&write_html;
print "done.\n";
-} elsif ($out_format eq 'texi') {
- print "Producing Texinfo output: ";
- &write_texi;
- print "done.\n";
-} elsif ($out_format eq 'hlp') {
- print "Producing WinHelp output: ";
- &write_hlp;
- print "done.\n";
} elsif ($out_format eq 'dip') {
print "Producing Documentation Intermediate Paragraphs: ";
&write_dip;
@@ -353,11 +362,16 @@ sub got_para {
die "badly formed metadata: $_\n" if !/^\\M\{([^\}]*)}\{([^\}]*)\}\s*$/;
$metadata{$1} = $2;
return; # avoid word-by-word code
- } elsif (/^\\b/) {
- # A bulleted paragraph. Strip off the initial \b and let the
- # word-by-word code take care of the rest.
- $pflags = "bull";
- s/^\\b\s*//;
+ } elsif (/^\\([b\>q])/) {
+ # An indented paragraph of some sort. Strip off the initial \b and let the
+ # word-by-word code take care of the rest.
+ my %ipar = (
+ 'b' => 'bull',
+ '>' => 'indt',
+ 'q' => 'bquo',
+ );
+ $pflags = $ipar{$1};
+ s/^\\[b\>q]\s*//;
} else {
# A normal paragraph. Just set $pflags: the word-by-word code does
# the rest.
@@ -373,7 +387,8 @@ sub got_para {
#
# Type codes are:
# "n " for normal
- # "da" for a dash
+ # "da" for an en dash
+ # "dm" for an em desh
# "es" for first emphasised word in emphasised bit
# "e " for emphasised in mid-emphasised-bit
# "ee" for last emphasised word in emphasised bit
@@ -469,8 +484,10 @@ sub got_para {
$w =~ s/\\\}/\}/g;
$w =~ s/\\-/-/g;
$w =~ s/\\\\/\\/g;
- if ($w eq "-") {
- push @$pname,"da";
+ if ($w eq '--') {
+ push @$pname, 'dm';
+ } elsif ($w eq '-') {
+ push @$pname, 'da';
} else {
push @$pname,"n $w";
}
@@ -541,7 +558,7 @@ sub indexsort {
sub indexdiag {
my $iitem,$ientry,$w,$ww,$foo,$node;
- open INDEXDIAG,">index.diag";
+ open INDEXDIAG, '>', File::Spec->catfile($out_path, 'index.diag');
foreach $iitem (@itags) {
$ientry = $idxmap{$iitem};
print INDEXDIAG "<$iitem> ";
@@ -593,11 +610,11 @@ sub write_txt {
# Open file.
print "writing file...";
- open TEXT,">nasmdoc.txt";
+ open TEXT, '>', File::Spec->catfile($out_path, 'nasmdoc.txt');
select TEXT;
# Preamble.
- $title = "The Netwide Assembler: NASM";
+ $title = $metadata{'title'};
$spaces = ' ' x ((75-(length $title))/2);
($underscore = $title) =~ s/./=/g;
print "$spaces$title\n$spaces$underscore\n";
@@ -648,13 +665,13 @@ sub write_txt {
warn "code line longer than 68 chars: $i\n" if length $i > 68;
print ' 'x7, $i, "\n";
}
- } elsif ($ptype eq "bull" || $ptype eq "norm") {
- # Ordinary paragraph, optionally bulleted. We wrap, with ragged
+ } elsif ($ptype =~ /^(norm|bull|indt|bquo)$/) {
+ # Ordinary paragraph, optionally indented. We wrap, with ragged
# 75-char right margin and either 7 or 11 char left margin
# depending on bullets.
- if ($ptype eq "bull") {
- $line = ' 'x7 . '(*) ';
- $next = ' 'x11;
+ if ($ptype ne 'norm') {
+ $line = ' 'x7 . (($ptype eq 'bull') ? '(*) ' : ' ');
+ $next = ' 'x11;
} else {
$line = $next = ' 'x7;
}
@@ -700,7 +717,7 @@ sub word_txt {
return $w;
} elsif ($wtype eq "sp") {
return ' ';
- } elsif ($wtype eq "da") {
+ } elsif ($wtype eq 'da' || $wtype eq 'dm') {
return '-';
} elsif ($wmajt eq "c" || $wtype eq "wc") {
return "`${w}'";
@@ -724,84 +741,113 @@ sub write_html {
# Write contents file. Just the preamble, then a menu of links to the
# separate chapter files and the nodes therein.
print "writing contents file...";
- open TEXT,">nasmdoc0.html";
+ open TEXT, '>', File::Spec->catfile($out_path, 'nasmdoc0.html');
select TEXT;
&html_preamble(0);
print "<p>This manual documents NASM, the Netwide Assembler: an assembler\n";
- print "targetting the Intel x86 series of processors, with portable source.\n";
- print "<p>";
+ print "targetting the Intel x86 series of processors, with portable source.\n</p>";
+ print "<div class=\"toc\">\n";
+ $level = 0;
for ($node = $tstruct_next{'Top'}; $node; $node = $tstruct_next{$node}) {
- if ($tstruct_level{$node} == 1) {
+ my $lastlevel = $level;
+ while ($tstruct_level{$node} < $level) {
+ print "</li>\n</ol>\n";
+ $level--;
+ }
+ while ($tstruct_level{$node} > $level) {
+ print "<ol class=\"toc", ++$level, "\">\n";
+ }
+ if ($lastlevel >= $level) {
+ print "</li>\n";
+ }
+ $level = $tstruct_level{$node};
+ if ($level == 1) {
# Invent a file name.
- ($number = lc($xrefnodes{$node})) =~ s/.*-//;
- $fname="nasmdocx.html";
- substr($fname,8 - length $number, length $number) = $number;
- $html_fnames{$node} = $fname;
- $link = $fname;
- print "<p>";
- } else {
- # Use the preceding filename plus a marker point.
- $link = $fname . "#$xrefnodes{$node}";
- }
- $title = "$node: ";
- $pname = $tstruct_pname{$node};
- foreach $i (@$pname) {
- $ww = &word_html($i);
- $title .= $ww unless $ww eq "\001";
- }
- print "<a href=\"$link\">$title</a><br>\n";
+ ($number = lc($xrefnodes{$node})) =~ s/.*-//;
+ $fname="nasmdocx.html";
+ substr($fname,8 - length $number, length $number) = $number;
+ $html_fnames{$node} = $fname;
+ $link = $fname;
+ } else {
+ # Use the preceding filename plus a marker point.
+ $link = $fname . "#$xrefnodes{$node}";
+ }
+ $title = '';
+ $pname = $tstruct_pname{$node};
+ foreach $i (@$pname) {
+ $ww = &word_html($i);
+ $title .= $ww unless $ww eq "\001";
+ }
+ print "<li class=\"toc${level}\">\n";
+ print "<span class=\"node\">$node: </span><a href=\"$link\">$title</a>\n";
+ }
+ while ($level--) {
+ print "</li>\n</ol>\n";
}
- print "<p><a href=\"nasmdoci.html\">Index</a>\n";
- print "</body></html>\n";
+ print "</div>\n";
+ print "</body>\n";
+ print "</html>\n";
select STDOUT;
close TEXT;
# Open a null file, to ensure output (eg random &html_jumppoints calls)
# goes _somewhere_.
print "writing chapter files...";
- open TEXT,">/dev/null";
+ open TEXT, '>', File::Spec->devnull();
select TEXT;
- $html_lastf = '';
+ undef $html_nav_last;
+ undef $html_nav_next;
$in_list = 0;
+ $in_bquo = 0;
+ $in_code = 0;
for ($para = 0; $para <= $#pnames; $para++) {
$pname = $pnames[$para];
$pflags = $pflags[$para];
$ptype = substr($pflags,0,4);
- $in_list = 0, print "</ul>\n" if $in_list && $ptype ne "bull";
+ $in_code = 0, print "</pre>\n" if ($in_code && $ptype ne 'code');
+ $in_list = 0, print "</li>\n</ul>\n" if ($in_list && $ptype !~ /^(bull|indt|code)$/);
+ $in_bquo = 0, print "</blockquote>\n" if ($in_bquo && $ptype ne 'bquo');
+
+ $endtag = '';
+
if ($ptype eq "chap") {
# Chapter heading. Begin a new file.
$pflags =~ /chap (.*) :(.*)/;
$title = "Chapter $1: ";
$xref = $2;
- &html_jumppoints; print "</body></html>\n"; select STDOUT; close TEXT;
- $html_lastf = $html_fnames{$chapternode};
+ &html_postamble; select STDOUT; close TEXT;
+ $html_nav_last = $chapternode;
$chapternode = $nodexrefs{$xref};
- $html_nextf = $html_fnames{$tstruct_mnext{$chapternode}};
- open TEXT,">$html_fnames{$chapternode}"; select TEXT; &html_preamble(1);
+ $html_nav_next = $tstruct_mnext{$chapternode};
+ open(TEXT, '>', File::Spec->catfile($out_path, $html_fnames{$chapternode}));
+ select TEXT;
+ &html_preamble(1);
foreach $i (@$pname) {
$ww = &word_html($i);
$title .= $ww unless $ww eq "\001";
}
- $h = "<h2><a name=\"$xref\">$title</a></h2>\n";
+ $h = "<h2 id=\"$xref\">$title</h2>\n";
print $h; print FULL $h;
} elsif ($ptype eq "appn") {
# Appendix heading. Begin a new file.
$pflags =~ /appn (.*) :(.*)/;
$title = "Appendix $1: ";
$xref = $2;
- &html_jumppoints; print "</body></html>\n"; select STDOUT; close TEXT;
- $html_lastf = $html_fnames{$chapternode};
+ &html_postamble; select STDOUT; close TEXT;
+ $html_nav_last = $chapternode;
$chapternode = $nodexrefs{$xref};
- $html_nextf = $html_fnames{$tstruct_mnext{$chapternode}};
- open TEXT,">$html_fnames{$chapternode}"; select TEXT; &html_preamble(1);
+ $html_nav_next = $tstruct_mnext{$chapternode};
+ open(TEXT, '>', File::Spec->catfile($out_path, $html_fnames{$chapternode}));
+ select TEXT;
+ &html_preamble(1);
foreach $i (@$pname) {
$ww = &word_html($i);
$title .= $ww unless $ww eq "\001";
}
- print "<h2><a name=\"$xref\">$title</a></h2>\n";
+ print "<h2 id=\"$xref\">$title</h2>\n";
} elsif ($ptype eq "head" || $ptype eq "subh") {
# Heading or subheading.
$pflags =~ /.... (.*) :(.*)/;
@@ -812,27 +858,45 @@ sub write_html {
$ww = &word_html($i);
$title .= $ww unless $ww eq "\001";
}
- print "<$hdr><a name=\"$xref\">$title</a></$hdr>\n";
+ print "<$hdr id=\"$xref\">$title</$hdr>\n";
} elsif ($ptype eq "code") {
- # Code paragraph.
- print "<p><pre>\n";
- foreach $i (@$pname) {
- $w = $i;
- $w =~ s/&/&amp;/g;
- $w =~ s/</&lt;/g;
- $w =~ s/>/&gt;/g;
- print $w, "\n";
- }
- print "</pre>\n";
- } elsif ($ptype eq "bull" || $ptype eq "norm") {
- # Ordinary paragraph, optionally bulleted. We wrap, with ragged
- # 75-char right margin and either 7 or 11 char left margin
- # depending on bullets.
- if ($ptype eq "bull") {
- $in_list = 1, print "<ul>\n" unless $in_list;
- $line = '<li>';
+ # Code paragraph.
+ $in_code = 1, print "<pre>" unless $in_code;
+ print "\n";
+ foreach $i (@$pname) {
+ $w = $i;
+ $w =~ s/&/&amp;/g;
+ $w =~ s/</&lt;/g;
+ $w =~ s/>/&gt;/g;
+ print $w, "\n";
+ }
+ } elsif ($ptype =~ /^(norm|bull|indt|bquo)$/) {
+ # Ordinary paragraph, optionally indented.
+ if ($ptype eq 'bull') {
+ if (!$in_list) {
+ $in_list = 1;
+ print "<ul>\n";
+ } else {
+ print "</li>\n";
+ }
+ print "<li>\n";
+ $line = '<p>';
+ $endtag = '</p>';
+ } elsif ($ptype eq 'indt') {
+ if (!$in_list) {
+ $in_list = 1;
+ print "<ul>\n";
+ print "<li class=\"indt\">\n"; # This is such a hack
+ }
+ $line = '<p>';
+ $endtag = '</p>';
+ } elsif ($ptype eq 'bquo') {
+ $in_bquo = 1, print "<blockquote>\n" unless $in_bquo;
+ $line = '<p>';
+ $endtag = '</p>';
} else {
$line = '<p>';
+ $endtag = '</p>';
}
@a = @$pname;
$wd = $wprev = '';
@@ -853,42 +917,65 @@ sub write_html {
} while ($w ne '' && $w ne undef);
if ($line =~ /\S/) {
$line =~ s/\s*$//; # trim trailing spaces
- print "$line\n";
+ print $line;
}
+ print $endtag, "\n";
}
}
# Close whichever file was open.
- &html_jumppoints;
- print "</body></html>\n";
- select STDOUT;
- close TEXT;
+ print "</pre>\n" if ($in_code);
+ print "</li>\n</ul>\n" if ($in_list);
+ print "</blockquote>\n" if ($in_bquo);
+ &html_postamble; select STDOUT; close TEXT;
print "\n writing index file...";
- open TEXT,">nasmdoci.html";
+ open TEXT, '>', File::Spec->catfile($out_path, 'nasmdoci.html');
select TEXT;
&html_preamble(0);
- print "<p align=center><a href=\"nasmdoc0.html\">Contents</a>\n";
- print "<p>";
+ print "<h2 class=\"index\">Index</h2>\n";
+ print "<ul class=\"index\">\n";
&html_index;
- print "<p align=center><a href=\"nasmdoc0.html\">Contents</a>\n";
- print "</body></html>\n";
+ print "</ul>\n</body>\n</html>\n";
select STDOUT;
close TEXT;
}
sub html_preamble {
- print "<html><head><title>NASM Manual</title></head>\n";
- print "<body><h1 align=center>The Netwide Assembler: NASM</h1>\n\n";
- &html_jumppoints if $_[0];
+ print "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n";
+ print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" ";
+ print "\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n";
+ print "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
+ print "<head>\n";
+ print "<title>", $metadata{'title'}, "</title>\n";
+ print "<link href=\"nasmdoc.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
+ print "<link href=\"local.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
+ print "</head>\n";
+ print "<body>\n";
+
+ # Navigation bar
+ print "<ul class=\"navbar\">\n";
+ if (defined($html_nav_last)) {
+ my $lastf = $html_fnames{$html_nav_last};
+ print "<li class=\"first\"><a class=\"prev\" href=\"$lastf\">$html_nav_last</a></li>\n";
+ }
+ if (defined($html_nav_next)) {
+ my $nextf = $html_fnames{$html_nav_next};
+ print "<li><a class=\"next\" href=\"$nextf\">$html_nav_next</a></li>\n";
+ }
+ print "<li><a class=\"toc\" href=\"nasmdoc0.html\">Contents</a></li>\n";
+ print "<li class=\"last\"><a class=\"index\" href=\"nasmdoci.html\">Index</a></li>\n";
+ print "</ul>\n";
+
+ print "<div class=\"title\">\n";
+ print "<h1>", $metadata{'title'}, "</h1>\n";
+ print '<span class="subtitle">', $metadata{'subtitle'}, "</span>\n";
+ print "</div>\n";
}
-sub html_jumppoints {
- print "<p align=center>";
- print "<a href=\"$html_nextf\">Next Chapter</a> |\n" if $html_nextf;
- print "<a href=\"$html_lastf\">Previous Chapter</a> |\n" if $html_lastf;
- print "<a href=\"nasmdoc0.html\">Contents</a> |\n";
- print "<a href=\"nasmdoci.html\">Index</a>\n";
+sub html_postamble {
+ # Closing tags
+ print "</body>\n</html>\n";
}
sub html_index {
@@ -906,6 +993,7 @@ sub html_index {
push @a, "sp", "x $xrefnodes{$node}", "n $node", "xe$xrefnodes{$node}";
$sep = 1;
}
+ print "<li class=\"index\">\n";
$line = '';
do {
do { $w = &word_html(shift @a) } while $w eq "\001"; # nasty hack
@@ -924,9 +1012,9 @@ sub html_index {
} while ($w ne '' && $w ne undef);
if ($line =~ /\S/) {
$line =~ s/\s*$//; # trim trailing spaces
- print "$line\n";
+ print $line, "\n";
}
- print "<br>\n";
+ print "</li>\n";
}
}
@@ -950,9 +1038,11 @@ sub word_html {
} elsif ($wtype eq "sp") {
return ' ';
} elsif ($wtype eq "da") {
- return '-'; # sadly, en-dashes are non-standard in HTML
+ return '&ndash;';
+ } elsif ($wtype eq "dm") {
+ return '&mdash;';
} elsif ($wmajt eq "c" || $wtype eq "wc") {
- return $pfx . "<code><nobr>${w}</nobr></code>" . $sfx;
+ return $pfx . "<code>${w}</code>" . $sfx;
} elsif ($wtype eq "es") {
return "<em>${w}";
} elsif ($wtype eq "ee") {
@@ -980,517 +1070,6 @@ sub word_html {
}
}
-sub write_texi {
- # This is called from the top level, so I won't bother using
- # my or local.
-
- # Open file.
- print "writing file...";
- open TEXT,">nasmdoc.texi";
- select TEXT;
-
- # Preamble.
- print "\\input texinfo \@c -*-texinfo-*-\n";
- print "\@c \%**start of header\n";
- print "\@setfilename ",$metadata{'infofile'},".info\n";
- print "\@dircategory ",$metadata{'category'},"\n";
- print "\@direntry\n";
- printf "* %-28s %s.\n",
- sprintf('%s: (%s).', $metadata{'infoname'}, $metadata{'infofile'}),
- $metadata{'infotitle'};
- print "\@end direntry\n";
- print "\@settitle ", $metadata{'title'},"\n";
- print "\@setchapternewpage odd\n";
- print "\@c \%**end of header\n";
- print "\n";
- print "\@ifinfo\n";
- print $metadata{'summary'}, "\n";
- print "\n";
- print "Copyright ",$metadata{'year'}," ",$metadata{'author'},"\n";
- print "\n";
- print $metadata{'license'}, "\n";
- print "\@end ifinfo\n";
- print "\n";
- print "\@titlepage\n";
- $title = $metadata{'title'};
- $title =~ s/ - / --- /g;
- print "\@title ${title}\n";
- print "\@author ",$metadata{'author'},"\n";
- print "\n";
- print "\@page\n";
- print "\@vskip 0pt plus 1filll\n";
- print "Copyright \@copyright{} ",$metadata{'year'},' ',$metadata{'author'},"\n";
- print "\n";
- print $metadata{'license'}, "\n";
- print "\@end titlepage\n";
- print "\n";
- print "\@node Top, $tstruct_next{'Top'}, (dir), (dir)\n";
- print "\@top ",$metadata{'infotitle'},"\n";
- print "\n";
- print "\@ifinfo\n";
- print $metadata{'summary'}, "\n";
- print "\@end ifinfo\n";
-
- $node = "Top";
-
- $bulleting = 0;
- for ($para = 0; $para <= $#pnames; $para++) {
- $pname = $pnames[$para];
- $pflags = $pflags[$para];
- $ptype = substr($pflags,0,4);
-
- $bulleting = 0, print "\@end itemize\n" if $bulleting && $ptype ne "bull";
- print "\n"; # always one of these before a new paragraph
-
- if ($ptype eq "chap") {
- # Chapter heading. Begin a new node.
- &texi_menu($node)
- if $tstruct_level{$tstruct_next{$node}} > $tstruct_level{$node};
- $pflags =~ /chap (.*) :(.*)/;
- $node = "Chapter $1";
- $title = "Chapter $1: ";
- foreach $i (@$pname) {
- $ww = &word_texi($i);
- $title .= $ww unless $ww eq "\001";
- }
- print "\@node $node, $tstruct_next{$node}, $tstruct_prev{$node},";
- print " $tstruct_up{$node}\n\@unnumbered $title\n";
- } elsif ($ptype eq "appn") {
- # Appendix heading. Begin a new node.
- &texi_menu($node)
- if $tstruct_level{$tstruct_next{$node}} > $tstruct_level{$node};
- $pflags =~ /appn (.*) :(.*)/;
- $node = "Appendix $1";
- $title = "Appendix $1: ";
- foreach $i (@$pname) {
- $ww = &word_texi($i);
- $title .= $ww unless $ww eq "\001";
- }
- print "\@node $node, $tstruct_next{$node}, $tstruct_prev{$node},";
- print " $tstruct_up{$node}\n\@unnumbered $title\n";
- } elsif ($ptype eq "head" || $ptype eq "subh") {
- # Heading or subheading. Begin a new node.
- &texi_menu($node)
- if $tstruct_level{$tstruct_next{$node}} > $tstruct_level{$node};
- $pflags =~ /.... (.*) :(.*)/;
- $node = "Section $1";
- $title = "$1. ";
- foreach $i (@$pname) {
- $ww = &word_texi($i);
- $title .= $ww unless $ww eq "\001";
- }
- print "\@node $node, $tstruct_next{$node}, $tstruct_prev{$node},";
- print " $tstruct_up{$node}\n";
- $hdr = ($ptype eq "subh" ? "\@unnumberedsubsec" : "\@unnumberedsec");
- print "$hdr $title\n";
- } elsif ($ptype eq "code") {
- # Code paragraph. Surround with @example / @end example.
- print "\@example\n";
- foreach $i (@$pname) {
- warn "code line longer than 68 chars: $i\n" if length $i > 68;
- $i =~ s/\@/\@\@/g;
- $i =~ s/\{/\@\{/g;
- $i =~ s/\}/\@\}/g;
- print "$i\n";
- }
- print "\@end example\n";
- } elsif ($ptype eq "bull" || $ptype eq "norm") {
- # Ordinary paragraph, optionally bulleted. We wrap, FWIW.
- if ($ptype eq "bull") {
- $bulleting = 1, print "\@itemize \@bullet\n" if !$bulleting;
- print "\@item\n";
- }
- $line = '';
- @a = @$pname;
- $wd = $wprev = '';
- do {
- do { $w = &word_texi(shift @a); } while $w eq "\001"; # hack
- $wd .= $wprev;
- if ($wprev =~ /-$/ || $w eq ' ' || $w eq '' || $w eq undef) {
- if (length ($line . $wd) > 75) {
- $line =~ s/\s*$//; # trim trailing spaces
- print "$line\n";
- $line = '';
- $wd =~ s/^\s*//; # trim leading spaces
- }
- $line .= $wd;
- $wd = '';
- }
- $wprev = $w;
- } while ($w ne '' && $w ne undef);
- if ($line =~ /\S/) {
- $line =~ s/\s*$//; # trim trailing spaces
- print "$line\n";
- }
- }
- }
-
- # Write index.
- &texi_index;
-
- # Close file.
- print "\n\@contents\n\@bye\n";
- select STDOUT;
- close TEXT;
-}
-
-# Side effect of this procedure: update global `texiwdlen' to be the length
-# in chars of the formatted version of the word.
-sub word_texi {
- my ($w) = @_;
- my $wtype, $wmajt;
-
- return undef if $w eq '' || $w eq undef;
- $wtype = substr($w,0,2);
- $wmajt = substr($wtype,0,1);
- $w = substr($w,2);
- $wlen = length $w;
- $w =~ s/\@/\@\@/g;
- $w =~ s/\{/\@\{/g;
- $w =~ s/\}/\@\}/g;
- $w =~ s/<.*>// if $wmajt eq "w"; # remove web links
- substr($w,0,1) =~ tr/a-z/A-Z/, $capital = 0 if $capital;
- if ($wmajt eq "n" || $wtype eq "e " || $wtype eq "w ") {
- $texiwdlen = $wlen;
- return $w;
- } elsif ($wtype eq "sp") {
- $texiwdlen = 1;
- return ' ';
- } elsif ($wtype eq "da") {
- $texiwdlen = 2;
- return '--';
- } elsif ($wmajt eq "c" || $wtype eq "wc") {
- $texiwdlen = 2 + $wlen;
- return "\@code\{$w\}";
- } elsif ($wtype eq "es") {
- $texiwdlen = 1 + $wlen;
- return "\@emph\{${w}";
- } elsif ($wtype eq "ee") {
- $texiwdlen = 1 + $wlen;
- return "${w}\}";
- } elsif ($wtype eq "eo") {
- $texiwdlen = 2 + $wlen;
- return "\@emph\{${w}\}";
- } elsif ($wtype eq "x ") {
- $texiwdlen = 0; # we don't need it in this case
- $capital = 1; # hack
- return "\@ref\{";
- } elsif ($wtype eq "xe") {
- $texiwdlen = 0; # we don't need it in this case
- return "\}";
- } elsif ($wmajt eq "i") {
- $texiwdlen = 0; # we don't need it in this case
- return "\001";
- } else {
- die "panic in word_texi: $wtype$w\n";
- }
-}
-
-sub texi_menu {
- my ($topitem) = @_;
- my $item, $i, $mpname, $title, $wd;
-
- $item = $tstruct_next{$topitem};
- print "\@menu\n";
- while ($item) {
- $title = "";
- $mpname = $tstruct_pname{$item};
- foreach $i (@$mpname) {
- $wd = &word_texi($i);
- $title .= $wd unless $wd eq "\001";
- }
- print "* ${item}:: $title\n";
- $item = $tstruct_mnext{$item};
- }
- print "* Index::\n" if $topitem eq "Top";
- print "\@end menu\n";
-}
-
-sub texi_index {
- my $itag, $ientry, @a, $wd, $item, $len;
- my $subnums = "123456789ABCDEFGHIJKLMNOPQRSTU" .
- "VWXYZabcdefghijklmnopqrstuvwxyz";
-
- print "\@ifinfo\n\@node Index, , $FIXMElastnode, Top\n";
- print "\@unnumbered Index\n\n\@menu\n";
-
- foreach $itag (@itags) {
- $ientry = $idxmap{$itag};
- @a = @$ientry;
- $item = '';
- $len = 0;
- foreach $i (@a) {
- $wd = &word_texi($i);
- $item .= $wd, $len += $texiwdlen unless $wd eq "\001";
- }
- $i = 0;
- foreach $node (@nodes) {
- next if !$idxnodes{$node,$itag};
- printf "* %s%s (%s): %s.\n",
- $item, " " x (40-$len), substr($subnums,$i++,1), $node;
- }
- }
- print "\@end menu\n\@end ifinfo\n";
-}
-
-sub write_hlp {
- # This is called from the top level, so I won't bother using
- # my or local.
-
- # Build the index-tag text forms.
- print "building index entries...";
- @hlp_index = map {
- my $i,$ww;
- my $ientry = $idxmap{$_};
- my $title = "";
- foreach $i (@$ientry) {
- $ww = &word_hlp($i,0);
- $title .= $ww unless $ww eq "\001";
- }
- $title;
- } @itags;
-
- # Write the HPJ project-description file.
- print "writing .hpj file...";
- open HPJ,">nasmdoc.hpj";
- print HPJ "[OPTIONS]\ncompress=true\n";
- print HPJ "title=NASM: The Netwide Assembler\noldkeyphrase=no\n\n";
- print HPJ "[FILES]\nnasmdoc.rtf\n\n";
- print HPJ "[CONFIG]\n";
- print HPJ 'CreateButton("btn_up", "&Up",'.
- ' "JumpContents(`nasmdoc.hlp'."'".')")';
- print HPJ "\nBrowseButtons()\n";
- close HPJ;
-
- # Open file.
- print "\n writing .rtf file...";
- open TEXT,">nasmdoc.rtf";
- select TEXT;
-
- # Preamble.
- print "{\\rtf1\\ansi{\\fonttbl\n";
- print "\\f0\\froman Times New Roman;\\f1\\fmodern Courier New;\n";
- print "\\f2\\fswiss Arial;\\f3\\ftech Wingdings}\\deff0\n";
- print "#{\\footnote Top}\n";
- print "\${\\footnote Contents}\n";
- print "+{\\footnote browse:00000}\n";
- print "!{\\footnote DisableButton(\"btn_up\")}\n";
- print "\\keepn\\f2\\b\\fs30\\sb0\n";
- print "NASM: The Netwide Assembler\n";
- print "\\par\\pard\\plain\\sb120\n";
- print "This file documents NASM, the Netwide Assembler: an assembler \n";
- print "targetting the Intel x86 series of processors, with portable source.\n";
-
- $node = "Top";
- $browse = 0;
-
- $newpar = "\\par\\sb120\n";
- for ($para = 0; $para <= $#pnames; $para++) {
- $pname = $pnames[$para];
- $pflags = $pflags[$para];
- $ptype = substr($pflags,0,4);
-
- print $newpar;
- $newpar = "\\par\\sb120\n";
-
- if ($ptype eq "chap") {
- # Chapter heading. Begin a new node.
- &hlp_menu($node)
- if $tstruct_level{$tstruct_next{$node}} > $tstruct_level{$node};
- $pflags =~ /chap (.*) :(.*)/;
- $node = "Chapter $1";
- $title = $footnotetitle = "Chapter $1: ";
- foreach $i (@$pname) {
- $ww = &word_hlp($i,1);
- $title .= $ww, $footnotetitle .= &word_hlp($i,0) unless $ww eq "\001";
- }
- print "\\page\n";
- printf "#{\\footnote %s}\n", &hlp_sectkw($node);
- print "\${\\footnote $footnotetitle}\n";
- printf "+{\\footnote browse:%05d}\n", ++$browse;
- printf "!{\\footnote ChangeButtonBinding(\"btn_up\"," .
- "\"JumpId(\`nasmdoc.hlp',\`%s')\");\n",
- &hlp_sectkw($tstruct_up{$node});
- print "EnableButton(\"btn_up\")}\n";
- &hlp_keywords($node);
- print "\\keepn\\f2\\b\\fs30\\sb60\\sa60\n";
- print "$title\n";
- $newpar = "\\par\\pard\\plain\\sb120\n";
- } elsif ($ptype eq "appn") {
- # Appendix heading. Begin a new node.
- &hlp_menu($node)
- if $tstruct_level{$tstruct_next{$node}} > $tstruct_level{$node};
- $pflags =~ /appn (.*) :(.*)/;
- $node = "Appendix $1";
- $title = $footnotetitle = "Appendix $1: ";
- foreach $i (@$pname) {
- $ww = &word_hlp($i,1);
- $title .= $ww, $footnotetitle .= &word_hlp($i,0) unless $ww eq "\001";
- }
- print "\\page\n";
- printf "#{\\footnote %s}\n", &hlp_sectkw($node);
- print "\${\\footnote $footnotetitle}\n";
- printf "+{\\footnote browse:%05d}\n", ++$browse;
- printf "!{\\footnote ChangeButtonBinding(\"btn_up\"," .
- "\"JumpId(\`nasmdoc.hlp',\`%s')\");\n",
- &hlp_sectkw($tstruct_up{$node});
- print "EnableButton(\"btn_up\")}\n";
- &hlp_keywords($node);
- print "\\keepn\\f2\\b\\fs30\\sb60\\sa60\n";
- print "$title\n";
- $newpar = "\\par\\pard\\plain\\sb120\n";
- } elsif ($ptype eq "head" || $ptype eq "subh") {
- # Heading or subheading. Begin a new node.
- &hlp_menu($node)
- if $tstruct_level{$tstruct_next{$node}} > $tstruct_level{$node};
- $pflags =~ /.... (.*) :(.*)/;
- $node = "Section $1";
- $title = $footnotetitle = "$1. ";
- foreach $i (@$pname) {
- $ww = &word_hlp($i,1);
- $title .= $ww, $footnotetitle .= &word_hlp($i,0) unless $ww eq "\001";
- }
- print "\\page\n";
- printf "#{\\footnote %s}\n", &hlp_sectkw($node);
- print "\${\\footnote $footnotetitle}\n";
- printf "+{\\footnote browse:%05d}\n", ++$browse;
- printf "!{\\footnote ChangeButtonBinding(\"btn_up\"," .
- "\"JumpId(\`nasmdoc.hlp',\`%s')\");\n",
- &hlp_sectkw($tstruct_up{$node});
- print "EnableButton(\"btn_up\")}\n";
- &hlp_keywords($node);
- print "\\keepn\\f2\\b\\fs30\\sb60\\sa60\n";
- print "$title\n";
- $newpar = "\\par\\pard\\plain\\sb120\n";
- } elsif ($ptype eq "code") {
- # Code paragraph.
- print "\\keep\\f1\\sb120\n";
- foreach $i (@$pname) {
- my $x = $i;
- warn "code line longer than 68 chars: $i\n" if length $i > 68;
- $x =~ s/\\/\\\\/g;
- $x =~ s/\{/\\\{/g;
- $x =~ s/\}/\\\}/g;
- print "$x\\par\\sb0\n";
- }
- $newpar = "\\pard\\f0\\sb120\n";
- } elsif ($ptype eq "bull" || $ptype eq "norm") {
- # Ordinary paragraph, optionally bulleted. We wrap, FWIW.
- if ($ptype eq "bull") {
- print "\\tx360\\li360\\fi-360{\\f3\\'9F}\\tab\n";
- $newpar = "\\par\\pard\\sb120\n";
- } else {
- $newpar = "\\par\\sb120\n";
- }
- $line = '';
- @a = @$pname;
- $wd = $wprev = '';
- do {
- do { $w = &word_hlp((shift @a),1); } while $w eq "\001"; # hack
- $wd .= $wprev;
- if ($w eq ' ' || $w eq '' || $w eq undef) {
- if (length ($line . $wd) > 75) {
- $line =~ s/\s*$//; # trim trailing spaces
- print "$line \n"; # and put one back
- $line = '';
- $wd =~ s/^\s*//; # trim leading spaces
- }
- $line .= $wd;
- $wd = '';
- }
- $wprev = $w;
- } while ($w ne '' && $w ne undef);
- if ($line =~ /\S/) {
- $line =~ s/\s*$//; # trim trailing spaces
- print "$line\n";
- }
- }
- }
-
- # Close file.
- print "\\page}\n";
- select STDOUT;
- close TEXT;
-}
-
-sub word_hlp {
- my ($w, $docode) = @_;
- my $wtype, $wmajt;
-
- return undef if $w eq '' || $w eq undef;
- $wtype = substr($w,0,2);
- $wmajt = substr($wtype,0,1);
- $w = substr($w,2);
- $w =~ s/\\/\\\\/g;
- $w =~ s/\{/\\\{/g;
- $w =~ s/\}/\\\}/g;
- $w =~ s/<.*>// if $wmajt eq "w"; # remove web links
- substr($w,0,length($w)-1) =~ s/-/\\\'AD/g if $wmajt ne "x"; #nonbreakhyphens
- if ($wmajt eq "n" || $wtype eq "e " || $wtype eq "w ") {
- return $w;
- } elsif ($wtype eq "sp") {
- return ' ';
- } elsif ($wtype eq "da") {
- return "\\'96";
- } elsif ($wmajt eq "c" || $wtype eq "wc") {
- $w =~ s/ /\\\'A0/g; # make spaces non-breaking
- return $docode ? "{\\f1 ${w}}" : $w;
- } elsif ($wtype eq "es") {
- return "{\\i ${w}";
- } elsif ($wtype eq "ee") {
- return "${w}}";
- } elsif ($wtype eq "eo") {
- return "{\\i ${w}}";
- } elsif ($wtype eq "x ") {
- return "{\\uldb ";
- } elsif ($wtype eq "xe") {
- $w = &hlp_sectkw($w);
- return "}{\\v ${w}}";
- } elsif ($wmajt eq "i") {
- return "\001";
- } else {
- die "panic in word_hlp: $wtype$w\n";
- }
-}
-
-sub hlp_menu {
- my ($topitem) = @_;
- my $item, $kword, $i, $mpname, $title;
-
- $item = $tstruct_next{$topitem};
- print "\\li360\\fi-360\n";
- while ($item) {
- $title = "";
- $mpname = $tstruct_pname{$item};
- foreach $i (@$mpname) {
- $ww = &word_hlp($i, 0);
- $title .= $ww unless $ww eq "\001";
- }
- $kword = &hlp_sectkw($item);
- print "{\\uldb ${item}: $title}{\\v $kword}\\par\\sb0\n";
- $item = $tstruct_mnext{$item};
- }
- print "\\pard\\sb120\n";
-}
-
-sub hlp_sectkw {
- my ($node) = @_;
- $node =~ tr/A-Z/a-z/;
- $node =~ tr/- ./___/;
- $node;
-}
-
-sub hlp_keywords {
- my ($node) = @_;
- my $pfx = "K{\\footnote ";
- my $done = 0;
- foreach $i (0..$#itags) {
- (print $pfx,$hlp_index[$i]), $pfx = ";\n", $done++
- if $idxnodes{$node,$itags[$i]};
- }
- print "}\n" if $done;
-}
-
# Make tree structures. $tstruct_* is top-level and global.
sub add_item {
my ($item, $level) = @_;
@@ -1514,7 +1093,7 @@ sub add_item {
# by future backends, instead of putting it all in the same script.
#
sub write_dip {
- open(PARAS, "> nasmdoc.dip");
+ open(PARAS, '>', File::Spec->catfile($out_path, 'nasmdoc.dip'));
foreach $k (sort(keys(%metadata))) {
print PARAS 'meta :', $k, "\n";
print PARAS $metadata{$k},"\n";
diff --git a/doc/ttfmetrics.ph b/doc/ttfmetrics.ph
new file mode 100644
index 00000000..0eec5504
--- /dev/null
+++ b/doc/ttfmetrics.ph
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+
+use Font::TTF::Font;
+use Font::TTF::Head;
+use Font::TTF::Hmtx;
+use Font::TTF::Cmap;
+use Font::TTF::Maxp;
+use Font::TTF::PSNames;
+use Font::TTF::Post;
+
+use strict;
+
+sub parse_ttf_file($) {
+ my($filename) = @_;
+
+ my $fontdata = {
+ widths => {},
+ kern => {}
+ };
+
+ my $f = Font::TTF::Font->open($filename);
+
+ return undef if (!defined($f));
+
+ $fontdata->{file} = $filename;
+ $fontdata->{type} = defined($f->{' CFF'}) ? 'otf' : 'ttf';
+
+ $f->{head}->read();
+ $fontdata->{scale} = $f->{head}{unitsPerEm};
+
+ $f->{maxp}->read();
+ my $glyphs = $f->{maxp}{numGlyphs};
+
+ $f->{cmap}->read();
+ $f->{hmtx}->read();
+ $f->{name}->read();
+ $fontdata->{name} = $f->{name}->find_name(6); # PostScript name
+ $f->{post}->read();
+ my $psglyphs = 0;
+ my $psmap = $f->{post}->{VAL};
+ $psmap = [] if (!defined($psmap));
+ #printf "Glyphs with PostScript names: %d\n", scalar(@$psmap);
+
+ # Can be done as an array of arrays in case of multiple unicodes to
+ # one glyph...
+ my @unimap = $f->{cmap}->reverse();
+
+ for (my $i = 0; $i < $glyphs; $i++) {
+ my $width = $f->{hmtx}->{advance}[$i];
+ my $psname = $psmap->[$i];
+ if (!defined($psname)) {
+ $psname = Font::TTF::PSNames::lookup($unimap[$i]);
+ }
+ next if (!defined($psname) || ($psname eq '.notdef'));
+ $fontdata->{widths}{$psname} = $f->{hmtx}->{advance}[$i];
+ }
+
+ $f->release;
+
+ return $fontdata;
+}
+
+1;
diff --git a/include/compiler.h b/include/compiler.h
index b23d3eb0..79a9ef2e 100644
--- a/include/compiler.h
+++ b/include/compiler.h
@@ -219,6 +219,8 @@ size_t strnlen(const char *s, size_t maxlen);
# define no_return noreturn void
#elif defined(HAVE_FUNC_ATTRIBUTE_NORETURN)
# define no_return void __attribute__((noreturn))
+#elif defined(_MSC_VER)
+# define no_return __declspec(noreturn) void
#else
# define no_return void
#endif
diff --git a/include/hashtbl.h b/include/hashtbl.h
index 947d0ab3..da618c8a 100644
--- a/include/hashtbl.h
+++ b/include/hashtbl.h
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------- *
*
- * Copyright 1996-2009 The NASM Authors - All Rights Reserved
+ * Copyright 1996-2017 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
*
diff --git a/include/nasm.h b/include/nasm.h
index 61e56344..a475aa38 100644
--- a/include/nasm.h
+++ b/include/nasm.h
@@ -696,8 +696,6 @@ typedef struct insn { /* an instruction itself */
int8_t evex_brerop; /* BR/ER/SAE operand position */
} insn;
-enum geninfo { GI_SWITCH };
-
/* Instruction flags type: IF_* flags are defined in insns.h */
typedef uint64_t iflags_t;
@@ -749,7 +747,7 @@ struct pragma {
const char *facility_name; /* Facility name exactly as entered by user */
const char *opname; /* First word after the facility name */
const char *tail; /* Anything after the operation */
- enum directives opcode; /* Operation as a D_ directives constant */
+ enum directive opcode; /* Operation as a D_ directives constant */
};
/*
@@ -802,15 +800,6 @@ struct ofmt {
void (*init)(void);
/*
- * This procedure is called to pass generic information to the
- * object file. The first parameter gives the information type
- * (currently only command line switches)
- * and the second parameter gives the value. This function returns
- * 1 if recognized, 0 if unrecognized
- */
- int (*setinfo)(enum geninfo type, char **string);
-
- /*
* This is the modern output function, which gets passed
* a struct out_data with much more information. See the
* definition of struct out_data.
@@ -921,7 +910,7 @@ struct ofmt {
* "invalid parameter to [*] directive"
*/
enum directive_result
- (*directive)(enum directives directive, char *value, int pass);
+ (*directive)(enum directive directive, char *value, int pass);
/*
* This procedure is called before anything else - even before
diff --git a/include/nasmlib.h b/include/nasmlib.h
index c705b501..16c0c8ca 100644
--- a/include/nasmlib.h
+++ b/include/nasmlib.h
@@ -97,12 +97,14 @@ char * safe_alloc nasm_strndup(const char *, size_t);
nasm_free(*_pp); \
*_pp = NULL; \
} while (0)
-#define nasm_zero(p) (memset((p), 0, sizeof(*(p))))
+#define nasm_zero(x) (memset(&(x), 0, sizeof(x)))
#define nasm_zeron(p,n) (memset((p), 0, (n)*sizeof(*(p))))
/*
- * Wrapper around fwrite() which fatal-errors on output failure.
+ * Wrappers around fread()/fwrite() which fatal-errors on failure.
+ * For fread(), only use this if EOF is supposed to be a fatal error!
*/
+void nasm_read(void *, size_t, FILE *);
void nasm_write(const void *, size_t, FILE *);
/*
@@ -133,6 +135,9 @@ no_return nasm_assert_failed(const char *, int, const char *);
do { enum { _static_assert_failed = 1/(!!(x)) }; } while (0)
#endif
+/* Utility function to generate a string for an invalid enum */
+const char *invalid_enum_str(int);
+
/*
* ANSI doesn't guarantee the presence of `stricmp' or
* `strcasecmp'.
diff --git a/include/perfhash.h b/include/perfhash.h
new file mode 100644
index 00000000..43e536c1
--- /dev/null
+++ b/include/perfhash.h
@@ -0,0 +1,52 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * Copyright 2017 The NASM Authors - All Rights Reserved
+ * See the file AUTHORS included with the NASM distribution for
+ * the specific copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ----------------------------------------------------------------------- */
+
+#ifndef PERFHASH_H
+#define PERFHASH_H 1
+
+#include "compiler.h"
+#include "nasmlib.h" /* For invalid_enum_str() */
+
+struct perfect_hash {
+ uint64_t crcinit;
+ uint32_t hashmask;
+ uint32_t tbllen;
+ int tbloffs;
+ int errval;
+ const int16_t *hashvals;
+ const char * const *strings;
+};
+
+int perfhash_find(const struct perfect_hash *, const char *);
+
+#endif /* PERFHASH_H */
diff --git a/include/rdoff.h b/include/rdoff.h
index 019d012d..973be8c0 100644
--- a/include/rdoff.h
+++ b/include/rdoff.h
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------- *
*
- * Copyright 1996-2009 The NASM Authors - All Rights Reserved
+ * Copyright 1996-2017 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
*
@@ -35,9 +35,8 @@
* rdoff.h RDOFF Object File manipulation routines header file
*/
-#ifndef RDOFF_RDOFF_H
-#define RDOFF_RDOFF_H 1
-
+#ifndef RDOFF_H
+#define RDOFF_H 1
/*
* RDOFF definitions. They are used by RDOFF utilities and by NASM's
@@ -167,126 +166,4 @@ struct CommonRec {
#define SYM_GLOBAL 4
#define SYM_IMPORT 8
-/*** The following part is used only by the utilities *************************/
-
-#ifdef RDOFF_UTILS
-
-/* Some systems don't define this automatically */
-#if !defined(strdup)
-extern char *strdup(const char *);
-#endif
-
-typedef union RDFHeaderRec {
- char type; /* invariant throughout all below */
- struct GenericRec g; /* type 0 */
- struct RelocRec r; /* type == 1 / 6 */
- struct ImportRec i; /* type == 2 / 7 */
- struct ExportRec e; /* type == 3 */
- struct DLLRec d; /* type == 4 */
- struct BSSRec b; /* type == 5 */
- struct ModRec m; /* type == 8 */
- struct CommonRec c; /* type == 10 */
-} rdfheaderrec;
-
-struct SegmentHeaderRec {
- /* information from file */
- uint16_t type;
- uint16_t number;
- uint16_t reserved;
- int32_t length;
-
- /* information built up here */
- int32_t offset;
- uint8_t *data; /* pointer to segment data if it exists in memory */
-};
-
-typedef struct RDFFileInfo {
- FILE *fp; /* file descriptor; must be open to use this struct */
- int rdoff_ver; /* should be 1; any higher => not guaranteed to work */
- int32_t header_len;
- int32_t header_ofs;
-
- uint8_t *header_loc; /* keep location of header */
- int32_t header_fp; /* current location within header for reading */
-
- struct SegmentHeaderRec seg[RDF_MAXSEGS];
- int nsegs;
-
- int32_t eof_offset; /* offset of the first uint8_t beyond the end of this
- module */
-
- char *name; /* name of module in libraries */
- int *refcount; /* pointer to reference count on file, or NULL */
-} rdffile;
-
-#define BUF_BLOCK_LEN 4088 /* selected to match page size (4096)
- * on 80x86 machines for efficiency */
-typedef struct memorybuffer {
- int length;
- uint8_t buffer[BUF_BLOCK_LEN];
- struct memorybuffer *next;
-} memorybuffer;
-
-typedef struct {
- memorybuffer *buf; /* buffer containing header records */
- int nsegments; /* number of segments to be written */
- int32_t seglength; /* total length of all the segments */
-} rdf_headerbuf;
-
-/* segments used by RDOFF, understood by rdoffloadseg */
-#define RDOFF_CODE 0
-#define RDOFF_DATA 1
-#define RDOFF_HEADER -1
-/* mask for 'segment' in relocation records to find if relative relocation */
-#define RDOFF_RELATIVEMASK 64
-/* mask to find actual segment value in relocation records */
-#define RDOFF_SEGMENTMASK 63
-
-extern int rdf_errno;
-
-/* rdf_errno can hold these error codes */
-enum {
- /* 0 */ RDF_OK,
- /* 1 */ RDF_ERR_OPEN,
- /* 2 */ RDF_ERR_FORMAT,
- /* 3 */ RDF_ERR_READ,
- /* 4 */ RDF_ERR_UNKNOWN,
- /* 5 */ RDF_ERR_HEADER,
- /* 6 */ RDF_ERR_NOMEM,
- /* 7 */ RDF_ERR_VER,
- /* 8 */ RDF_ERR_RECTYPE,
- /* 9 */ RDF_ERR_RECLEN,
- /* 10 */ RDF_ERR_SEGMENT
-};
-
-/* utility functions */
-int32_t translateint32_t(int32_t in);
-uint16_t translateint16_t(uint16_t in);
-char *translatesegmenttype(uint16_t type);
-
-/* RDOFF file manipulation functions */
-int rdfopen(rdffile * f, const char *name);
-int rdfopenhere(rdffile * f, FILE * fp, int *refcount, const char *name);
-int rdfclose(rdffile * f);
-int rdffindsegment(rdffile * f, int segno);
-int rdfloadseg(rdffile * f, int segment, void *buffer);
-rdfheaderrec *rdfgetheaderrec(rdffile * f); /* returns static storage */
-void rdfheaderrewind(rdffile * f); /* back to start of header */
-void rdfperror(const char *app, const char *name);
-
-/* functions to write a new RDOFF header to a file -
- use rdfnewheader to allocate a header, rdfaddheader to add records to it,
- rdfaddsegment to notify the header routines that a segment exists, and
- to tell it how int32_t the segment will be.
- rdfwriteheader to write the file id, object length, and header
- to a file, and then rdfdoneheader to dispose of the header */
-
-rdf_headerbuf *rdfnewheader(void);
-int rdfaddheader(rdf_headerbuf * h, rdfheaderrec * r);
-int rdfaddsegment(rdf_headerbuf * h, int32_t seglength);
-int rdfwriteheader(FILE * fp, rdf_headerbuf * h);
-void rdfdoneheader(rdf_headerbuf * h);
-
-#endif /* RDOFF_UTILS */
-
-#endif /* RDOFF_RDOFF_H */
+#endif /* RDOFF_H */
diff --git a/macros/macros.pl b/macros/macros.pl
index d96324a2..d4bfa9fa 100755
--- a/macros/macros.pl
+++ b/macros/macros.pl
@@ -90,7 +90,7 @@ sub charcify(@) {
#
# Generate macros.c
#
-open(OUT,"> macros/macros.c\0") or die "unable to open macros.c\n";
+open(OUT, '>', 'macros/macros.c') or die "unable to open macros.c\n";
print OUT "/*\n";
print OUT " * Do not edit - this file auto-generated by macros.pl from:\n";
@@ -116,7 +116,7 @@ my $z;
foreach $args ( @ARGV ) {
my @file_list = glob ( $args );
foreach $fname ( @file_list ) {
- open(INPUT,"< $fname\0") or die "$0: $fname: $!\n";
+ open(INPUT,'<', $fname) or die "$0: $fname: $!\n";
while (<INPUT>) {
$line++;
chomp;
diff --git a/nasm.spec.in b/nasm.spec.in
index 68126caf..9ca198ea 100644
--- a/nasm.spec.in
+++ b/nasm.spec.in
@@ -10,15 +10,14 @@ Source: http://www.nasm.us/pub/nasm/releasebuilds/%{nasm_version}/nasm-%{nasm_ve
URL: http://www.nasm.us/
BuildRoot: /tmp/rpm-build-nasm
Prefix: %{_prefix}
-BuildRequires: perl, asciidoc, xmlto, ghostscript, texinfo
+BuildRequires: perl, asciidoc, xmlto, ghostscript, perl-Font-TTF
+BuildRequires: adobe-source-sans-pro-fonts, adobe-source-code-pro-fonts
+BuildRequires: fontconfig, xz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%package doc
Summary: Extensive documentation for NASM
Group: Development/Languages
-BuildRequires: ghostscript, texinfo
-Requires(post): /sbin/install-info
-Requires(preun): /sbin/install-info
%package rdoff
Summary: Tools for the RDOFF binary format, sometimes used with NASM.
@@ -30,8 +29,8 @@ NASM is the Netwide Assembler, a free portable assembler for the Intel
instruction mnemonics and syntax.
%description doc
-Extensive documentation for the Netwide Assembler, NASM, in HTML,
-info, PostScript and text formats.
+Extensive documentation for the Netwide Assembler (NASM) in HTML and
+PDF formats.
%description rdoff
Tools for the operating-system independent RDOFF binary format, which
@@ -42,33 +41,24 @@ include linker, library manager, loader, and information dump.
%setup -q -n nasm-%{nasm_version}
%build
-%configure
+%configure --disable-pdf-compression
make %{?_smp_mflags} everything
%install
rm -rf "$RPM_BUILD_ROOT"
mkdir -p "$RPM_BUILD_ROOT"/%{_bindir}
mkdir -p "$RPM_BUILD_ROOT"/%{_mandir}/man1
-mkdir -p "$RPM_BUILD_ROOT"/%{_infodir}
mkdir -p "$RPM_BUILD_ROOT"/usr/tempdoc
%makeinstall install_everything docdir="$RPM_BUILD_ROOT"/usr/tempdoc
cp -a $RPM_BUILD_ROOT/usr/tempdoc/html \
- $RPM_BUILD_ROOT/usr/tempdoc/nasmdoc.{ps,txt,pdf} .
-gzip -9f nasmdoc.{ps,txt}
+ $RPM_BUILD_ROOT/usr/tempdoc/nasmdoc.pdf .
+xz -9ef nasmdoc.pdf
# remove unpackaged files from the buildroot
rm -rf $RPM_BUILD_ROOT%{_prefix}/tempdoc
%clean
rm -rf "$RPM_BUILD_ROOT"
-%post
-/sbin/install-info %{_infodir}/nasm.info.gz %{_infodir}/dir || :
-
-%preun
-if [ $1 = 0 ]; then
- /sbin/install-info --delete %{_infodir}/nasm.info.gz %{_infodir}/dir || :
-fi
-
%files
%defattr(-,root,root)
%doc AUTHORS CHANGES README TODO
@@ -76,11 +66,10 @@ fi
%{_bindir}/ndisasm
%{_mandir}/man1/nasm.1*
%{_mandir}/man1/ndisasm.1*
-%{_infodir}/nasm.info*.gz
%files doc
%defattr(-,root,root)
-%doc html nasmdoc.txt.gz nasmdoc.pdf nasmdoc.ps.gz
+%doc html nasmdoc.pdf.xz
%files rdoff
%defattr(-,root,root)
diff --git a/nasmlib/badenum.c b/nasmlib/badenum.c
new file mode 100644
index 00000000..6f880c85
--- /dev/null
+++ b/nasmlib/badenum.c
@@ -0,0 +1,43 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * Copyright 2017 The NASM Authors - All Rights Reserved
+ * See the file AUTHORS included with the NASM distribution for
+ * the specific copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include "nasmlib.h"
+
+/* Used to avoid returning NULL to a debug printing function */
+const char *invalid_enum_str(int x)
+{
+ static char buf[64];
+
+ snprintf(buf, sizeof buf, "<invalid %d>", x);
+ return buf;
+}
diff --git a/nasmlib/file.c b/nasmlib/file.c
index a6e7d565..0d0c24bc 100644
--- a/nasmlib/file.c
+++ b/nasmlib/file.c
@@ -33,6 +33,16 @@
#include "file.h"
+void nasm_read(void *ptr, size_t size, FILE *f)
+{
+ size_t n = fread(ptr, 1, size, f);
+ if (ferror(f)) {
+ nasm_fatal(0, "unable to read input: %s", strerror(errno));
+ } else if (n != size || feof(f)) {
+ nasm_fatal(0, "fatal short read on input");
+ }
+}
+
void nasm_write(const void *ptr, size_t size, FILE *f)
{
size_t n = fwrite(ptr, 1, size, f);
@@ -122,7 +132,7 @@ void fwritezero(off_t bytes, FILE *fp)
FILE *nasm_open_read(const char *filename, enum file_flags flags)
{
- FILE *f;
+ FILE *f = NULL;
bool again = true;
#ifdef __GLIBC__
@@ -186,10 +196,10 @@ bool nasm_file_exists(const char *filename)
*/
off_t nasm_file_size(FILE *f)
{
-#if defined(HAVE_FILENO) && defined(HAVE__FILELENGTHI64)
+#ifdef HAVE__FILELENGTHI64
return _filelengthi64(fileno(f));
#elif defined(nasm_fstat)
- struct nasm_stat st;
+ nasm_struct_stat st;
if (nasm_fstat(fileno(f), &st))
return (off_t)-1;
@@ -208,10 +218,10 @@ off_t nasm_file_size(FILE *f)
*/
off_t nasm_file_size_by_path(const char *pathname)
{
-#ifdef HAVE_STAT
- struct stat st;
+#ifdef nasm_stat
+ nasm_struct_stat st;
- if (stat(pathname, &st))
+ if (nasm_stat(pathname, &st))
return (off_t)-1;
return st.st_size;
diff --git a/nasmlib/file.h b/nasmlib/file.h
index 774dadf4..4069ec64 100644
--- a/nasmlib/file.h
+++ b/nasmlib/file.h
@@ -43,6 +43,9 @@
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
@@ -56,11 +59,6 @@
# include <sys/mman.h>
#endif
-#if !defined(HAVE_FILENO) && defined(HAVE__FILENO)
-# define HAVE_FILENO 1
-# define fileno _fileno
-#endif
-
#if !defined(HAVE_ACCESS) && defined(HAVE__ACCESS)
# define HAVE_ACCESS 1
# define access _access
@@ -70,33 +68,61 @@
#endif
/* Can we adjust the file size without actually writing all the bytes? */
-#ifdef HAVE_FILENO /* Useless without fileno() */
-# ifdef HAVE__CHSIZE_S
-# define nasm_ftruncate(fd,size) _chsize_s(fd,size)
-# elif defined(HAVE__CHSIZE)
-# define nasm_ftruncate(fd,size) _chsize(fd,size)
-# elif defined(HAVE_FTRUNCATE)
-# define nasm_ftruncate(fd,size) ftruncate(fd,size)
-# endif
+#ifdef HAVE__CHSIZE_S
+# define nasm_ftruncate(fd,size) _chsize_s(fd,size)
+#elif defined(HAVE__CHSIZE)
+# define nasm_ftruncate(fd,size) _chsize(fd,size)
+#elif defined(HAVE_FTRUNCATE)
+# define nasm_ftruncate(fd,size) ftruncate(fd,size)
#endif
/*
- * On Win32, stat has a 32-bit file size but _stati64 has a 64-bit file
- * size. However, as "stat" is already a macro, don't confuse the situation
- * further by redefining it, instead we create our own.
+ * On Win32/64, stat has a 32-bit file size but _stati64 has a 64-bit file
+ * size. Things get complicated because some of these may be macros,
+ * which autoconf won't pick up on as the standard autoconf tests do
+ * #undef.
*/
-#ifdef HAVE__STATI64
-# define nasm_stat _stati64
-#elif defined(HAVE_STAT)
-# define nasm_stat stat
+#ifdef _stati64
+# define HAVE_STRUCT__STATI64 1
+# define HAVE__STATI64 1
+#endif
+#ifdef _fstati64
+# define HAVE__FSTATI64 1
#endif
-#ifdef HAVE_FILENO
+#ifdef HAVE_STRUCT__STATI64
+typedef struct _stati64 nasm_struct_stat;
+# ifdef HAVE__STATI64
+# define nasm_stat _stati64
+# endif
# ifdef HAVE__FSTATI64
# define nasm_fstat _fstati64
-# elif defined(HAVE_FSTAT)
+# endif
+#elif defined(HAVE_STRUCT_STAT)
+typedef struct stat nasm_struct_stat;
+# ifdef HAVE_STAT
+# define nasm_stat stat
+# endif
+# ifdef HAVE_FSTAT
# define nasm_fstat fstat
# endif
#endif
+#ifndef HAVE_FILENO
+# ifdef fileno /* autoconf doesn't always pick up macros */
+# define HAVE_FILENO 1
+# elif defined(HAVE__FILENO)
+# define HAVE_FILENO 1
+# define fileno _fileno
+# endif
+#endif
+
+/* These functions are utterly useless without fileno() */
+#ifndef HAVE_FILENO
+# undef nasm_fstat
+# undef nasm_ftruncate
+# undef HAVE_MMAP
+# undef HAVE__FILELENGTHI64
+#endif
+
#endif /* NASMLIB_FILE_H */
diff --git a/nasmlib/perfhash.c b/nasmlib/perfhash.c
new file mode 100644
index 00000000..5cd6714e
--- /dev/null
+++ b/nasmlib/perfhash.c
@@ -0,0 +1,55 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * Copyright 2017 The NASM Authors - All Rights Reserved
+ * See the file AUTHORS included with the NASM distribution for
+ * the specific copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include "perfhash.h"
+#include "hashtbl.h" /* For crc64i() */
+
+int perfhash_find(const struct perfect_hash *hash, const char *str)
+{
+ uint32_t k1, k2;
+ uint64_t crc;
+ uint16_t ix;
+
+ crc = crc64i(hash->crcinit, str);
+ k1 = (uint32_t)crc & hash->hashmask;
+ k2 = (uint32_t)(crc >> 32) & hash->hashmask;
+
+ ix = hash->hashvals[k1] + hash->hashvals[k2 + hash->hashmask + 1];
+
+ if (ix >= hash->tbllen ||
+ !hash->strings[ix] ||
+ nasm_stricmp(str, hash->strings[ix]))
+ return hash->errval;
+
+ return hash->tbloffs + ix;
+}
diff --git a/nasmlib/perfhash.pl b/nasmlib/perfhash.pl
new file mode 100755
index 00000000..639b347f
--- /dev/null
+++ b/nasmlib/perfhash.pl
@@ -0,0 +1,362 @@
+#!/usr/bin/perl
+## --------------------------------------------------------------------------
+##
+## Copyright 1996-2017 The NASM Authors - All Rights Reserved
+## See the file AUTHORS included with the NASM distribution for
+## the specific copyright holders.
+##
+## Redistribution and use in source and binary forms, with or without
+## modification, are permitted provided that the following
+## conditions are met:
+##
+## * Redistributions of source code must retain the above copyright
+## notice, this list of conditions and the following disclaimer.
+## * Redistributions in binary form must reproduce the above
+## copyright notice, this list of conditions and the following
+## disclaimer in the documentation and/or other materials provided
+## with the distribution.
+##
+## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+##
+## --------------------------------------------------------------------------
+
+#
+# Generate a perfect hash for general case-insensitive string-to-enum
+# lookup. This generates an enum and the corresponding hash, but
+# relies on a common function to parse the hash.
+#
+# Usage:
+# perfhash.pl h foohash.dat foohash.h (to generate C header)
+# perfhash.pl c foohash.dat foohash.c (to generate C source)
+#
+
+use strict;
+
+require 'phash.ph';
+
+sub basename($) {
+ my($s) = @_;
+ $s =~ s/^.*[^-[:alnum:]_\.]//; # Remove path component as best we can
+ return $s;
+}
+
+sub intval($) {
+ my($s) = @_;
+
+ if ($s =~ /^0/) {
+ return oct($s); # Handles octal or hexadecimal
+ } elsif ($s =~ /^\-(0.*)$/) {
+ return -oct($1);
+ } else {
+ return $s + 0; # Forcibly convert to number
+ }
+}
+
+my($output, $infile, $outfile) = @ARGV;
+my $me = basename($0);
+
+# The following special things are allowed in the input file:
+# #<space> or ; begins a comment
+# #include filename
+# #name str
+# The name of the hash
+# #prefix str
+# Defines the prefix before enum
+# #guard str
+# Defines the header guard string
+# #special str [= value]
+# Generate an enum value without a corresponding string; not capitalized.
+# #header str
+# Indicates the name of the .h file to include from the .c file
+# #errval str
+# Define the value to be returned if a string is not found
+# (defaults to -1). This can be any constant C expression,
+# including one of the enum values.
+#
+# Regular lines are just str [= value]
+#
+# Enumeration is generated in the order listed in the file, just as in C
+# specifying a value causes the values to increase by 1 from that point on
+# unless specified.
+
+my $name;
+my $prefix;
+my $guard;
+my $hfile;
+
+my %strings = ();
+my %specials = ();
+my $next_value = 0;
+my $errval = '-1';
+
+my @incstack = ();
+my @filenames = ($infile);
+my @linenums = (0);
+my $dd = undef;
+my $err = 0;
+
+while (scalar(@filenames)) {
+ if (!defined($dd)) {
+ open($dd, '<', $filenames[-1])
+ or die "$0: cannot open: $filenames[-1]: $!\n";
+ }
+
+ my $line = <$dd>;
+ if (!defined($line)) {
+ close($dd);
+ $dd = pop @incstack;
+ pop @filenames;
+ pop @linenums;
+ next;
+ }
+
+ $linenums[-1]++;
+
+ chomp $line;
+ $line =~ s/\s*(|\;.*|\#\s.*|\#)$//; # Remove comments and trailing space
+ $line =~ s/^\s+//; # Remove leading space
+ if ($line eq '') {
+ # Do nothing
+ } elsif ($line =~ /^\#name\s+([[:alnum:]_]+)$/) {
+ $name = $1;
+ } elsif ($line =~ /^\#prefix\s+([[:alnum:]_]+)$/) {
+ $prefix = $1;
+ } elsif ($line =~ /^\#guard\s+([[:alnum:]_]+)$/) {
+ $guard = $1;
+ } elsif ($line =~ /^\#errval\s+(\S.*)$/) {
+ $errval = $1;
+ } elsif ($line =~ /^\#header\s+(\"(.+)\"|\S+)$/) {
+ $hfile = ($2 ne '') ? $2 : $1;
+ } elsif ($line =~ /^\#include\s+(\"(.+)\"|\S+)$/) {
+ push @incstack, $dd;
+ push @filenames, (($2 ne '') ? $2 : $1);
+ push @linenums, 0;
+ undef $dd; # Open a new file
+ } elsif ($line =~ /^(|\#special\s+)(\S+)\s*(|=\s*(\-?(0[Xx][[:xdigit:]]+|0[0-7]*|[0-9]+)))$/) {
+ $next_value = intval($4) if ($4 ne '');
+ if ($1 eq '') {
+ $strings{$2} = $next_value++;
+ } else {
+ $specials{$2} = $next_value++;
+ }
+ } else {
+ printf STDERR "%s:%d:%s syntax error: \"%s\"\n",
+ $filenames[-1], $linenums[-1],
+ (scalar(@incstack) == 1) ? '' : "(from $infile)", $line;
+ $err++;
+ }
+}
+
+exit 1 if ($err);
+
+# Default name, prefix, and header guard name
+if (!defined($name)) {
+ $name = basename($infile);
+ $name =~ s/(\..*)$//; # Strip extension, if any
+}
+if (!defined($prefix)) {
+ $prefix = "\U${name}\E_";
+}
+if (!defined($hfile)) {
+ $hfile = $outfile;
+ $hfile =~ s/\.c$/\.h/;
+}
+if (!defined($guard)) {
+ $guard = basename($hfile);
+ $guard =~ s/[^[:alnum:]_]/_/g;
+ $guard =~ s/__+/_/g;
+ $guard = "\U$guard";
+}
+
+# Verify input. We can't have more than one constant with the same
+# enumeration value, nor the same enumeration string.
+if (scalar(keys(%strings)) == 0) {
+ die "$0: $infile: no strings to hash!\n";
+}
+
+my %enums;
+my %enumvals;
+my %stringbyval;
+my $max_enum;
+my $tbllen = 0;
+my $tbloffs;
+foreach my $s (keys(%strings)) {
+ my $es = "${prefix}\U${s}";
+ $es =~ s/[^[:alnum:]_]/_/g;
+ $es =~ s/__+/_/g;
+ my $v = $strings{$s};
+ $stringbyval{$v} = $s;
+ if (defined($enums{$es})) {
+ printf STDERR "%s: string \"%s\" duplicates existing enum %s\n",
+ $infile, $s, $es;
+ $err++;
+ } else {
+ $enums{$es} = $v;
+ }
+ if (defined($enumvals{$v})) {
+ printf STDERR "%s: string \"%s\" duplicates existing enum constant %d\n", $v;
+ $err++;
+ } else {
+ $enumvals{$v} = $es;
+ }
+ $max_enum = $v if ($v > $max_enum || !defined($max_enum));
+ $tbloffs = $v if ($v < $tbloffs || !defined($tbloffs));
+ $tbllen = $v+1 if ($v >= $tbllen || !defined($tbllen));
+}
+foreach my $s (keys(%specials)) {
+ my $es = $prefix . $s; # No string mangling here
+ my $v = $specials{$s};
+ if (defined($enums{$es})) {
+ printf STDERR "%s: special \"%s\" duplicates existing enum %s\n",
+ $infile, $s, $es;
+ $err++;
+ } else {
+ $enums{$es} = $v;
+ }
+ if (defined ($enumvals{$v})) {
+ printf STDERR "%s: special \"%s\" duplicates existing enum constant %d\n", $v;
+ $err++;
+ } else {
+ $enumvals{$v} = $es;
+ }
+ $max_enum = $v if ($v > $max_enum || !defined($max_enum));
+}
+
+$tbllen -= $tbloffs;
+if ($tbllen > 65536) {
+ printf STDERR "%s: span of enumeration values too large\n";
+ $err++;
+}
+
+exit 1 if ($err);
+
+open(F, '>', $outfile)
+ or die "$0: cannot create: ${outfile}: $!\n";
+
+if ($output eq 'h') {
+ print F "/*\n";
+ print F " * This file is generated from $infile\n";
+ print F " * by $me; do not edit.\n";
+ print F " */\n";
+ print F "\n";
+
+ print F "#ifndef $guard\n";
+ print F "#define $guard 1\n\n";
+ print F "#include \"perfhash.h\"\n\n";
+
+ my $c = '{';
+ $next_value = 0;
+ print F "enum ${name} ";
+ foreach my $v (sort { $a <=> $b } keys(%enumvals)) {
+ my $s = $enumvals{$v};
+ print F "$c\n $s";
+ print F " = $v" if ($v != $next_value);
+ $next_value = $v + 1;
+ $c = ',';
+ }
+ print F "\n};\n\n";
+ print F "extern const struct perfect_hash ${name}_hash;\n";
+ printf F "extern const char * const %s_tbl[%d];\n", $name, $tbllen;
+
+ print F "\nstatic inline enum ${name} ${name}_find(const char *str)\n";
+ print F "{\n";
+ print F " return perfhash_find(&${name}_hash, str);\n";
+ print F "}\n";
+
+ print F "\nstatic inline const char * ${name}_name(enum ${name} x)\n";
+ print F "{\n";
+ printf F " size_t ix = (size_t)x - (%d);\n", $tbloffs;
+ printf F " if (ix >= %d)\n", $tbllen;
+ print F " return NULL;\n";
+ print F " return ${name}_tbl[ix];\n";
+ print F "}\n";
+
+ print F "\nstatic inline const char * ${name}_dname(enum ${name} x)\n";
+ print F "{\n";
+ print F " const char *y = ${name}_name(x);\n";
+ print F " return y ? y : invalid_enum_str(x);\n";
+ print F "}\n";
+
+ print F "\n#endif /* $guard */\n";
+} elsif ($output eq 'c') {
+ # The strings we hash must all be lower case, even if the string
+ # table doesn't contain them that way.
+
+ my %lcstrings;
+ foreach my $s (keys(%strings)) {
+ my $ls = "\L$s";
+ if (defined($lcstrings{$ls})) {
+ printf STDERR "%s: strings \"%s\" and \"%s\" differ only in case\n",
+ $infile, $s, $strings{$lcstrings{$s}};
+ } else {
+ $lcstrings{$ls} = $strings{$s} - $tbloffs;
+ }
+ }
+
+ my @hashinfo = gen_perfect_hash(\%lcstrings);
+ if (!@hashinfo) {
+ die "$0: no hash found\n";
+ }
+
+ # Paranoia...
+ verify_hash_table(\%lcstrings, \@hashinfo);
+
+ my ($n, $sv, $g) = @hashinfo;
+
+ die if ($n & ($n-1));
+
+ print F "/*\n";
+ print F " * This file is generated from $infile\n";
+ print F " * by $me; do not edit.\n";
+ print F " */\n";
+ print F "\n";
+
+ print F "#include \"$hfile\"\n\n";
+
+ printf F "const char * const %s_tbl[%d] = ", $name, $tbllen;
+ my $c = '{';
+ for (my $i = $tbloffs; $i < $tbloffs+$tbllen; $i++) {
+ printf F "%s\n %s", $c,
+ defined($stringbyval{$i}) ? '"'.$stringbyval{$i}.'"' : 'NULL';
+ $c = ',';
+ }
+ print F "\n};\n\n";
+
+ print F "#define UNUSED (65536/3)\n\n";
+
+ printf F "static const int16_t %s_hashvals[%d] = ", $name, $n*2;
+ $c = '{';
+ for (my $i = 0; $i < $n; $i++) {
+ my $h = ${$g}[$i*2+0];
+ print F "$c\n ", defined($h) ? $h : 'UNUSED';
+ $c = ',';
+ }
+ for (my $i = 0; $i < $n; $i++) {
+ my $h = ${$g}[$i*2+1];
+ print F "$c\n ", defined($h) ? $h : 'UNUSED';
+ $c = ',';
+ }
+ print F "\n};\n\n";
+
+ print F "const struct perfect_hash ${name}_hash = {\n";
+ printf F " UINT64_C(0x%08x%08x),\n", $$sv[0], $$sv[1]; # crcinit
+ printf F " UINT32_C(0x%x),\n", $n-1; # hashmask
+ printf F " UINT32_C(%u),\n", $tbllen; # tbllen
+ printf F " %d,\n", $tbloffs; # tbloffs
+ printf F " (%s),\n", $errval; # errval
+ printf F " ${name}_hashvals,\n"; # hashvals
+ printf F " ${name}_tbl\n"; # strings
+ print F "};\n";
+}
diff --git a/nsis/MultiUser.nsh b/nsis/NASMMultiUser.nsh
index a04048ab..a5dc3a4a 100755
--- a/nsis/MultiUser.nsh
+++ b/nsis/NASMMultiUser.nsh
@@ -1,470 +1,478 @@
-/*
-
-MultiUser.nsh
-
-Installer configuration for multi-user Windows environments
-
-Copyright 2008-2009 Joost Verburg
-Updated 2016 by H. Peter Anvin to handle 64-bit Windows
-
-*/
-
-!ifndef MULTIUSER_INCLUDED
-!define MULTIUSER_INCLUDED
-!verbose push
-!verbose 3
-
-;Standard NSIS header files
-
-!ifdef MULTIUSER_MUI
- !include MUI2.nsh
-!endif
-!include nsDialogs.nsh
-!include LogicLib.nsh
-!include WinVer.nsh
-!include FileFunc.nsh
-
-;Variables
-
-Var MultiUser.Privileges
-Var MultiUser.InstallMode
-
-;Command line installation mode setting
-
-!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE
- !include StrFunc.nsh
- !ifndef StrStr_INCLUDED
- ${StrStr}
- !endif
- !ifndef MULTIUSER_NOUNINSTALL
- !ifndef UnStrStr_INCLUDED
- ${UnStrStr}
- !endif
- !endif
-
- Var MultiUser.Parameters
- Var MultiUser.Result
-!endif
-
-;Installation folder stored in registry
-
-!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
- Var MultiUser.InstDir
-!endif
-
-!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME
- Var MultiUser.DefaultKeyValue
-!endif
-
-;Windows Vista UAC setting
-
-!if "${MULTIUSER_EXECUTIONLEVEL}" == Admin
- RequestExecutionLevel admin
- !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
-!else if "${MULTIUSER_EXECUTIONLEVEL}" == Power
- RequestExecutionLevel admin
- !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
-!else if "${MULTIUSER_EXECUTIONLEVEL}" == Highest
- RequestExecutionLevel highest
- !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
-!else
- RequestExecutionLevel user
-!endif
-
-/*
-
-Install modes
-
-*/
-
-!macro MULTIUSER_INSTALLMODE_ALLUSERS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
-
- ;Install mode initialization - per-machine
-
- ${ifnot} ${IsNT}
- ${orif} $MultiUser.Privileges == "Admin"
- ${orif} $MultiUser.Privileges == "Power"
-
- StrCpy $MultiUser.InstallMode AllUsers
-
- SetShellVarContext all
-
- !if "${UNINSTALLER_PREFIX}" != UN
- ;Set default installation location for installer
- !ifdef MULTIUSER_INSTALLMODE_INSTDIR
- StrCpy $INSTDIR "${GLOBALINSTDIR}\${MULTIUSER_INSTALLMODE_INSTDIR}"
- !endif
- !endif
-
- !ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
-
- ReadRegStr $MultiUser.InstDir HKLM "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}"
-
- ${if} $MultiUser.InstDir != ""
- StrCpy $INSTDIR $MultiUser.InstDir
- ${endif}
-
- !endif
-
- !ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION
- Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}"
- !endif
-
- ${endif}
-
-!macroend
-
-!macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
-
- ;Install mode initialization - per-user
-
- ${if} ${IsNT}
-
- StrCpy $MultiUser.InstallMode CurrentUser
-
- SetShellVarContext current
-
- !if "${UNINSTALLER_PREFIX}" != UN
- ;Set default installation location for installer
- !ifdef MULTIUSER_INSTALLMODE_INSTDIR
- ${if} ${AtLeastWin2000}
- StrCpy $INSTDIR "$LOCALAPPDATA\bin\${MULTIUSER_INSTALLMODE_INSTDIR}"
- ${else}
- StrCpy $INSTDIR "${GLOBALINSTDIR}\${MULTIUSER_INSTALLMODE_INSTDIR}"
- ${endif}
- !endif
- !endif
-
- !ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
-
- ReadRegStr $MultiUser.InstDir HKCU "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}"
-
- ${if} $MultiUser.InstDir != ""
- StrCpy $INSTDIR $MultiUser.InstDir
- ${endif}
-
- !endif
-
- !ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION
- Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}"
- !endif
-
- ${endif}
-
-!macroend
-
-Function MultiUser.InstallMode.AllUsers
- !insertmacro MULTIUSER_INSTALLMODE_ALLUSERS "" ""
-FunctionEnd
-
-Function MultiUser.InstallMode.CurrentUser
- !insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER "" ""
-FunctionEnd
-
-!ifndef MULTIUSER_NOUNINSTALL
-
-Function un.MultiUser.InstallMode.AllUsers
- !insertmacro MULTIUSER_INSTALLMODE_ALLUSERS UN .un
-FunctionEnd
-
-Function un.MultiUser.InstallMode.CurrentUser
- !insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER UN .un
-FunctionEnd
-
-!endif
-
-/*
-
-Installer/uninstaller initialization
-
-*/
-
-!macro MULTIUSER_INIT_QUIT UNINSTALLER_FUNCPREFIX
-
- !ifdef MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUNCTIONQUIT
- Call "${MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUCTIONQUIT}
- !else
- Quit
- !endif
-
-!macroend
-
-!macro MULTIUSER_INIT_TEXTS
-
- !ifndef MULTIUSER_INIT_TEXT_ADMINREQUIRED
- !define MULTIUSER_INIT_TEXT_ADMINREQUIRED "$(^Caption) requires Administrator priviledges."
- !endif
-
- !ifndef MULTIUSER_INIT_TEXT_POWERREQUIRED
- !define MULTIUSER_INIT_TEXT_POWERREQUIRED "$(^Caption) requires at least Power User priviledges."
- !endif
-
- !ifndef MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE
- !define MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE "Your user account does not have sufficient privileges to install $(^Name) for all users of this compuetr."
- !endif
-
-!macroend
-
-!macro MULTIUSER_INIT_CHECKS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
-
- ;Installer initialization - check privileges and set install mode
-
- !insertmacro MULTIUSER_INIT_TEXTS
-
- UserInfo::GetAccountType
- Pop $MultiUser.Privileges
-
- ${if} ${IsNT}
-
- ;Check privileges
-
- !if "${MULTIUSER_EXECUTIONLEVEL}" == Admin
-
- ${if} $MultiUser.Privileges != "Admin"
- MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}"
- !insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}"
- ${endif}
-
- !else if "${MULTIUSER_EXECUTIONLEVEL}" == Power
-
- ${if} $MultiUser.Privileges != "Power"
- ${andif} $MultiUser.Privileges != "Admin"
- ${if} ${AtMostWinXP}
- MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_POWERREQUIRED}"
- ${else}
- MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}"
- ${endif}
- !insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}"
- ${endif}
-
- !endif
-
- !ifdef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
-
- ;Default to per-machine installation if possible
-
- ${if} $MultiUser.Privileges == "Admin"
- ${orif} $MultiUser.Privileges == "Power"
- !ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
- !else
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
- !endif
-
- !ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME
-
- ;Set installation mode to setting from a previous installation
-
- !ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER
- ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
- ${if} $MultiUser.DefaultKeyValue == ""
- ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
- ${if} $MultiUser.DefaultKeyValue != ""
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
- ${endif}
- ${endif}
- !else
- ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
- ${if} $MultiUser.DefaultKeyValue == ""
- ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
- ${if} $MultiUser.DefaultKeyValue != ""
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
- ${endif}
- ${endif}
- !endif
-
- !endif
-
- ${else}
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
- ${endif}
-
- !else
-
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
-
- !endif
-
- !ifdef MULTIUSER_INSTALLMODE_COMMANDLINE
-
- ;Check for install mode setting on command line
-
- ${${UNINSTALLER_FUNCPREFIX}GetParameters} $MultiUser.Parameters
-
- ${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/CurrentUser"
-
- ${if} $MultiUser.Result != ""
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
- ${endif}
-
- ${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/AllUsers"
-
- ${if} $MultiUser.Result != ""
- ${if} $MultiUser.Privileges == "Admin"
- ${orif} $MultiUser.Privileges == "Power"
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
- ${else}
- MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE}"
- ${endif}
- ${endif}
-
- !endif
-
- ${else}
-
- ;Not running Windows NT, per-user installation not supported
-
- Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
-
- ${endif}
-
-!macroend
-
-!macro MULTIUSER_INIT
- !verbose push
- !verbose 3
-
- !insertmacro MULTIUSER_INIT_CHECKS "" ""
-
- !verbose pop
-!macroend
-
-!ifndef MULTIUSER_NOUNINSTALL
-
-!macro MULTIUSER_UNINIT
- !verbose push
- !verbose 3
-
- !insertmacro MULTIUSER_INIT_CHECKS Un un.
-
- !verbose pop
-!macroend
-
-!endif
-
-/*
-
-Modern UI 2 page
-
-*/
-
-!ifdef MULTIUSER_MUI
-
-!macro MULTIUSER_INSTALLMODEPAGE_INTERFACE
-
- !ifndef MULTIUSER_INSTALLMODEPAGE_INTERFACE
- !define MULTIUSER_INSTALLMODEPAGE_INTERFACE
- Var MultiUser.InstallModePage
-
- Var MultiUser.InstallModePage.Text
-
- Var MultiUser.InstallModePage.AllUsers
- Var MultiUser.InstallModePage.CurrentUser
-
- Var MultiUser.InstallModePage.ReturnValue
- !endif
-
-!macroend
-
-!macro MULTIUSER_PAGEDECLARATION_INSTALLMODE
-
- !insertmacro MUI_SET MULTIUSER_${MUI_PAGE_UNINSTALLER_PREFIX}INSTALLMODEPAGE ""
- !insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
-
- !insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_TOP "$(MULTIUSER_INNERTEXT_INSTALLMODE_TOP)"
- !insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS "$(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS)"
- !insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER "$(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER)"
-
- PageEx custom
-
- PageCallbacks MultiUser.InstallModePre_${MUI_UNIQUEID} MultiUser.InstallModeLeave_${MUI_UNIQUEID}
-
- Caption " "
-
- PageExEnd
-
- !insertmacro MULTIUSER_FUNCTION_INSTALLMODEPAGE MultiUser.InstallModePre_${MUI_UNIQUEID} MultiUser.InstallModeLeave_${MUI_UNIQUEID}
-
- !undef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP
- !undef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS
- !undef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER
-
-!macroend
-
-!macro MULTIUSER_PAGE_INSTALLMODE
-
- ;Modern UI page for install mode
-
- !verbose push
- !verbose 3
-
- !ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
- !error "A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to Admin, Power or Highest."
- !endif
-
- !insertmacro MUI_PAGE_INIT
- !insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE
-
- !verbose pop
-
-!macroend
-
-!macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE
-
- ;Page functions of Modern UI page
-
- Function "${PRE}"
-
- ${ifnot} ${IsNT}
- Abort
- ${endif}
-
- ${if} $MultiUser.Privileges != "Power"
- ${andif} $MultiUser.Privileges != "Admin"
- Abort
- ${endif}
-
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE
- !insertmacro MUI_HEADER_TEXT_PAGE $(MULTIUSER_TEXT_INSTALLMODE_TITLE) $(MULTIUSER_TEXT_INSTALLMODE_SUBTITLE)
-
- nsDialogs::Create 1018
- Pop $MultiUser.InstallModePage
-
- ${NSD_CreateLabel} 0u 0u 300u 20u "${MULTIUSER_INSTALLMODEPAGE_TEXT_TOP}"
- Pop $MultiUser.InstallModePage.Text
-
- ${NSD_CreateRadioButton} 20u 50u 280u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS}"
- Pop $MultiUser.InstallModePage.AllUsers
-
- ${NSD_CreateRadioButton} 20u 70u 280u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}"
- Pop $MultiUser.InstallModePage.CurrentUser
-
- ${if} $MultiUser.InstallMode == "AllUsers"
- SendMessage $MultiUser.InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} 0
- ${else}
- SendMessage $MultiUser.InstallModePage.CurrentUser ${BM_SETCHECK} ${BST_CHECKED} 0
- ${endif}
-
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW
- nsDialogs::Show
-
- FunctionEnd
-
- Function "${LEAVE}"
- SendMessage $MultiUser.InstallModePage.AllUsers ${BM_GETCHECK} 0 0 $MultiUser.InstallModePage.ReturnValue
-
- ${if} $MultiUser.InstallModePage.ReturnValue = ${BST_CHECKED}
- Call MultiUser.InstallMode.AllUsers
- ${else}
- Call MultiUser.InstallMode.CurrentUser
- ${endif}
-
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE
- FunctionEnd
-
-!macroend
-
-!endif
-
-!verbose pop
-!endif
+/*
+
+MultiUser.nsh
+
+Installer configuration for multi-user Windows environments
+
+Copyright 2008-2009 Joost Verburg
+Updated 2016 by H. Peter Anvin to handle 64-bit Windows
+
+*/
+
+!ifndef MULTIUSER_INCLUDED
+!define MULTIUSER_INCLUDED
+!verbose push
+!verbose 3
+
+;Standard NSIS header files
+
+!ifdef MULTIUSER_MUI
+ !include MUI2.nsh
+!endif
+!include nsDialogs.nsh
+!include LogicLib.nsh
+!include WinVer.nsh
+!include FileFunc.nsh
+
+;Variables
+
+Var MultiUser.Privileges
+Var MultiUser.InstallMode
+
+;Command line installation mode setting
+
+!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE
+ !include StrFunc.nsh
+ !ifndef StrStr_INCLUDED
+ ${StrStr}
+ !endif
+ !ifndef MULTIUSER_NOUNINSTALL
+ !ifndef UnStrStr_INCLUDED
+ ${UnStrStr}
+ !endif
+ !endif
+
+ Var MultiUser.Parameters
+ Var MultiUser.Result
+!endif
+
+;Installation folder stored in registry
+
+!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
+ Var MultiUser.InstDir
+!endif
+
+!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME
+ Var MultiUser.DefaultKeyValue
+!endif
+
+;Windows Vista UAC setting
+
+!if "${MULTIUSER_EXECUTIONLEVEL}" == Admin
+ RequestExecutionLevel admin
+ !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
+!else if "${MULTIUSER_EXECUTIONLEVEL}" == Power
+ RequestExecutionLevel admin
+ !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
+!else if "${MULTIUSER_EXECUTIONLEVEL}" == Highest
+ RequestExecutionLevel highest
+ !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
+!else
+ RequestExecutionLevel user
+!endif
+
+/*
+
+Install modes
+
+*/
+
+!macro MULTIUSER_INSTALLMODE_ALLUSERS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
+
+ ;Install mode initialization - per-machine
+
+ ${ifnot} ${IsNT}
+ ${orif} $MultiUser.Privileges == "Admin"
+ ${orif} $MultiUser.Privileges == "Power"
+
+ StrCpy $MultiUser.InstallMode AllUsers
+
+ SetShellVarContext all
+
+ !if "${UNINSTALLER_PREFIX}" != UN
+ ;Set default installation location for installer
+ !ifdef MULTIUSER_INSTALLMODE_INSTDIR
+ StrCpy $INSTDIR "${GLOBALINSTDIR}\${MULTIUSER_INSTALLMODE_INSTDIR}"
+ !endif
+ !endif
+
+ !ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
+
+ ReadRegStr $MultiUser.InstDir HKLM "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}"
+
+ ${if} $MultiUser.InstDir != ""
+ StrCpy $INSTDIR $MultiUser.InstDir
+ ${endif}
+
+ !endif
+
+ !ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION
+ Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}"
+ !endif
+
+ ${endif}
+
+!macroend
+
+!macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
+
+ ;Install mode initialization - per-user
+
+ ${if} ${IsNT}
+
+ StrCpy $MultiUser.InstallMode CurrentUser
+
+ SetShellVarContext current
+
+ !if "${UNINSTALLER_PREFIX}" != UN
+ ;Set default installation location for installer
+ !ifdef MULTIUSER_INSTALLMODE_INSTDIR
+ ${if} ${AtLeastWin2000}
+ StrCpy $INSTDIR "$LOCALAPPDATA\bin\${MULTIUSER_INSTALLMODE_INSTDIR}"
+ ${else}
+ StrCpy $INSTDIR "${GLOBALINSTDIR}\${MULTIUSER_INSTALLMODE_INSTDIR}"
+ ${endif}
+ !endif
+ !endif
+
+ !ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
+
+ ReadRegStr $MultiUser.InstDir HKCU "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}"
+
+ ${if} $MultiUser.InstDir != ""
+ StrCpy $INSTDIR $MultiUser.InstDir
+ ${endif}
+
+ !endif
+
+ !ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION
+ Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}"
+ !endif
+
+ ${endif}
+
+!macroend
+
+Function MultiUser.InstallMode.AllUsers
+ !insertmacro MULTIUSER_INSTALLMODE_ALLUSERS "" ""
+FunctionEnd
+
+Function MultiUser.InstallMode.CurrentUser
+ !insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER "" ""
+FunctionEnd
+
+!ifndef MULTIUSER_NOUNINSTALL
+
+Function un.MultiUser.InstallMode.AllUsers
+ !insertmacro MULTIUSER_INSTALLMODE_ALLUSERS UN .un
+FunctionEnd
+
+Function un.MultiUser.InstallMode.CurrentUser
+ !insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER UN .un
+FunctionEnd
+
+!endif
+
+/*
+
+Installer/uninstaller initialization
+
+*/
+
+!macro MULTIUSER_INIT_QUIT UNINSTALLER_FUNCPREFIX
+
+ !ifdef MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUNCTIONQUIT
+ Call "${MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUCTIONQUIT}
+ !else
+ Quit
+ !endif
+
+!macroend
+
+!macro MULTIUSER_INIT_TEXTS
+
+ !ifndef MULTIUSER_INIT_TEXT_ADMINREQUIRED
+ !define MULTIUSER_INIT_TEXT_ADMINREQUIRED "$(^Caption) requires Administrator priviledges."
+ !endif
+
+ !ifndef MULTIUSER_INIT_TEXT_POWERREQUIRED
+ !define MULTIUSER_INIT_TEXT_POWERREQUIRED "$(^Caption) requires at least Power User priviledges."
+ !endif
+
+ !ifndef MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE
+ !define MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE "Your user account does not have sufficient privileges to install $(^Name) for all users of this compuetr."
+ !endif
+
+!macroend
+
+!macro MULTIUSER_INIT_CHECKS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
+
+ ;Installer initialization - check privileges and set install mode
+
+ !insertmacro MULTIUSER_INIT_TEXTS
+
+ UserInfo::GetAccountType
+ Pop $MultiUser.Privileges
+
+ ${if} ${IsNT}
+
+ ;Check privileges
+
+ !if "${MULTIUSER_EXECUTIONLEVEL}" == Admin
+
+ ${if} $MultiUser.Privileges != "Admin"
+ MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}"
+ !insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}"
+ ${endif}
+
+ !else if "${MULTIUSER_EXECUTIONLEVEL}" == Power
+
+ ${if} $MultiUser.Privileges != "Power"
+ ${andif} $MultiUser.Privileges != "Admin"
+ ${if} ${AtMostWinXP}
+ MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_POWERREQUIRED}"
+ ${else}
+ MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}"
+ ${endif}
+ !insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}"
+ ${endif}
+
+ !endif
+
+ !ifdef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
+
+ ;Default to per-machine installation if possible
+
+ ${if} $MultiUser.Privileges == "Admin"
+ ${orif} $MultiUser.Privileges == "Power"
+ !ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
+ !else
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
+ !endif
+
+ !ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME
+
+ ;Set installation mode to setting from a previous installation
+
+ !ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER
+ ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
+ ${if} $MultiUser.DefaultKeyValue == ""
+ ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
+ ${if} $MultiUser.DefaultKeyValue != ""
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
+ ${endif}
+ ${endif}
+ !else
+ ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
+ ${if} $MultiUser.DefaultKeyValue == ""
+ ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
+ ${if} $MultiUser.DefaultKeyValue != ""
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
+ ${endif}
+ ${endif}
+ !endif
+
+ !endif
+
+ ${else}
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
+ ${endif}
+
+ !else
+
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
+
+ !endif
+
+ !ifdef MULTIUSER_INSTALLMODE_COMMANDLINE
+
+ ;Check for install mode setting on command line
+
+ ${${UNINSTALLER_FUNCPREFIX}GetParameters} $MultiUser.Parameters
+
+ ${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/CurrentUser"
+
+ ${if} $MultiUser.Result != ""
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
+ ${endif}
+
+ ${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/AllUsers"
+
+ ${if} $MultiUser.Result != ""
+ ${if} $MultiUser.Privileges == "Admin"
+ ${orif} $MultiUser.Privileges == "Power"
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
+ ${else}
+ MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE}"
+ ${endif}
+ ${endif}
+
+ !endif
+
+ ${else}
+
+ ;Not running Windows NT, per-user installation not supported
+
+ Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
+
+ ${endif}
+
+!macroend
+
+!macro MULTIUSER_INIT
+ !verbose push
+ !verbose 3
+
+ !insertmacro MULTIUSER_INIT_CHECKS "" ""
+
+ !verbose pop
+!macroend
+
+!ifndef MULTIUSER_NOUNINSTALL
+
+!macro MULTIUSER_UNINIT
+ !verbose push
+ !verbose 3
+
+ !insertmacro MULTIUSER_INIT_CHECKS Un un.
+
+ !verbose pop
+!macroend
+
+!endif
+
+/*
+
+Modern UI 2 page
+
+*/
+
+!ifdef MULTIUSER_MUI
+
+!macro MULTIUSER_INSTALLMODEPAGE_INTERFACE
+
+ !ifndef MULTIUSER_INSTALLMODEPAGE_INTERFACE
+ !define MULTIUSER_INSTALLMODEPAGE_INTERFACE
+ Var MultiUser.InstallModePage
+
+ Var MultiUser.InstallModePage.Text
+
+ Var MultiUser.InstallModePage.AllUsers
+ Var MultiUser.InstallModePage.CurrentUser
+
+ Var MultiUser.InstallModePage.ReturnValue
+ !endif
+
+!macroend
+
+!macro MULTIUSER_PAGEDECLARATION_INSTALLMODE
+
+ !insertmacro MUI_SET MULTIUSER_${MUI_PAGE_UNINSTALLER_PREFIX}INSTALLMODEPAGE ""
+ !insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
+
+ !insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_TOP "$(MULTIUSER_INNERTEXT_INSTALLMODE_TOP)"
+ !insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS "$(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS)"
+ !insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER "$(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER)"
+
+ PageEx custom
+
+ PageCallbacks MultiUser.InstallModePre_${MUI_UNIQUEID} MultiUser.InstallModeLeave_${MUI_UNIQUEID}
+
+ Caption " "
+
+ PageExEnd
+
+ !insertmacro MULTIUSER_FUNCTION_INSTALLMODEPAGE MultiUser.InstallModePre_${MUI_UNIQUEID} MultiUser.InstallModeLeave_${MUI_UNIQUEID}
+
+ !undef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP
+ !undef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS
+ !undef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER
+
+!macroend
+
+!macro MULTIUSER_PAGE_INSTALLMODE
+
+ ;Modern UI page for install mode
+
+ !verbose push
+ !verbose 3
+
+ !ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
+ !error "A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to Admin, Power or Highest."
+ !endif
+
+ !insertmacro MUI_PAGE_INIT
+ !insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE
+
+ !verbose pop
+
+!macroend
+
+!macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE
+
+ !ifndef MULTIUSER_TEXT_NOTADMIN
+ !define MULTIUSER_TEXT_NOTADMIN "The installer is currently running as an unprivileged user. It will not be possible to install this software for all users on the system. Cancel and re-run the installer as Administrator to install system-wide."
+ !endif
+
+ ;Page functions of Modern UI page
+
+ Function "${PRE}"
+
+ ${ifnot} ${IsNT}
+ Abort
+ ${endif}
+
+ ${if} $MultiUser.Privileges != "Power"
+ ${andif} $MultiUser.Privileges != "Admin"
+ MessageBox MB_OKCANCEL "${MULTIUSER_TEXT_NOTADMIN}" /SD IDOK IDABORT nofun
+ Abort
+
+ nofun:
+ Quit
+ ${endif}
+
+ !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE
+ !insertmacro MUI_HEADER_TEXT_PAGE $(MULTIUSER_TEXT_INSTALLMODE_TITLE) $(MULTIUSER_TEXT_INSTALLMODE_SUBTITLE)
+
+ nsDialogs::Create 1018
+ Pop $MultiUser.InstallModePage
+
+ ${NSD_CreateLabel} 0u 0u 300u 20u "${MULTIUSER_INSTALLMODEPAGE_TEXT_TOP}"
+ Pop $MultiUser.InstallModePage.Text
+
+ ${NSD_CreateRadioButton} 20u 50u 280u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS}"
+ Pop $MultiUser.InstallModePage.AllUsers
+
+ ${NSD_CreateRadioButton} 20u 70u 280u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}"
+ Pop $MultiUser.InstallModePage.CurrentUser
+
+ ${if} $MultiUser.InstallMode == "AllUsers"
+ SendMessage $MultiUser.InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} 0
+ ${else}
+ SendMessage $MultiUser.InstallModePage.CurrentUser ${BM_SETCHECK} ${BST_CHECKED} 0
+ ${endif}
+
+ !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW
+ nsDialogs::Show
+
+ FunctionEnd
+
+ Function "${LEAVE}"
+ SendMessage $MultiUser.InstallModePage.AllUsers ${BM_GETCHECK} 0 0 $MultiUser.InstallModePage.ReturnValue
+
+ ${if} $MultiUser.InstallModePage.ReturnValue = ${BST_CHECKED}
+ Call MultiUser.InstallMode.AllUsers
+ ${else}
+ Call MultiUser.InstallMode.CurrentUser
+ ${endif}
+
+ !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE
+ FunctionEnd
+
+!macroend
+
+!endif
+
+!verbose pop
+!endif
diff --git a/nsis/getpearch.pl b/nsis/getpearch.pl
index 25155536..e524372b 100644
--- a/nsis/getpearch.pl
+++ b/nsis/getpearch.pl
@@ -5,6 +5,7 @@
#
use strict;
+use bytes;
my %archnames = (
0x01de => 'am33',
@@ -35,28 +36,28 @@ open(my $fh, '<', $file)
or die "$0: cannot open file: $file: $!\n";
read($fh, my $mz, 2);
-exit 0 if ($mz ne 'MZ');
+exit 1 if ($mz ne 'MZ');
exit 0 unless (seek($fh, 0x3c, 0));
-exit 0 unless (read($fh, my $pe_offset, 1) == 1);
-$pe_offset = unpack("C", $pe_offset);
+exit 0 unless (read($fh, my $pe_offset, 4) == 4);
+$pe_offset = unpack("V", $pe_offset);
-exit 0 unless (seek($fh, $pe_offset, 0));
+exit 1 unless (seek($fh, $pe_offset, 0));
read($fh, my $pe, 4);
-exit 0 unless ($pe eq "PE\0\0");
+exit 1 unless ($pe eq "PE\0\0");
-exit 0 unless (read($fh, my $arch, 2) == 2);
+exit 1 unless (read($fh, my $arch, 2) == 2);
$arch = $archnames{unpack("v", $arch)};
if (defined($arch)) {
print "!define ARCH ${arch}\n";
}
-exit 0 unless (seek($fh, 14, 1));
-exit 0 unless (read($fh, my $auxheaderlen, 2) == 2);
-exit 0 unless (unpack("v", $auxheaderlen) >= 2);
+exit 1 unless (seek($fh, 14, 1));
+exit 1 unless (read($fh, my $auxheaderlen, 2) == 2);
+exit 1 unless (unpack("v", $auxheaderlen) >= 2);
-exit 0 unless (seek($fh, 2, 1));
-exit 0 unless (read($fh, my $petype, 2) == 2);
+exit 1 unless (seek($fh, 2, 1));
+exit 1 unless (read($fh, my $petype, 2) == 2);
$petype = unpack("v", $petype);
if ($petype == 0x010b) {
# It is a 32-bit PE32 file
@@ -68,6 +69,7 @@ if ($petype == 0x010b) {
print "!define GLOBALINSTDIR \$PROGRAMFILES64\n";
} else {
# No idea...
+ exit 1;
}
close($fh);
diff --git a/nsis/nasm.nsi b/nsis/nasm.nsi
index a021bd55..ad368e57 100644
--- a/nsis/nasm.nsi
+++ b/nsis/nasm.nsi
@@ -26,24 +26,27 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-!addincludedir "${objdir}/nsis"
-!addincludedir "${srcdir}/nsis"
+!addincludedir "${objdir}\nsis"
+!addincludedir "${srcdir}\nsis"
!include "version.nsh"
-!include /nonfatal "arch.nsh"
-!include /nonfatal "x64.nsh"
+!include "arch.nsh"
!define PRODUCT_NAME "Netwide Assembler"
!define PRODUCT_SHORT_NAME "nasm"
!define PACKAGE_NAME "${PRODUCT_NAME} ${VERSION}"
!define PACKAGE_SHORT_NAME "${PRODUCT_SHORT_NAME}-${VERSION}"
-SetCompressor lzma
+SetCompressor /solid lzma
+
+!if "${NSIS_PACKEDVERSION}" >= 0x3000000
+Unicode true
+!endif
!define MULTIUSER_EXECUTIONLEVEL Highest
!define MULTIUSER_MUI
!define MULTIUSER_INSTALLMODE_COMMANDLINE
!define MULTIUSER_INSTALLMODE_INSTDIR "NASM"
-!include "MultiUser.nsh"
+!include "NASMMultiUser.nsh"
!insertmacro MULTIUSER_PAGE_INSTALLMODE
!insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
@@ -53,7 +56,7 @@ SetCompressor lzma
;Name and file
Name "${PACKAGE_NAME}"
-OutFile "${objdir}/${PACKAGE_SHORT_NAME}-installer-${ARCH}.exe"
+OutFile "${objdir}\${PACKAGE_SHORT_NAME}-installer-${ARCH}.exe"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\${PRODUCT_SHORT_NAME}" ""
@@ -70,8 +73,8 @@ Var CmdFailed
;--------------------------------
;Interface Settings
Caption "${PACKAGE_SHORT_NAME} installation"
-Icon "${srcdir}/nsis/nasm.ico"
-UninstallIcon "${srcdir}/nsis/nasm-un.ico"
+Icon "${srcdir}\nsis\nasm.ico"
+UninstallIcon "${srcdir}\nsis\nasm-un.ico"
!define MUI_ABORTWARNING
@@ -101,10 +104,10 @@ UninstallIcon "${srcdir}/nsis/nasm-un.ico"
Section "NASM" SecNasm
Sectionin RO
SetOutPath "$INSTDIR"
- File "${srcdir}/LICENSE"
- File "${objdir}/nasm.exe"
- File "${objdir}/ndisasm.exe"
- File "${srcdir}/nsis/nasm.ico"
+ File "${srcdir}\LICENSE"
+ File "${objdir}\nasm.exe"
+ File "${objdir}\ndisasm.exe"
+ File "${srcdir}\nsis\nasm.ico"
;Store installation folder
WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}" "" $INSTDIR
@@ -140,27 +143,27 @@ skip:
SectionEnd
Section "RDOFF" SecRdoff
- File "${objdir}/rdoff/ldrdf.exe"
- File "${objdir}/rdoff/rdf2bin.exe"
- File "${objdir}/rdoff/rdf2com.exe"
- File "${objdir}/rdoff/rdf2ith.exe"
- File "${objdir}/rdoff/rdf2ihx.exe"
- File "${objdir}/rdoff/rdf2srec.exe"
- File "${objdir}/rdoff/rdfdump.exe"
- File "${objdir}/rdoff/rdflib.exe"
+ File "${objdir}\rdoff\ldrdf.exe"
+ File "${objdir}\rdoff\rdf2bin.exe"
+ File "${objdir}\rdoff\rdf2com.exe"
+ File "${objdir}\rdoff\rdf2ith.exe"
+ File "${objdir}\rdoff\rdf2ihx.exe"
+ File "${objdir}\rdoff\rdf2srec.exe"
+ File "${objdir}\rdoff\rdfdump.exe"
+ File "${objdir}\rdoff\rdflib.exe"
SectionEnd
Section "Manual" SecManual
SetOutPath "$INSTDIR"
- File "${objdir}/doc/nasmdoc.pdf"
+ File "${objdir}\doc\nasmdoc.pdf"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Manual.lnk" "$INSTDIR\nasmdoc.pdf"
SectionEnd
Section "VS8 integration" SecVS8
CreateDirectory "$INSTDIR\VSrules"
SetOutPath "$INSTDIR\VSrules"
- File "${srcdir}/contrib/VSrules/nasm.README"
- File "${srcdir}/contrib/VSrules/nasm.rules"
+ File "${srcdir}\contrib\VSrules\nasm.README"
+ File "${srcdir}\contrib\VSrules\nasm.rules"
SectionEnd
;--------------------------------
@@ -229,14 +232,8 @@ SectionEnd
;
; MUI requires this hooks
Function .onInit
+ SetRegView ${BITS}
!insertmacro MULTIUSER_INIT
- ${If} ${RunningX64}
- SetRegView 64
- ${EnableX64FSRedirection}
- StrCpy $INSTDIR "$PROGRAMFILES64\${PRODUCT_SHORT_NAME}"
- ${Else}
- StrCpy $INSTDIR "$PROGRAMFILES\${PRODUCT_SHORT_NAME}"
- ${EndIf}
FunctionEnd
Function un.onInit
diff --git a/nsis/x64.nsh b/nsis/x64.nsh
deleted file mode 100644
index e694c1e6..00000000
--- a/nsis/x64.nsh
+++ /dev/null
@@ -1,54 +0,0 @@
-; ---------------------
-; x64.nsh
-; ---------------------
-;
-; A few simple macros to handle installations on x64 machines.
-;
-; RunningX64 checks if the installer is running on x64.
-;
-; ${If} ${RunningX64}
-; MessageBox MB_OK "running on x64"
-; ${EndIf}
-;
-; DisableX64FSRedirection disables file system redirection.
-; EnableX64FSRedirection enables file system redirection.
-;
-; SetOutPath $SYSDIR
-; ${DisableX64FSRedirection}
-; File some.dll # extracts to C:\Windows\System32
-; ${EnableX64FSRedirection}
-; File some.dll # extracts to C:\Windows\SysWOW64
-;
-
-!ifndef ___X64__NSH___
-!define ___X64__NSH___
-
-!include LogicLib.nsh
-
-!macro _RunningX64 _a _b _t _f
- !insertmacro _LOGICLIB_TEMP
- System::Call kernel32::GetCurrentProcess()i.s
- System::Call kernel32::IsWow64Process(is,*i.s)
- Pop $_LOGICLIB_TEMP
- !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}`
-!macroend
-
-!define RunningX64 `"" RunningX64 ""`
-
-!macro DisableX64FSRedirection
-
- System::Call kernel32::Wow64EnableWow64FsRedirection(i0)
-
-!macroend
-
-!define DisableX64FSRedirection "!insertmacro DisableX64FSRedirection"
-
-!macro EnableX64FSRedirection
-
- System::Call kernel32::Wow64EnableWow64FsRedirection(i1)
-
-!macroend
-
-!define EnableX64FSRedirection "!insertmacro EnableX64FSRedirection"
-
-!endif # !___X64__NSH___
diff --git a/output/nullout.c b/output/nullout.c
index 862c0083..4eee5ef9 100644
--- a/output/nullout.c
+++ b/output/nullout.c
@@ -35,15 +35,8 @@
#include "nasmlib.h"
#include "outlib.h"
-int null_setinfo(enum geninfo type, char **string)
-{
- (void)type;
- (void)string;
- return 0;
-}
-
enum directive_result
-null_directive(enum directives directive, char *value, int pass)
+null_directive(enum directive directive, char *value, int pass)
{
(void)directive;
(void)value;
diff --git a/output/outaout.c b/output/outaout.c
index 0e3349d1..83859d97 100644
--- a/output/outaout.c
+++ b/output/outaout.c
@@ -914,7 +914,6 @@ const struct ofmt of_aout = {
&null_debug_form,
aout_stdmac,
aout_init,
- null_setinfo,
nasm_do_legacy_output,
aout_out,
aout_deflabel,
@@ -940,7 +939,6 @@ const struct ofmt of_aoutb = {
&null_debug_form,
aout_stdmac,
aoutb_init,
- null_setinfo,
nasm_do_legacy_output,
aout_out,
aout_deflabel,
diff --git a/output/outas86.c b/output/outas86.c
index 15be1ea2..59b10e71 100644
--- a/output/outas86.c
+++ b/output/outas86.c
@@ -635,7 +635,6 @@ const struct ofmt of_as86 = {
&null_debug_form,
as86_stdmac,
as86_init,
- null_setinfo,
nasm_do_legacy_output,
as86_out,
as86_deflabel,
diff --git a/output/outbin.c b/output/outbin.c
index 6100ceb1..7f694c4f 100644
--- a/output/outbin.c
+++ b/output/outbin.c
@@ -1286,7 +1286,7 @@ static int32_t bin_secname(char *name, int pass, int *bits)
}
static enum directive_result
-bin_directive(enum directives directive, char *args, int pass)
+bin_directive(enum directive directive, char *args, int pass)
{
switch (directive) {
case D_ORG:
@@ -1397,13 +1397,6 @@ static int32_t bin_segbase(int32_t segment)
return segment;
}
-static int bin_set_info(enum geninfo type, char **val)
-{
- (void)type;
- (void)val;
- return 0;
-}
-
const struct ofmt of_bin, of_ith, of_srec;
static void binfmt_init(void);
static void do_output_bin(void);
@@ -1663,7 +1656,6 @@ const struct ofmt of_bin = {
&null_debug_form,
bin_stdmac,
bin_init,
- bin_set_info,
nasm_do_legacy_output,
bin_out,
bin_deflabel,
@@ -1685,7 +1677,6 @@ const struct ofmt of_ith = {
&null_debug_form,
bin_stdmac,
ith_init,
- bin_set_info,
nasm_do_legacy_output,
bin_out,
bin_deflabel,
@@ -1707,7 +1698,6 @@ const struct ofmt of_srec = {
&null_debug_form,
bin_stdmac,
srec_init,
- bin_set_info,
nasm_do_legacy_output,
bin_out,
bin_deflabel,
diff --git a/output/outcoff.c b/output/outcoff.c
index 86a7ff85..df3dab72 100644
--- a/output/outcoff.c
+++ b/output/outcoff.c
@@ -769,7 +769,7 @@ static void BuildExportTable(STRING **rvp)
}
static enum directive_result
-coff_directives(enum directives directive, char *value, int pass)
+coff_directives(enum directive directive, char *value, int pass)
{
switch (directive) {
case D_EXPORT:
@@ -1158,12 +1158,6 @@ static void coff_win32_filename(char *inname, char *outname)
extern macros_t coff_stdmac[];
-static int coff_set_info(enum geninfo type, char **val)
-{
- (void)type;
- (void)val;
- return 0;
-}
#endif /* defined(OF_COFF) || defined(OF_WIN32) */
#ifdef OF_COFF
@@ -1177,7 +1171,6 @@ const struct ofmt of_coff = {
&null_debug_form,
coff_stdmac,
coff_std_init,
- coff_set_info,
nasm_do_legacy_output,
coff_out,
coff_deflabel,
@@ -1207,7 +1200,6 @@ const struct ofmt of_win32 = {
&df_cv8,
coff_stdmac,
coff_win32_init,
- coff_set_info,
nasm_do_legacy_output,
coff_out,
coff_deflabel,
@@ -1235,7 +1227,6 @@ const struct ofmt of_win64 = {
&df_cv8,
coff_stdmac,
coff_win64_init,
- coff_set_info,
nasm_do_legacy_output,
coff_out,
coff_deflabel,
diff --git a/output/outdbg.c b/output/outdbg.c
index 73a823ea..130c9d72 100644
--- a/output/outdbg.c
+++ b/output/outdbg.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2017 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -42,11 +42,13 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+#include <errno.h>
#include "nasm.h"
#include "nasmlib.h"
#include "outform.h"
#include "outlib.h"
+#include "insns.h"
#ifdef OF_DBG
@@ -56,6 +58,8 @@ struct Section {
char *name;
} *dbgsect;
+static unsigned long dbg_max_data_dump = 128;
+
const struct ofmt of_dbg;
static void dbg_init(void)
{
@@ -119,30 +123,128 @@ static void dbg_deflabel(char *name, int32_t segment, int64_t offset,
is_global, special ? ": " : "", special);
}
-static void dbg_out(int32_t segto, const void *data,
- enum out_type type, uint64_t size,
- int32_t segment, int32_t wrt)
+static const char *out_type(enum out_type type)
+{
+ static const char *out_types[] = {
+ "rawdata",
+ "reserve",
+ "address",
+ "reladdr",
+ "segment"
+ };
+ static char invalid_buf[64];
+
+ if (type >= sizeof(out_types)/sizeof(out_types[0])) {
+ sprintf(invalid_buf, "[invalid type %d]", type);
+ return invalid_buf;
+ }
+
+ return out_types[type];
+}
+
+static const char *out_sign(enum out_sign sign)
+{
+ static const char *out_signs[] = {
+ "wrap",
+ "signed",
+ "unsigned"
+ };
+ static char invalid_buf[64];
+
+ if (sign >= sizeof(out_signs)/sizeof(out_signs[0])) {
+ sprintf(invalid_buf, "[invalid sign %d]", sign);
+ return invalid_buf;
+ }
+
+ return out_signs[sign];
+}
+
+static void dbg_out(const struct out_data *data)
+{
+ fprintf(ofile,
+ "out to %"PRIx32":%"PRIx64" %s %s bits %d insoffs %d/%d "
+ "size %"PRIu64,
+ data->segment, data->offset,
+ out_type(data->type), out_sign(data->sign),
+ data->bits, data->insoffs, data->inslen, data->size);
+ if (data->itemp) {
+ fprintf(ofile, " ins %s(%d)",
+ nasm_insn_names[data->itemp->opcode], data->itemp->operands);
+ } else {
+ fprintf(ofile, " no ins (plain data)");
+ }
+
+ if (data->type == OUT_ADDRESS || data->type == OUT_RELADDR ||
+ data->type == OUT_SEGMENT) {
+ fprintf(ofile, " target %"PRIx32":%"PRIx64,
+ data->tsegment, data->toffset);
+ if (data->twrt != NO_SEG)
+ fprintf(ofile, " wrt %"PRIx32, data->twrt);
+ }
+ if (data->type == OUT_RELADDR)
+ fprintf(ofile, " relbase %"PRId64, data->relbase);
+
+ putc('\n', ofile);
+
+ if (data->type == OUT_RAWDATA) {
+ if ((size_t)data->size != data->size) {
+ fprintf(ofile, " data: <error: impossible size>\n");
+ } else if (!data->data) {
+ fprintf(ofile, " data: <error: null pointer>\n");
+ } else if (dbg_max_data_dump != -1UL &&
+ data->size > dbg_max_data_dump) {
+ fprintf(ofile, " data: <%"PRIu64" bytes>\n", data->size);
+ } else {
+ size_t i, j;
+ const uint8_t *bytes = data->data;
+ for (i = 0; i < data->size; i += 16) {
+ fprintf(ofile, " data:");
+ for (j = 0; j < 16; j++) {
+ if (i+j >= data->size)
+ fprintf(ofile, " ");
+ else
+ fprintf(ofile, "%c%02x",
+ (j == 8) ? '-' : ' ', bytes[i+j]);
+ }
+ fprintf(ofile," ");
+ for (j = 0; j < 16; j++) {
+ if (i+j >= data->size) {
+ putc(' ', ofile);
+ } else {
+ if (bytes[i+j] >= 32 && bytes[i+j] <= 126)
+ putc(bytes[i+j], ofile);
+ else
+ putc('.', ofile);
+ }
+ }
+ putc('\n', ofile);
+ }
+ }
+ }
+
+ /* This is probably the only place were we'll call this this way... */
+ nasm_do_legacy_output(data);
+}
+
+static void dbg_legacy_out(int32_t segto, const void *data,
+ enum out_type type, uint64_t size,
+ int32_t segment, int32_t wrt)
{
int32_t ldata;
- int id;
if (type == OUT_ADDRESS)
- fprintf(ofile, "out to %"PRIx32", len = %d: ", segto, (int)abs((int)size));
+ fprintf(ofile, " legacy: out to %"PRIx32", len = %d: ",
+ segto, (int)abs((int)size));
else
- fprintf(ofile, "out to %"PRIx32", len = %"PRIu64": ", segto, size);
+ fprintf(ofile, " legacy: out to %"PRIx32", len = %"PRIu64": ",
+ segto, size);
switch (type) {
case OUT_RESERVE:
fprintf(ofile, "reserved.\n");
break;
case OUT_RAWDATA:
- fprintf(ofile, "raw data = ");
- while (size--) {
- id = *(uint8_t *)data;
- data = (char *)data + 1;
- fprintf(ofile, "%02x ", id);
- }
- fprintf(ofile, "\n");
+ fprintf(ofile, "rawdata\n"); /* Already have a data dump */
break;
case OUT_ADDRESS:
ldata = *(int64_t *)data;
@@ -184,23 +286,55 @@ static int32_t dbg_segbase(int32_t segment)
}
static enum directive_result
-dbg_directive(enum directives directive, char *value, int pass)
+dbg_directive(enum directive directive, char *value, int pass)
{
fprintf(ofile, "directive [%s] value [%s] (pass %d)\n",
- directives[directive], value, pass);
+ directive_dname(directive), value, pass);
return DIRR_OK;
}
-static void dbg_filename(char *inname, char *outname)
+static enum directive_result
+dbg_pragma(const struct pragma *pragma);
+
+static const struct pragma_facility dbg_pragma_list[] = {
+ { NULL, dbg_pragma }
+};
+
+static enum directive_result
+dbg_pragma(const struct pragma *pragma)
{
- standard_extension(inname, outname, ".dbg");
+ fprintf(ofile, "pragma %s(%s) %s[%s] %s\n",
+ pragma->facility_name,
+ pragma->facility->name ? pragma->facility->name : "<default>",
+ pragma->opname, directive_dname(pragma->opcode),
+ pragma->tail);
+
+ if (pragma->facility == &dbg_pragma_list[0] &&
+ pragma->opcode == D_MAXDUMP) {
+ if (!nasm_stricmp(pragma->tail, "unlimited")) {
+ dbg_max_data_dump = -1UL;
+ } else {
+ char *ep;
+ unsigned long arg;
+
+ errno = 0;
+ arg = strtoul(pragma->tail, &ep, 0);
+ if (errno || *nasm_skip_spaces(ep)) {
+ nasm_error(ERR_WARNING | ERR_WARN_BAD_PRAGMA | ERR_PASS2,
+ "invalid %%pragma dbg maxdump argument");
+ return DIRR_ERROR;
+ } else {
+ dbg_max_data_dump = arg;
+ }
+ }
+ }
+
+ return DIRR_OK;
}
-static int dbg_set_info(enum geninfo type, char **val)
+static void dbg_filename(char *inname, char *outname)
{
- (void)type;
- (void)val;
- return 0;
+ standard_extension(inname, outname, ".dbg");
}
static const char * const types[] = {
@@ -216,7 +350,7 @@ static void dbgdbg_cleanup(void)
static void dbgdbg_linnum(const char *lnfname, int32_t lineno, int32_t segto)
{
- fprintf(ofile, "dbglinenum %s(%"PRId32") := %08"PRIx32"\n",
+ fprintf(ofile, "dbglinenum %s(%"PRId32") segment %"PRIx32"\n",
lnfname, lineno, segto);
}
static void dbgdbg_deflabel(char *name, int32_t segment,
@@ -242,6 +376,12 @@ static void dbgdbg_typevalue(int32_t type)
fprintf(ofile, "new type: %s(%"PRIX32")\n",
types[TYM_TYPE(type) >> 3], TYM_ELEMENTS(type));
}
+
+static const struct pragma_facility dbgdbg_pragma_list[] = {
+ { "dbgdbg", dbg_pragma },
+ { NULL, dbg_pragma } /* Won't trigger, "debug" is a reserved ns */
+};
+
static const struct dfmt debug_debug_form = {
"Trace of all info passed to debug stage",
"debug",
@@ -252,7 +392,7 @@ static const struct dfmt debug_debug_form = {
dbgdbg_typevalue,
dbgdbg_output,
dbgdbg_cleanup,
- NULL /* pragma list */
+ dbgdbg_pragma_list
};
static const struct dfmt * const debug_debug_arr[3] = {
@@ -270,9 +410,8 @@ const struct ofmt of_dbg = {
&debug_debug_form,
NULL,
dbg_init,
- dbg_set_info,
- nasm_do_legacy_output,
dbg_out,
+ dbg_legacy_out,
dbg_deflabel,
dbg_section_names,
dbg_sectalign,
@@ -280,7 +419,7 @@ const struct ofmt of_dbg = {
dbg_directive,
dbg_filename,
dbg_cleanup,
- NULL /* pragma list */
+ dbg_pragma_list
};
#endif /* OF_DBG */
diff --git a/output/outelf.c b/output/outelf.c
index ebff4d49..003e7d04 100644
--- a/output/outelf.c
+++ b/output/outelf.c
@@ -270,7 +270,7 @@ static void elf_section_attrib(char *name, char *attr, int pass,
}
static enum directive_result
-elf_directive(enum directives directive, char *value, int pass)
+elf_directive(enum directive directive, char *value, int pass)
{
int64_t n;
bool err;
@@ -1612,7 +1612,7 @@ static void elf_write(void)
if (is_elf32() || is_elfx32()) {
Elf32_Ehdr ehdr;
- nasm_zero(&ehdr.e_ident);
+ nasm_zero(ehdr.e_ident);
memcpy(ehdr.e_ident, ELFMAG, SELFMAG);
ehdr.e_ident[EI_CLASS] = char_le(ELFCLASS32);
ehdr.e_ident[EI_DATA] = char_le(ELFDATA2LSB);
@@ -1641,7 +1641,7 @@ static void elf_write(void)
nasm_assert(is_elf64());
- nasm_zero(&ehdr.e_ident);
+ nasm_zero(ehdr.e_ident);
memcpy(ehdr.e_ident, ELFMAG, SELFMAG);
ehdr.e_ident[EI_CLASS] = char_le(ELFCLASS64);
ehdr.e_ident[EI_DATA] = char_le(ELFDATA2LSB);
@@ -2232,13 +2232,6 @@ static void elf_filename(char *inname, char *outname)
extern macros_t elf_stdmac[];
-static int elf_set_info(enum geninfo type, char **val)
-{
- (void)type;
- (void)val;
- return 0;
-}
-
/* Claim "elf" as a pragma namespace, for the future */
static const struct pragma_facility elf_pragma_list[] =
{
@@ -2285,7 +2278,6 @@ const struct ofmt of_elf32 = {
&elf32_df_stabs,
elf_stdmac,
elf_init,
- elf_set_info,
nasm_do_legacy_output,
elf32_out,
elf_deflabel,
@@ -2336,7 +2328,6 @@ const struct ofmt of_elf64 = {
&elf64_df_stabs,
elf_stdmac,
elf_init,
- elf_set_info,
nasm_do_legacy_output,
elf64_out,
elf_deflabel,
@@ -2387,7 +2378,6 @@ const struct ofmt of_elfx32 = {
&elfx32_df_stabs,
elf_stdmac,
elf_init,
- elf_set_info,
nasm_do_legacy_output,
elfx32_out,
elf_deflabel,
@@ -3323,6 +3313,7 @@ static void dwarf_findfile(const char * fname)
dwarf_clist = match;
return;
}
+ match = match->next;
}
}
diff --git a/output/outieee.c b/output/outieee.c
index a043ec51..80c07852 100644
--- a/output/outieee.c
+++ b/output/outieee.c
@@ -224,14 +224,6 @@ static void ieee_init(void)
checksum = 0;
}
-static int ieee_set_info(enum geninfo type, char **val)
-{
- (void)type;
- (void)val;
-
- return 0;
-}
-
/*
* Rundown
*/
@@ -833,7 +825,7 @@ static int32_t ieee_segment(char *name, int pass, int *bits)
* directives supported
*/
static enum directive_result
-ieee_directive(enum directives directive, char *value, int pass)
+ieee_directive(enum directive directive, char *value, int pass)
{
(void)value;
@@ -1524,7 +1516,6 @@ const struct ofmt of_ieee = {
&ladsoft_debug_form,
NULL,
ieee_init,
- ieee_set_info,
nasm_do_legacy_output,
ieee_out,
ieee_deflabel,
diff --git a/output/outlib.h b/output/outlib.h
index 2406978c..a34c1382 100644
--- a/output/outlib.h
+++ b/output/outlib.h
@@ -40,9 +40,8 @@
uint64_t realsize(enum out_type type, uint64_t size);
/* Do-nothing versions of some output routines */
-int null_setinfo(enum geninfo type, char **string);
enum directive_result
-null_directive(enum directives directive, char *value, int pass);
+null_directive(enum directive directive, char *value, int pass);
void null_sectalign(int32_t seg, unsigned int value);
/* Do-nothing versions of all the debug routines */
diff --git a/output/outmacho.c b/output/outmacho.c
index 0f42f4b1..173706b9 100644
--- a/output/outmacho.c
+++ b/output/outmacho.c
@@ -52,6 +52,8 @@
#include "rbtree.h"
#include "outform.h"
#include "outlib.h"
+#include "ver.h"
+#include "dwarf.h"
#if defined(OF_MACHO) || defined(OF_MACHO64)
@@ -185,6 +187,7 @@ struct section {
#define S_ATTR_STRIP_STATIC_SYMS 0x20000000
#define S_ATTR_NO_TOC 0x40000000
#define S_ATTR_PURE_INSTRUCTIONS 0x80000000 /* section uses pure machine instructions */
+#define S_ATTR_DEBUG 0x02000000 /* debug section */
#define S_NASM_TYPE_MASK 0x800004ff /* we consider these bits "section type" */
@@ -320,6 +323,39 @@ static struct section *get_section_by_index(const int32_t index)
return s;
}
+struct file_list {
+ struct file_list *next;
+ struct file_list *last;
+ char *file_name;
+ uint32_t file;
+};
+
+struct dw_sect_list {
+ struct SAA *psaa;
+ int32_t section;
+ uint32_t line;
+ uint64_t offset;
+ uint32_t file;
+ struct dw_sect_list *next;
+ struct dw_sect_list *last;
+};
+
+struct section_info {
+ uint64_t size;
+ int32_t secto;
+};
+
+#define DW_LN_BASE (-5)
+#define DW_LN_RANGE 14
+#define DW_OPCODE_BASE 13
+#define DW_MAX_LN (DW_LN_BASE + DW_LN_RANGE)
+#define DW_MAX_SP_OPCODE 256
+
+static struct file_list *dw_head_list = 0, *dw_cur_list = 0, *dw_last_list = 0;
+static struct dw_sect_list *dw_head_sect = 0, *dw_cur_sect = 0, *dw_last_sect = 0;
+static uint32_t cur_line = 0, dw_num_files = 0, dw_num_sects = 0;
+static bool dbg_immcall = false;
+
/*
* Special section numbers which are used to define Mach-O special
* symbols, which can be used with WRT to provide PIC relocation
@@ -551,6 +587,16 @@ static void macho_output(int32_t secto, const void *data,
nasm_panic(0, "text section not found");
}
+ /* debug code generation only for sections tagged with
+ * instruction attribute */
+ if (s->flags & S_ATTR_SOME_INSTRUCTIONS)
+ {
+ struct section_info sinfo;
+ sinfo.size = s->size;
+ sinfo.secto = secto;
+ dfmt->debug_output(0, &sinfo);
+ }
+
is_bss = (s->flags & SECTION_TYPE) == S_ZEROFILL;
if (is_bss && type != OUT_RESERVE) {
@@ -713,6 +759,10 @@ static const struct sectmap {
{".data", "__DATA", "__data", S_REGULAR},
{".rodata", "__DATA", "__const", S_REGULAR},
{".bss", "__DATA", "__bss", S_ZEROFILL},
+ {".debug_abbrev", "__DWARF", "__debug_abbrev", S_ATTR_DEBUG},
+ {".debug_info", "__DWARF", "__debug_info", S_ATTR_DEBUG},
+ {".debug_line", "__DWARF", "__debug_line", S_ATTR_DEBUG},
+ {".debug_str", "__DWARF", "__debug_str", S_ATTR_DEBUG},
{NULL, NULL, NULL, 0}
};
@@ -1162,6 +1212,9 @@ static void macho_calculate_sizes (void)
s->pad = ALIGN(seg_filesize, 4) - seg_filesize;
s->offset = seg_filesize + s->pad;
seg_filesize += s->size + s->pad;
+
+ /* filesize and vmsize needs to be aligned */
+ seg_vmsize += s->pad;
}
}
@@ -1590,6 +1643,8 @@ static void macho_cleanup(void)
struct reloc *r;
struct symbol *sym;
+ dfmt->cleanup();
+
/* Sort all symbols. */
macho_layout_symbols (&nsyms, &strslen);
@@ -1723,6 +1778,397 @@ static const struct pragma_facility macho_pragma_list[] = {
{ NULL, macho_pragma } /* Implements macho32/macho64 namespaces */
};
+static void macho_dbg_generate(void)
+{
+ uint8_t *p_buf = NULL, *p_buf_base = NULL;
+ size_t saa_len = 0, high_addr = 0, total_len = 0;
+ struct section *p_section = NULL;
+ /* calculated at debug_str and referenced at debug_info */
+ uint32_t producer_str_offset = 0, module_str_offset = 0;
+
+ /* debug section defines */
+ {
+ int bits = 0;
+ macho_section(".debug_abbrev", 0, &bits);
+ macho_section(".debug_info", 0, &bits);
+ macho_section(".debug_line", 0, &bits);
+ macho_section(".debug_str", 0, &bits);
+ }
+
+ /* dw section walk to find high_addr and total_len */
+ {
+ struct dw_sect_list *p_sect = dw_head_sect;
+ uint32_t idx = 0;
+ for(; idx < dw_num_sects; idx++) {
+ uint64_t offset = get_section_by_index(p_sect->section)->size;
+ struct SAA *p_linep = p_sect->psaa;
+
+ saa_write8(p_linep, 2); /* std op 2 */
+ saa_write8(p_linep, offset - p_sect->offset);
+ saa_write8(p_linep, DW_LNS_extended_op);
+ saa_write8(p_linep, 1); /* operand length */
+ saa_write8(p_linep, DW_LNE_end_sequence);
+
+ total_len += p_linep->datalen;
+ high_addr += offset;
+ p_sect = p_sect->next;
+ }
+ }
+
+ /* debug line */
+ {
+ struct file_list *p_file = dw_head_list;
+ struct dw_sect_list *p_sect = dw_head_sect;
+ size_t linep_off = 0;
+ uint32_t idx = 0, buf_size = 0;
+ struct SAA *p_lines = saa_init(1L);
+ nasm_assert(p_lines != NULL);
+
+ p_section = get_section_by_name("__DWARF", "__debug_line");
+ nasm_assert(p_section != NULL);
+
+ saa_write8(p_lines, 1); /* minimum instruction length */
+ saa_write8(p_lines, 1); /* initial value of "is_stmt" */
+ saa_write8(p_lines, DW_LN_BASE); /* line base */
+ saa_write8(p_lines, DW_LN_RANGE); /* line range */
+ saa_write8(p_lines, DW_OPCODE_BASE); /* opcode base */
+ saa_write8(p_lines, 0); /* std opcode 1 length */
+ saa_write8(p_lines, 1); /* std opcode 2 length */
+ saa_write8(p_lines, 1); /* std opcode 3 length */
+ saa_write8(p_lines, 1); /* std opcode 4 length */
+ saa_write8(p_lines, 1); /* std opcode 5 length */
+ saa_write8(p_lines, 0); /* std opcode 6 length */
+ saa_write8(p_lines, 0); /* std opcode 7 length */
+ saa_write8(p_lines, 0); /* std opcode 8 length */
+ saa_write8(p_lines, 1); /* std opcode 9 length */
+ saa_write8(p_lines, 0); /* std opcode 10 length */
+ saa_write8(p_lines, 0); /* std opcode 11 length */
+ saa_write8(p_lines, 1); /* std opcode 12 length */
+ saa_write8(p_lines, 0); /* end of table */
+
+ for(idx = 0; idx < dw_num_files; idx++) {
+ saa_wbytes(p_lines, p_file->file_name, (int32_t)(strlen(p_file->file_name) +1));
+ saa_write8(p_lines, 0); /* directory */
+ saa_write8(p_lines, 0); /* time */
+ saa_write8(p_lines, 0); /* size */
+ p_file = p_file->next;
+ }
+ saa_write8(p_lines, 0); /* end of table */
+
+ linep_off = p_lines->datalen;
+ /* 10 bytes for initial & prolong length, and dwarf version info */
+ buf_size = saa_len = linep_off + total_len + 10;
+ p_buf_base = p_buf = nasm_malloc(buf_size);
+
+ WRITELONG(p_buf, saa_len - 4); /* initial length; size excluding itself */
+ WRITESHORT(p_buf, 2); /* dwarf version */
+ WRITELONG(p_buf, linep_off); /* prolong length */
+
+ saa_rnbytes(p_lines, p_buf, linep_off);
+ p_buf += linep_off;
+ saa_free(p_lines);
+
+ for(idx = 0; idx < dw_num_sects; idx++) {
+ struct SAA *p_linep = p_sect->psaa;
+ saa_len = p_linep->datalen;
+ saa_rnbytes(p_linep, p_buf, saa_len);
+ p_buf += saa_len;
+ saa_free(p_linep);
+ p_sect = p_sect->next;
+ }
+
+ macho_output(p_section->index, p_buf_base, OUT_RAWDATA, buf_size, NO_SEG, 0);
+
+ }
+
+ /* string section */
+ {
+ struct file_list *p_file = dw_head_list;
+ uint32_t idx = 0;
+ struct SAA *p_str = saa_init(1L);
+ nasm_assert(p_str != NULL);
+
+ p_section = get_section_by_name("__DWARF", "__debug_str");
+ nasm_assert(p_section != NULL);
+
+ producer_str_offset = 0;
+ saa_wbytes(p_str, nasm_signature, strlen(nasm_signature) + 1);
+
+ module_str_offset = producer_str_offset + strlen(nasm_signature) + 1;
+ for(; idx < dw_num_files; idx++) {
+ saa_wbytes(p_str, p_file->file_name, (int32_t)(strlen(p_file->file_name) + 1));
+ p_file = p_file->next;
+ }
+
+ saa_len = p_str->datalen;
+
+ p_buf = nasm_malloc(saa_len);
+ saa_rnbytes(p_str, p_buf, saa_len);
+ macho_output(p_section->index, p_buf, OUT_RAWDATA, saa_len, NO_SEG, 0);
+
+ saa_free(p_str);
+ }
+
+ /* debug info */
+ {
+ struct SAA *p_info = saa_init(1L);
+ nasm_assert(p_info != NULL);
+
+ p_section = get_section_by_name("__DWARF", "__debug_info");
+ nasm_assert(p_section != NULL);
+
+ /* size will be overwritten once determined, so skip in p_info layout */
+ saa_write16(p_info, 2); /* dwarf version */
+ saa_write32(p_info, 0); /* offset info abbrev */
+ saa_write8(p_info, (ofmt == &of_macho64) ? 8 : 4); /* pointer size */
+
+ saa_write8(p_info, 1); /* abbrev entry number */
+
+ saa_write32(p_info, producer_str_offset); /* offset from string table for DW_AT_producer */
+ saa_write16(p_info, DW_LANG_Mips_Assembler); /* DW_AT_language */
+ saa_write32(p_info, module_str_offset); /* offset from string table for DW_AT_name */
+ saa_write32(p_info, 0); /* DW_AT_stmt_list */
+
+ if (ofmt == &of_macho64) {
+ saa_write64(p_info, 0); /* DW_AT_low_pc */
+ saa_write64(p_info, high_addr); /* DW_AT_high_pc */
+ } else {
+ saa_write32(p_info, 0); /* DW_AT_low_pc */
+ saa_write32(p_info, high_addr); /* DW_AT_high_pc */
+ }
+
+ saa_write8(p_info, 2); /* abbrev entry number */
+
+ if (ofmt == &of_macho64) {
+ saa_write64(p_info, 0); /* DW_AT_low_pc */
+ saa_write64(p_info, 0); /* DW_AT_frame_base */
+ } else {
+ saa_write32(p_info, 0); /* DW_AT_low_pc */
+ saa_write32(p_info, 0); /* DW_AT_frame_base */
+ }
+ saa_write8(p_info, DW_END_default);
+
+ saa_len = p_info->datalen;
+ p_buf_base = p_buf = nasm_malloc(saa_len + 4); /* 4B for size info */
+
+ WRITELONG(p_buf, saa_len);
+ saa_rnbytes(p_info, p_buf, saa_len);
+ macho_output(p_section->index, p_buf_base, OUT_RAWDATA, saa_len + 4, NO_SEG, 0);
+
+ saa_free(p_info);
+ }
+
+ /* abbrev section */
+ {
+ struct SAA *p_abbrev = saa_init(1L);
+ nasm_assert(p_abbrev != NULL);
+
+ p_section = get_section_by_name("__DWARF", "__debug_abbrev");
+ nasm_assert(p_section != NULL);
+
+ saa_write8(p_abbrev, 1); /* entry number */
+
+ saa_write8(p_abbrev, DW_TAG_compile_unit);
+ saa_write8(p_abbrev, DW_CHILDREN_yes);
+
+ saa_write8(p_abbrev, DW_AT_producer);
+ saa_write8(p_abbrev, DW_FORM_strp);
+
+ saa_write8(p_abbrev, DW_AT_language);
+ saa_write8(p_abbrev, DW_FORM_data2);
+
+ saa_write8(p_abbrev, DW_AT_name);
+ saa_write8(p_abbrev, DW_FORM_strp);
+
+ saa_write8(p_abbrev, DW_AT_stmt_list);
+ saa_write8(p_abbrev, DW_FORM_data4);
+
+ saa_write8(p_abbrev, DW_AT_low_pc);
+ saa_write8(p_abbrev, DW_FORM_addr);
+
+ saa_write8(p_abbrev, DW_AT_high_pc);
+ saa_write8(p_abbrev, DW_FORM_addr);
+
+ saa_write16(p_abbrev, DW_END_default);
+
+ saa_write8(p_abbrev, 2); /* entry number */
+
+ saa_write8(p_abbrev, DW_TAG_subprogram);
+ saa_write8(p_abbrev, DW_CHILDREN_no);
+
+ saa_write8(p_abbrev, DW_AT_low_pc);
+ saa_write8(p_abbrev, DW_FORM_addr);
+
+ saa_write8(p_abbrev, DW_AT_frame_base);
+ saa_write8(p_abbrev, DW_FORM_addr);
+
+ saa_write16(p_abbrev, DW_END_default);
+
+ saa_len = p_abbrev->datalen;
+
+ p_buf = nasm_malloc(saa_len);
+
+ saa_rnbytes(p_abbrev, p_buf, saa_len);
+ macho_output(p_section->index, p_buf, OUT_RAWDATA, saa_len, NO_SEG, 0);
+
+ saa_free(p_abbrev);
+ }
+}
+
+static void macho_dbg_init(void)
+{
+}
+
+static void macho_dbg_linenum(const char *file_name, int32_t line_num, int32_t segto)
+{
+ bool need_new_list = true;
+ (void)segto;
+
+ if(!dw_cur_list || strcmp(file_name, dw_cur_list->file_name)) {
+ if(dw_head_list) {
+ struct file_list *match = dw_head_list;
+ uint32_t idx = 0;
+
+ for (; idx < dw_num_files; idx++ ) {
+ if(!(strcmp(file_name, match->file_name))) {
+ dw_cur_list = match;
+ need_new_list = false;
+ break;
+ }
+ match = match->next;
+ }
+ }
+
+ if(need_new_list) {
+ nasm_new(dw_cur_list);
+ dw_cur_list->file = ++dw_num_files;
+ dw_cur_list->file_name = (char*) file_name;
+
+ if(!dw_head_list) {
+ dw_head_list = dw_last_list = dw_cur_list;
+ } else {
+ dw_last_list->next = dw_cur_list;
+ dw_last_list = dw_cur_list;
+ }
+ }
+ }
+
+ dbg_immcall = true;
+ cur_line = line_num;
+}
+
+static void macho_dbg_output(int type, void *param)
+{
+ struct section_info *sinfo_param = (struct section_info *)param;
+ int32_t secto = sinfo_param->secto;
+ bool need_new_sect = false;
+ struct SAA *p_linep = NULL;
+ (void)type;
+
+ if(!(dw_cur_sect && (dw_cur_sect->section == secto))) {
+ need_new_sect = true;
+ if(dw_head_sect) {
+ struct dw_sect_list *match = dw_head_sect;
+ uint32_t idx = 0;
+
+ for(; idx < dw_num_sects; idx++) {
+ if(match->section == secto) {
+ dw_cur_sect = match;
+ need_new_sect = false;
+ break;
+ }
+ match = match->next;
+ }
+ }
+ }
+
+ if(need_new_sect) {
+ nasm_new(dw_cur_sect);
+ dw_num_sects ++;
+ p_linep = dw_cur_sect->psaa = saa_init(1L);
+ dw_cur_sect->line = dw_cur_sect->file = 1;
+ dw_cur_sect->offset = 0;
+ dw_cur_sect->next = NULL;
+ dw_cur_sect->section = secto;
+
+ saa_write8(p_linep, DW_LNS_extended_op);
+ saa_write8(p_linep, (ofmt == &of_macho64) ? 9 : 5);
+ saa_write8(p_linep, DW_LNE_set_address);
+ if (ofmt == &of_macho64) {
+ saa_write64(p_linep, 0);
+ } else {
+ saa_write32(p_linep, 0);
+ }
+
+ if(!dw_head_sect) {
+ dw_head_sect = dw_last_sect = dw_cur_sect;
+ } else {
+ dw_last_sect->next = dw_cur_sect;
+ dw_last_sect = dw_cur_sect;
+ }
+ }
+
+ if(dbg_immcall == true) {
+ int32_t line_delta = cur_line - dw_cur_sect->line;
+ int32_t offset_delta = sinfo_param->size - dw_cur_sect->offset;
+ uint32_t cur_file = dw_cur_list->file;
+ p_linep = dw_cur_sect->psaa;
+
+ if(cur_file != dw_cur_sect->file) {
+ saa_write8(p_linep, DW_LNS_set_file);
+ saa_write8(p_linep, cur_file);
+ dw_cur_sect->file = cur_file;
+ }
+
+ if(line_delta) {
+ int special_opcode = (line_delta - DW_LN_BASE) + (DW_LN_RANGE * offset_delta) +
+ DW_OPCODE_BASE;
+
+ if((line_delta >= DW_LN_BASE) && (line_delta < DW_MAX_LN) &&
+ (special_opcode < DW_MAX_SP_OPCODE)) {
+ saa_write8(p_linep, special_opcode);
+ } else {
+ saa_write8(p_linep, DW_LNS_advance_line);
+ saa_wleb128s(p_linep, line_delta);
+ if(offset_delta) {
+ saa_write8(p_linep, DW_LNS_advance_pc);
+ saa_wleb128u(p_linep, offset_delta);
+ }
+ saa_write8(p_linep, DW_LNS_copy);
+ }
+
+ dw_cur_sect->line = cur_line;
+ dw_cur_sect->offset = sinfo_param->size;
+ }
+
+ dbg_immcall = false;
+ }
+}
+
+static void macho_dbg_cleanup(void)
+{
+ /* dwarf sectors generation */
+ macho_dbg_generate();
+
+ {
+ struct dw_sect_list *p_sect = dw_head_sect;
+ struct file_list *p_file = dw_head_list;
+ uint32_t idx = 0;
+
+ for(; idx < dw_num_sects; idx++) {
+ struct dw_sect_list *next = p_sect->next;
+ nasm_free(p_sect);
+ p_sect = next;
+ }
+
+ for(idx = 0; idx < dw_num_files; idx++) {
+ struct file_list *next = p_file->next;
+ nasm_free(p_file);
+ p_file = next;
+ }
+ }
+}
+
#ifdef OF_MACHO32
static const struct macho_fmt macho32_fmt = {
4,
@@ -1747,16 +2193,31 @@ static void macho32_init(void)
macho_gotpcrel_sect = NO_SEG;
}
+static const struct dfmt macho32_df_dwarf = {
+ "MachO32 (i386) dwarf debug format for Darwin/MacOS",
+ "dwarf",
+ macho_dbg_init,
+ macho_dbg_linenum,
+ null_debug_deflabel,
+ null_debug_directive,
+ null_debug_typevalue,
+ macho_dbg_output,
+ macho_dbg_cleanup,
+ NULL /*pragma list*/
+};
+
+static const struct dfmt * const macho32_df_arr[2] =
+ { &macho32_df_dwarf, NULL };
+
const struct ofmt of_macho32 = {
"NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (i386) object files",
"macho32",
0,
32,
- null_debug_arr,
- &null_debug_form,
+ macho32_df_arr,
+ &macho32_df_dwarf,
macho_stdmac,
macho32_init,
- null_setinfo,
nasm_do_legacy_output,
macho_output,
macho_symdef,
@@ -1796,16 +2257,31 @@ static void macho64_init(void)
define_label("..gotpcrel", macho_gotpcrel_sect, 0L, NULL, false, false);
}
+static const struct dfmt macho64_df_dwarf = {
+ "MachO64 (x86-64) dwarf debug format for Darwin/MacOS",
+ "dwarf",
+ macho_dbg_init,
+ macho_dbg_linenum,
+ null_debug_deflabel,
+ null_debug_directive,
+ null_debug_typevalue,
+ macho_dbg_output,
+ macho_dbg_cleanup,
+ NULL /*pragma list*/
+};
+
+static const struct dfmt * const macho64_df_arr[2] =
+ { &macho64_df_dwarf, NULL };
+
const struct ofmt of_macho64 = {
"NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (x86_64) object files",
"macho64",
0,
64,
- null_debug_arr,
- &null_debug_form,
+ macho64_df_arr,
+ &macho64_df_dwarf,
macho_stdmac,
macho64_init,
- null_setinfo,
nasm_do_legacy_output,
macho_output,
macho_symdef,
diff --git a/output/outobj.c b/output/outobj.c
index 1f9cac31..faa89e1c 100644
--- a/output/outobj.c
+++ b/output/outobj.c
@@ -634,7 +634,7 @@ static struct Segment *current_seg;
static int32_t obj_segment(char *, int, int *);
static void obj_write_file(void);
-static enum directive_result obj_directive(enum directives, char *, int);
+static enum directive_result obj_directive(enum directive, char *, int);
static void obj_init(void)
{
@@ -663,14 +663,6 @@ static void obj_init(void)
current_seg = NULL;
}
-static int obj_set_info(enum geninfo type, char **val)
-{
- (void)type;
- (void)val;
-
- return 0;
-}
-
static void obj_cleanup(void)
{
obj_write_file();
@@ -1599,7 +1591,7 @@ static int32_t obj_segment(char *name, int pass, int *bits)
}
static enum directive_result
-obj_directive(enum directives directive, char *value, int pass)
+obj_directive(enum directive directive, char *value, int pass)
{
switch (directive) {
case D_GROUP:
@@ -2666,7 +2658,6 @@ const struct ofmt of_obj = {
&borland_debug_form,
obj_stdmac,
obj_init,
- obj_set_info,
nasm_do_legacy_output,
obj_out,
obj_deflabel,
diff --git a/output/outrdf2.c b/output/outrdf2.c
index 1491fd25..ebc6a1f2 100644
--- a/output/outrdf2.c
+++ b/output/outrdf2.c
@@ -721,7 +721,7 @@ static int32_t rdf2_segbase(int32_t segment)
* Handle RDOFF2 specific directives
*/
static enum directive_result
-rdf2_directive(enum directives directive, char *value, int pass)
+rdf2_directive(enum directive directive, char *value, int pass)
{
size_t n;
@@ -767,13 +767,6 @@ static void rdf2_filename(char *inname, char *outname)
extern macros_t rdf2_stdmac[];
-static int rdf2_set_info(enum geninfo type, char **val)
-{
- (void)type;
- (void)val;
- return 0;
-}
-
const struct ofmt of_rdf2 = {
"Relocatable Dynamic Object File Format v2.0",
"rdf",
@@ -783,7 +776,6 @@ const struct ofmt of_rdf2 = {
&null_debug_form,
rdf2_stdmac,
rdf2_init,
- rdf2_set_info,
nasm_do_legacy_output,
rdf2_out,
rdf2_deflabel,
diff --git a/rdoff/Makefile.in b/rdoff/Makefile.in
deleted file mode 100644
index 404818ce..00000000
--- a/rdoff/Makefile.in
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-# Auto-configuring Makefile for RDOFF object file utils; part of the
-# Netwide Assembler
-#
-# The Netwide Assembler is copyright (C) 1996 Simon Tatham and
-# Julian Hall. All rights reserved. The software is
-# redistributable under the license given in the file "LICENSE"
-# distributed in the NASM archive.
-
-top_srcdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-bindir = @bindir@
-mandir = @mandir@
-datarootdir = @datarootdir@
-
-CC = @CC@
-CFLAGS = @CFLAGS@
-BUILD_CFLAGS = $(CFLAGS) @DEFS@
-INTERNAL_CFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/include -I..
-ALL_CFLAGS = $(BUILD_CFLAGS) $(INTERNAL_CFLAGS)
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-
-AR = @AR@
-RANLIB = @RANLIB@
-STRIP = @STRIP@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-LN_S = @LN_S@
-
-MKDIR = mkdir
-RM = rm
-
-LIBOBJS = rdoff.$(O) rdfload.$(O) symtab.$(O) collectn.$(O) \
- rdlib.$(O) segtab.$(O) hash.$(O)
-RDFLIB = librdoff.$(A)
-NASMLIB = ../libnasm.$(A)
-LIBS = $(RDFLIB) $(NASMLIB)
-
-# Binary suffixes
-O = @OBJEXT@
-X = @EXEEXT@
-A = @LIBEXT@
-
-PROGRAMS = rdfdump$(X) ldrdf$(X) rdx$(X) rdflib$(X) \
- rdf2bin$(X) rdf2com$(X) rdf2ith$(X) rdf2ihx$(X) rdf2srec$(X)
-
-.SUFFIXES: .c .i .s .$(O) .$(A) .1 .man
-
-.c.$(O):
- $(CC) -c $(ALL_CFLAGS) $<
-
-all: $(PROGRAMS)
-
-$(RDFLIB): $(LIBOBJS)
- $(RM) -f $(RDFLIB)
- $(AR) cq $(RDFLIB) $(LIBOBJS)
- $(RANLIB) $(RDFLIB)
-
-rdfdump$(X): rdfdump.$(O) $(LIBS)
- $(CC) $(LDFLAGS) -o rdfdump$(X) rdfdump.$(O) $(LIBS)
-ldrdf$(X): ldrdf.$(O) $(LIBS)
- $(CC) $(LDFLAGS) -o ldrdf$(X) ldrdf.$(O) $(LIBS)
-rdx$(X): rdx.$(O) $(LIBS)
- $(CC) $(LDFLAGS) -o rdx$(X) rdx.$(O) $(LIBS)
-rdflib$(X): rdflib.$(O) $(LIBS)
- $(CC) $(LDFLAGS) -o rdflib$(X) rdflib.$(O) $(LIBS)
-rdf2bin$(X): rdf2bin.$(O) $(LIBS)
- $(CC) $(LDFLAGS) -o rdf2bin$(X) rdf2bin.$(O) $(LIBS)
-rdf2com$(X): rdf2bin$(X)
- rm -f rdf2com$(X) && $(LN_S) rdf2bin$(X) rdf2com$(X)
-rdf2ith$(X): rdf2bin$(X)
- rm -f rdf2ith$(X) && $(LN_S) rdf2bin$(X) rdf2ith$(X)
-rdf2ihx$(X): rdf2bin$(X)
- rm -f rdf2ihx$(X) && $(LN_S) rdf2bin$(X) rdf2ihx$(X)
-rdf2srec$(X): rdf2bin$(X)
- rm -f rdf2srec$(X) && $(LN_S) rdf2bin$(X) rdf2srec$(X)
-
-rdf2ihx.$(O): rdf2ihx.c
-rdf2bin.$(O): rdf2bin.c
-rdfdump.$(O): rdfdump.c
-rdoff.$(O): rdoff.c ../include/rdoff.h
-ldrdf.$(O): ldrdf.c ../include/rdoff.h ../include/nasmlib.h symtab.h \
- collectn.h rdlib.h
-symtab.$(O): symtab.c symtab.h
-collectn.$(O): collectn.c collectn.h
-rdx.$(O): rdx.c ../include/rdoff.h rdfload.h symtab.h
-rdfload.$(O): rdfload.c rdfload.h ../include/rdoff.h collectn.h symtab.h
-rdlib.$(O): rdlib.c rdlib.h
-rdflib.$(O): rdflib.c
-segtab.$(O): segtab.c
-
-clean:
- rm -f *.$(O) *.$(A) $(PROGRAMS)
-
-spotless: clean
- rm -f Makefile
-
-distclean: spotless
-
-install: all
- $(MKDIR) -p $(INSTALLROOT)$(bindir)
- $(INSTALL_PROGRAM) rdfdump$(X) $(INSTALLROOT)$(bindir)/rdfdump$(X)
- $(INSTALL_PROGRAM) ldrdf$(X) $(INSTALLROOT)$(bindir)/ldrdf$(X)
- $(INSTALL_PROGRAM) rdx$(X) $(INSTALLROOT)$(bindir)/rdx$(X)
- $(INSTALL_PROGRAM) rdflib$(X) $(INSTALLROOT)$(bindir)/rdflib$(X)
- $(INSTALL_PROGRAM) rdf2bin$(X) $(INSTALLROOT)$(bindir)/rdf2bin$(X)
- cd $(INSTALLROOT)$(bindir) && rm -f rdf2com$(X) && $(LN_S) rdf2bin$(X) rdf2com$(X)
- cd $(INSTALLROOT)$(bindir) && rm -f rdf2ith$(X) && $(LN_S) rdf2bin$(X) rdf2ith$(X)
- cd $(INSTALLROOT)$(bindir) && rm -f rdf2ihx$(X) && $(LN_S) rdf2bin$(X) rdf2ihx$(X)
- cd $(INSTALLROOT)$(bindir) && rm -f rdf2srec$(X) && $(LN_S) rdf2bin$(X) rdf2srec$(X)
- $(MKDIR) -p $(INSTALLROOT)$(mandir)/man1
- $(INSTALL_DATA) $(srcdir)/*.1 $(INSTALLROOT)$(mandir)/man1/
diff --git a/rdoff/Mkfiles/Makefile.dj b/rdoff/Mkfiles/Makefile.dj
deleted file mode 100644
index 5621ed62..00000000
--- a/rdoff/Mkfiles/Makefile.dj
+++ /dev/null
@@ -1,75 +0,0 @@
-# Generated automatically from Makefile.in by configure.
-#
-# Auto-configuring Makefile for RDOFF object file utils; part of the
-# Netwide Assembler
-#
-# The Netwide Assembler is copyright (C) 1996 Simon Tatham and
-# Julian Hall. All rights reserved. The software is
-# redistributable under the license given in the file "LICENSE"
-# distributed in the NASM archive.
-
-# You may need to adjust these values.
-
-prefix = /djgpp
-CC = gcc -s
-CFLAGS = -O2 -I..
-
-# You _shouldn't_ need to adjust anything below this line.
-
-exec_prefix = ${prefix}
-bindir = ${exec_prefix}/bin
-mandir = ${prefix}/man
-
-INSTALL = /usr/bin/install -c
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_DATA = ${INSTALL} -m 644
-LN_S = ln -s
-
-LDRDFLIBS = rdoff.o ../nasmlib.o symtab.o hash.o collectn.o rdlib.o segtab.o
-RDXLIBS = rdoff.o rdfload.o symtab.o hash.o collectn.o
-
-.c.o:
- $(CC) -c $(CFLAGS) $*.c
-
-all: rdfdump ldrdf rdx rdflib rdf2bin rdf2com
-
-rdfdump: rdfdump.o rdoff.o
- $(CC) -o rdfdump rdfdump.o rdoff.o
-
-ldrdf: ldrdf.o $(LDRDFLIBS)
- $(CC) -o ldrdf ldrdf.o $(LDRDFLIBS)
-rdx: rdx.o $(RDXLIBS)
- $(CC) -o rdx rdx.o $(RDXLIBS)
-rdflib: rdflib.o
- $(CC) -o rdflib rdflib.o
-rdf2bin: rdf2bin.o $(RDXLIBS) nasmlib.o
- $(CC) -o rdf2bin rdf2bin.o $(RDXLIBS) nasmlib.o
-rdf2com:
- $(LN_S) rdf2bin rdf2com
-
-rdf2bin.o: rdf2bin.c
-rdfdump.o: rdfdump.c
-rdoff.o: rdoff.c rdoff.h
-ldrdf.o: ldrdf.c rdoff.h ../nasmlib.h symtab.h collectn.h rdlib.h
-symtab.o: symtab.c symtab.h hash.h
-collectn.o: collectn.c collectn.h
-rdx.o: rdx.c rdoff.h rdfload.h symtab.h
-rdfload.o: rdfload.c rdfload.h rdoff.h collectn.h symtab.h
-rdlib.o: rdlib.c rdlib.h
-rdflib.o: rdflib.c
-hash.o: hash.c hash.h
-segtab.o: segtab.c segtab.h
-
-nasmlib.o: ../nasmlib.c ../nasmlib.h ../names.c ../nasm.h
- $(CC) -c $(CFLAGS) ../nasmlib.c
-
-clean:
- rm -f *.o rdfdump ldrdf rdx rdflib rdf2bin rdf2com
-
-install: rdfdump ldrdf rdx rdflib rdf2bin rdf2com
- $(INSTALL_PROGRAM) rdfdump $(bindir)/rdfdump
- $(INSTALL_PROGRAM) ldrdf $(bindir)/ldrdf
- $(INSTALL_PROGRAM) rdx $(bindir)/rdx
- $(INSTALL_PROGRAM) rdflib $(bindir)/rdflib
- $(INSTALL_PROGRAM) rdf2bin $(bindir)/rdf2bin
- cd $(bindir); $(LN_S) rdf2bin rdf2com
diff --git a/rdoff/Mkfiles/Makefile.emx b/rdoff/Mkfiles/Makefile.emx
deleted file mode 100644
index aa535886..00000000
--- a/rdoff/Mkfiles/Makefile.emx
+++ /dev/null
@@ -1,76 +0,0 @@
-# Generated automatically from Makefile.in by configure.
-# $Id$
-#
-# Auto-configuring Makefile for RDOFF object file utils; part of the
-# Netwide Assembler
-#
-# The Netwide Assembler is copyright (C) 1996 Simon Tatham and
-# Julian Hall. All rights reserved. The software is
-# redistributable under the license given in the file "LICENSE"
-# distributed in the NASM archive.
-
-top_srcdir = ..
-srcdir = .
-prefix = /usr/local
-exec_prefix = ${prefix}
-bindir = ${exec_prefix}/bin
-mandir = ${prefix}/man
-
-CC = gcc
-CFLAGS = -s -Zomf -O2 -fomit-frame-pointer -Wall -ansi -pedantic -I$(srcdir) -I$(top_srcdir)
-LDFLAGS = -s -Zomf -Zexe -Zcrtdll
-LIBS = -lgcc
-
-INSTALL = .././install-sh -c
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_DATA = ${INSTALL} -m 644
-
-LDRDFLIBS = rdoff.o nasmlib.o symtab.o collectn.o rdlib.o segtab.o hash.o
-RDXLIBS = rdoff.o rdfload.o symtab.o collectn.o hash.o
-
-.c.o:
- $(CC) -c $(CFLAGS) -o $@ $<
-
-all: rdfdump ldrdf rdx rdflib rdf2bin
-
-rdfdump: rdfdump.o rdoff.o
- $(CC) $(LDFLAGS) -o rdfdump rdfdump.o rdoff.o $(LIBS)
-ldrdf: ldrdf.o $(LDRDFLIBS)
- $(CC) $(LDFLAGS) -o ldrdf ldrdf.o $(LDRDFLIBS) $(LIBS)
-rdx: rdx.o $(RDXLIBS)
- $(CC) $(LDFLAGS) -o rdx rdx.o $(RDXLIBS) $(LIBS)
-rdflib: rdflib.o
- $(CC) $(LDFLAGS) -o rdflib rdflib.o $(LIBS)
-rdf2bin: rdf2bin.o $(RDXLIBS) nasmlib.o
- $(CC) $(LDFLAGS) -o rdf2bin rdf2bin.o $(RDXLIBS) nasmlib.o $(LIBS)
-
-rdf2bin.o: rdf2bin.c
-rdfdump.o: rdfdump.c
-rdoff.o: rdoff.c rdoff.h
-ldrdf.o: ldrdf.c rdoff.h $(top_srcdir)/nasmlib.h symtab.h collectn.h rdlib.h
-symtab.o: symtab.c symtab.h
-collectn.o: collectn.c collectn.h
-rdx.o: rdx.c rdoff.h rdfload.h symtab.h
-rdfload.o: rdfload.c rdfload.h rdoff.h collectn.h symtab.h
-rdlib.o: rdlib.c rdlib.h
-rdflib.o: rdflib.c
-segtab.o: segtab.c
-
-nasmlib.o: $(top_srcdir)/nasmlib.c
- $(CC) -c $(CFLAGS) -o $@ $(top_srcdir)/nasmlib.c
-
-clean:
- rm -f *.o rdfdump ldrdf rdx rdflib rdf2bin rdf2com
-
-spotless: clean
- rm -f Makefile
-
-distclean: spotless
-
-install: rdfdump ldrdf rdx rdflib rdf2bin rdf2com
- $(INSTALL_PROGRAM) rdfdump $(INSTALLROOT)$(bindir)/rdfdump
- $(INSTALL_PROGRAM) ldrdf $(INSTALLROOT)$(bindir)/ldrdf
- $(INSTALL_PROGRAM) rdx $(INSTALLROOT)$(bindir)/rdx
- $(INSTALL_PROGRAM) rdflib $(INSTALLROOT)$(bindir)/rdflib
- $(INSTALL_PROGRAM) rdf2bin $(INSTALLROOT)$(bindir)/rdf2bin
- cd $(INSTALLROOT)$(bindir) && rm -f rdf2com && $(LN_S) rdf2bin rdf2com
diff --git a/rdoff/Mkfiles/Makefile.sc b/rdoff/Mkfiles/Makefile.sc
deleted file mode 100644
index 501d487b..00000000
--- a/rdoff/Mkfiles/Makefile.sc
+++ /dev/null
@@ -1,56 +0,0 @@
-# Makefile for RDOFF object file utils; part of the Netwide Assembler
-#
-# The Netwide Assembler is copyright (C) 1996 Simon Tatham and
-# Julian Hall. All rights reserved. The software is
-# redistributable under the license given in the file "LICENSE"
-# distributed in the NASM archive.
-#
-# This Makefile is designed for use under Unix (probably fairly
-# portably).
-
-CC = sc
-CCFLAGS = -I..\ -c -a1 -mn -Nc -w2 -w7 -o+time -5
-LINK = link
-LINKFLAGS = /noi /exet:NT /su:console
-
-OBJ=obj
-EXE=.exe
-
-NASMLIB = ..\nasmlib.$(OBJ)
-NASMLIB_H = ..\nasmlib.h
-LDRDFLIBS = rdoff.$(OBJ) $(NASMLIB) symtab.$(OBJ) collectn.$(OBJ) rdlib.$(OBJ)
-RDXLIBS = rdoff.$(OBJ) rdfload.$(OBJ) symtab.$(OBJ) collectn.$(OBJ)
-
-.c.$(OBJ):
- $(CC) $(CCFLAGS) $*.c
-
-all : rdfdump$(EXE) ldrdf$(EXE) rdx$(EXE) rdflib$(EXE) rdf2bin$(EXE) rdf2com$(EXE)
-
-rdfdump$(EXE) : rdfdump.$(OBJ)
- $(LINK) $(LINKFLAGS) rdfdump.$(OBJ), rdfdump$(EXE);
-ldrdf$(EXE) : ldrdf.$(OBJ) $(LDRDFLIBS)
- $(LINK) $(LINKFLAGS) ldrdf.$(OBJ) $(LDRDFLIBS), ldrdf$(EXE);
-rdx$(EXE) : rdx.$(OBJ) $(RDXLIBS)
- $(LINK) $(LINKFLAGS) rdx.$(OBJ) $(RDXLIBS), rdx$(EXE);
-rdflib$(EXE) : rdflib.$(OBJ)
- $(LINK) $(LINKFLAGS) rdflib.$(OBJ), rdflib$(EXE);
-rdf2bin$(EXE) : rdf2bin.$(OBJ) $(RDXLIBS) $(NASMLIB)
- $(LINK) $(LINKFLAGS) rdf2bin.$(OBJ) $(RDXLIBS) $(NASMLIB), rdf2bin$(EXE);
-rdf2com$(EXE) : rdf2bin$(EXE)
- copy rdf2bin$(EXE) rdf2com$(EXE)
-
-rdf2bin.$(OBJ) : rdf2bin.c
-rdfdump.$(OBJ) : rdfdump.c
-rdoff.$(OBJ) : rdoff.c rdoff.h
-ldrdf.$(OBJ) : ldrdf.c rdoff.h $(NASMLIB_H) symtab.h collectn.h rdlib.h
-symtab.$(OBJ) : symtab.c symtab.h
-collectn.$(OBJ) : collectn.c collectn.h
-rdx.$(OBJ) : rdx.c rdoff.h rdfload.h symtab.h
-rdfload.$(OBJ) : rdfload.c rdfload.h rdoff.h collectn.h symtab.h
-rdlib.$(OBJ) : rdlib.c rdlib.h
-rdflib.$(OBJ) : rdflib.c
-
-clean :
- del *.$(OBJ) rdfdump$(EXE) ldrdf$(EXE) rdx$(EXE) rdflib$(EXE) rdf2bin$(EXE)
-
-
diff --git a/rdoff/Mkfiles/Makefile.unx b/rdoff/Mkfiles/Makefile.unx
deleted file mode 100644
index 9041b417..00000000
--- a/rdoff/Mkfiles/Makefile.unx
+++ /dev/null
@@ -1,75 +0,0 @@
-# Generated automatically from Makefile.in by configure.
-#
-# Auto-configuring Makefile for RDOFF object file utils; part of the
-# Netwide Assembler
-#
-# The Netwide Assembler is copyright (C) 1996 Simon Tatham and
-# Julian Hall. All rights reserved. The software is
-# redistributable under the license given in the file "LICENSE"
-# distributed in the NASM archive.
-
-# You may need to adjust these values.
-
-prefix = /usr/local
-CC = cc
-CFLAGS = -O -I..
-
-# You _shouldn't_ need to adjust anything below this line.
-
-exec_prefix = ${prefix}
-bindir = ${exec_prefix}/bin
-mandir = ${prefix}/man
-
-INSTALL = /usr/bin/install -c
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_DATA = ${INSTALL} -m 644
-LN_S = ln -s
-
-LDRDFLIBS = rdoff.o ../nasmlib.o symtab.o hash.o collectn.o rdlib.o segtab.o
-RDXLIBS = rdoff.o rdfload.o symtab.o hash.o collectn.o
-
-.c.o:
- $(CC) -c $(CFLAGS) $*.c
-
-all: rdfdump ldrdf rdx rdflib rdf2bin rdf2com
-
-rdfdump: rdfdump.o rdoff.o
- $(CC) -o rdfdump rdfdump.o rdoff.o
-
-ldrdf: ldrdf.o $(LDRDFLIBS)
- $(CC) -o ldrdf ldrdf.o $(LDRDFLIBS)
-rdx: rdx.o $(RDXLIBS)
- $(CC) -o rdx rdx.o $(RDXLIBS)
-rdflib: rdflib.o
- $(CC) -o rdflib rdflib.o
-rdf2bin: rdf2bin.o $(RDXLIBS) nasmlib.o
- $(CC) -o rdf2bin rdf2bin.o $(RDXLIBS) nasmlib.o
-rdf2com:
- $(LN_S) rdf2bin rdf2com
-
-rdf2bin.o: rdf2bin.c
-rdfdump.o: rdfdump.c
-rdoff.o: rdoff.c rdoff.h
-ldrdf.o: ldrdf.c rdoff.h ../nasmlib.h symtab.h collectn.h rdlib.h
-symtab.o: symtab.c symtab.h hash.h
-collectn.o: collectn.c collectn.h
-rdx.o: rdx.c rdoff.h rdfload.h symtab.h
-rdfload.o: rdfload.c rdfload.h rdoff.h collectn.h symtab.h
-rdlib.o: rdlib.c rdlib.h
-rdflib.o: rdflib.c
-hash.o: hash.c hash.h
-segtab.o: segtab.c segtab.h
-
-nasmlib.o: ../nasmlib.c ../nasmlib.h ../names.c ../nasm.h
- $(CC) -c $(CFLAGS) ../nasmlib.c
-
-clean:
- rm -f *.o rdfdump ldrdf rdx rdflib rdf2bin rdf2com
-
-install: rdfdump ldrdf rdx rdflib rdf2bin rdf2com
- $(INSTALL_PROGRAM) rdfdump $(bindir)/rdfdump
- $(INSTALL_PROGRAM) ldrdf $(bindir)/ldrdf
- $(INSTALL_PROGRAM) rdx $(bindir)/rdx
- $(INSTALL_PROGRAM) rdflib $(bindir)/rdflib
- $(INSTALL_PROGRAM) rdf2bin $(bindir)/rdf2bin
- cd $(bindir); $(LN_S) rdf2bin rdf2com
diff --git a/rdoff/Mkfiles/README b/rdoff/Mkfiles/README
deleted file mode 100644
index 7e684992..00000000
--- a/rdoff/Mkfiles/README
+++ /dev/null
@@ -1,4 +0,0 @@
-These are pre-created Makefiles for various platforms, use them if
-GNU autoconf/automake packages are not supported on your system.
-
-Copy appropriate Makefile to ../Makefile and run make.
diff --git a/rdoff/collectn.c b/rdoff/collectn.c
index 317c5286..d77f54b5 100644
--- a/rdoff/collectn.c
+++ b/rdoff/collectn.c
@@ -4,8 +4,7 @@
* This file is public domain.
*/
-#include "compiler.h"
-#include <stdlib.h>
+#include "rdfutils.h"
#include "collectn.h"
void collection_init(Collection * c)
@@ -22,7 +21,7 @@ void **colln(Collection * c, int index)
while (index >= 32) {
index -= 32;
if (c->next == NULL) {
- c->next = malloc(sizeof(Collection));
+ c->next = nasm_malloc(sizeof(Collection));
collection_init(c->next);
}
c = c->next;
@@ -36,7 +35,7 @@ void collection_reset(Collection * c)
if (c->next) {
collection_reset(c->next);
- free(c->next);
+ nasm_free(c->next);
}
c->next = NULL;
diff --git a/rdoff/hash.c b/rdoff/hash.c
index ad2b568e..f2afad0f 100644
--- a/rdoff/hash.c
+++ b/rdoff/hash.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
diff --git a/rdoff/ldrdf.c b/rdoff/ldrdf.c
index 2db980f0..dd80d70e 100644
--- a/rdoff/ldrdf.c
+++ b/rdoff/ldrdf.c
@@ -56,9 +56,7 @@
#include <stdlib.h>
#include <string.h>
-#define RDOFF_UTILS
-
-#include "rdoff.h"
+#include "rdfutils.h"
#include "symtab.h"
#include "collectn.h"
#include "rdlib.h"
@@ -91,9 +89,6 @@ struct modulenode {
#include "ldsegs.h"
-#define newstr(str) strcpy(malloc(strlen(str) + 1),str)
-#define newstrcat(s1,s2) strcat(strcpy(malloc(strlen(s1)+strlen(s2)+1),s1),s2)
-
/* ==========================================================================
* Function prototypes of private utility functions
*/
@@ -200,10 +195,10 @@ static void loadmodule(const char *filename)
/* allocate a new module entry on the end of the modules list */
if (!modules) {
- modules = malloc(sizeof(*modules));
+ modules = nasm_malloc(sizeof(*modules));
lastmodule = modules;
} else {
- lastmodule->next = malloc(sizeof(*modules));
+ lastmodule->next = nasm_malloc(sizeof(*modules));
lastmodule = lastmodule->next;
}
@@ -224,7 +219,7 @@ static void loadmodule(const char *filename)
* factor if we decide to keep them)
*/
lastmodule->header = NULL;
- lastmodule->name = strdup(filename);
+ lastmodule->name = nasm_strdup(filename);
lastmodule->next = NULL;
processmodule(filename, lastmodule);
@@ -325,7 +320,7 @@ void processmodule(const char *filename, struct modulenode *mod)
* extract symbols from the header, and dump them into the
* symbol table
*/
- header = malloc(mod->f.header_len);
+ header = nasm_malloc(mod->f.header_len);
if (!header) {
fprintf(stderr, "ldrdf: not enough memory\n");
exit(1);
@@ -420,7 +415,7 @@ void processmodule(const char *filename, struct modulenode *mod)
* of this program...
*/
mod->f.header_loc = NULL;
- free(header);
+ nasm_free(header);
#endif
@@ -524,12 +519,12 @@ void symtab_add(const char *symbol, int segment, int32_t offset)
/*
* this is the first declaration of this symbol
*/
- ste = malloc(sizeof(symtabEnt));
+ ste = nasm_malloc(sizeof(symtabEnt));
if (!ste) {
fprintf(stderr, "ldrdf: out of memory\n");
exit(1);
}
- ste->name = strdup(symbol);
+ ste->name = nasm_strdup(symbol);
ste->segment = segment;
ste->offset = offset;
ste->flags = 0;
@@ -571,13 +566,13 @@ static void add_library(const char *name)
return;
}
if (!libraries) {
- lastlib = libraries = malloc(sizeof(*libraries));
+ lastlib = libraries = nasm_malloc(sizeof(*libraries));
if (!libraries) {
fprintf(stderr, "ldrdf: out of memory\n");
exit(1);
}
} else {
- lastlib->next = malloc(sizeof(*libraries));
+ lastlib->next = nasm_malloc(sizeof(*libraries));
if (!lastlib->next) {
fprintf(stderr, "ldrdf: out of memory\n");
exit(1);
@@ -626,7 +621,7 @@ static int search_libraries(void)
if (options.verbose > 3)
printf(" looking in module `%s'\n", f.name);
- header = malloc(f.header_len);
+ header = nasm_malloc(f.header_len);
if (!header) {
fprintf(stderr, "ldrdf: not enough memory\n");
exit(1);
@@ -671,20 +666,20 @@ static int search_libraries(void)
* there are modules on the module list by the time
* we get here.
*/
- lastmodule->next = malloc(sizeof(*lastmodule->next));
+ lastmodule->next = nasm_malloc(sizeof(*lastmodule->next));
if (!lastmodule->next) {
fprintf(stderr, "ldrdf: not enough memory\n");
exit(1);
}
lastmodule = lastmodule->next;
memcpy(&lastmodule->f, &f, sizeof(f));
- lastmodule->name = strdup(f.name);
+ lastmodule->name = nasm_strdup(f.name);
lastmodule->next = NULL;
processmodule(f.name, lastmodule);
break;
}
if (!keepfile) {
- free(f.name);
+ nasm_free(f.name);
f.name = NULL;
f.fp = NULL;
}
@@ -744,7 +739,7 @@ static void write_output(const char *filename)
printf("\nadding generic record from binary file %s\n",
generic_rec_file);
- hr = (rdfheaderrec *) malloc(sizeof(struct GenericRec));
+ hr = (rdfheaderrec *) nasm_malloc(sizeof(struct GenericRec));
if ((ff = fopen(generic_rec_file, "r")) == NULL) {
fprintf(stderr, "ldrdf: couldn't open %s for input\n",
generic_rec_file);
@@ -763,7 +758,7 @@ static void write_output(const char *filename)
hr->g.type = RDFREC_GENERIC;
hr->g.reclen = n;
rdfaddheader(rdfheader, hr);
- free(hr);
+ nasm_free(hr);
}
/*
@@ -774,19 +769,19 @@ static void write_output(const char *filename)
if ((n < 1) || (n >= MODLIB_NAME_MAX)) {
fprintf(stderr, "ldrdf: invalid length of module name `%s'\n",
- modname_specified);
+ modname_specified);
exit(1);
}
if (options.verbose)
printf("\nadding module name record %s\n", modname_specified);
- hr = (rdfheaderrec *) malloc(sizeof(struct ModRec));
+ hr = (rdfheaderrec *) nasm_malloc(sizeof(struct ModRec));
hr->m.type = RDFREC_MODNAME;
hr->m.reclen = n + 1;
strcpy(hr->m.modname, modname_specified);
rdfaddheader(rdfheader, hr);
- free(hr);
+ nasm_free(hr);
}
@@ -803,7 +798,7 @@ static void write_output(const char *filename)
outputseg[i].data = NULL;
if (!outputseg[i].length)
continue;
- outputseg[i].data = malloc(outputseg[i].length);
+ outputseg[i].data = nasm_malloc(outputseg[i].length);
if (!outputseg[i].data) {
fprintf(stderr, "ldrdf: out of memory\n");
exit(1);
@@ -841,7 +836,7 @@ static void write_output(const char *filename)
* Perform fixups, and add new header records where required
*/
- header = malloc(cur->f.header_len);
+ header = nasm_malloc(cur->f.header_len);
if (!header) {
fprintf(stderr, "ldrdf: out of memory\n");
exit(1);
@@ -1000,12 +995,12 @@ static void write_output(const char *filename)
* future reference
*/
if (!se) {
- se = malloc(sizeof(*se));
+ se = nasm_malloc(sizeof(*se));
if (!se) {
fprintf(stderr, "ldrdf: out of memory\n");
exit(1);
}
- se->name = strdup(hr->i.label);
+ se->name = nasm_strdup(hr->i.label);
se->flags = 0;
se->segment = availableseg++;
se->offset = 0;
@@ -1125,7 +1120,7 @@ static void write_output(const char *filename)
}
}
- free(header);
+ nasm_free(header);
done_seglocations(&segs);
}
@@ -1155,22 +1150,14 @@ static void write_output(const char *filename)
* the output file
*/
for (i = 0; i < nsegs; i++) {
- uint16_t s;
- int32_t l;
-
if (i == 2)
continue;
- s = translateint16_t(outputseg[i].type);
- fwrite(&s, 2, 1, f);
- s = translateint16_t(outputseg[i].number);
- fwrite(&s, 2, 1, f);
- s = translateint16_t(outputseg[i].reserved);
- fwrite(&s, 2, 1, f);
- l = translateint32_t(outputseg[i].length);
- fwrite(&l, 4, 1, f);
-
- fwrite(outputseg[i].data, outputseg[i].length, 1, f);
+ fwriteint16_t(outputseg[i].type, f);
+ fwriteint16_t(outputseg[i].number, f);
+ fwriteint16_t(outputseg[i].reserved, f);
+ fwriteint32_t(outputseg[i].length, f);
+ nasm_write(outputseg[i].data, outputseg[i].length, f);
}
fwritezero(10, f);
@@ -1204,6 +1191,8 @@ int main(int argc, char **argv)
int moduleloaded = 0;
char *respstrings[128] = { 0, };
+ rdoff_init();
+
options.verbose = 0;
options.align = 16;
options.dynalink = 0;
@@ -1252,11 +1241,11 @@ int main(int argc, char **argv)
case 'm':
if (argv[0][2] == 'n') {
modname_specified = argv[1];
- argv++, argc--;
- if (!argc) {
- fprintf(stderr, "ldrdf: -mn expects a module name\n");
- exit(1);
- }
+ argv++, argc--;
+ if (!argc) {
+ fprintf(stderr, "ldrdf: -mn expects a module name\n");
+ exit(1);
+ }
}
break;
case 'o':
@@ -1317,7 +1306,7 @@ int main(int argc, char **argv)
fprintf(stderr, "ldrdf: too many input files\n");
exit(1);
}
- *(respstrings + i) = newstr(buf);
+ *(respstrings + i) = nasm_strdup(buf);
argc++, i++;
}
fclose(f);
@@ -1331,8 +1320,8 @@ int main(int argc, char **argv)
generic_rec_file = argv[1];
argv++, argc--;
if (!argc) {
- fprintf(stderr, "ldrdf: -g expects a file name\n");
- exit(1);
+ fprintf(stderr, "ldrdf: -g expects a file name\n");
+ exit(1);
}
break;
default:
@@ -1371,12 +1360,12 @@ int main(int argc, char **argv)
break;
if (!strncmp(*argv, "-l", 2)) {
if (libpath && (argv[0][2] != '/'))
- add_library(newstrcat(libpath, *argv + 2));
+ add_library(nasm_strcat(libpath, *argv + 2));
else
add_library(*argv + 2);
} else {
if (objpath && (argv[0][0] != '/'))
- loadmodule(newstrcat(objpath, *argv));
+ loadmodule(nasm_strcat(objpath, *argv));
else
loadmodule(*argv);
moduleloaded = 1;
diff --git a/rdoff/rdf2bin.c b/rdoff/rdf2bin.c
index 1e33075c..1beb8245 100644
--- a/rdoff/rdf2bin.c
+++ b/rdoff/rdf2bin.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -254,7 +254,7 @@ static const char *getformat(const char *pathname)
const char *p;
static char fmt_buf[16];
- /*
+ /*
* Search backwards for the string "rdf2" followed by a string
* of alphanumeric characters. This should handle path prefixes,
* as well as extensions (e.g. C:\FOO\RDF2SREC.EXE).
@@ -303,6 +303,8 @@ int main(int argc, char **argv)
return 1;
}
+ rdoff_init();
+
argv++, argc--;
while (argc > 2) {
diff --git a/rdoff/rdfdump.c b/rdoff/rdfdump.c
index 2e977ace..b483477b 100644
--- a/rdoff/rdfdump.c
+++ b/rdoff/rdfdump.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2014 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -41,9 +41,7 @@
#include <stdlib.h>
#include <string.h>
-#define RDOFF_UTILS
-
-#include "rdoff.h"
+#include "rdfutils.h"
#define PROGRAM_VERSION "2.3"
@@ -57,9 +55,9 @@ static void print_header(int32_t length, int rdf_version)
uint16_t rs;
while (length > 0) {
- fread(&t, 1, 1, infile);
+ nasm_read(&t, 1, infile);
if (rdf_version >= 2) {
- fread(&reclen, 1, 1, infile);
+ nasm_read(&reclen, 1, infile);
}
switch (t) {
case RDFREC_GENERIC: /* generic record */
@@ -69,10 +67,10 @@ static void print_header(int32_t length, int rdf_version)
case RDFREC_RELOC: /* relocation record */
case RDFREC_SEGRELOC: /* segment relocation */
- fread(&s, 1, 1, infile);
- fread(&o, 4, 1, infile);
- fread(&l, 1, 1, infile);
- fread(&rs, 2, 1, infile);
+ nasm_read(&s, 1, infile);
+ nasm_read(&o, 4, infile);
+ nasm_read(&l, 1, infile);
+ nasm_read(&rs, 2, infile);
printf(" %s: location (%04x:%08"PRIx32"), length %d, "
"referred seg %04x\n",
t == 1 ? "relocation" : "seg relocation", (int)s,
@@ -88,17 +86,17 @@ static void print_header(int32_t length, int rdf_version)
case RDFREC_IMPORT: /* import record */
case RDFREC_FARIMPORT: /* import far symbol */
- fread(&flags, 1, 1, infile);
- fread(&rs, 2, 1, infile);
+ nasm_read(&flags, 1, infile);
+ nasm_read(&rs, 2, infile);
ll = 0;
if (rdf_version == 1) {
do {
- fread(&buf[ll], 1, 1, infile);
+ nasm_read(&buf[ll], 1, infile);
} while (buf[ll++]);
} else {
for (; ll < reclen - 3; ll++)
- fread(&buf[ll], 1, 1, infile);
+ nasm_read(&buf[ll], 1, infile);
}
if (t == 7)
@@ -117,18 +115,18 @@ static void print_header(int32_t length, int rdf_version)
break;
case RDFREC_GLOBAL: /* export record */
- fread(&flags, 1, 1, infile);
- fread(&s, 1, 1, infile);
- fread(&o, 4, 1, infile);
+ nasm_read(&flags, 1, infile);
+ nasm_read(&s, 1, infile);
+ nasm_read(&o, 4, infile);
ll = 0;
if (rdf_version == 1) {
do {
- fread(&buf[ll], 1, 1, infile);
+ nasm_read(&buf[ll], 1, infile);
} while (buf[ll++]);
} else {
for (; ll < reclen - 6; ll++)
- fread(&buf[ll], 1, 1, infile);
+ nasm_read(&buf[ll], 1, infile);
}
printf((flags & SYM_GLOBAL) ? " export" : " public");
if (flags & SYM_FUNCTION)
@@ -145,11 +143,11 @@ static void print_header(int32_t length, int rdf_version)
ll = 0;
if (rdf_version == 1) {
do {
- fread(&buf[ll], 1, 1, infile);
+ nasm_read(&buf[ll], 1, infile);
} while (buf[ll++]);
} else {
for (; ll < reclen; ll++)
- fread(&buf[ll], 1, 1, infile);
+ nasm_read(&buf[ll], 1, infile);
}
if (t == 4)
printf(" dll: %s\n", buf);
@@ -160,7 +158,7 @@ static void print_header(int32_t length, int rdf_version)
break;
case RDFREC_BSS: /* BSS reservation */
- fread(&ll, 4, 1, infile);
+ nasm_read(&ll, 4, infile);
printf(" bss reservation: %08"PRIx32" bytes\n", translateint32_t(ll));
if (rdf_version == 1)
length -= 5;
@@ -172,11 +170,11 @@ static void print_header(int32_t length, int rdf_version)
uint16_t seg, align;
uint32_t size;
- fread(&seg, 2, 1, infile);
- fread(&size, 4, 1, infile);
- fread(&align, 2, 1, infile);
+ nasm_read(&seg, 2, infile);
+ nasm_read(&size, 4, infile);
+ nasm_read(&align, 2, infile);
for (ll = 0; ll < reclen - 8; ll++)
- fread(buf + ll, 1, 1, infile);
+ nasm_read(buf + ll, 1, infile);
printf(" common: segment %04x = %s, %"PRId32":%d\n",
translateint16_t(seg), buf, translateint32_t(size),
translateint16_t(align));
@@ -221,6 +219,8 @@ int main(int argc, char **argv)
exit(1);
}
+ rdoff_init();
+
if (!strcmp(argv[1], "-v")) {
verbose = 1;
if (argc < 3) {
@@ -236,7 +236,7 @@ int main(int argc, char **argv)
exit(1);
}
- fread(id, 6, 1, infile);
+ nasm_read(id, 6, infile);
if (strncmp(id, "RDOFF", 5)) {
fputs("rdfdump: File does not contain valid RDOFF header\n",
stderr);
@@ -251,23 +251,23 @@ int main(int argc, char **argv)
version = id[5] - '0';
if (version > 1) {
- fread(&l, 4, 1, infile);
+ nasm_read(&l, 4, infile);
objectlength = translateint32_t(l);
printf("Object content size: %"PRId32" bytes\n", objectlength);
}
- fread(&l, 4, 1, infile);
+ nasm_read(&l, 4, infile);
headerlength = translateint32_t(l);
printf("Header (%"PRId32" bytes):\n", headerlength);
print_header(headerlength, version);
if (version == 1) {
- fread(&l, 4, 1, infile);
+ nasm_read(&l, 4, infile);
l = translateint32_t(l);
printf("\nText segment length = %"PRId32" bytes\n", l);
offset = 0;
while (l--) {
- fread(id, 1, 1, infile);
+ nasm_read(id, 1, infile);
if (verbose) {
if (offset % 16 == 0)
printf("\n%08"PRIx32" ", offset);
@@ -278,14 +278,14 @@ int main(int argc, char **argv)
if (verbose)
printf("\n\n");
- fread(&l, 4, 1, infile);
+ nasm_read(&l, 4, infile);
l = translateint32_t(l);
printf("Data segment length = %"PRId32" bytes\n", l);
if (verbose) {
offset = 0;
while (l--) {
- fread(id, 1, 1, infile);
+ nasm_read(id, 1, infile);
if (offset % 16 == 0)
printf("\n%08"PRIx32" ", offset);
printf(" %02x", (int)(uint8_t)id[0]);
@@ -295,7 +295,7 @@ int main(int argc, char **argv)
}
} else {
do {
- fread(&s, 2, 1, infile);
+ nasm_read(&s, 2, infile);
s = translateint16_t(s);
if (!s) {
printf("\nNULL segment\n");
@@ -306,18 +306,18 @@ int main(int argc, char **argv)
translatesegmenttype(s));
nsegments++;
- fread(&s, 2, 1, infile);
+ nasm_read(&s, 2, infile);
printf(" Number = %04X\n", (int)translateint16_t(s));
- fread(&s, 2, 1, infile);
+ nasm_read(&s, 2, infile);
printf(" Resrvd = %04X\n", (int)translateint16_t(s));
- fread(&l, 4, 1, infile);
+ nasm_read(&l, 4, infile);
l = translateint32_t(l);
printf(" Length = %"PRId32" bytes\n", l);
segmentcontentlength += l;
offset = 0;
while (l--) {
- fread(id, 1, 1, infile);
+ nasm_read(id, 1, infile);
if (verbose) {
if (offset % 16 == 0)
printf("\n%08"PRIx32" ", offset);
diff --git a/rdoff/rdflib.c b/rdoff/rdflib.c
index a1c3abe7..ee7f19f6 100644
--- a/rdoff/rdflib.c
+++ b/rdoff/rdflib.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -57,6 +57,7 @@
*/
#include "compiler.h"
+#include "rdfutils.h"
#include <stdio.h>
#include <stdlib.h>
@@ -168,6 +169,8 @@ int main(int argc, char **argv)
exit(1);
}
+ rdoff_init();
+
switch (argv[1][0]) {
case 'c': /* create library */
fp = fopen(argv[2], "wb");
@@ -176,12 +179,10 @@ int main(int argc, char **argv)
perror("rdflib");
exit(1);
}
- fwrite(sig_modname, 1, strlen(sig_modname) + 1, fp);
- fwrite(rdl_signature, 1, strlen(rdl_signature), fp);
+ nasm_write(sig_modname, strlen(sig_modname) + 1, fp);
+ nasm_write(rdl_signature, strlen(rdl_signature), fp);
t = time(NULL);
- l = sizeof(t);
- fwrite(&l, sizeof(l), 1, fp);
- fwrite(&t, 1, l, fp);
+ fwriteint32_t(t, fp);
fclose(fp);
break;
@@ -369,12 +370,14 @@ int main(int argc, char **argv)
/* check against desired name */
if (!strcmp(buf, argv[3])) {
- fread(p = rdbuf, 1, sizeof(rdbuf), fptmp);
+ if (fread(p = rdbuf, 1, sizeof(rdbuf), fptmp) < 10) {
+ nasm_fatal(0, "short read on input");
+ }
l = *(int32_t *)(p + 6);
fseek(fptmp, l, SEEK_CUR);
break;
} else {
- fwrite(buf, 1, strlen(buf) + 1, fp); /* module name */
+ nasm_write(buf, strlen(buf) + 1, fp); /* module name */
if ((c = copybytes(fptmp, fp, 6)) >= '2') {
l = copyint32_t(fptmp, fp); /* version 2 or above */
copybytes(fptmp, fp, l); /* entire object */
diff --git a/rdoff/rdfload.c b/rdoff/rdfload.c
index 5a7ab631..6977a707 100644
--- a/rdoff/rdfload.c
+++ b/rdoff/rdfload.c
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------- *
- *
- * Copyright 1996-2009 The NASM Authors - All Rights Reserved
+ *
+ * Copyright 1996-2017 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
*
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -61,7 +61,7 @@ rdfmodule *rdfload(const char *filename)
char *hdr;
rdfheaderrec *r;
- f = malloc(sizeof(rdfmodule));
+ f = nasm_malloc(sizeof(rdfmodule));
if (f == NULL) {
rdf_errno = RDF_ERR_NOMEM;
return NULL;
@@ -69,32 +69,32 @@ rdfmodule *rdfload(const char *filename)
f->symtab = symtabNew();
if (!f->symtab) {
- free(f);
+ nasm_free(f);
rdf_errno = RDF_ERR_NOMEM;
return NULL;
}
/* open the file */
if (rdfopen(&(f->f), filename)) {
- free(f);
+ nasm_free(f);
return NULL;
}
/* read in text and data segments, and header */
- f->t = malloc(f->f.seg[0].length);
- f->d = malloc(f->f.seg[1].length); /* BSS seg allocated later */
- hdr = malloc(f->f.header_len);
+ f->t = nasm_malloc(f->f.seg[0].length);
+ f->d = nasm_malloc(f->f.seg[1].length); /* BSS seg allocated later */
+ hdr = nasm_malloc(f->f.header_len);
if (!f->t || !f->d || !hdr) {
rdf_errno = RDF_ERR_NOMEM;
rdfclose(&f->f);
if (f->t)
- free(f->t);
+ nasm_free(f->t);
if (f->d)
- free(f->d);
- free(f);
- free(hdr);
+ nasm_free(f->d);
+ nasm_free(f);
+ nasm_free(hdr);
return NULL;
}
@@ -102,10 +102,10 @@ rdfmodule *rdfload(const char *filename)
rdfloadseg(&f->f, RDOFF_CODE, f->t) ||
rdfloadseg(&f->f, RDOFF_DATA, f->d)) {
rdfclose(&f->f);
- free(f->t);
- free(f->d);
- free(f);
- free(hdr);
+ nasm_free(f->t);
+ nasm_free(f->d);
+ nasm_free(f);
+ nasm_free(hdr);
return NULL;
}
@@ -118,12 +118,12 @@ rdfmodule *rdfload(const char *filename)
bsslength += r->b.amount;
}
- f->b = malloc(bsslength);
+ f->b = nasm_malloc(bsslength);
if (bsslength && (!f->b)) {
- free(f->t);
- free(f->d);
- free(f);
- free(hdr);
+ nasm_free(f->t);
+ nasm_free(f->d);
+ nasm_free(f);
+ nasm_free(hdr);
rdf_errno = RDF_ERR_NOMEM;
return NULL;
}
@@ -195,7 +195,7 @@ int rdf_relocate(rdfmodule * m)
e.segment == 1 ? m->datarel : /* 1 -> data */
m->bssrel); /* 2 -> bss */
e.flags = 0;
- e.name = malloc(strlen(r->e.label) + 1);
+ e.name = nasm_malloc(strlen(r->e.label) + 1);
if (!e.name)
return 1;
diff --git a/rdoff/rdfload.h b/rdoff/rdfload.h
index 87d7ecc5..1ca5e92d 100644
--- a/rdoff/rdfload.h
+++ b/rdoff/rdfload.h
@@ -12,9 +12,7 @@
#ifndef RDOFF_RDFLOAD_H
#define RDOFF_RDFLOAD_H 1
-#define RDOFF_UTILS
-
-#include "rdoff.h"
+#include "rdfutils.h"
typedef struct RDFModuleStruct {
rdffile f; /* file structure */
diff --git a/rdoff/rdfutils.h b/rdoff/rdfutils.h
new file mode 100644
index 00000000..27f21443
--- /dev/null
+++ b/rdoff/rdfutils.h
@@ -0,0 +1,165 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * Copyright 1996-2017 The NASM Authors - All Rights Reserved
+ * See the file AUTHORS included with the NASM distribution for
+ * the specific copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ----------------------------------------------------------------------- */
+
+/*
+ * rdfutils.h
+ *
+ * Internal header file for RDOFF utilities
+ */
+
+#ifndef RDOFF_RDFUTILS_H
+#define RDOFF_RDFUTILS_H 1
+
+#include "compiler.h"
+#include "nasmlib.h"
+#include "error.h"
+#include "rdoff.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+typedef union RDFHeaderRec {
+ char type; /* invariant throughout all below */
+ struct GenericRec g; /* type 0 */
+ struct RelocRec r; /* type == 1 / 6 */
+ struct ImportRec i; /* type == 2 / 7 */
+ struct ExportRec e; /* type == 3 */
+ struct DLLRec d; /* type == 4 */
+ struct BSSRec b; /* type == 5 */
+ struct ModRec m; /* type == 8 */
+ struct CommonRec c; /* type == 10 */
+} rdfheaderrec;
+
+struct SegmentHeaderRec {
+ /* information from file */
+ uint16_t type;
+ uint16_t number;
+ uint16_t reserved;
+ int32_t length;
+
+ /* information built up here */
+ int32_t offset;
+ uint8_t *data; /* pointer to segment data if it exists in memory */
+};
+
+typedef struct RDFFileInfo {
+ FILE *fp; /* file descriptor; must be open to use this struct */
+ int rdoff_ver; /* should be 1; any higher => not guaranteed to work */
+ int32_t header_len;
+ int32_t header_ofs;
+
+ uint8_t *header_loc; /* keep location of header */
+ int32_t header_fp; /* current location within header for reading */
+
+ struct SegmentHeaderRec seg[RDF_MAXSEGS];
+ int nsegs;
+
+ int32_t eof_offset; /* offset of the first uint8_t beyond the end of this
+ module */
+
+ char *name; /* name of module in libraries */
+ int *refcount; /* pointer to reference count on file, or NULL */
+} rdffile;
+
+#define BUF_BLOCK_LEN 4088 /* selected to match page size (4096)
+ * on 80x86 machines for efficiency */
+typedef struct memorybuffer {
+ int length;
+ uint8_t buffer[BUF_BLOCK_LEN];
+ struct memorybuffer *next;
+} memorybuffer;
+
+typedef struct {
+ memorybuffer *buf; /* buffer containing header records */
+ int nsegments; /* number of segments to be written */
+ int32_t seglength; /* total length of all the segments */
+} rdf_headerbuf;
+
+/* segments used by RDOFF, understood by rdoffloadseg */
+#define RDOFF_CODE 0
+#define RDOFF_DATA 1
+#define RDOFF_HEADER -1
+/* mask for 'segment' in relocation records to find if relative relocation */
+#define RDOFF_RELATIVEMASK 64
+/* mask to find actual segment value in relocation records */
+#define RDOFF_SEGMENTMASK 63
+
+extern int rdf_errno;
+
+/* rdf_errno can hold these error codes */
+enum {
+ /* 0 */ RDF_OK,
+ /* 1 */ RDF_ERR_OPEN,
+ /* 2 */ RDF_ERR_FORMAT,
+ /* 3 */ RDF_ERR_READ,
+ /* 4 */ RDF_ERR_UNKNOWN,
+ /* 5 */ RDF_ERR_HEADER,
+ /* 6 */ RDF_ERR_NOMEM,
+ /* 7 */ RDF_ERR_VER,
+ /* 8 */ RDF_ERR_RECTYPE,
+ /* 9 */ RDF_ERR_RECLEN,
+ /* 10 */ RDF_ERR_SEGMENT
+};
+
+/* library init */
+void rdoff_init(void);
+
+/* utility functions */
+int32_t translateint32_t(int32_t in);
+uint16_t translateint16_t(uint16_t in);
+char *translatesegmenttype(uint16_t type);
+
+/* RDOFF file manipulation functions */
+int rdfopen(rdffile * f, const char *name);
+int rdfopenhere(rdffile * f, FILE * fp, int *refcount, const char *name);
+int rdfclose(rdffile * f);
+int rdffindsegment(rdffile * f, int segno);
+int rdfloadseg(rdffile * f, int segment, void *buffer);
+rdfheaderrec *rdfgetheaderrec(rdffile * f); /* returns static storage */
+void rdfheaderrewind(rdffile * f); /* back to start of header */
+void rdfperror(const char *app, const char *name);
+
+/* functions to write a new RDOFF header to a file -
+ use rdfnewheader to allocate a header, rdfaddheader to add records to it,
+ rdfaddsegment to notify the header routines that a segment exists, and
+ to tell it how int32_t the segment will be.
+ rdfwriteheader to write the file id, object length, and header
+ to a file, and then rdfdoneheader to dispose of the header */
+
+rdf_headerbuf *rdfnewheader(void);
+int rdfaddheader(rdf_headerbuf * h, rdfheaderrec * r);
+int rdfaddsegment(rdf_headerbuf * h, int32_t seglength);
+int rdfwriteheader(FILE * fp, rdf_headerbuf * h);
+void rdfdoneheader(rdf_headerbuf * h);
+
+#endif /* RDOFF_RDFUTILS_H */
diff --git a/rdoff/rdlar.c b/rdoff/rdlar.c
index 98b0f8f6..419d2d0d 100644
--- a/rdoff/rdlar.c
+++ b/rdoff/rdlar.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -285,6 +285,8 @@ int main(int argc, char **argv)
exit(1);
}
+ rdoff_init();
+
/* Check whether some modifiers were specified */
for (i = 1; i < strlen(argv[1]); i++) {
switch (c = argv[1][i]) {
diff --git a/rdoff/rdlib.c b/rdoff/rdlib.c
index 7f8ddac7..d8f2fc7a 100644
--- a/rdoff/rdlib.c
+++ b/rdoff/rdlib.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2014 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -41,9 +41,7 @@
#include <stdlib.h>
#include <string.h>
-#define RDOFF_UTILS
-
-#include "rdoff.h"
+#include "rdfutils.h"
#include "rdlib.h"
#include "rdlar.h"
@@ -92,11 +90,11 @@ int rdl_verify(const char *filename)
* content
* so we can handle it uniformaly with RDOFF2 modules.
*/
- fread(buf, 6, 1, fp);
+ nasm_read(buf, 6, fp);
buf[6] = 0;
/* Currently, nothing useful to do with signature block.. */
} else {
- fread(buf, 6, 1, fp);
+ nasm_read(buf, 6, fp);
buf[6] = 0;
if (strncmp(buf, "RDOFF", 5)) {
fclose(fp);
@@ -106,7 +104,7 @@ int rdl_verify(const char *filename)
return rdl_error = lastresult = 3;
}
}
- fread(&length, 4, 1, fp);
+ nasm_read(&length, 4, fp);
fseek(fp, length, SEEK_CUR); /* skip over the module */
}
fclose(fp);
@@ -120,7 +118,7 @@ int rdl_open(struct librarynode *lib, const char *name)
return i;
lib->fp = NULL;
- lib->name = strdup(name);
+ lib->name = nasm_strdup(name);
lib->referenced = 0;
lib->next = NULL;
return 0;
@@ -165,7 +163,7 @@ int rdl_searchlib(struct librarynode *lib, const char *label, rdffile * f)
if (feof(lib->fp))
break;
if (!strcmp(buf + t, ".dir")) { /* skip over directory */
- fread(&l, 4, 1, lib->fp);
+ nasm_read(&l, 4, lib->fp);
fseek(lib->fp, l, SEEK_CUR);
continue;
}
@@ -179,7 +177,7 @@ int rdl_searchlib(struct librarynode *lib, const char *label, rdffile * f)
/*
* read in the header, and scan for exported symbols
*/
- hdr = malloc(f->header_len);
+ hdr = nasm_malloc(f->header_len);
rdfloadseg(f, RDOFF_HEADER, hdr);
while ((r = rdfgetheaderrec(f))) {
@@ -187,7 +185,7 @@ int rdl_searchlib(struct librarynode *lib, const char *label, rdffile * f)
continue;
if (!strcmp(r->e.label, label)) { /* match! */
- free(hdr); /* reset to 'just open' */
+ nasm_free(hdr); /* reset to 'just open' */
f->header_loc = NULL; /* state... */
f->header_fp = 0;
return 1;
@@ -254,7 +252,7 @@ int rdl_openmodule(struct librarynode *lib, int moduleno, rdffile * f)
return rdl_error;
}
- fread(buf, 6, 1, lib->fp);
+ nasm_read(buf, 6, lib->fp);
buf[6] = 0;
if (buf[t] == '.') {
/* do nothing */
@@ -272,7 +270,7 @@ int rdl_openmodule(struct librarynode *lib, int moduleno, rdffile * f)
return rdl_error = 3;
}
- fread(&length, 4, 1, lib->fp);
+ nasm_read(&length, 4, lib->fp);
fseek(lib->fp, length, SEEK_CUR); /* skip over the module */
}
if (!--lib->referenced) {
diff --git a/rdoff/rdoff.c b/rdoff/rdoff.c
index ef9a5651..77fec399 100644
--- a/rdoff/rdoff.c
+++ b/rdoff/rdoff.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2014 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -47,13 +47,7 @@
#include <string.h>
#include <errno.h>
-#define RDOFF_UTILS
-
-#include "rdoff.h"
-
-#define newstr(str) strcpy(malloc(strlen(str) + 1),str)
-#define newstrcat(s1,s2) strcat(strcpy(malloc(strlen(s1) + strlen(s2) + 1), \
- s1),s2)
+#include "rdfutils.h"
/*
* Comment this out to allow the module to read & write header record types
@@ -72,7 +66,7 @@ static memorybuffer *newmembuf(void)
{
memorybuffer *t;
- t = malloc(sizeof(memorybuffer));
+ t = nasm_malloc(sizeof(memorybuffer));
if (!t)
return NULL;
@@ -134,8 +128,7 @@ static void membufdump(memorybuffer * b, FILE * fp)
if (!b)
return;
- fwrite(b->buffer, 1, b->length, fp);
-
+ nasm_write(b->buffer, b->length, fp);
membufdump(b->next, fp);
}
@@ -151,7 +144,7 @@ static void freemembuf(memorybuffer * b)
if (!b)
return;
freemembuf(b->next);
- free(b);
+ nasm_free(b);
}
/* =========================================================================
@@ -234,6 +227,22 @@ const char *rdf_errors[11] = {
int rdf_errno = 0;
/* ========================================================================
+ * Hook for nasm_error() to work
+ * ======================================================================== */
+static void rdoff_verror(int severity, const char *fmt, va_list val)
+{
+ vfprintf(stderr, fmt, val);
+
+ if ((severity & ERR_MASK) >= ERR_FATAL)
+ exit(1);
+}
+
+void rdoff_init(void)
+{
+ nasm_set_verror(rdoff_verror);
+}
+
+/* ========================================================================
The library functions
======================================================================== */
@@ -266,7 +275,11 @@ int rdfopenhere(rdffile * f, FILE * fp, int *refcount, const char *name)
f->fp = fp;
initpos = ftell(fp);
- fread(buf, 6, 1, f->fp); /* read header */
+ /* read header */
+ if (fread(buf, 1, 6, f->fp) != 6) {
+ fclose(f->fp);
+ return rdf_errno = RDF_ERR_READ;
+ }
buf[6] = 0;
if (strcmp(buf, RDOFFId)) {
@@ -326,7 +339,7 @@ int rdfopenhere(rdffile * f, FILE * fp, int *refcount, const char *name)
fseek(f->fp, initpos, SEEK_SET);
f->header_loc = NULL;
- f->name = newstr(name);
+ f->name = nasm_strdup(name);
f->refcount = refcount;
if (refcount)
(*refcount)++;
@@ -339,7 +352,7 @@ int rdfclose(rdffile * f)
fclose(f->fp);
f->fp = NULL;
}
- free(f->name);
+ nasm_free(f->name);
return 0;
}
@@ -510,7 +523,7 @@ void rdfheaderrewind(rdffile * f)
rdf_headerbuf *rdfnewheader(void)
{
- rdf_headerbuf *hb = malloc(sizeof(rdf_headerbuf));
+ rdf_headerbuf *hb = nasm_malloc(sizeof(rdf_headerbuf));
if (hb == NULL)
return NULL;
@@ -589,14 +602,12 @@ int rdfwriteheader(FILE * fp, rdf_headerbuf * h)
{
int32_t l, l2;
- fwrite(RDOFFId, 1, strlen(RDOFFId), fp);
+ nasm_write(RDOFFId, strlen(RDOFFId), fp);
l = membuflength(h->buf);
l2 = l + 14 + 10 * h->nsegments + h->seglength;
- l = translateint32_t(l);
- l2 = translateint32_t(l2);
- fwrite(&l2, 4, 1, fp); /* object length */
- fwrite(&l, 4, 1, fp); /* header length */
+ fwriteint32_t(l, fp);
+ fwriteint32_t(l2, fp);
membufdump(h->buf, fp);
@@ -606,5 +617,5 @@ int rdfwriteheader(FILE * fp, rdf_headerbuf * h)
void rdfdoneheader(rdf_headerbuf * h)
{
freemembuf(h->buf);
- free(h);
+ nasm_free(h);
}
diff --git a/rdoff/rdx.c b/rdoff/rdx.c
index 240ab592..f52e6879 100644
--- a/rdoff/rdx.c
+++ b/rdoff/rdx.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -62,6 +62,8 @@ int main(int argc, char **argv)
exit(255);
}
+ rdoff_init();
+
m = rdfload(argv[1]);
if (!m) {
diff --git a/rdoff/segtab.c b/rdoff/segtab.c
index ab162a9f..3c076b6e 100644
--- a/rdoff/segtab.c
+++ b/rdoff/segtab.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2014 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -31,10 +31,7 @@
*
* ----------------------------------------------------------------------- */
-#include "compiler.h"
-
-#include <stdio.h>
-#include <stdlib.h>
+#include "rdfutils.h"
#include "segtab.h"
struct segtabnode {
@@ -76,7 +73,7 @@ static void descend_tree_add(struct segtabnode **node,
struct segtabnode *n;
if (*node == NULL) {
- *node = malloc(sizeof(**node));
+ *node = nasm_malloc(sizeof(**node));
if (!*node) {
fprintf(stderr, "segment table: out of memory\n");
exit(1);
@@ -149,7 +146,7 @@ static void freenode(struct segtabnode *n)
return;
freenode(n->left);
freenode(n->right);
- free(n);
+ nasm_free(n);
}
void done_seglocations(segtab * root)
diff --git a/rdoff/symtab.c b/rdoff/symtab.c
index 1dfee1ae..270fb89c 100644
--- a/rdoff/symtab.c
+++ b/rdoff/symtab.c
@@ -1,5 +1,5 @@
/* ----------------------------------------------------------------------- *
- *
+ *
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
* See the file AUTHORS included with the NASM distribution for
* the specific copyright holders.
@@ -14,7 +14,7 @@
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -31,13 +31,13 @@
*
* ----------------------------------------------------------------------- */
-/*
+/*
* symtab.c Routines to maintain and manipulate a symbol table
*
* These routines donated to the NASM effort by Graeme Defty.
*/
-#include "compiler.h"
+#include "rdfutils.h"
#include <stdio.h>
#include <stdlib.h>
@@ -66,7 +66,7 @@ void *symtabNew(void)
{
symtab mytab;
- mytab = (symtabTab *) calloc(SYMTABSIZE, sizeof(symtabNode *));
+ mytab = (symtabTab *) nasm_calloc(SYMTABSIZE, sizeof(symtabNode *));
if (mytab == NULL) {
fprintf(stderr, "symtab: out of memory\n");
exit(3);
@@ -86,11 +86,11 @@ void symtabDone(void *stab)
for (this = (*mytab)[i]; this; this = next) {
next = this->next;
- free(this);
+ nasm_free(this);
}
}
- free(*mytab);
+ nasm_free(*mytab);
}
/* ------------------------------------- */
@@ -100,7 +100,7 @@ void symtabInsert(void *stab, symtabEnt * ent)
symtabNode *node;
int slot;
- node = malloc(sizeof(symtabNode));
+ node = nasm_malloc(sizeof(symtabNode));
if (node == NULL) {
fprintf(stderr, "symtab: out of memory\n");
exit(3);
diff --git a/test/Makefile b/test/Makefile
index f0fc5aa6..07e46f7d 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -4,6 +4,8 @@ NASM = ../nasm
NASMOPT = -Ox -I../misc $(OPT)
PERL = perl
TESTS = $(wildcard *.asm)
+RM_F = rm -f
+RM_RF = rm -rf
$(NASM):
$(MAKE) -C ..
@@ -62,13 +64,13 @@ diff: performtest.pl $(NASM) $(TESTS)
$(PERL) performtest.pl --diff --nasm='$(NASM)' $(TESTS)
clean:
- rm -f *.com *.o *.o64 *.obj *.win32 *.win64 *.exe *.lst *.bin
- rm -f *.dbg *.coff *.ith *.srec *.mo32 *.mo64 *.i
- rm -rf testresults
- rm -f elftest elftest64
+ $(RM_F) *.com *.o *.o64 *.obj *.win32 *.win64 *.exe *.lst *.bin
+ $(RM_F) *.dbg *.coff *.ith *.srec *.mo32 *.mo64 *.i
+ $(RM_RF) testresults
+ $(RM_F) elftest elftest64
spotless: clean
- rm -rf golden
+ $(RM_RF) golden
#
# Test for ELF32 shared libraries; assumes an x86 Linux system
diff --git a/test/br3392363.asm b/test/br3392363.asm
new file mode 100644
index 00000000..b0bbbbd9
--- /dev/null
+++ b/test/br3392363.asm
@@ -0,0 +1,4 @@
+ vaddps zmm0 {k1}, zmm0, zmm0
+ rep
+ vaddps zmm0 {k1}, zmm0, zmm0
+ rep movsd
diff --git a/test/br3392392.asm b/test/br3392392.asm
new file mode 100644
index 00000000..0143aa47
--- /dev/null
+++ b/test/br3392392.asm
@@ -0,0 +1,16 @@
+ bits 64
+ vpaddd zmm0, zmm0, [rax]{1to16}
+ vpaddd zmm2{k3}, zmm0, zmm1
+ vpaddd zmm2 {k3}, zmm0, zmm1
+ vpaddd zmm0{k1}, zmm0, [rax]{1to16}
+ vmovdqa32 [rsi]{k1}, zmm1
+ vmovdqa32 [rsi]{z}, zmm1
+ vmovdqa32 [rsi]{k1}{z}, zmm1
+ vmovdqa32 [rsi]{z}{k1}, zmm1
+%ifdef ERROR
+ vmovdqa32 [rsi]{z}{1to16}, zmm1
+ vmovdqa32 [rsi]{z}{k1}{1to16}, zmm1
+ vpaddd zmm0, zmm0, [rax]{k1}
+ vpaddd zmm0, zmm1, zmm2{1to16}
+%endif
+
diff --git a/test/br3392396.asm b/test/br3392396.asm
new file mode 100644
index 00000000..beb71cf1
--- /dev/null
+++ b/test/br3392396.asm
@@ -0,0 +1,5 @@
+ bits 64
+ vmovdqa32 [rdi],zmm16
+ vmovdqa32 [rdi+64],zmm17
+ vmovdqa32 [rdi+128],zmm18
+ vmovdqa32 [rdi+192],zmm19
diff --git a/test/hexfp.asm b/test/hexfp.asm
new file mode 100644
index 00000000..02c972f8
--- /dev/null
+++ b/test/hexfp.asm
@@ -0,0 +1,25 @@
+;; BR 3392399
+
+; All of these should be the same value...
+%macro fp 1
+ %1 0.5
+ %1 5e-1
+ %1 0x1.0p-1
+ %1 0x0.8p0
+ %1 0x0.8
+ %1 0x8p-4
+ %1 0x.8
+ %1 0x1p-1
+ %1 0x0.1p3
+ %1 0x0.01p7
+ %1 0x0.01p7
+ %1 0x0.001p11
+
+%endmacro
+
+ fp do
+ fp dt
+ fp dq
+ fp dd
+ fp dw
+ fp dd
diff --git a/test/pragma.asm b/test/pragma.asm
index d794a896..cecd984b 100644
--- a/test/pragma.asm
+++ b/test/pragma.asm
@@ -5,6 +5,8 @@
%define PR asm foobar
%pragma PR
%pragma preproc
-%pragma preproc tjo fidelittan
-
-
+%pragma preproc tjo fidelittan preproc
+%pragma dbg tjo fidelittan output
+%pragma dbgdbg tjo fidelittan debug format
+%pragma Dbg Tjo Fidelittan Output
+%pragma Dbgdbg Tjo Fidelittan Debug Format
diff --git a/tools/release b/tools/release
index 14e750a6..dd68ec7c 100755
--- a/tools/release
+++ b/tools/release
@@ -38,13 +38,16 @@ unset GIT_DIR
git clone -s -l "$HERE" nasm
rm -rf nasm/.git nasm/.gitignore
+# How to invoke make if makej is not set
+makej="${makej:-make}"
+
# Create files which are in the release but automatically generated
cd nasm
./autogen.sh
./configure --prefix=/usr/local
-make perlreq spec manpages
-make alldeps
-make distclean
+$makej perlreq spec manpages
+$makej alldeps
+$makej distclean
cd ..
# Clean up any previous attempt
@@ -63,8 +66,10 @@ mv nasm-"$version".tar.gz nasm-"$version".tar.bz2 nasm-"$version".tar.xz ..
# Create zipfile (DOS convention: no prefix, convert file endings)
cd nasm-"$version"
-zip -9Dlr ../../nasm-"$version".zip * -x \*.jpg -x \*.zip -x \*.ico # Text files
-zip -9Dgr ../../nasm-"$version".zip * -i \*.jpg -i \*.zip -i \*.ico # Binary files
+# Text files
+zip -9Dlr ../../nasm-"$version".zip * -x \*.jpg -x \*.zip -x \*.ico -x \*.png
+# Binary files
+zip -9Dgr ../../nasm-"$version".zip * -i \*.jpg -i \*.zip -i \*.ico -i \*.png
cd ..
# Record what we have already generated
@@ -73,9 +78,9 @@ find nasm-"$version" -not -type d -print > main
# Create documentation
cd nasm-"$version"
./configure --prefix=/usr/local
-make doc
+$makej doc
# Remove intermediate files.
-make cleaner
+$makej cleaner
cd ..
# Remove non-documentation
@@ -91,10 +96,9 @@ gzip -9 nasm-"$version"-xdoc.tar
mv nasm-"$version"-xdoc.tar.gz nasm-"$version"-xdoc.tar.bz2 nasm-"$version"-xdoc.tar.xz ..
# Create doc zipfile (DOS convention: no prefix, convert file endings)
-# (Note: generating Win .hlp files requires additional tools)
cd nasm-"$version"
-zip -9Dlr ../../nasm-"$version"-xdoc.zip doc -x \*.pdf -x \*.info\*
-zip -9Dgr ../../nasm-"$version"-xdoc.zip doc -i \*.pdf -i \*.info\*
+zip -9Dlr ../../nasm-"$version"-xdoc.zip doc -x \*.pdf -x \*.png
+zip -9Dgr ../../nasm-"$version"-xdoc.zip doc -i \*.pdf -i \*.png
# Clean up
cd ../..
diff --git a/tools/syncfiles.pl b/tools/syncfiles.pl
index 4da87f9c..38524a82 100755
--- a/tools/syncfiles.pl
+++ b/tools/syncfiles.pl
@@ -60,14 +60,14 @@ sub do_transform($$) {
return $l;
}
-@file_list = ();
+undef %line_lists;
$first = 1;
$first_file = $ARGV[0];
die unless (defined($first_file));
foreach $file (@ARGV) {
- open(FILE, "< $file\0") or die;
+ open(FILE, '<', $file) or die;
# First, read the syntax hints
%hints = %def_hints;
@@ -80,13 +80,16 @@ foreach $file (@ARGV) {
# Read and process the file
seek(FILE,0,0);
@lines = ();
- $processing = 0;
+ undef $processing;
while (defined($line = <FILE>)) {
chomp $line;
- if ($processing) {
- if ($line eq '#-- End File Lists --#') {
+ if (defined($processing)) {
+ if ($line =~ /^\#-- End ([^-\#]*[^-#\s]) --\#$/) {
+ if ($1 ne $processing) {
+ die "$0: $file: Mismatched Begin and End lines (\"$processing\" -> \"$1\"\n";
+ }
push(@lines, $line."\n");
- $processing = 0;
+ undef $processing;
} elsif ($first) {
my $xl = $line;
my $oe = "\Q$hints{'object-ending'}";
@@ -96,16 +99,24 @@ foreach $file (@ARGV) {
$xl =~ s/${oe}(\s|$)/\x01$1/g;
$xl =~ s/${ps}/\x02/g;
$xl =~ s/${cn}$/\x03/;
- push(@file_list, $xl);
+ push(@{$line_lists{$processing}}, $xl);
push(@lines, $line);
}
} else {
push(@lines, $line."\n");
- if ($line eq '#-- Begin File Lists --#') {
- $processing = 1;
- if (!$first) {
+ if ($line =~ '#-- Begin ([^-\#]*[^-#\s]) --#') {
+ $processing = $1;
+ if ($first) {
+ if (defined($line_lists{$processing})) {
+ die "$0: $file: Repeated Begin block: $processing\n";
+ }
+ $line_lists{$processing} = [];
+ } elsif (!$first) {
+ if (!defined($line_lists{$processing})) {
+ die "$0: $file: Begin block without template\n";
+ }
push(@lines, "# Edit in $first_file, not here!\n");
- foreach $l (@file_list) {
+ foreach $l (@{$line_lists{$processing}}) {
push(@lines, do_transform($l, \%hints)."\n");
}
}
@@ -116,7 +127,7 @@ foreach $file (@ARGV) {
# Write the file back out
if (!$first) {
- open(FILE, "> $file\0") or die;
+ open(FILE, '>', $file) or die;
print FILE @lines;
close(FILE);
}
diff --git a/version b/version
index fa3444fb..562d30e4 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-2.13rc8
+2.13rc20
diff --git a/x86/insns-iflags.pl b/x86/insns-iflags.ph
index 84eda8f5..84eda8f5 100644
--- a/x86/insns-iflags.pl
+++ b/x86/insns-iflags.ph
diff --git a/x86/insns.dat b/x86/insns.dat
index f20fd04d..00f25711 100644
--- a/x86/insns.dat
+++ b/x86/insns.dat
@@ -41,7 +41,7 @@
;
; For a detailed description of the code string (third field), please
; see insns.pl and the comment at the top of assemble.c. For a detailed
-; description of the flags (fourth field), please see insns-iflags.pl.
+; description of the flags (fourth field), please see insns-iflags.ph.
;
; Comments with a pound sign after the semicolon generate section
; subheaders in the NASM documentation.
@@ -3418,7 +3418,7 @@ VPGATHERQQ xmmreg,xmem64,xmmreg [rmv: vm64x vex.dds.128.66.0f38.w1 91 /r] FUTUR
VPGATHERDQ ymmreg,xmem64,ymmreg [rmv: vm32x vex.dds.256.66.0f38.w1 90 /r] FUTURE,AVX2
VPGATHERQQ ymmreg,ymem64,ymmreg [rmv: vm64y vex.dds.256.66.0f38.w1 91 /r] FUTURE,AVX2
-;# Transactional Synchronization Extensions (TSX)
+;# Intel Transactional Synchronization Extensions (TSX)
XABORT imm [i: c6 f8 ib] FUTURE,RTM
XABORT imm8 [i: c6 f8 ib] FUTURE,RTM
XBEGIN imm [i: odf c7 f8 rel] FUTURE,RTM
@@ -3488,7 +3488,7 @@ T1MSKC reg64,rm64 [vm: xop.ndd.lz.m9.w1 01 /7] LONG,FUTURE,TBM
PREFETCHWT1 mem8 [m: 0f 0d /2 ] PREFETCHWT1,FUTURE
-; MPX instructions
+;# Intel Memory Protection Extensions (MPX)
BNDMK bndreg,mem [rm: f3 0f 1b /r ] MPX,MIB,FUTURE
BNDCL bndreg,mem [rm: f3 0f 1a /r ] MPX,FUTURE
BNDCL bndreg,reg32 [rm: f3 0f 1a /r ] MPX,NOLONG,FUTURE
@@ -3512,7 +3512,17 @@ BNDSTX mem,reg64,bndreg [mxr: 0f 1b /r ] MPX,MIB,LONG,FUTU
BNDSTX mem,bndreg,reg32 [mrx: 0f 1b /r ] MPX,MIB,NOLONG,FUTURE
BNDSTX mem,bndreg,reg64 [mrx: 0f 1b /r ] MPX,MIB,LONG,FUTURE
-;# MJC PUBLIC BEGIN
+;# Intel SHA acceleration instructions
+SHA1MSG1 xmmreg,xmmrm128 [rm: 0f 38 c9 /r ] SHA,FUTURE
+SHA1MSG2 xmmreg,xmmrm128 [rm: 0f 38 ca /r ] SHA,FUTURE
+SHA1NEXTE xmmreg,xmmrm128 [rm: 0f 38 c8 /r ] SHA,FUTURE
+SHA1RNDS4 xmmreg,xmmrm128,imm8 [rmi: 0f 3a cc /r ib ] SHA,FUTURE
+SHA256MSG1 xmmreg,xmmrm128 [rm: 0f 38 cc /r ] SHA,FUTURE
+SHA256MSG2 xmmreg,xmmrm128 [rm: 0f 38 cd /r ] SHA,FUTURE
+SHA256RNDS2 xmmreg,xmmrm128,xmm0 [rm-: 0f 38 cb /r ] SHA,FUTURE
+SHA256RNDS2 xmmreg,xmmrm128 [rm: 0f 38 cb /r ] SHA,FUTURE
+
+;# AVX-512 mask register instructions
KADDB kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 4a /r ] FUTURE
KADDD kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 4a /r ] FUTURE
KADDQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 4a /r ] FUTURE
@@ -3576,14 +3586,8 @@ KXORB kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 47
KXORD kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 47 /r ] FUTURE
KXORQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 47 /r ] FUTURE
KXORW kreg,kreg,kreg [rvm: vex.nds.l1.0f.w0 47 /r ] FUTURE
-SHA1MSG1 xmmreg,xmmrm128 [rm: 0f 38 c9 /r ] SHA,FUTURE
-SHA1MSG2 xmmreg,xmmrm128 [rm: 0f 38 ca /r ] SHA,FUTURE
-SHA1NEXTE xmmreg,xmmrm128 [rm: 0f 38 c8 /r ] SHA,FUTURE
-SHA1RNDS4 xmmreg,xmmrm128,imm8 [rmi: 0f 3a cc /r ib ] SHA,FUTURE
-SHA256MSG1 xmmreg,xmmrm128 [rm: 0f 38 cc /r ] SHA,FUTURE
-SHA256MSG2 xmmreg,xmmrm128 [rm: 0f 38 cd /r ] SHA,FUTURE
-SHA256RNDS2 xmmreg,xmmrm128,xmm0 [rm-: 0f 38 cb /r ] SHA,FUTURE
-SHA256RNDS2 xmmreg,xmmrm128 [rm: 0f 38 cb /r ] SHA,FUTURE
+
+;# AVX-512 instructions
VADDPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 58 /r ] AVX512VL,AVX512,FUTURE
VADDPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 58 /r ] AVX512VL,AVX512,FUTURE
VADDPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f.w1 58 /r ] AVX512,FUTURE
@@ -4069,57 +4073,39 @@ VMOVDDUP zmmreg|mask|z,zmmrm512 [rm:dup: evex.512.f2.0f.w1 1
VMOVDQA32 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f.w0 6f /r ] AVX512VL,AVX512,FUTURE
VMOVDQA32 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f.w0 6f /r ] AVX512VL,AVX512,FUTURE
VMOVDQA32 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f.w0 6f /r ] AVX512,FUTURE
-VMOVDQA32 xmmreg|mask|z,xmmreg [mr: evex.128.66.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQA32 ymmreg|mask|z,ymmreg [mr: evex.256.66.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQA32 zmmreg|mask|z,zmmreg [mr: evex.512.66.0f.w0 7f /r ] AVX512,FUTURE
-VMOVDQA32 mem128|mask,xmmreg [mr:fvm: evex.128.66.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQA32 mem256|mask,ymmreg [mr:fvm: evex.256.66.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQA32 mem512|mask,zmmreg [mr:fvm: evex.512.66.0f.w0 7f /r ] AVX512,FUTURE
+VMOVDQA32 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.66.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
+VMOVDQA32 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.66.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
+VMOVDQA32 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.66.0f.w0 7f /r ] AVX512,FUTURE
VMOVDQA64 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f.w1 6f /r ] AVX512VL,AVX512,FUTURE
VMOVDQA64 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f.w1 6f /r ] AVX512VL,AVX512,FUTURE
VMOVDQA64 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f.w1 6f /r ] AVX512,FUTURE
-VMOVDQA64 xmmreg|mask|z,xmmreg [mr: evex.128.66.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQA64 ymmreg|mask|z,ymmreg [mr: evex.256.66.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQA64 zmmreg|mask|z,zmmreg [mr: evex.512.66.0f.w1 7f /r ] AVX512,FUTURE
-VMOVDQA64 mem128|mask,xmmreg [mr:fvm: evex.128.66.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQA64 mem256|mask,ymmreg [mr:fvm: evex.256.66.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQA64 mem512|mask,zmmreg [mr:fvm: evex.512.66.0f.w1 7f /r ] AVX512,FUTURE
+VMOVDQA64 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.66.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
+VMOVDQA64 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.66.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
+VMOVDQA64 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.66.0f.w1 7f /r ] AVX512,FUTURE
VMOVDQU16 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f2.0f.w1 6f /r ] AVX512VL,AVX512BW,FUTURE
VMOVDQU16 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f2.0f.w1 6f /r ] AVX512VL,AVX512BW,FUTURE
VMOVDQU16 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f2.0f.w1 6f /r ] AVX512BW,FUTURE
-VMOVDQU16 xmmreg|mask|z,xmmreg [mr: evex.128.f2.0f.w1 7f /r ] AVX512VL,AVX512BW,FUTURE
-VMOVDQU16 ymmreg|mask|z,ymmreg [mr: evex.256.f2.0f.w1 7f /r ] AVX512VL,AVX512BW,FUTURE
-VMOVDQU16 zmmreg|mask|z,zmmreg [mr: evex.512.f2.0f.w1 7f /r ] AVX512BW,FUTURE
-VMOVDQU16 mem128|mask,xmmreg [mr:fvm: evex.128.f2.0f.w1 7f /r ] AVX512VL,AVX512BW,FUTURE
-VMOVDQU16 mem256|mask,ymmreg [mr:fvm: evex.256.f2.0f.w1 7f /r ] AVX512VL,AVX512BW,FUTURE
-VMOVDQU16 mem512|mask,zmmreg [mr:fvm: evex.512.f2.0f.w1 7f /r ] AVX512BW,FUTURE
+VMOVDQU16 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.f2.0f.w1 7f /r ] AVX512VL,AVX512BW,FUTURE
+VMOVDQU16 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.f2.0f.w1 7f /r ] AVX512VL,AVX512BW,FUTURE
+VMOVDQU16 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.f2.0f.w1 7f /r ] AVX512BW,FUTURE
VMOVDQU32 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f3.0f.w0 6f /r ] AVX512VL,AVX512,FUTURE
VMOVDQU32 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f3.0f.w0 6f /r ] AVX512VL,AVX512,FUTURE
VMOVDQU32 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f3.0f.w0 6f /r ] AVX512,FUTURE
-VMOVDQU32 xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQU32 ymmreg|mask|z,ymmreg [mr: evex.256.f3.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQU32 zmmreg|mask|z,zmmreg [mr: evex.512.f3.0f.w0 7f /r ] AVX512,FUTURE
-VMOVDQU32 mem128|mask,xmmreg [mr:fvm: evex.128.f3.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQU32 mem256|mask,ymmreg [mr:fvm: evex.256.f3.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQU32 mem512|mask,zmmreg [mr:fvm: evex.512.f3.0f.w0 7f /r ] AVX512,FUTURE
+VMOVDQU32 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.f3.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
+VMOVDQU32 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.f3.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE
+VMOVDQU32 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.f3.0f.w0 7f /r ] AVX512,FUTURE
VMOVDQU64 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f3.0f.w1 6f /r ] AVX512VL,AVX512,FUTURE
VMOVDQU64 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f3.0f.w1 6f /r ] AVX512VL,AVX512,FUTURE
VMOVDQU64 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f3.0f.w1 6f /r ] AVX512,FUTURE
-VMOVDQU64 xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQU64 ymmreg|mask|z,ymmreg [mr: evex.256.f3.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQU64 zmmreg|mask|z,zmmreg [mr: evex.512.f3.0f.w1 7f /r ] AVX512,FUTURE
-VMOVDQU64 mem128|mask,xmmreg [mr:fvm: evex.128.f3.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQU64 mem256|mask,ymmreg [mr:fvm: evex.256.f3.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
-VMOVDQU64 mem512|mask,zmmreg [mr:fvm: evex.512.f3.0f.w1 7f /r ] AVX512,FUTURE
+VMOVDQU64 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.f3.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
+VMOVDQU64 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.f3.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE
+VMOVDQU64 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.f3.0f.w1 7f /r ] AVX512,FUTURE
VMOVDQU8 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f2.0f.w0 6f /r ] AVX512VL,AVX512BW,FUTURE
VMOVDQU8 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f2.0f.w0 6f /r ] AVX512VL,AVX512BW,FUTURE
VMOVDQU8 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f2.0f.w0 6f /r ] AVX512BW,FUTURE
-VMOVDQU8 xmmreg|mask|z,xmmreg [mr: evex.128.f2.0f.w0 7f /r ] AVX512VL,AVX512BW,FUTURE
-VMOVDQU8 ymmreg|mask|z,ymmreg [mr: evex.256.f2.0f.w0 7f /r ] AVX512VL,AVX512BW,FUTURE
-VMOVDQU8 zmmreg|mask|z,zmmreg [mr: evex.512.f2.0f.w0 7f /r ] AVX512BW,FUTURE
-VMOVDQU8 mem128|mask,xmmreg [mr:fvm: evex.128.f2.0f.w0 7f /r ] AVX512VL,AVX512BW,FUTURE
-VMOVDQU8 mem256|mask,ymmreg [mr:fvm: evex.256.f2.0f.w0 7f /r ] AVX512VL,AVX512BW,FUTURE
-VMOVDQU8 mem512|mask,zmmreg [mr:fvm: evex.512.f2.0f.w0 7f /r ] AVX512BW,FUTURE
+VMOVDQU8 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.f2.0f.w0 7f /r ] AVX512VL,AVX512BW,FUTURE
+VMOVDQU8 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.f2.0f.w0 7f /r ] AVX512VL,AVX512BW,FUTURE
+VMOVDQU8 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.f2.0f.w0 7f /r ] AVX512BW,FUTURE
VMOVHLPS xmmreg,xmmreg*,xmmreg [rvm: evex.nds.128.0f.w0 12 /r ] AVX512,FUTURE
VMOVHPD xmmreg,xmmreg*,mem64 [rvm:t1s: evex.nds.128.66.0f.w1 16 /r ] AVX512,FUTURE
VMOVHPD mem64,xmmreg [mr:t1s: evex.128.66.0f.w1 17 /r ] AVX512,FUTURE
@@ -5115,21 +5101,21 @@ VXORPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.
VXORPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 57 /r ] AVX512VL,AVX512DQ,FUTURE
VXORPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 57 /r ] AVX512VL,AVX512DQ,FUTURE
VXORPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.0f.w0 57 /r ] AVX512DQ,FUTURE
-;# MJC PUBLIC END
+; MJC PUBLIC END
-; Intel memory protection keys for userspace (PKU aka PKEYs)
+;# Intel memory protection keys for userspace (PKU aka PKEYs)
RDPKRU void [ 0f 01 ee] X64,FUTURE
WRPKRU void [ 0f 01 ef] X64,FUTURE
-; Read Processor ID
+;# Read Processor ID
RDPID reg32 [m: f3 0f c7 /7] NOLONG,FUTURE
RDPID reg64 [m: o64nw f3 0f c7 /7] X64,FUTURE
RDPID reg32 [m: f3 0f c7 /7] X64,UNDOC,FUTURE
-; New memory instructions
+;# New memory instructions
CLFLUSHOPT mem [m: 66 0f ae /7] FUTURE
CLWB mem [m: 66 0f ae /6] FUTURE
-;# This one was killed before it saw the light of day
+; This one was killed before it saw the light of day
PCOMMIT void [ 66 0f ae f8] FUTURE,UNDOC,OBSOLETE
; AMD Zen v1
diff --git a/x86/insns.pl b/x86/insns.pl
index a71fb39e..e6d3eee1 100755
--- a/x86/insns.pl
+++ b/x86/insns.pl
@@ -37,7 +37,7 @@
#
# Parse insns.dat and produce generated source code files
-require 'x86/insns-iflags.pl';
+require 'x86/insns-iflags.ph';
# Opcode prefixes which need their own opcode tables
# LONGER PREFIXES FIRST!
@@ -82,7 +82,7 @@ foreach $arg ( @ARGV ) {
die if (scalar(@args) != 2); # input output
($fname, $oname) = @args;
-open (F, $fname) || die "unable to open $fname";
+open(F, '<', $fname) || die "unable to open $fname";
%dinstables = ();
@bytecode_list = ();
diff --git a/x86/regs.pl b/x86/regs.pl
index 52e5ca3e..3a1b56f5 100755
--- a/x86/regs.pl
+++ b/x86/regs.pl
@@ -96,7 +96,7 @@ sub process_line($) {
%regs = ();
%regvals = ();
%disclass = ();
-open(REGS, "< ${file}") or die "$0: Cannot open $file\n";
+open(REGS, '<', $file) or die "$0: Cannot open $file\n";
while ( defined($line = <REGS>) ) {
$nline++;