diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/c_cpp/cwebbin |
Initial commit
Diffstat (limited to 'web/c_cpp/cwebbin')
-rw-r--r-- | web/c_cpp/cwebbin/README-2019.txt | 478 | ||||
-rw-r--r-- | web/c_cpp/cwebbin/README.md | 58 |
2 files changed, 536 insertions, 0 deletions
diff --git a/web/c_cpp/cwebbin/README-2019.txt b/web/c_cpp/cwebbin/README-2019.txt new file mode 100644 index 0000000000..b09a017c18 --- /dev/null +++ b/web/c_cpp/cwebbin/README-2019.txt @@ -0,0 +1,478 @@ + -*-Text-*- +%%% LEGALESE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% This file is part of CWEBbin (Version 3.64c [2019]). +% (Set TAB to 8 spaces to get the spacing right.) +% The CWEB programs by Silvio Levy are based on programs by D. E. Knuth. +% They are distributed WITHOUT ANY WARRANTY, express or implied. + +% This README file was last updated January 1, 2019 by Andreas Scherer. + +% The following copyright notices extend to the respective parts of the +% changed or added source code introduced in this patch only, not to the +% original CWEB distribution, which is copyright (C) 1987,1990,1993,1998 +% by Silvio Levy and Donald E. Knuth. +% +% Copyright (C) 1991-1993 Hans-Hermann Bode +% Copyright (C) 1992 Klaus Guntermann +% Copyright (C) 1991,1993 Carsten Steger +% Copyright (C) 1993-2000,2005,2011,2018,2019 Andreas Scherer + +% Permission is granted to make and distribute verbatim copies of this +% document provided that the copyright notice and this permission notice +% are preserved on all copies. + +% Permission is granted to copy and distribute modified versions of this +% document under the conditions for verbatim copying, provided that the +% entire resulting derived work is given a different name and distributed +% under the terms of a permission notice identical to this one. + +% Please send comments, suggestions, etc., concerning the original CWEB +% implementation to tex-k@tug.org. + +% Please send comments, suggestions, etc., related to changes specific +% for this modified distribution CWEBbin, especially language catalog +% translations to https://ascherer.github.io, or write an issue or pull +% request in https://github.com/ascherer/cwebbin. + +%%% WHAT IS THIS STUFF? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +CWEBbin is the ANSI-C/C++ implementation of Silvio Levy's and Donald Ervin +Knuth's CWEB system, compiled and provided with changefiles for ANSI-C and +makefiles for Borland C/C++ 3.1 (no longer actively supported), MS/VC++ 4.1 +and 6.0 (both no longer actively supported), SAS/C++ 6.57 (no longer actively +supported), and most of all UNIX-cc/g++. Additional features differing from +the original distribution are described further below. General information is +provided in the original README file shipped with the CWEB distribution. + +CWEBbin started from the Amiga port of CWEB 2.8 by Carsten Steger. Then it +was merged with the CWEB-PC 3.0 distribution by Hans-Hermann Bode and Klaus +Guntermann, and the Amiga port of CWEB 3.1 by Tomas Charles Willis. Of +course, it includes all features of the original UNIX implementation and all +enhancements of these Amiga and MS/DOS/Windows ports. + +The distribution of CWEBbin consists of the additional files for this patch +only. The complete contents of the original distribution is a prerequisite. +CWEB can be retrieved via anonymous ftp from + + FTP: ftp://ftp.cs.stanford.edu/pub/cweb + CTAN: https://ctan.org/pkg/cweb + +To apply this patched version of CWEB, extract the patch archive (yielding a +new subdirectory) and add the original distribution. Care has been taken to +avoid collisions with any files from the original distribution and the +Makefiles provide a target to cleanly remove the patch leaving only the files +of the original distribution (and vice versa). + +Intermediate files with extensions .tex and .cxx are reproducable from the +general sources by means of an executable ctangle, cweave, and an ANSI-C/C++ +compiler. In addition you need Klaus Guntermann's TIE processor, which is +available at + + CTAN: https://ctan.org/pkg/tie + +TIE should be available on all systems with a recent TeX installation. +Alternatively, you can also try to use Julian Gilbey's CTIE processor, but +intermediate results are different. + +%%% TABLE OF CONTENTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The following files were added to this distribution by various contributors: + +GENERAL CONTRIBUTION: +. +├── 0001-Make-clean-twinx.patch Patch for twinx.w +├── 0002-Make-clean-refsort.patch Patch for refsort.w +├── arexx [AMIGA] +│ ├── catalogs +│ │ ├── cweb_arexx.cd [AMIGA] catalog description for German defaults +│ │ ├── cweb_arexx.e.ct [AMIGA] catalog translation for English users +│ │ ├── cweb_arexx.f.ct [AMIGA] catalog translation for French users +│ │ ├── cweb_arexx.i.ct [AMIGA] catalog translation for Italian users +│ │ ├── english +│ │ │ └── cweb_arexx.catalog [AMIGA] message catalog for English users +│ │ ├── francais +│ │ │ └── cweb_arexx.catalog [AMIGA] message catalog for French users +│ │ └── italiano +│ │ └── cweb_arexx.catalog [AMIGA] message catalog for Italian users +│ ├── compile.ced [AMIGA] ARexx script to start SAS/C 6.x from CED (V3.5+) +│ └── start_web.ced [AMIGA] ARexx script to start cweave/ctangle from CED +├── catalogs +│ ├── cweb.cd [AMIGA] catalog description for English defaults +│ ├── cweb.d.ct [AMIGA] catalog translation for German users +│ ├── cweb.i.ct [AMIGA] catalog translation for Italian users +│ ├── dcweb.h [AMIGA,BCC] header file with the German strings +│ ├── ecweb.h [AMIGA,BCC] header file with the English default strings +│ └── icweb.h [AMIGA,BCC] header file with the Italian strings +├── comm-ansi.ch change file for common.w +├── comm-ansi.hch change file for common.h +├── comm-arexx.ch [AMIGA] change file for common.w +├── comm-arexx.hch [AMIGA] change file for common.h +├── comm-borlandc.ch [BCC] change file for common.w +├── comm-borlandc.hch [BCC] change file for common.h +├── comm-extensions.ch change file for common.w +├── comm-extensions.hch change file for common.h +├── comm-i18n.ch change file for common.w +├── comm-i18n.hch change file for common.h +├── comm-memory.ch [AMIGA,BCC] change file for common.w +├── comm-memory.hch [AMIGA,BCC] change file for common.h +├── comm-newpage.ch change file for common.w +├── common.cxx product of common.w and comm-foo.ch +├── comm-output.ch change file for common.w +├── comm-output.hch change file for common.h +├── comm-patch.ch change file for common.w +├── comm-texlive.ch change file for common.w +├── comm-texlive.hch change file for common.h +├── comm-translation.ch [AMIGA,BCC] change file for common.w +├── comm-translation.hch [AMIGA,BCC] change file for common.h +├── ctang-ansi.ch change file for ctangle.w +├── ctang-borlandc.ch [BCC] change file for ctangle.w +├── ctang-extensions.ch change file for ctangle.w +├── ctang-i18n.ch change file for ctangle.w +├── ctangle.1 clone of cweb.1 +├── ctangle.cxx product of ctangle.w and ctang-foo.ch +├── ctangle.dsp [MSVC] Developer Studio Project for CTANGLE +├── ctang-memory.ch [AMIGA,BCC] change file for ctangle.w +├── ctang-newpage.ch change file for ctangle.w +├── ctang-output.ch change file for ctangle.w +├── ctang-patch.ch change file for ctangle.w +├── ctang-texlive.ch change file for ctangle.w +├── ctang-translation.ch [AMIGA,BCC] change file for ctangle.w +├── ctwill.bux auxiliary file for CTWILL +├── ctwill.md manpage for CTWILL in markdown +├── ctwill-mini.ch auxiliary file for CTWILL +├── ctwill-refsort.1 manpage link to ctwill.1 +├── ctwill-texlive.ch change file for cweave.w/ctwill.w +├── ctwill-twinx.1 manpage link to ctwill.1 +├── cweav-ansi.ch change file for cweave.w +├── cweav-borlandc.ch [BCC] change file for cweave.w +├── cweave.1 clone of cweb.1 +├── cweave.dsp [MSVC] Developer Studio Project for CWEAVE +├── cweav-extensions.ch change file for cweave.w +├── cweav-i18n.ch change file for cweave.w +├── cweav-memory.ch [AMIGA,BCC] change file for cweave.w +├── cweav-newpage.ch change file for cweave.w +├── cweav-output.ch change file for cweave.w +├── cweav-patch.ch change file for cweave.w +├── cweav-texlive.ch change file for cweave.w +├── cweav-translation.ch [AMIGA,BCC] change file for cweave.w +├── cweav-twill.ch change file for cweave.w +├── cwebbin.dsw [MSVC] Developer Studio Workspace for all three +├── cwebbin.spec extended build recipe for debbuild +├── cwebinputs +│ ├── amiga_types.w keywords by Commodore and SAS +│ ├── c++1xlib.w Keywords for modern C++ standards +│ ├── cweb_ecma94.w Transliteration table for Latin-1 +│ ├── cweb_hp8.w Transliteration table for HP Roman 8 +│ ├── cweb_mac8.w Transliteration table for Mac 8-bit +│ └── cweb_pc850.w Transliteration table for Codepage 850 +│ ├── iso_types.w Keywords for ISO C/C++ standards +├── cwebman.ch change file for cwebman.tex +├── examples +│ ├── cct.w program to translate between character tables +│ ├── commonwords.w program to count word frequencies in text files +│ ├── extex-ansi.ch change file for extex.w +│ ├── Makefile.sas [AMIGA] makefile for SAS/C compiler 6.0 and up +│ ├── matrix.w C++ program to invert complex 4x4 matrices +│ ├── primes.ch changes for the first 1000000 prime numbers +│ ├── primes.w program to print the first 1000 prime numbers +│ ├── README.p11 extended description for the added examples +│ ├── sample.w program to produce random numbers +│ ├── treeprint-ansi.ch change file for treeprint.w +│ ├── wc-ansi.ch change file for wc.w +│ ├── wmerg-ansi.ch change file for wmerge.w +│ ├── wmerg-borlandc.ch [BCC] change file for wmerge.w +│ ├── wmerge.dsp [MSVC] Developer Studio Project for WMERGE +│ ├── wmerg-extensions.ch change file for wmerge.w +│ ├── wmerg-memory.ch [AMIGA,BCC] change file for wmerge.w +│ ├── wmerg-output.ch change file for wmerge.w +│ ├── wmerg-patch.ch change file for wmerge.w +│ └── wordtest-ansi.ch change file for wordtest.w +├── LICENSE MIT license +├── Makefile.bcc [BCC] makefile for Borland C/C++ +├── Makefile.sas [AMIGA] makefile for SAS/C compiler 6.0 and up +├── Makefile.unix makefile for cc, c89, gcc, ... on several machines +├── po +│ ├── cweb.pot Portable Object Template for i18n +│ ├── cweb-tl.pot Portable Object Template for i18n +│ ├── de +│ │ ├── cweb.po Portable Object for German t10n +│ │ ├── cweb-tl.po Portable Object for German t10n +│ │ └── web2c-help.po Portable Object for German t10n +│ ├── it +│ │ └── cweb.po Portable Object for Italian t10n +│ └── web2c-help.pot Portable Object Template for i18n +├── prod-twill.ch change file for prod.w/CTWILL +├── README.md Github project description +├── README.txt the current file +├── system.bux auxiliary file for CTWILL +├── texinputs +│ ├── cweb_ecma94.sty Umlauts and special characters for Latin-1 +│ ├── cweb_hp8.sty Umlauts and special characters for HP Roman 8 +│ ├── cweb_mac8.sty Umlauts and special characters for Macintosh +│ ├── cweb_pc850.sty Umlauts and special characters for IBM 850 +│ ├── dctwimac.tex German captions in addition to ctwimac.tex +│ ├── dcwebmac.tex German captions in addition to cwebmac.tex +│ ├── dcwebstrings.tex Common German captions +│ ├── dproofmac.tex German captions in addition to proofmac.tex +│ ├── fcwebmac.tex French captions in addition to cwebmac.tex +│ ├── icwebmac.tex Italian captions in addition to cwebmac.tex +│ └── Xcwebmac.tex beautifications for cwebmac.tex +└── texlive.w introduction to *-w2c.ch change files + +%%% HOW TO CREATE THE BINARIES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +[UNIX/Linux, GCC] The current setup of CWEBbin has been created on a Linux PC + running GNU/Linux including the gcc/g++ compiler and the TeXLive system. + Any similar setup should also work. All set? + -- Then proceed as follows: + + 1. Check the entries in Makefile.unix for local conditions like a + different compiler name or additional compiler options you want to + use. Check also the other lines in Makefile.unix so that all + directory definitions are set properly for your local system + configuration. + + 2. If you want to create the ctangle and cweave binaries for a + different language than English, set a link from one of the + `[dei]cweb.h' header files to `cweb.h' in the ./catalogs directory. + + 3. Touch common.cxx and ctangle.cxx to make them up-to-date. Then say + `make -f Makefile.unix boot'; this will create a local ctangle binary + simply by compiling the distributed .cxx files. + + 4. To make ctangle, cweave, and the wmerge processor say `make -f + Makefile.unix [all]'. To get some reassurance that things are OK, you + can say `make cautiously', which ensures that ctangle will reproduce + itself. (Otherwise the source files common.w and ctangle.w won't + actually have been used.) + + 5. After all is set, you should become `superuser' and run `make -f + Makefile.unix install'; this will install the binaries, the TeX macros + and CWEB @include files, and some documentation in places specified in + Makefile.unix. + + 6. If you want a full documentation of the tangle and weave programs, + type `make -f Makefile.unix docs' or preferably `make -f Makefile.unix + fullmanual'. The documentation created will include all changes + introduced by the .ch files. + + 7. To delete all intermediate files created in the make processes say + `make -f Makefile.unix clean'. + + 8. To remove the complete patch from the installed CWEB system, say + `make -f Makefile.unix remove'. You will be left with the original + CWEB system. + + 9. To remove the complete base system leaving only the patch behind, + you can say `make -f Makefile.unix remove-orig'. + + 10. The other labels have not been tested seriously. :-) + +[AMIGA, SAS/C++ 6] I can no longer support this compiler and computer system + and most likely it's impossible to install CWEBbin with SAS/C++. The + source files common.cxx, common.h, and ctangle.cxx can definitely NOT + be used with SAS/C++ anymore. They were created on a Linux PC leaving + the Amiga stuff out. You will have to use an older ctangle binary to + create the TIE processor and then create the complete set of change + files according to Makefile.sas. Good luck! + +[MS/DOS, BORLAND C++ 3.1] I can no longer support this compiler and most + likely it's impossible to install CWEBbin with BC. The source files + common.cxx, common.h, and ctangle.cxx can definitely NOT be used with + BC anymore. They were created on a Linux PC leaving the + `*-borlandc.*' change files out. You will have to use an older + ctangle.exe binary to create the TIE processor and then create the + complete set of change files according to Makefile.bcc. Good luck! + +[MS/WINDOWS, MS/VC++ 4.1 and 6.0] I can no longer support this compiler and + most likely it is impossible to install CWEBbin with this version of + the Microsoft compiler. The current version of MS/VC++ is supported + through binary versions of CTANGLE and CWEAVE at + http://www.literateprogramming.com. + +%%% LIST OF FEATURES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +After the announcement of CWEB 3.3 [p11a] on news:comp.programming.literate +and news:comp.text.tex there have been questions: ``What's different in your +CWEB system in respect to the original system? Why should programmers use +your's instead of the Levy/Knuth distribution?'' + +So here are some words about the `special features': + + - [GENERAL] The complete source code can (or at least at some point of time + could) be recompiled with SAS/C for AmigaOS, with Borland C/C++ 3.1 for + MS/DOS, with MS/VC++ 4.1 and 6.0 for MS/Windows, and with CC, C89, and + GCC for UNIX without the need for further changes. Well, to be honest, + the complete source code was only compiled using GCC. + + - [GENERAL] The `+l' (or `-l') option with its argument `X' causes CWEAVE + to prepend `X' to `cwebmac.tex' in the first line of the output file. + `X' may be any string of characters (case dependent and possibly empty), + e.g., if you called CWEAVE with the option `+ldansk', the danish macro + file `danskcwebmac.tex' (if there's such a thing) would be included + instead of `cwebmac.tex'. The macro file `Xcwebmac.tex' itself contains + some modifications to the original `cwebmac.tex' file as described in the + documentation. At the time of writing there are macro packages + `dcwebmac.tex' by Andreas Scherer for German users, `icwebmac.tex' by + Giuseppe Ghibò for Italian users, and `fcwebmac.tex' by Denis B. Roegel + for French users. These macro files translate all captions used by the + CWEAVE processor into the respective languages and also include support + for special characters like umlauts (diacritics) and some other + frequently used specials according to ISO Latin-1, IBM PC International + Codepage 850, Macintosh 8-bit font table and HP Roman 8. Similar + packages for other languages can easily be added to this scheme. To date + there are no conflicting languages, so single-character strings are used. + However, there is no support for UTF-8 at this time. + + - [GENERAL] <Obsolete> As of March 1997 five new macros with the prefix + `pdf' are available. Together with the "tex2pdf/pdftex" system they + enable the presenation of CWEB source code in "Hyper CWEB" form, i.e., + all section references and the table of contents are hyperlinked and can + be used in PDF readers. Call "cweave -lpdf" (or "cweave -lpdfd", etc.) + to include the respective macro file in the TeX output, before running + "pdftex". </Obsolete> As of July 2000 these macros are united with the + generic macros, i.e., `cwebmac.tex' can be used with "plain TeX," "plain + TeX + dvipdfm," and "pdftex." + + - [GENERAL] There are transliteration tables `cweb_ecma94.w', `cweb_hp8.w', + `cweb_mac8.w', and `cweb_pc850.w' for @inclusion in limbo. These files + \input the associated TeX macro files `cweb_ecma94.sty', `cweb_hp8.sty', + `cweb_mac8.sty', and `cweb_pc850.sty' with i18n support of extended code + tables. These macros can, of course, also be used independently of + the CWEB files and have been set up to work as `packages' for LaTeX + as well. The option `+a' of former versions of the AMIGA installation + is now replaced by the file `amiga_types.w' that can be `@i'ncluded in + the source files where needed. + + - [GENERAL] Both CTANGLE and CWEAVE are fully localized for other natural + languages than the English default. See the 'po/' directory for the + files used with the "GNU gettext utilities". + <Obsolete>#include files with the English, German, and Italian strings + are provided in the ./catalogs directory for non-localized operating + systems. On AmigaOS 2.1/3.0 localization is done with the help of + language catalogs and the system `locale.library'. Default is (of + course) English; catalogs descriptions for German and Italian are + provided and other language catalogs can easily be added.</Obsolete> + + - [GENERAL] An algorithm for recursive `@i'nclude file search was adapted + from the Web2c implementation of TeX and METAFONT. The weave and tangle + processors as well as wmerge now recognize the environment variable + CWEBINPUTS. When an include file name (argument to the @i command) can + not be found in the current directory or in the absolute path, a + multi-path search is performed. CWEBINPUTS---if not empty---may contain + a list of search path names, delimited by PATH_SEPARATORs, e.g., colons. + The current directory is represented by an empty path entry, but it is + searched first anyway. In the respective makefiles for AMIGA, UNIX and + MS/DOS some decent defaults are set in the compile time constant + CWEBINPUTS, which always is appended to any environment variable, so you + don't have to repeat the defaults. + + - [GENERAL] The `-o' option was added in connection with Carsten Steger's + `-i' option. Both affect typographic niceties in the woven output. + + - [GENERAL] The output files of CTANGLE and CWEAVE are only written when + there are significant changes to their contents, i.e., when a CWEB source + creates multiple output files, only those modules effected by changes + will be recompiled in the `make' process. This mechanism was taken from + Preston Briggs's NUWEB program, to whom credit is due. + + - [GENERAL] Five additional CWEB example programs are included as examples + for the portability between PASCAL-WEB and C-CWEB and for the usage of + the C++ features of version 3.1. The fifth example program is a simple + text converter for files with extended character codes of ISO-Latin-1, + PC-850, MAC 8-bit font, and HP 8-bit font. + + - [GENERAL] The latest release of CWEBbin is fully compatible with the + "TeX Live" system. 'cwebbin.spec' and 'Makefile.unix' are prepared to + work with the '--with texlive' option. This appends and merges the + *-texlive.* change files and creates a set of *-w2c.ch change files and + an extended comm-foo.h @include file. These files are drop-in + replacements for the hand-coded files used in the TL ecosystem. + + - [GENERAL] The latest latest release of CWEBbin includes CWEAVE's + 'evil twin' CTWILL, together with its utility programs 'refsort' and + 'twinx', and the associated TeX macros. + + - [AMIGA] Two AREXX scripts for use with the CygnusEd Professional Editor + were added to this package, one for CTANGLE and CWEAVE, localized with + the help of language catalogs under AmigaOS version 2.1 or 3.0, the other + for use with the SAS/C 6.x compiler in connection with CED V3.5. + + - [AMIGA] All three system programs support the `version' information + command of the Amiga operating system. + + - [AMIGA] All three system programs are compiled in the NEAR data segment + and can be made `resident'. + + - [AMIGA] The `+m' option enables ARexx communication between CWEB and the + SAS/C message browser SCMSG. Any warnings or error messages are + transferred to its list window. The behaviour of this feature can be + controlled via the external environment variable SCMSGOPT, which may be + set to any legal option string as described in the documentation of the + SAS/C development system by SAS Institute. + +%%% A BIT OF HISTORY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Patch level [p9b] of this implementation introduced localization to other +languages than English. All output strings of ctangle and cweave were +replaced by variable references to an array AppStrings in cweb.h (also new), +set to the English defaults at startup time. This works for all systems and +compilers in a compatible way. However, version 2.1 of the AMIGA operating +system introduced the use of language catalogs, thus enabling programs and +applications to be inherently multilingual without recompilation. To +activate this feature, you only have to install AmigaOS 2.1/3.0. Catalogs +for various natural languages are already present at the correct place +(./catalogs/), so ctangle and cweave will greet you in any of these +languages, if you start them from their home directory ./bin and if your +system default language is supported. If you want to use CTANGLE, CWEAVE, +and WMERGE as resident programs, you have to move the language catalogs to +the appropriate directories of the LOCALE: drawer. Catalog translations for +other languages can easily be installed. The author of this distribution +would be grateful to receive catalog translations for other languages for +inclusion in future versions. + +Patch level [p9d] of this implementation introduced dynamic memory allocation +for all internal arrays except for `flags[256]'. By this method both ctangle +and cweave can be compiled in the `NEAR' data segment, so on the AMIGA they +can be made `resident', i.e., they can reside in RAM and don't have to be +loaded from disk after the first time. Patch level [p9d] also introduced an +ARexx communication facility between CWEB (i.e., ctangle and cweave) and the +`Message Browser' SCMSG, included in the SAS/C 6.X development system. If +you run CWEB with the `+m' option, any error messages will be displayed in +the window of SCMSG. The default setting is `off'. You can control the +behaviour of this feature by setting the environment variable SCMSGOPT to +a string with any legal command line options for SCMSG as described in the +documentation provided with the compiler package by SAS Institute. If the +environment variable is not set, the default behaviour of SCMSG will be used. +Patch level [p9d] was evaluated on July 1, 1994, by Andreas Scherer and +Burkhard Schmitt of Bayreuth University with CC and GCC on a HP Apollo +workstation and a Sun 4 workstation and a SGI workstation, and on July 2, +with Borland C/C++ version 3.1 on a MS/DOS machine without any problems. + +Patch level [p10] was released to the AmiNet and the Comprehensive TeX +Archive Network (CTAN) in August 1994. At least one user had problems +installing the MS/DOS version. + +Patch level [p11] was released to the AmiNet and the Comprehensive TeX +Archive Network (CTAN) in December 1994. Only two days later another +update of CWEB 3.3 was released in Stanford, so a new patch level [p11a] +had to be created and released in mid-December 1994. In January 1995 the +successful installation on at least two more systems has been notified. +The first is MS/DOS with GCC, the second OS/2 in genuine mode, both working +with Makefile.unix (and the obvious modifications). + +%%% CREDIT WHERE CREDIT IS DUE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +I want to express my deep gratitude to Silvio Levy and Donald Knuth for the +marvelous tool they provided us with. Also I am indepted to my various pre- +and co-workers on whose initial ideas and contributions this package is based. + + +Happy CWEBbin'! + +January 1, 2019. + +Andreas Scherer + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/web/c_cpp/cwebbin/README.md b/web/c_cpp/cwebbin/README.md new file mode 100644 index 0000000000..245a1a232c --- /dev/null +++ b/web/c_cpp/cwebbin/README.md @@ -0,0 +1,58 @@ +# literate programming in ansi-c/c++ + +*cwebbin* is the ansi-c/c++ implementation of silvio levy's and donald e. +knuth's [cweb system](http://www-cs-faculty.stanford.edu/~uno/cweb.html) and +donald e. knuth's [ctwill program](ftp://ftp.cs.stanford.edu/pub/ctwill). it +requires the contents of [the original source +drop](http://mirrors.ctan.org/web/c_cpp/cweb/cweb.tar.gz) and [the secondary +source drop](ftp://ftp.cs.stanford.edu/pub/ctwill/ctwill.tar.gz), to which it +applies a set of change files to fix warnings issued by modern c/c++ compilers +and to introduce advanced features. see the extensive [readme](README.txt) for +the full story. + +extract *cwebbin-2019.tar.gz* and add the contents of *cweb-3.64c.tar.gz* and +*ctwill.tar.gz* for the full set of source files. unix/linux users should work +with [make -f Makefile.unix](Makefile.unix) exclusively (targets ‘boot,’ +‘cautiously,’ and ‘all’). + +## advanced packaging + +alternatively, you may want to use *rpmbuild* or *debbuild* for compiling the +sources and for creating installable packages in *rpm* and *deb* format. clone +[cweb](https://github.com/ascherer/cweb) and +[cwebbin](https://github.com/ascherer/cwebbin), create the source drops with +``` +git archive -o cweb-3.64c.tar.gz cweb-3.64c +git archive -o cwebbin-2019.tar.gz cwebbin-2019 +``` +respectively, put these two tarballs and the original *ctwill.tar.gz* in the +*SOURCES* directory and *cwebbin.spec* in the *SPECS* directory of your build +arena, and run +``` +rpmbuild -ba SPECS/cwebbin.spec +debbuild -ba SPECS/cwebbin.spec +``` +depending on your preferences. + +## plain vanilla cweb + +if all you want is the original cweb without any add-ons but minus heaps of +compiler warnings, use the special option `--with ansi_only` to include only +the minimal changes required for a clean compilation. +``` +rpmbuild -ba SPECS/cwebbin.spec --with ansi_only +debbuild -ba SPECS/cwebbin.spec --with ansi_only +``` + +## cweb for texlive + +the extended sources and the build system were modified to smoothly integrate +with the [texlive build system](https://github.com/TeX-Live/texlive-source). by invoking +``` +debbuild -bi SPECS/cwebbin.spec --with texlive +``` +you receive a small tarball `cweb-texlive.tar.gz`, which should be extracted in +texlive's source directory `texk/web2c/cwebdir`. this tarball contains +`*-w2c.ch` files that modify the original cweb sources for the texlive +ecosystem. additionally, it contains language catalogs, tex macros, and cweb +include files. |