From: Roland Pesch Date: Fri, 15 Mar 1991 22:14:51 +0000 (+0000) Subject: Initial revision X-Git-Tag: gdb-4_18~24677 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=98ed7eaea92c1335b3739a0eec54d79a71098855;p=external%2Fbinutils.git Initial revision --- diff --git a/gas/doc/a29k.m4 b/gas/doc/a29k.m4 new file mode 100644 index 0000000..dbe0134 --- /dev/null +++ b/gas/doc/a29k.m4 @@ -0,0 +1,3 @@ +_divert__(-1) +_define__(<_AMD29K__>,<1>) +_divert__<> \ No newline at end of file diff --git a/gas/doc/i80386.m4 b/gas/doc/i80386.m4 new file mode 100644 index 0000000..b27243b --- /dev/null +++ b/gas/doc/i80386.m4 @@ -0,0 +1,14 @@ +_divert__(-1) + +_define__(<_I80386__>,<1>) + +_define__(<_ALL_ARCH__>,<0>) +_define__(<_INTERNALS__>,<0>) + +_define__(<_AMD29K__>,<0>) +_define__(<_I960__>,<0>) +_define__(<_M680X0__>,<0>) +_define__(<_SPARC__>,<0>) +_define__(<_VAX__>,<0>) + +_divert__<> \ No newline at end of file diff --git a/gas/doc/i960.m4 b/gas/doc/i960.m4 new file mode 100644 index 0000000..f4a950b --- /dev/null +++ b/gas/doc/i960.m4 @@ -0,0 +1,3 @@ +_divert__(-1) +_define__(<_I960__>,<1>) +_divert__<> \ No newline at end of file diff --git a/gas/doc/m680x0.m4 b/gas/doc/m680x0.m4 new file mode 100644 index 0000000..93f9654 --- /dev/null +++ b/gas/doc/m680x0.m4 @@ -0,0 +1,3 @@ +_divert__(-1) +_define__(<_M680X0__>,<1>) +_divert__<> \ No newline at end of file diff --git a/gas/doc/none.m4 b/gas/doc/none.m4 new file mode 100644 index 0000000..92e97c3 --- /dev/null +++ b/gas/doc/none.m4 @@ -0,0 +1,13 @@ +_divert__(-1) + +_define__(<_ALL_ARCH__>,<0>) +_define__(<_INTERNALS__>,<0>) + +_define__(<_AMD29K__>,<0>) +_define__(<_I80386__>,<0>) +_define__(<_I960__>,<0>) +_define__(<_M680X0__>,<0>) +_define__(<_SPARC__>,<0>) +_define__(<_VAX__>,<0>) + +_divert__<> \ No newline at end of file diff --git a/gas/doc/pretex.m4 b/gas/doc/pretex.m4 new file mode 100644 index 0000000..826c128 --- /dev/null +++ b/gas/doc/pretex.m4 @@ -0,0 +1,222 @@ +divert(-1) -*-Text-*- + +I. INTRODUCTION + +This collection of M4 macros is meant to help in pre-processing texinfo +files to allow configuring them by hosts; for example, the reader of an +as manual who only has access to a 386 may not really want to see crud about +VAXen. + +A preprocessor is used, rather than extending texinfo, because this +way we can hack the conditionals in only one place; otherwise we would +have to write TeX macros, update makeinfo, and update the Emacs +info-formatting functions. + +II. COMPATIBILITY + +These macros should work with GNU m4 and System V m4; they do not work +with Sun or Berkeley M4. + +III. USAGE + +A. M4 INVOCATION +Assume this file is called "pretex.m4". Then, to preprocess a +document "mybook.texinfo" you might do something like the following: + + m4 pretex.m4 none.m4 PARTIC.m4 mybook.texinfo >mybook-PARTIC.texinfo + +---where your path is set to find GNU or SysV "m4", and the other m4 +files mentioned are as follows: + + none.m4: A file that defines, as 0, all the options you might + want to turn on using the conditionals defined below. + Unlike the C preprocessor, m4 does not default + undefined macros to 0. For example, here is a "none.m4" + I have been using: + _divert__(-1) + + _define__(<_ALL_ARCH__>,<0>) + _define__(<_INTERNALS__>,<0>) + + _define__(<_AMD29K__>,<0>) + _define__(<_I80386__>,<0>) + _define__(<_I960__>,<0>) + _define__(<_M680X0__>,<0>) + _define__(<_SPARC__>,<0>) + _define__(<_VAX__>,<0>) + + _divert__<> + + PARTIC.m4: A file that turns on whichever options you actually + want the manual configured for, in this particular + instance. Its contents are similar to one or more of + the lines in "none.m4", but of course the second + argument to _define__ is <1> rather than <0>. + + This is also a convenient place to define any macros + that you want to expand to different text for + different configurations---for example, the name of + the program being described. + +Naturally, these are just suggested conventions; you could put your macro +definitions in any files or combinations of files you like. + +These macros use the characters < and > as m4 quotes; if you need +these characters in your text, you will also want to use the macros +_0__ and _1__ from this package---see the description of "Quote +Handling" in the "Implementation" section below. + +B. WHAT GOES IN THE PRE-TEXINFO SOURCE + +For the most part, the text of your book. In addition, you can +include text that is included only conditionally, using the macros +_if__ and _fi__ defined below. They BOTH take an argument! This is +primarily meant for readability (so a human can more easily see what +conditional end matches what conditional beginning), but the argument +is actually used in the _fi__ as well as the _if__ implementation. +You should always give a _fi__ the same argument as its matching +_if__. Other arguments may appear to work for a while, but are almost +certain to produce the wrong output for some configurations. + +For example, here is an excerpt from the very beginning of the +documentation for GNU as, to name the info file appropriately for +different configurations: + _if__(_ALL_ARCH__) + @setfilename as.info + _fi__(_ALL_ARCH__) + _if__(_M680X0__ && !_ALL_ARCH__) + @setfilename as-m680x0.info + _fi__(_M680X0__ && !_ALL_ARCH__) + _if__(_AMD29K__ && !_ALL_ARCH__) + @setfilename as-29k.info + _fi__(_AMD29K__ && !_ALL_ARCH__) + +Note that you can use Boolean expressions in the arguments; the +expression language is that of the builtin m4 macro "eval", described +in the m4 manual. + +IV. IMPLEMENTATION + +A.PRIMITIVE RENAMING +First, we redefine m4's built-ins to avoid conflict with plain text. +The naming convention used is that our macros all begin with a single +underbar and end with two underbars. The asymmetry is meant to avoid +conflict with some other conventions (which we may want to document) that +are intended to avoid conflict, like ANSI C predefined macros. + +define(`_undefine__',defn(`undefine')) +define(`_define__',defn(`define')) +define(`_defn__',defn(`defn')) +define(`_ppf__',`_define__(`_$1__',_defn__(`$1'))_undefine__(`$1')') +_ppf__(`builtin') +_ppf__(`changecom') +_ppf__(`changequote') +_ppf__(`decr') +_ppf__(`define') +_ppf__(`defn') +_ppf__(`divert') +_ppf__(`dnl') +_ppf__(`dumpdef') +_ppf__(`errprint') +_ppf__(`eval') +_ppf__(`ifdef') +_ppf__(`ifelse') +_ppf__(`include') +_ppf__(`incr') +_ppf__(`index') +_ppf__(`len') +_ppf__(`m4exit') +_ppf__(`m4wrap') +_ppf__(`maketemp') +_ppf__(`popdef') +_ppf__(`pushdef') +_ppf__(`shift') +_ppf__(`sinclude') +_ppf__(`substr') +_ppf__(`syscmd') +_ppf__(`sysval') +_ppf__(`traceoff') +_ppf__(`traceon') +_ppf__(`translit') +_ppf__(`undefine') +_ppf__(`undivert') + +B. QUOTE HANDLING. + +The characters used as quotes by M4, by default, are unfortunately +quite likely to occur in ordinary text. To avoid surprises, we will +use the characters <> ---which are just as suggestive (more so to +Francophones, perhaps) but a little less common in text (save for +those poor Francophones. You win some, you lose some). Still, we +expect also to have to set < and > occasionally in text; to do that, +we define a macro to turn off quote handling (_0__) and a macro to +turn it back on (_1__), according to our convention. + + BEWARE: This seems to make < and > unusable as relational operations + in calls to the builtin "eval". So far I've gotten + along without; but a better choice may be possible. + +Note that we postponed this for a while, for convenience in discussing +the issue and in the primitive renaming---not to mention in defining +_0__ and _1__ themselves! However, the quote redefinitions MUST +precede the _if__ / _fi__ definitions, because M4 will expand the text +as given---if we use the wrong quotes here, we will get the wrong +quotes when we use the conditionals. + +_define__(_0__,`_changequote__(,)')_define__(_1__,`_changequote__(<,>)') +_1__ + +C. CONDITIONALS + +We define two macros, _if__ and _fi__. BOTH take arguments! This is +meant both to help the human reader match up a _fi__ with its +corresponding _if__ and to aid in the implementation. You may use the +full expression syntax supported by M4 (see docn of `eval' builtin in +the m4 manual). + +The conditional macros are carefully defined to avoid introducing +extra whitespace (i.e., blank lines or blank characters). One side +effect exists--- + + BEWARE: text following an `_if__' on the same line is + DISCARDED even if the condition is true; text + following a `_fi__' on the same line is also + always discarded. + +The recommended convention is to always place _if__ and _fi__ on a +line by themselves. This will also aid the human reader. TeX won't +care about the line breaks; as for info, you may want to insert calls +to `@refill' at the end of paragraphs containing conditionalized text, +where you don't want line breaks separating unconditional from +conditional text. info formatting will then give you nice looking +paragraphs in the info file. + +Nesting: conditionals are designed to nest, in the following way: +*nothing* is output between an outer pair of false conditionals, even +if there are true conditionals inside. A false conditional "defeats" +all conditionals within it. The counter _IF_FS__ is used to +implement this; kindly avoid redefining it directly. + +_define__(<_IF_FS__>,<0>) +_define__( + <_pushf__>, + <_define__(<_IF_FS__>, + _incr__(_IF_FS__))>) +_define__( + <_popf__>, + <_ifelse__(0,_IF_FS__, + <<>_dnl__<>>, + <_define__(<_IF_FS__>,_decr__(_IF_FS__))>)>) + +_define__( + <_if__>, + <_ifelse__(1,_eval__( ($1) ), + <<>_dnl__<>>, + <_pushf__<>_divert__(-1)>)>) +_define__( + <_fi__>, + <_ifelse__(1,_eval__( ($1) ), + <<>_dnl__<>>, + <_popf__<>_ifelse__(0,_IF_FS__, + <_divert__<>_dnl__<>>,<>)>)>) +_divert__<>_dnl__<> diff --git a/gas/doc/sparc.m4 b/gas/doc/sparc.m4 new file mode 100644 index 0000000..6e2e6d9 --- /dev/null +++ b/gas/doc/sparc.m4 @@ -0,0 +1,3 @@ +_divert__(-1) +_define__(<_SPARC__>,<1>) +_divert__<> \ No newline at end of file diff --git a/gas/doc/vax.m4 b/gas/doc/vax.m4 new file mode 100644 index 0000000..478c885 --- /dev/null +++ b/gas/doc/vax.m4 @@ -0,0 +1,3 @@ +_divert__(-1) +_define__(<_VAX__>,<1>) +_divert__<> \ No newline at end of file