diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-22 14:33:37 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-22 14:33:37 +0000 |
commit | b501a54cf959bc549810fb24ca6f9584dc5c9cf3 (patch) | |
tree | b78fbbc5c0f6959529f2553e3bbb83b077eaa17c /dmake/readme | |
parent | 17e0108b4e8d91f9acfe376ee231418830392460 (diff) |
initial import
Diffstat (limited to 'dmake/readme')
-rw-r--r-- | dmake/readme/intro.txt | 43 | ||||
-rw-r--r-- | dmake/readme/license.txt | 248 | ||||
-rw-r--r-- | dmake/readme/public/install.txt | 203 | ||||
-rw-r--r-- | dmake/readme/public/mac.txt | 43 | ||||
-rw-r--r-- | dmake/readme/public/msdos.txt | 124 | ||||
-rw-r--r-- | dmake/readme/public/os2.txt | 76 | ||||
-rw-r--r-- | dmake/readme/public/qssl-qnx.txt | 5 | ||||
-rw-r--r-- | dmake/readme/public/srcorg.txt | 74 | ||||
-rw-r--r-- | dmake/readme/public/tos.txt | 31 | ||||
-rw-r--r-- | dmake/readme/public/unix.txt | 171 | ||||
-rw-r--r-- | dmake/readme/read1st.txt | 41 | ||||
-rw-r--r-- | dmake/readme/release.txt | 194 |
12 files changed, 1253 insertions, 0 deletions
diff --git a/dmake/readme/intro.txt b/dmake/readme/intro.txt new file mode 100644 index 000000000000..c68ef005dd23 --- /dev/null +++ b/dmake/readme/intro.txt @@ -0,0 +1,43 @@ +DMAKE 4.1 [http://dmake.wticorp.com/] +---------------------------------------------------- + +The dmake home page can be found at: + + http://dmake.wticorp.com/ + +Visit there for the latest in dmake related information. + +dmake is different from other versions of Make in that it supports significant +enhancements (See the WWW page). A short summary of the more important +features follows: + + . support for portable makefiles + . portable accross many platforms + . significantly enhanced macro facilities + . sophisticated inference algorithm supporting transitive closure + over the inference graph + . support for traversing the file sytem both during making of targets + and during inference + . %-meta rules for specifying rules to be used for inferring + prerequisites + . conditional macros + . local rule macro variables + . proper support for libraries + . parallel making of targets on architectures that support it + . attributed targets + . text diversions + . group recipes + . swapping itself to DISK under MSDOS + . supports MKS extended argument passing convention + . directory caching + . highly configurable + +Additional information pertaining to installation can be found in either the + + gold/ - sub-folder for the Dmake Gold release + public/ - sub-folder for the Damke public release + +Release notes for this release of dmake can be found in the file + + release.txt + diff --git a/dmake/readme/license.txt b/dmake/readme/license.txt new file mode 100644 index 000000000000..3c68f02bb420 --- /dev/null +++ b/dmake/readme/license.txt @@ -0,0 +1,248 @@ + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. +You can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any work containing the +Program or a portion of it, either verbatim or with modifications. Each +licensee is addressed as "you". + + 1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +General Public License and to the absence of any warranty; and give any +other recipients of the Program a copy of this General Public License +along with the Program. You may charge a fee for the physical act of +transferring a copy. + + 2. You may modify your copy or copies of the Program or any portion of +it, and copy and distribute such modifications under the terms of Paragraph +1 above, provided that you also do the following: + + a) cause the modified files to carry prominent notices stating that + you changed the files and the date of any change; and + + b) cause the whole of any work that you distribute or publish, that + in whole or in part contains the Program or any part thereof, either + with or without modifications, to be licensed at no charge to all + third parties under the terms of this General Public License (except + that you may choose to grant warranty protection to some or all + third parties, at your option). + + c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the simplest and most usual way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this General + Public License. + + d) You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + +Mere aggregation of another independent work with the Program (or its +derivative) on a volume of a storage or distribution medium does not bring +the other work under the scope of these terms. + + 3. You may copy and distribute the Program (or a portion or derivative of +it, under Paragraph 2) in object code or executable form under the terms of +Paragraphs 1 and 2 above provided that you also do one of the following: + + a) accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + b) accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal charge + for the cost of distribution) a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of + Paragraphs 1 and 2 above; or, + + c) accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + +Source code for a work means the preferred form of the work for making +modifications to it. For an executable file, complete source code means +all the source code for all modules it contains; but, as a special +exception, it need not include source code for modules which are standard +libraries that accompany the operating system on which the executable +file runs, or for standard header files or definitions files that +accompany that operating system. + + 4. You may not copy, modify, sublicense, distribute or transfer the +Program except as expressly provided under this General Public License. +Any attempt otherwise to copy, modify, sublicense, distribute or transfer +the Program is void, and will automatically terminate your rights to use +the Program under this License. However, parties who have received +copies, or rights to use copies, from you under this General Public +License will not have their licenses terminated so long as such parties +remain in full compliance. + + 5. By copying, distributing or modifying the Program (or any work based +on the Program) you indicate your acceptance of this license to do so, +and all its terms and conditions. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. + + 7. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of the license which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +the license, you may choose any version ever published by the Free Software +Foundation. + + 8. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19xx name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/dmake/readme/public/install.txt b/dmake/readme/public/install.txt new file mode 100644 index 000000000000..a5ee339d2730 --- /dev/null +++ b/dmake/readme/public/install.txt @@ -0,0 +1,203 @@ + DMAKE UNPACKING AND INSTALLATION INSTRUCTIONS + + +We attempt to keep the information presented here accurate. However, the +defacto location of the most up to date information is the dmake WWW site +found at: + + http://dmake.wticorp.com/ + +DMAKE is available in several formats: a compressed tar src archive, +a pkzip src archive, a variety of executable archives. Refer to the +appropriate section below for unpacking instructions. + + +1. UNPACKING THE DISTRIBUTION FILES + + OPTION 'A' (compressed tar src archive): + -------------------------------------- + Assumption: The current directory contains the latest version of dmake in + the file 'dm41src.tgz'. + + This file is a standard GNU zip compressed tar archive. To unpack the file + issue the following command. gunzip is available for most UNIX platforms + as well as DOS. + + gunzip -c dm41src.tgz | tar xf - + + + OPTION 'B' (src zip archive): + ----------------------------- + Assumption: The current directory contains the latest version of DMAKE in + the file dm41src.zip. + + To unpack the full zip distribution simply use pkunzip with the + following command: + + pkunzip dm41src.zip + or + unzip dm41src.zip + + + Instructions for unpacking executable only versions are given on the + dmake WWW site. + + +2. BUILDING THE EXECUTABLE + + Skip this step if you have purchased a prebuilt binary distribution. + + The only supported method for building a new executable from a fresh or + patched distribution is to use the self building scripts rather than DMAKE + itself. This is necessary in order to allow for the use of new DMAKE + features and functionality in the DMAKE 'makefile' itself. Once built + the DMAKE executable can be used to rebuild DMAKE. + + To determine the set of supported environments issue the following + commands: + + cd src + make + + The output of this command will be a set of arguments representing the + supported environments that DMAKE can be compiled in. Choose the one + that most closely represents your environment and issue the command: + + make environ_tag + + where 'environ_tag' is from the previous list, for example on a Solaris + System the option is Solaris, so you would issue the command 'make Solaris'. + + The script runs the appropriate set of commands; upon completion the file + 'dmake' or 'dmake.exe' is found in the current directory. + This is the binary executable. + + Note: before issuing the build command please read Section 3 and decide + if you need or want to modify the pre-compiled value of MAKESTARTUP. + + During the build it is safe to ignore any warnings that may + be generated by your build. If you get errors from the build then + it is probably the case that you have chosen a build target that is + not compatible with your environment. + + +3. INSTALLING AND CONFIGURING THE EXECUTABLE + + To install the dmake executable place the executable into the + location where your system normally finds executables. That is + place dmake into a subdirectory that is or will be in your + executable search PATH. + + You can now issue the command 'dmake -V'; the output will be + similar to: + + dmake - Copyright (c) 1990,...,1996 by Dennis Vadura, Version 4.10, PL 0 + + Default Configuration: + MAXPROCESSLIMIT := 10 + MAXLINELENGTH := 8190 + .IMPORT .IGNORE: ROOTDIR + .MAKEFILES : makefile.mk Makefile makefile + .SOURCE : .NULL + MAKESTARTUP := $(ROOTDIR)/usr/local/lib/dmake/startup/startup.mk + + Please read the file readme/release for the latest release notes. + + + Take note of the line defining the value of MAKESTARTUP; to configure + the executable you must perform two steps: + + 1. Copy the <dmake-distdir>/startup subtree to a suitable location, + 2. Tell dmake where you put it, + + + Step 1: + ------- + The above example build of dmake assumes that the directory path (assuming + ROOTDIR is NULL) + + /usr/local/lib/dmake/ + + is a directory which contains a copy of the "<dmake-distdir>/startup" + subtree. Thus to properly configure dmake so that the precompiled + defaults would be used you would have to perform the following: + + cd <dmake-distdir> + mkdir /usr/local/lib/dmake + cp -r startup /usr/local/lib/dmake + + or if you are in the MSDOS or Windows-95/NT world: + + cd <dmake-distdir> + md \usr\local\lib\dmake + xcopy startup \usr\local\lib\dmake + + and you are done Step 1. + + + Step 2: + ------- + You must tell dmake where it is that you placed the "startup" subtree. If + the location is the directory that is pre-compiled into dmake then you + are done. If the directory where you copied the dmake subtree is not the + precompiled value you must either set the global environment variable + MAKESTARTUP to point at the new location of "startup/startup.mk" or you + must rebuild dmake with a new precompiled value of MAKESTARTUP. To do the + latter create the file: + + src/startup.h + + and make sure that it contains an entry similar to the following: + + /* This file contains the default value of the MAKESTARTUP variable. + * You must set the quoted string below to the default path to the startup + * variable, so that it gets compiled in. LEAVE ROOTDIR at the front of + * the path. This allows the user to customize his environment for dmake + * by setting up a new ROOTDIR environment variable. */ + + "MAKESTARTUP := $(ROOTDIR)/usr/local/lib/dmake/startup/startup.mk", + + (See src/msdos/startup.h for an example). Once set properly rerun your + previous build. In the rare instance that your compiler has broken + #include search rules, the shipped "startup.h" files are located in + architecture specific subdirectories as described in the file + "readme/srcorg". + + +4. DMAKE SPECIFIC ENVIRONMENT VARIABLES + + Once you have built dmake, the dmake startup directory contains the file + "config.mk". This file contains definitions corresponding to your installed + target environment for the variables: + + OS - Specifies the flavour of operating system. + OSRELEASE - Specifies the particular version of the operating + system. + OSENVIRONMENT - An optional configuration parameter for the operating + system release. + + Appropriate values for these variables are found in the + + <install-dir>/startup/templates/<OS>/<OSRELEASE>/<OSENVIRONMENT>/template.mk + + file. Select the OS, OSRELEASE, and OSENVIRONMENT that best suits your + setup (check readme.1st) for hints on selecting the most appropriate + settings. + + These three variables are used to determine the correct dmake configuration + when dmake starts up, and loads its builtin definitions from the startup + subtree hierarchy. The only time you should have a need to change these + values or the contents of the startup subtree is when you wish to supply + your own customized default environment or you are building dmake for a + new as yet unsupported target environment. + + +5. LOCALE SPECIFIC CONFIGURATION + + Locale specific macro definitions that are not part of the predefined macro + set should be placed into the file "startup/local.mk". This ensures that + future dmake releases will not overwrite your prior definitions. We + guarantee that the file "startup/local.mk" will never be part of any future + dmake distribution. + + diff --git a/dmake/readme/public/mac.txt b/dmake/readme/public/mac.txt new file mode 100644 index 000000000000..34a2dca5f820 --- /dev/null +++ b/dmake/readme/public/mac.txt @@ -0,0 +1,43 @@ +MAC specific information for dmake. This information is provided in the +hope that it makes it easier to install and recompile dmake in a MAC +environment. + + +1. ENVIRONMENT VARIABLE SETTINGS + +Only a single set of settings is available for the macintosh. There are no +sub-selections for specific OS release and/or environment. + + OS - mac + OSRELEASE - NULL + OSENVIRONMENT - NULL + + +2. IMPLEMENTATION NOTES + +This port for the Macintosh is specifically designed to be run +under MPW. + +I had to make a couple of changes to dmake in order to get it to work +on the Mac. First, MPW provides no documented way to run a +subprocess, so when you use dmake, you MUST use the -n option and +execute the output. Typically, you will probably want to write a +simple script file to do these operations for you. + +I added some code so that the Macintosh version of dmake can +use UNIX-style directories to specify include paths and target +and dependency file names. I.e., if you specify a file "/dir/file", +dmake will look at the file "dir:file". However, Mac dmake does not +do any translation from files specified by UNIX-style directories +in the recipe line that gets executed. If you need to translate, +you can use substitution commands. (For example, +":$(RELATIVEUNIXFILE:s,/,:,)".) This code was added so one could +execute dmake's makefile, and also so one would have an easier time +porting other UNIX makefiles. I would suggest you stick with +Macintosh-style directories for all other makefiles. + +In order to run dmake, you must set (and export) the environmental +variable "OS" to "mac". + +Micah Doyle +micah@leland.Stanford.EDU diff --git a/dmake/readme/public/msdos.txt b/dmake/readme/public/msdos.txt new file mode 100644 index 000000000000..72664843a644 --- /dev/null +++ b/dmake/readme/public/msdos.txt @@ -0,0 +1,124 @@ +MSDOS specific information for dmake. This information is provided in the +hope that it makes it easier to install and recompile dmake under MSDOS. +I will be happy to hear of erroneous information and will make every effort +to correct it. + +NOTE: If you are seeking information for Win32 compiles please refer to + the file "readme/winnt". + + +1. ENVIRONMENT VARIABLE SETTINGS + +There are many environment variable settings available for MSDOS. Each +option is described below. + + OS - msdos + + OSRELEASE - borland # Borland compilers + - microsft # Microsoft compilers + - zortech # zortech compilers (unsupported) + + OSENVIRONMENT - tcc20 # Borland Turbo C 2.0 + - bcc30 # Borland C++ V3.0 MSDOS compile + - bcc40 # Borland C++ V4.0 MSDOS compile + - bcc45 # Borland C++ V4.5 MSDOS compile + - bcc50 # Borland C++ V5.0 MSDOS compile + + - msc51 # Microsoft 5.1 Compiler MSDOS compile + - msc60 # Microsoft 6.0 Compiler MSDOS compile + + MSC_VER - 5.1 # Microsoft Compiler version + - 6.0 # Microsoft Compiler version + + +2. IMPLEMENTATION NOTES + +Bootstrapping the binary: +------------------------- + A make.bat file is provided to bootstrap the binary. The file contains + several targets for bootstrapping. Invoking the batch file with no + arguments lists the possibilities shown below. + + INDEX: You must specify one of: + tccswp - Turbo C 2.0 compile of swapping dmake. + bcc30swp - Borland C++ 3.0 compile of swapping dmake. + bcc40swp - Borland C++ 4.0 compile of swapping dmake. + bcc45swp - Borland C++ 4.5 compile of swapping dmake. + bcc50swp - Borland C++ 5.0 compile of swapping dmake. + + msc51 - Microsoft C 5.1 compile. + msc51swp - Microsoft C 5.1, MASM 5.1 compile of swapping dmake. + msc60 - Microsoft C 6.0 compile. + msc60swp - Microsoft C 6.0, MASM 5.1 compile of swapping dmake. + + Based on the compiler you have installed and whether or not you + want the swapping version of dmake, you should select the appropriate + target and issue 'make.bat target'. + + The batch file runs a second batch script that comes with the distribution + which compiles the sources using the appropriate compiler and flags. The + MSC Versions of the batch files should not require any further user + intervention during the build. The Borland versions, as a final step, + invoke tlink with two response files. The second of these response files, + named in msdos/borland/{bcc*,tcc20}/mk*.bat, contains absolute path names to + Borland's libraries. You likely need to edit these before getting a + successful binary linked. The reason for this is that not all of us + install the Borland compiler in the same place. + + Note that the file msdos/exec.uue is a uuencoded version of a BCC++ + compiled exec.obj (from exec.asm). If you do not have an assembler + either microsoft MASM or Borland TASM (or some other), you can uudecode + this file and put it into src/objects/exec.obj. The build will then + link against it to build your binary. + + +Using dmake to Make itself: +--------------------------- + See the file "readme/install" for information on building dmake by using + dmake itself. Once successfully built using the presupplied scripts it + should be straight forward to rebuild dmake. + + +Memory Requirements and Swapping: +--------------------------------- + The swapping code currently only swaps to DISK, there are hooks + in the code to accomodate XMS and EMS, but have not been used (and + probably never will). + + It appears that a ramdisk seems to work just fine. If anyone + wishes to fill in the hooks please do so and send us the differences. + + +^C and stopping a make: +----------------------- + Thanks to the efforts of Len Reed, appears to now work. I have been unable + to hang my machine if it's swapped out and I hit ^C a couple thousand times. + + +Other notes: +------------ + dmake does not care if you are running command.com or some other command + interpretter, you must however specify the proper values of the environment + variables SHELL, SHELLFLAGS, GROUPSHELL, and GROUPFLAGS in order for things + to work correctly. Read the man page FIRST, if you still have trouble + then send email. + + Group recipes under DOS that use command.com as the command interpretter + require you to set the GROUPSUFFIX macro. + + As shipped the startup.mk files for the DOS version try to figure out what + command interpretter you are using and set things up appropriately. + Two command interpretters are supported in the shipped startup.mk file, + command.com, and the MKS Korn shell. + + The dos version of dmake contains one builtin command. noop which + simply ignores the remainder of the line and always retuns success, + + dmake supports the MKS argument passing conventions. The facility is + enabled by setting .MKSARGS:=1. It is set by default in the startup.mk file + if an MKS Korn shell is detected as being the active command interpretter. + + At this time there are no plans to support the other popular UNIX like + argument passing conventions available under DOS. We recommend you get + a copy of the MKS Toolkit from Mortice Kern Systems in Waterloo, Ontario, + Canada [http://www.mks.com/]. diff --git a/dmake/readme/public/os2.txt b/dmake/readme/public/os2.txt new file mode 100644 index 000000000000..5acf4cc6ab0a --- /dev/null +++ b/dmake/readme/public/os2.txt @@ -0,0 +1,76 @@ +OS/2 specific information for dmake. This information is provided in the +hope that it makes it easier to install and recompile dmake in a OS/2 +environment. + +Notes on the OS/2 implementation of dmake: +========================================== + +As shipped the DOS versions of dmake will run under OS/2 protected mode. +However, support for a full OS/2 version is also provided. The OS/2 version +will run in parallel under OS/2. + +Bootstrapping the binary: +------------------------- + A make.cmd file is provided to bootstrap the binary. The file contains + several targets for bootstrapping. Invoking the batch file with no + arguments lists the possibilities shown below. + + INDEX: You must specify one of: + ibm - IBM C2 compile. + + The only supported compiler under OS/2 is the Visual Age ICC compiler. + I have tested the build using this compiler. The resulting binary + performs proper directory caching and file-name case mapping for cached + directories and is capable of parallel target builds. The only known + limitation of the OS/2 implementation is the treatment of library time + stamps. Libraries do not have time stamps on members and the timestamp + of the library is used instead. + + +OS/2 Specifics +-------------- + + There is a small number of OS/2 specific features that need to be + stated. + + 1. The environment variables TMP as well as TMPDIR are checked for the + location of the directory where dmake should place any temporary files. + TMPDIR is checked before TMP. + + 2. Appropriate limits are setup for MAXPROCESSES and buffer sizes etc. + See output of 'dmake -V'. + + 3. By default dmake will look for the startup.mk file in the path: + + $(ROOTDIR)/dmake/startup/startup.mk + + This is more in keeping with OS/2 philosophy. You may still rename + and put it anywhere else you like by defining the MAKESTARTUP + environment variable. + + 4. Swapping the dmake binary to disk is not supported under OS/2. + + +Other notes: +------------ + dmake does not care if you are running cmd.exe or some other command + interpretter, you must however specify the proper values of the environment + variables SHELL, SHELLFLAGS, GROUPSHELL, and GROUPFLAGS in order for things + to work correctly. Read the man page first. + + Group recipes under OS/2 that use cmd.exe as the command interpretter + require you to set the GROUPSUFFIX macro. + + As shipped the startup.mk files try to figure out what + command interpretter you are using and set things up appropriately. + Two command interpretters are supported in the shipped startup.mk file, + cmd.exe (via COMSPEC), and the MKS Korn shell. + + dmake does not contain any builtin commands. It gets all commands it + executes from an external file system. It is therefore most useful if it + is used in conjunction with an environment similar to that provided by + the MKS Tool kit, or equivalent. + + dmake now supports the MKS argument passing conventions. The facility is + enabled by setting .MKSARGS:=1 and is set by default in the startup.mk file + if an MKS Korn shell is detected as being the active command interpretter. diff --git a/dmake/readme/public/qssl-qnx.txt b/dmake/readme/public/qssl-qnx.txt new file mode 100644 index 000000000000..80fc8b56aa4d --- /dev/null +++ b/dmake/readme/public/qssl-qnx.txt @@ -0,0 +1,5 @@ +QNX differs from UNIX only in that the library format is that of MSDOS and +as such the normal stating of library members does not work. QNX versions of +dmake stat the library instead of the members (as does the MSDOS +implementation). Otherwise see the readme/unix file for further unix related +information. diff --git a/dmake/readme/public/srcorg.txt b/dmake/readme/public/srcorg.txt new file mode 100644 index 000000000000..89ff914eec4b --- /dev/null +++ b/dmake/readme/public/srcorg.txt @@ -0,0 +1,74 @@ +SOURCE CODE ORGANIZATION: +------------------------- +The source code is organized as follows: + + dmake [source for all common functions] + | + | + ---------------------------- + | | | | | + unix tos qnx os2 msdos [source for OS specific functions] + | | | + -------------------- | ------------------- + | | | | | | | +386ix bsd43 sysvr[134] | tccdos bccdos mscdos [source for OSRELEASE + | | | specific functions] + | --------- ------------------ + | | | | | | + | ibm mscdos bcc30 bcc32 bcc40 + | + | + | + -------- + | | + uw vf [source for OSENVIRONMENT specific functions] + + +Each of the directories (eg. bsd43, mscdos, tccdos, and sysvr3) contain source +that is specific to that release of the OS (and possibly C-library) + + +CREATING A NEW VERSION: +----------------------- +To create yet another version of dmake you should follow the following steps. + +The sysvr3 version as sent is the base version, all dmake versions must provide +the equivalent of the functions defined in the sysvr3 directory, and MUST +provide the same semantics (MSDOS archive lib searches are an exception since +we cannot search libraries for timestamps in MSDOS, Actually the MKS version +of dmake does this, I don't have the inclination to add this code though). + +1. Create a new directory for the version you will be making at the level + that is appropriate. If it is a new OS then add the dir at the top level, + if it is a new version of UNIX then add it below the unix directory. + +2. Copy the files from the unix and unix/sysvr3 directories to the new dir. + (Or from any other directory sub-tree that is more appropriate) + +3. Not all OS/OSRELEASE combinations are compatible so in order to make + dmake on each, the particular directory may contain C-source for functions + present in the SVID SysV R3 distribution which are used by dmake but are + not supplied by the C-library in the target system. For example the bsd43 + directory contains source for tempnam.c since it is not provided with + the BSD C-library. Before writing a new version of the source file + check the other directories to see if one already exists. + +4. Under some systems the standard include files may be missing or incorrect. + eg. under BSD stdarg.h and string.h. If this is the case + you should create the proper .h file in the proper directory. + This works as expected as the compile line includes the flag -Idir + where dir is the configuration dir, (bsd43 for example) and any + standard include files will be searched for in dir before the compiler + looks in the normal places (if you have a sane compiler :-). + +5. Modify dmake.sh to contain the appropriate C compiler flags and link command + and to include any specific C files that you have had to add for this + version of dmake, and run the result through the shell. + (make the same changes to config.mk so that once you have a working copy of + dmake you can use it to bring itself up to date) + +6. Send me the changes :-) so that I can incorporate them into future + distributions. + +7. This should be all that you require to create a new version of dmake. + If you have any questions send e-mail to dvadura@plg.uwaterloo.ca diff --git a/dmake/readme/public/tos.txt b/dmake/readme/public/tos.txt new file mode 100644 index 000000000000..ddcc43104483 --- /dev/null +++ b/dmake/readme/public/tos.txt @@ -0,0 +1,31 @@ +Atari TOS specific information for dmake. This information is provided in the +hope that it makes it easier to install and recompile dmake in a TOS +environment. I do not own an ST. As a result I rely on others to insure that +this version of dmake works as advertized. If you have any problems with it +please fix them and send me the differences so that I can incorporate them +into future releases and patches. + + +1. ENVIRONMENT VARIABLE SETTINGS + +Only a single set of settings is available for Atari TOS. There are no +sub-selections for specific OS release and/or environment. + + OS - tos + OSRELEASE - NULL + OSENVIRONMENT - NULL + + +2. IMPLEMENTATION NOTES + +The code to compile on an Atari-ST using GCC was supplied by Edgar Roeder +(roeder@cs.uni-sb.de). I do not have an ST on which to verify the +distribution sources but I have no reason to believe them to not work. +If there are any problems please let Edgar or myself know. + +I know of no bugs or limitation to the Atari-ST implementation. Note that +it is similar to the DOS version but it does not swap itself out. This does +not appear to be as much of a problem on the Atari as it is on MSDOS boxes :-). +See the msdos specific info file for further information. + +-dennis diff --git a/dmake/readme/public/unix.txt b/dmake/readme/public/unix.txt new file mode 100644 index 000000000000..b50ab9afad1c --- /dev/null +++ b/dmake/readme/public/unix.txt @@ -0,0 +1,171 @@ +UNIX specific information for dmake. This information is provided in the +hope that it makes it easier to install and recompile dmake under UNIX. +I will be happy to hear of erroneous information and will make every effort +to correct it. + + +1. ENVIRONMENT VARIABLE SETTINGS + +There are many environment variable settings available for UNIX. Each +option is described below. + + OS - unix + + OSRELEASE - bsd43 # generic BSD 4.3 + - solaris # Solaris environments + - sysvr1 # System V R1 + - sysvr3 # System V R3 + - sysvr4 # System V R4 + - xenix # Xenix + - 386ix # Sun IPX 386 boxen + - coherent # Coherent... + - qnx # QNX + + OSENVIRONMENT - uw # U of Waterloo mfcf environment for BSD4.3 + - vf # for environments needing vfprintf + - pwd # for environments needing new pwd + - gcc # for GCC compiles with Solaris2.3 and greater + - verxx # for specific OS versions. + + +The table below lists valid combinations for settings of OS, OSRELEASE, and +OSENVIRONMENT. + + OS OSRELEASE OSENVIRONMENT + -- --------- ------------- + unix bsd43 + unix bsd43 uw + unix bsd43 vf + unix solaris + unix solaris gcc + unix sysvr1 + unix sysvr3 + unix sysvr3 pwd + unix sysvr4 + unix xenix + unix xenix pwd + unix 386ix + unix coherent ver40 + unix coherent ver42 + +You must set OS and OSRELEASE, OSENVIRONMENT to correspond to one of the +configurations in the above table. + + +2. IMPLEMENTATION NOTES + +Bootstrapping the binary: +------------------------- + A 'makefile' file is provided to bootstrap the binary. The file contains + many targets for bootstrapping. Issuing 'make' will provide the list of + possible targets that can be built. A restricted sample is shown below: + + INDEX: You must specify 'make target' where target is one of: + ------------- + make bsd43 - Generic BSD 4.3 System + make bsd43uw - Generic BSD 4.3 at U of Waterloo + make bsd43vf - Generic BSD 4.3 that needs vfprintf + make sysvr4 - Generic SysV R4 UNIX System + make sysvr3 - Generic SysV R3 UNIX System + make sysvr3pwd - Generic SysV R3 UNIX System, our PWD + make sysvr1 - Generic SysV R1 UNIX System + make dynix - Sequent DYNIX System + make linux - Linux + make ultrix - Ultrix 3.0 System + make mips - Any MIPS System + make coherent40 - Any Coherent Version 4.0 System + make coherent42 - Any Coherent Version 4.2 or greater System + make hpux - HP Unix + make 386ix - 386/ix (SysV R3) System + make xenix - 386 Xenix System + make xenixpwd - 386 Xenix System, our PWD + make aix - IBM RS6000/AIX System + make Solaris - SUN Solaris 1.0 to 2.0 + make Solaris2.1 - SUN Solaris 2.1 or greater + make gccSolaris2.1 - SUN Solaris 2.1 or greater with gcc + + The above shows only the possible builds for UNIX like operating systems. + Choose the one that best suits your needs and issue the command + + 'make target' + + +Using dmake to Make itself: +--------------------------- + If you use dmake to make itself you must first set a number of makefile + control variables, either through the environment or on the command line. + + The following variables must be set: + + OS - defines operating system (must be set) + OSRELEASE - particular version of it. + OSENVIRNOMENT - more customization + + These three variables should be defined in your environment. Valid values + for UNIX are listed above in Section 1. You must chose one a setting from + the table that best matches your system. + + Once set simply issue the command: 'dmake' and the sources will be + automatically rebuilt. You do not need to specify a target when you + use dmake and the environment variables are correctly set. + + +.NAMEMAX and length of file names: +---------------------------------- +dmake assumes that no file name component has a name longer than .NAMEMAX +(a user-settable variable, see the man page). Files whose basename is +longer than .NAMEMAX return a timestamp of 0 when statted. The reason for +this test is to handle broken versions of stat that return non-zero times +for stating files that are longer than the legal file name length but for +which a file whose name is the legal maximum file name length and is a prefix +of the longer name exists. This used to cause infinite loops in the inference +engine. + +As a result the value of .NAMEMAX is important. dmake attempts to determine +it at from your system header files when compiled however sometimes even these +may be erroneous thus as a result as of dmake 4.0 users may set the value of +.NAMEMAX to any value they wish. + + +Library Name Length: +-------------------- +By default the maximum length of library member names is defined in the the +ar.h header file and is usually 14. Elf libraries allow for a arbitrarily +long member names, if your archiver supports the elf archiver extension for +long member names then edit the file unix/arlib.c and set the CHECKELF define +to indicate that the Elf archiver extension is to be checked for. + +If Elf is not supported and your archiver truncates member names you should +set (in unix/arlib.c) the macro AR_TRUNCATE_MEMBER_NAMES. dmake will then +also truncate member names and perform a length limitted comparison when +scanning the library for matching member names. + + +UNIX Sysv R3 and getcwd: +------------------------ +Some versions of UNIX SysV R3 and Xenix use the popen call to capture the +output of pwd when invoking the C library function getcwd(). These versions +of the function cause dmake to terminate with the "lost a child" message +due to the fact that the parent dmake process may catch the pwd and not +recognize it as a child. For systems that have this problem use the version +of dmake that supplies its own getcwd function. The settings are: + + OS = unix + OSRELEASE = sysvr3 + OSENVIRONMENT = pwd + +It is directly available through the 'makefile' by typing one of: + + make sysvr3pwd + make xenixpwd + +both include the getcwd code but the xenixpwd target compiles for a Xenix +system. + + +UNIX and "limits.h": +-------------------- +Some compilers do not yet provide the "limits.h" file, if yours is one of +these then simply copy the file "namemax.h" in the source root directory to +"limits.h". Make sure the length of a file name is correctly set in +"limits.h" as it is processed prior to "namemax.h". diff --git a/dmake/readme/read1st.txt b/dmake/readme/read1st.txt new file mode 100644 index 000000000000..4c981d5f818d --- /dev/null +++ b/dmake/readme/read1st.txt @@ -0,0 +1,41 @@ +DMAKE 4.1 [http://dmake.wticorp.com/] +------------------------------------- + +This directory tree contains a number of files. Here is a short +description of what each file contains so that you do not need to +search as much. There is also a recommended order for reading them. + + read1st.txt - index of files found in the readme directory. + intro.txt - short note describing what 'dmake' is and where to + get it from. + release.txt - changes from previous release, and release specific + notes. + ../man - directory containing DMAKE manual page. + + patchX - release notes for patchX to the current release. + + gold/install.txt - installation instructions for the Dmake Gold release + public/install.txt - installation files for the Dmake public release + +The next group of files provides additional information for specific +platforms. These are found in the appropriate gold and public release +sub-folders. + + apple.mac - information for macintosh users + atari.tos - information for ATARI TOS users + msdos - information for MSDOS users + winnt - information for Win95 and WinNT users + os2 - information for OS/2 users + unix - information for UNIX users + qssl-qnx - information for QNX users + srcorg - information on the source code organization + +You should read the information in the first group of files. The +second group of files contains platform specific configuration +information and information that may assist you in building dmake on +the related target system. You need to read the relevant file only if +you are building the dmake executable from the source distribution +using 'dmake' itself, or if you want to create a new version of dmake. + +You can also obtain relevant dmake information by checking out the +Official Dmake Web pages at "http://dmake.wticorp.com/". diff --git a/dmake/readme/release.txt b/dmake/readme/release.txt new file mode 100644 index 000000000000..65a250dee881 --- /dev/null +++ b/dmake/readme/release.txt @@ -0,0 +1,194 @@ +DMAKE Version 4.1 +================= +FINAL FREE RELEASE OF DMAKE, REPLACES VERSION 4.0 + +Nature: This distribution advances dmake to Version 4.1, patch level 0. +------- This release adds significant functionality and eliminates + bugs that were introduced with release 4.0. + + +DETAILS OF ENHANCEMENTS/TWEAKS: +=============================== + +BUG FIXES: +---------- + +1. General clean up all over to fix small incompatibilities and obvious + typos. + +2. Fixed bug in getinp.c where buffer was being erroneously overwritten, + this caused the invalidation of the return address on the stack on + DOS systems. + +3. Fixed a bug that caused the "<target> is up to date" message to be + suppressed. + +4. Fixed a bug involving the value of $@ in conjunction with dynamic + prerequisites. + +5. Relegated the warning associated with duplicate entries in prerequisite + lists to a non-essential warning. Added an option flag -Vw to display + it if you wish to check your makefile for duplicate entries. Either way + the parser ignores duplicates. + +6. Better default action on checking out RCS targets. If an RCS target has + no directory prefix of its own it is checked out into the directory + which contains the RCS subdirectory, otherwise it ends up in its directory + qualified location. + +7. Improved the speed of lookups in the directory cache; handle mixed case + file name entries on OS/2 and Win95/NT. + +8. Improved prerequisite list generation for long prerequisite lists. + +9. Rearanged startup macro files to form an architectural hierarchy. + This greatly simplifies the maintenance of the startup files. They + might even be right at some point in the future. Please let me know if + you encounter difficulties, as I don't have access to all possible + platforms, this sub-hierarchy is bound to have ommisions at this release + and hence is intended to be evolutionary over time. + +10. A build that only touches targets (-t) uses the same algorithm to decide + valid names as a normal build. + +11. Conditional macro assignments fixed, and now work for builtin macro + variables as well. + + +NEW FEATURES: +------------- + +0. Complete reorganization of Dmake STARTUP scripts. Please refer to the + installation notes for details. THIS ONE IS IMPORTANT!!! + +1. Support for long archive member names if Elf is available, plus better + support for archivers that truncate member names (see comments in + unix/arlib.c for details). + +2. Added variable MAKEVERSION which contains a string indicating the current + version of dmake. + +3. Added the .EXECUTE attribute, see man page for details. + +4. Added the .ERRREMOVE attribute, see man page for details. + +5. Added support for gmake style if/else/endif, but only if not part of + a Group recipe. + +6. Added initial build target for Coherent version 4.2 UNIX + and for Windows-NT/Windows-95 32-bit app using Borland C++ 4.0,4.5, 5.0, + and Microsoft Visual C++ 4.0. + +7. MSDOS version now supports two builtin runtime commands, noop, and echo. + +8. Added new macro $(uniq list) which returns a sorted version of the + white space separated tokens in list such that there are no repetitions. + +9. Added the function macro $(echo list) which simply returns list. + This is most useful in conjunction with the new $(foreach ...) + function macro. + +10. Added gmake style function macro + + $(foreach,var,list data) + + where var and list are expanded, and the result is the concatenation of + expanding data with var being set to each white space separated token in + list in turn. For example: + + list = a b c + all : + echo [$(foreach,i,$(list) [$i])] + + will output + + [[a] [b] [c]] + + The iterator variable is defined as a local variable to this foreach + instance. The following expression illustrates this: + + $(foreach,i,$(foreach,i,$(sort c a b) root/$i) [$i/f.h]) + + when evaluated the result is: + + [root/a/f.h] [root/b/f.h] [root/c/f.h] + + The specification of list must be a valid macro expression, such as: + + $($(assign list=a b c)) + $(sort d a b c) + $(echo a b c) + + and cannot just be the list itself. That is, the following foreach + expression: + + $(foreach,i,a b c [$i]) + + yields: + + "b c [a]" + + when evaluated. + +11. Added the macro $(and list). + +12. Added the macro $(or list). + +13. Added the macro $(not term). + +14. Added the .NOINFER attribute to the .INCLUDE directive. When specified + any prerequisite of the .INCLUDE directive which cannot be found in + the .INCLUDEDIRS search list is not automatically made. + +15. Improved the handling of internal macros for proper functioning of the *= + and *:= assignment constructs. Macros that are internally initially + defined are considered to be undefined for the purpose of *= and *:= + assignment until they are the target of an explicit assignment operation. + +16. Improved the caching of file names, and their matching on case insensitive + file systems. Two control macros help to manage the functionality: + + .DIRCACHE := yes + + Implies that the directory cache will be used. This is on by default for + systems that support the reading of directories. Setting the value of this + macro to 'no' is equivalent to supplying the '-d' command line switch. + + .DIRCACHERESPCASE := yes + + Causes dmake to respect the case of the directory entries when the cache + is enabled, thereby treating directory entries in a case sensitive manner. + Setting this to 'no' disables the matching of case. This macro has effect + only if .DIRCACHE := yes. Otherwise the facilities provided by the native + OS are used to match file names using 'stat'. + +17. Added parameterized user defined function macros. Yes it's true + you may now define your own parametized function macros. Here is + how it works. Any macro that is not a predefined function macro and + is invoked with parameters is looked up as a user defined function + macro. A new macro scope is created. The n'th argument to the + macro is then assigned to the value of the the macro $n where n is 0 + for the first argument, 1 for the second argument and so on. The + argument is expanded before it is assigned. The original macro is + then expanded. For example: + + FOO = a $0 b $1 c $2 d + echo :; $(FOO x y z) + + Will produce the result string "a z b y c z d". The + expansion of $(FOO) on it's own behaves as expected and returns the + string "a b c d" (assuming that each of $0, $1, $2 + are undefined). The only restriction when specifying function + macro arguments is as before: they cannot contain spaces + themselves. + + +ACKNOWLEDGEMENTS: +================= + Thanks to all who submitted code for new features, suggestions for + improvements, and bug fixes. I have tried to make sure no gotchas + remain, if you encounter problems installing or running dmake please + let me know. As always, I am always happy to receive e-mail. + + Many have contributed suggestions and bug fixes that make this + release possible. The NET thanks you. |