diff options
Diffstat (limited to 'dmake/readme/public/unix.txt')
-rw-r--r-- | dmake/readme/public/unix.txt | 171 |
1 files changed, 171 insertions, 0 deletions
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". |