1 UNIX specific information for dmake. This information is provided in the
2 hope that it makes it easier to install and recompile dmake under UNIX.
3 I will be happy to hear of erroneous information and will make every effort
7 1. ENVIRONMENT VARIABLE SETTINGS
9 There are many environment variable settings available for UNIX. Each
10 option is described below.
14 OSRELEASE - bsd43 # generic BSD 4.3
15 - solaris # Solaris environments
16 - sysvr1 # System V R1
17 - sysvr3 # System V R3
18 - sysvr4 # System V R4
20 - 386ix # Sun IPX 386 boxen
21 - coherent # Coherent...
24 OSENVIRONMENT - uw # U of Waterloo mfcf environment for BSD4.3
25 - vf # for environments needing vfprintf
26 - pwd # for environments needing new pwd
27 - gcc # for GCC compiles with Solaris2.3 and greater
28 - verxx # for specific OS versions.
31 The table below lists valid combinations for settings of OS, OSRELEASE, and
34 OS OSRELEASE OSENVIRONMENT
35 -- --------- -------------
51 You must set OS and OSRELEASE, OSENVIRONMENT to correspond to one of the
52 configurations in the above table.
55 2. IMPLEMENTATION NOTES
57 Bootstrapping the binary:
58 -------------------------
59 A 'makefile' file is provided to bootstrap the binary. The file contains
60 many targets for bootstrapping. Issuing 'make' will provide the list of
61 possible targets that can be built. A restricted sample is shown below:
63 INDEX: You must specify 'make target' where target is one of:
65 make bsd43 - Generic BSD 4.3 System
66 make bsd43uw - Generic BSD 4.3 at U of Waterloo
67 make bsd43vf - Generic BSD 4.3 that needs vfprintf
68 make sysvr4 - Generic SysV R4 UNIX System
69 make sysvr3 - Generic SysV R3 UNIX System
70 make sysvr3pwd - Generic SysV R3 UNIX System, our PWD
71 make sysvr1 - Generic SysV R1 UNIX System
72 make dynix - Sequent DYNIX System
74 make ultrix - Ultrix 3.0 System
75 make mips - Any MIPS System
76 make coherent40 - Any Coherent Version 4.0 System
77 make coherent42 - Any Coherent Version 4.2 or greater System
79 make 386ix - 386/ix (SysV R3) System
80 make xenix - 386 Xenix System
81 make xenixpwd - 386 Xenix System, our PWD
82 make aix - IBM RS6000/AIX System
83 make Solaris - SUN Solaris 1.0 to 2.0
84 make Solaris2.1 - SUN Solaris 2.1 or greater
85 make gccSolaris2.1 - SUN Solaris 2.1 or greater with gcc
87 The above shows only the possible builds for UNIX like operating systems.
88 Choose the one that best suits your needs and issue the command
93 Using dmake to Make itself:
94 ---------------------------
95 If you use dmake to make itself you must first set a number of makefile
96 control variables, either through the environment or on the command line.
98 The following variables must be set:
100 OS - defines operating system (must be set)
101 OSRELEASE - particular version of it.
102 OSENVIRNOMENT - more customization
104 These three variables should be defined in your environment. Valid values
105 for UNIX are listed above in Section 1. You must chose one a setting from
106 the table that best matches your system.
108 Once set simply issue the command: 'dmake' and the sources will be
109 automatically rebuilt. You do not need to specify a target when you
110 use dmake and the environment variables are correctly set.
113 .NAMEMAX and length of file names:
114 ----------------------------------
115 dmake assumes that no file name component has a name longer than .NAMEMAX
116 (a user-settable variable, see the man page). Files whose basename is
117 longer than .NAMEMAX return a timestamp of 0 when statted. The reason for
118 this test is to handle broken versions of stat that return non-zero times
119 for stating files that are longer than the legal file name length but for
120 which a file whose name is the legal maximum file name length and is a prefix
121 of the longer name exists. This used to cause infinite loops in the inference
124 As a result the value of .NAMEMAX is important. dmake attempts to determine
125 it at from your system header files when compiled however sometimes even these
126 may be erroneous thus as a result as of dmake 4.0 users may set the value of
127 .NAMEMAX to any value they wish.
132 By default the maximum length of library member names is defined in the the
133 ar.h header file and is usually 14. Elf libraries allow for a arbitrarily
134 long member names, if your archiver supports the elf archiver extension for
135 long member names then edit the file unix/arlib.c and set the CHECKELF define
136 to indicate that the Elf archiver extension is to be checked for.
138 If Elf is not supported and your archiver truncates member names you should
139 set (in unix/arlib.c) the macro AR_TRUNCATE_MEMBER_NAMES. dmake will then
140 also truncate member names and perform a length limitted comparison when
141 scanning the library for matching member names.
144 UNIX Sysv R3 and getcwd:
145 ------------------------
146 Some versions of UNIX SysV R3 and Xenix use the popen call to capture the
147 output of pwd when invoking the C library function getcwd(). These versions
148 of the function cause dmake to terminate with the "lost a child" message
149 due to the fact that the parent dmake process may catch the pwd and not
150 recognize it as a child. For systems that have this problem use the version
151 of dmake that supplies its own getcwd function. The settings are:
157 It is directly available through the 'makefile' by typing one of:
162 both include the getcwd code but the xenixpwd target compiles for a Xenix
168 Some compilers do not yet provide the "limits.h" file, if yours is one of
169 these then simply copy the file "namemax.h" in the source root directory to
170 "limits.h". Make sure the length of a file name is correctly set in
171 "limits.h" as it is processed prior to "namemax.h".