update dev300-m58
[ooovba.git] / dmake / readme / public / unix.txt
blobb50ab9afad1c7439e9f4f94a45e0579fe8f534ee
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
4 to correct it.
7 1. ENVIRONMENT VARIABLE SETTINGS
9 There are many environment variable settings available for UNIX.  Each
10 option is described below.
12    OS - unix
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
19              - xenix            # Xenix
20              - 386ix            # Sun IPX 386 boxen
21              - coherent         # Coherent...
22              - qnx              # QNX 
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
32 OSENVIRONMENT.
34         OS              OSRELEASE               OSENVIRONMENT
35         --              ---------               -------------
36         unix            bsd43
37         unix            bsd43                   uw
38         unix            bsd43                   vf
39         unix            solaris
40         unix            solaris                 gcc
41         unix            sysvr1
42         unix            sysvr3
43         unix            sysvr3                  pwd
44         unix            sysvr4
45         unix            xenix
46         unix            xenix                   pwd
47         unix            386ix
48         unix            coherent                ver40
49         unix            coherent                ver42
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:
64    -------------
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
73       make linux         - Linux
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
78       make hpux          - HP Unix
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
90       'make target'
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
122 engine.
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.
130 Library Name Length:
131 --------------------
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:
153    OS = unix
154    OSRELEASE = sysvr3
155    OSENVIRONMENT = pwd 
157 It is directly available through the 'makefile' by typing one of:
159    make sysvr3pwd
160    make xenixpwd
162 both include the getcwd code but the xenixpwd target compiles for a Xenix
163 system.
166 UNIX and "limits.h":
167 --------------------
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".