1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
Update the m3build templates for FreeBSD-2.1 and later.
Index: m3/m3build/templates/COMMON
--- COMMON.orig Fri Feb 9 14:23:04 1996
+++ COMMON Fri Oct 25 13:48:57 1996
@@ -998,7 +998,7 @@
if HAVE_PKGTOOLS
_install_file (src, dest, "0755", "T")
else
- local target = format ("%s%s%s%s%s%s%s", PKG_USE, SL, BUILD_PACKAGE,
+ local target = format ("%s%s%s%s%s%s%s", LIB_TO_PKG, SL, BUILD_PACKAGE,
SL, BUILD_DIR, SL, src)
local link = format ("%s%s%s", dest, SL, src)
>> M3SHIP_FILE in
Index: m3/m3build/templates/FreeBSD2
--- FreeBSD2.orig Thu Jun 20 12:17:07 1996
+++ FreeBSD2 Fri Oct 25 13:47:16 1996
@@ -8,8 +8,9 @@
% Modified On Thu Apr 8 13:45:49 PDT 1993 by muller
%
% Sun Nov 27 20:19:31 MET 1994 by ow
+% Fri Feb 2 15:04:50 PST 1996 by jdp@polstra.com
%
-% FreeBSD 2.0 configuration (with shared library support in comments)
+% FreeBSD 2.1 and 2.2 configuration, with shared library support
%
%-------------------------------------------------- compilation environment ---
@@ -44,6 +45,8 @@
MAN_INSTALL = INSTALL_ROOT & "man" % man pages
HTML_INSTALL = INSTALL_ROOT & "lib/m3/www" % public hypertext
+WDROOT = $HOME & "/m3/pkg" % handy default for overrides
+
% The manual pages normally go in subdirectories man{1,...8} of
% the MAN_INSTALL directory. If you prefer to have them all in
% a single section, define MAN_SECTION to be that section's name.
@@ -56,7 +59,12 @@
LIB_USE = LIB_INSTALL
PKG_USE = PKG_INSTALL
-readonly INSTALL_IMPLS = "TRUE"
+% This is a relative path from LIB_USE to PKG_USE, so that we can avoid
+% installing absolute symbolic links. If you cannot support such relative
+% links, then make it the same as PKG_USE.
+LIB_TO_PKG = "../pkg"
+
+readonly INSTALL_IMPLS = ""
% "TRUE"
% => save all source files during the install
% => makes debugging easier and browsing more fruitful
@@ -90,15 +98,17 @@
% "import_TCP" is called from the tcp package.
readonly proc import_X11R4() is
- import_lib("Xaw", "/usr/X386/lib")
- import_lib("Xmu", "/usr/X386/lib")
- import_lib("Xext", "/usr/X386/lib")
- import_lib("Xt", "/usr/X386/lib")
- import_lib("X11", "/usr/X386/lib")
+ import_lib("Xaw", "/usr/X11R6/lib")
+ import_lib("Xmu", "/usr/X11R6/lib")
+ import_lib("Xt", "/usr/X11R6/lib")
+ import_lib("SM", "/usr/X11R6/lib")
+ import_lib("ICE", "/usr/X11R6/lib")
+ import_lib("Xext", "/usr/X11R6/lib")
+ import_lib("X11", "/usr/X11R6/lib")
end
readonly proc import_Motif() is
- import_lib("Xm", "/usr/X386/lib")
+ import_lib("Xm", "/usr/X11R6/lib")
end
readonly proc import_DECPEX() is
@@ -128,9 +138,9 @@
% entire function. Note, the distributed code assumes gnuemacs version 19
% or later.
-readonly proc emacs_compile (el) is
- exec ("emacs -batch -f batch-byte-compile", el)
-end
+%readonly proc emacs_compile (el) is
+% exec ("emacs -batch -f batch-byte-compile", el)
+%end
%---------------------------------------------------- C compiler and linker ---
% The following definitions are used to compile and link C modules.
@@ -142,33 +152,27 @@
% The actual definitions must be kept on one line due to finicky details
% of the bootstrap process.
-
-%% The versions of ar and ranlib shipped with FreeBSD 2.0
-%% definitelty do not work with the Modula-3 archives.
-%% ar sometimes complains about `too many open files' and
-%% ranlib often says `inappropriate file type for object'.
-%% I haven't looked into this further, since newer versions
-%% of the GNU binutils package work quite well. - Olaf Wagner 2/13/95
-
-
-CC = _ifdef ("CC", CC, [ "gcc" ])
+CC = _ifdef ("CC", CC, [ "cc", "-fpic" ])
%--- C compiler with flags for compiling a single ".c" file
-% ------ FOR SHARED LIBS, add -fPIC
-LINK = _ifdef ("LINK", LINK, [ "gcc" ])
+LINK = _ifdef ("LINK", LINK, [ "ld", "-e", "start", "-dc", "-dp", "/usr/lib/crt0.o" ])
%--- C compiler with flags for linking
-% ------ FOR SHARED LIBS, add -Xlinker -Bdynamic
-MAKELIB = _ifdef ("MAKELIB", MAKELIB, [ "/usr/bin/ar", "cru" ])
+MAKELIB = _ifdef ("MAKELIB", MAKELIB, [ "ar", "cru" ])
%--- program to build library archives
RANLIB = _ifdef ("RANLIB", RANLIB, [ "ranlib" ])
%--- program to index libraries
-ASM = _ifdef ("ASM", ASM, [ "/usr/bin/as" ])
+ASM = _ifdef ("ASM", ASM, [ "as", "-k" ])
%--- assembler
-% ------ FOR SHARED LIBS with /usr/bin/as from the FreeBSD distribution,
-% add -k -W
+
+BOOT_LINK = _ifdef ("BOOT_LINK", BOOT_LINK, [ "cc" ])
+%--- C compiler with flags for linking, used during the bootstrap process.
+% We have to use "cc" for the bootstrap, because the "-z2" option
+% ("libraries systematically linked with all programs") doesn't get used
+% during the bootstrap process. If we use "ld", then the C library isn't
+% linked in.
%------------------------------------------------------------- GNU variants ---
% The two large pieces of GNU software used by the Modula-3 system
@@ -179,9 +183,9 @@
% To use the GNU defaults for CC and CFLAGS, specify "*".
%
-GNU_CC = _ifdef ("GNU_CC", GNU_CC, "*")
-GNU_CFLAGS = _ifdef ("GNU_CFLAGS", GNU_CFLAGS, "*")
-GNU_MAKE = _ifdef ("GNU_MAKE", GNU_MAKE, "gmake")
+GNU_CC = _ifdef ("GNU_CC", GNU_CC, "cc")
+GNU_CFLAGS = _ifdef ("GNU_CFLAGS", GNU_CFLAGS, "-O")
+GNU_MAKE = _ifdef ("GNU_MAKE", GNU_MAKE, "make")
%-------------------------------------------------------- Modula-3 compiler ---
% The syntax for the values passed to most of the M3_CONFIG options is
@@ -192,7 +196,8 @@
M3 = LIB_USE & "/m3"
% What are the standard flags?
-M3OPTIONS = [ "-w1", "-why", "-g" ]
+M3OPTIONS = [ "-w1", "-why", "-O" ]
+% ------ FOR DEBUGGING INFO, add "-g"
M3_CONFIG = [
"-Y1" & _pack_args (CC),
@@ -201,11 +206,11 @@
"-Y4" & _pack_args (RANLIB),
"-Y7" & _pack_args (ASM),
- "-Y6@" & LIB_USE & "/m3cgc1@-quiet@",
+ "-Y6@" & LIB_USE & "/m3cgc1@-quiet@-fpic@",
% --- the Modula-3 IL to assembly language pass
- % ------ FOR SHARED LIBS, add -fPIC
- "-z2@-lm@", % --- libraries systematically linked with all programs
+ "-z2@-lm@/usr/lib/libgcc.a@-lc@/usr/lib/libgcc.a@",
+ % --- libraries systematically linked with all programs
"-z3" & LIB_USE & SL & "report_coverage.o",
% --- library linked in programs compiled with "-Z" coverage option
@@ -248,7 +253,7 @@
% passes in a file and then deletes the file, unless "-keep" or
% "-verbose" is specified.
- "-zK0",
+ "-zK1",
% --- Set the value of "-zK" to "1" if you want the m3 driver to
% supply -Bdynamic/-Bstatic options to the linker, "0" otherwise.
@@ -263,9 +268,9 @@
proc build_standalone() is
% --- reset the linker to avoid shared libraries.
- M3_CONFIG += "-Y2@cc@-static@"
M3_CONFIG += "-Y6@" & LIB_USE & "/m3cgc1@-quiet@"
- M3_CONFIG += "-Y7@/usr/bin/as@"
+ M3_CONFIG += "-Y7@as@"
+ M3_CONFIG += "-Bstatic"
end
proc build_shared() is
@@ -282,7 +287,7 @@
proc after_library_hooks(x) is
local lib_a = format ("lib%s.a", x)
- local lib_so = format ("lib%s.so.1.1", x)
+ local lib_so = format ("lib%s.so.5.0", x)
local dest = format ("%s%s%s%s%s", PKG_INSTALL, SL, BUILD_PACKAGE,
SL, BUILD_DIR)
@@ -291,7 +296,7 @@
write ("missing ", lib_a, ": not building ", lib_so, CR)
else
if stale (lib_so, lib_a)
- exec ("/usr/bin/ld -Bshareable -assert pure-text -o",
+ exec ("ld -Bshareable -assert pure-text -o",
lib_so, COMPILE_OBJECTS)
end
install_derived (lib_so)
|