mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-11 23:25:17 +00:00
d5a92ea924
"modula-3-lib". It installs only the shared libraries needed for executing Modula-3 programs. This saves a lot of disk space for people who need to run Modula-3 programs but don't need to build them. The original "modula-3" port now depends on this one, and uses it to install the compiler and the rest of the development system. Also, everything is now built with optimization. I have been testing this for at least a month, and haven't seen any problems from it. It makes the libraries and executables substantially smaller. This new port also includes some hooks that will make SOCKS support possible in the near future.
211 lines
7.5 KiB
Plaintext
211 lines
7.5 KiB
Plaintext
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.4.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)
|