office-gobmx/dmake/readme/public/unix.txt

172 lines
6.3 KiB
Text
Raw Normal View History

2000-09-22 09:33:37 -05:00
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".