summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2008-10-24 15:42:31 +0000
committerCharles.Forsyth <devnull@localhost>2008-10-24 15:42:31 +0000
commita724700a1cd89f5afa7aceeb390bb77721c5ca57 (patch)
treeb3324dce30894fe646dfbaafd5a14640ede49030
parent442f83babb46ef46f7d13632b36c4744e88a5f49 (diff)
20081024-1642
-rw-r--r--INSTALL53
-rw-r--r--doc/INSTALL.ms148
-rw-r--r--doc/port.ms35
-rw-r--r--doc/port.pdfbin50037 -> 50447 bytes
-rw-r--r--include/version.h2
-rw-r--r--mkconfig4
6 files changed, 206 insertions, 36 deletions
diff --git a/INSTALL b/INSTALL
index add92049..24fd1b9c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,17 +1,16 @@
Installing hosted Inferno from source
-First change mkconfig to reflect your host environment,
-specifically ROOT (which must be an absolute path name), SYSHOST and OBJTYPE.
+Overview
Like the native kernels emu relies on several auxil-
iary libraries (the source of which it often shares with the
native kernels). Emu itself is built by the mkfile in the
-emu platform directory for the host, as described above.
-Each library has its own mkfile; the various components are
-made in the right order by the mkfile at the root of the
-Inferno tree. The mkfile for each platform will also
-invoke mk recursively to make the appropriate libraries for
-a given configuration.
+emu subdirectory containing the platform-specific source for
+the host platform. Each library has its own mkfile; the
+various components are made in the right order by the
+mkfile at the root of the Inferno tree. The mkfile for
+each platform will also invoke mk recursively to make the
+appropriate libraries for a given configuration.
The Unix emu variant generally is covered by `POSIX'
(with common extensions) but each Unix port has one file
@@ -21,13 +20,13 @@ ferent ways under Unix of implementing kernel-scheduled
threads efficiently.
There are working emu versions for FreeBSD/386,
-Irix/mips, Linux/386, MacOSX/power, Plan 9, Solaris/sparc,
-and Windows (NT, 2000 and Explorer plug-in). Each platform
-typically uses mechanisms specific to the host operating
-system to implement Inferno's internal thread/process struc-
-ture. POSIX threads have often been found to be insuffi-
-cient (poorly implemented) on some platforms, and if so are
-avoided. See kproc in emu/*/os.c.
+Irix/mips, Linux/386, NetBSD/386, MacOSX/386, MacOSX/power,
+Plan 9, Solaris/sparc, and Windows (NT, 2000 and Explorer
+plug-in). Each platform typically uses mechanisms specific
+to the host operating system to implement Inferno's internal
+thread/process structure. POSIX threads have often been
+found to be insufficient (poorly implemented) on some plat-
+forms, and if so are avoided. See kproc in emu/*/os.c.
Source is included for ports to HP/UX (S800 architec-
ture), Solaris/386, and Unixware, in case someone wishes to
@@ -51,22 +50,28 @@ is found in /tools/plugin and /usr/internet within the
Inferno tree; they use the version of emu defined by the
configuration file /emu/Nt/ie.
- All the libraries an executables can be built in a tree
-containing only the source code. To do that for a supported
-variant of hosted Inferno, on Unix or Plan 9, do the follow-
-ing in the root of the Inferno tree:
+Build steps
-0. Edit mkconfig as described above.
-1. Run makemk.sh to rebuild the mk command, which is
+ All the libraries and executables can be built in a
+tree containing only the source code. To do that for a sup-
+ported variant of hosted Inferno, on Unix or Plan 9, do the
+following in the root of the Inferno tree:
+
+1 Edit mkconfig to reflect your host environment,
+ specifically ROOT (which must be an absolute path
+ name), SYSHOST and OBJTYPE. The comments in the file
+ should help you choose.
+
+2 Run makemk.sh to rebuild the mk command, which is
used to build everything else.
-2. Set PATH (or path on Plan 9) to include the bin
+3 Set PATH (or path on Plan 9) to include the bin
directory for the platform, which will now contain the
mk binary just built. On Unix, export PATH.
-3. Then mk nuke to remove any extraneous object files.
+4 Then mk nuke to remove any extraneous object files.
-4. Finally, mk install to create and install the
+5 Finally, mk install to create and install the
libraries, limbo compiler, emu for hosted Inferno,
and auxiliary commands. The rules do that in an order
that ensures that the commands or libraries needed by a
diff --git a/doc/INSTALL.ms b/doc/INSTALL.ms
new file mode 100644
index 00000000..0cfecf2d
--- /dev/null
+++ b/doc/INSTALL.ms
@@ -0,0 +1,148 @@
+.\" this is an extract of port.ms: change that too if needed
+.pl 9999
+.SH
+Installing hosted Inferno from source
+.SH
+Overview
+.PP
+Like the native kernels
+.CW emu
+relies on several auxiliary libraries (the source of which
+it often shares with the native kernels).
+Emu itself is built by the
+.CW mkfile
+in the
+.CW emu
+subdirectory containing the platform-specific source for the host platform.
+Each library has its own
+.CW mkfile ;
+the various components are made in the right order by the
+.CW mkfile
+at the root of the Inferno tree.
+The
+.CW mkfile
+for each platform will also invoke
+.CW mk
+recursively to make the appropriate libraries
+for a given configuration.
+.PP
+The Unix emu variant generally is covered by `POSIX' (with common extensions)
+but each Unix port has one file that differs considerably for each port,
+namely \f5emu/\fP\fIplatform\fP\f5/os.c\fP, the differences
+corresponding to the different ways under Unix of implementing kernel-scheduled
+threads efficiently.
+.PP
+There are working emu versions
+for
+FreeBSD/386,
+Irix/mips,
+Linux/386,
+NetBSD/386,
+MacOSX/386,
+MacOSX/power,
+Plan 9,
+Solaris/sparc,
+and Windows (NT, 2000 and Explorer plug-in).
+Each platform typically uses mechanisms specific to the host operating
+system to implement Inferno's internal thread/process structure.
+POSIX threads have often been found to be insufficient (poorly implemented)
+on some platforms, and if so are avoided.
+See
+.CW kproc
+in
+.CW emu/*/os.c .
+.PP
+Source is included for ports to HP/UX (S800 architecture),
+Solaris/386, and Unixware, in case someone wishes to take them up now,
+but we have not determined their fitness.
+.PP
+The Plan 9 hosted implementation is unusual in that it supports
+several processor types:
+.CW 386 ,
+.CW mips ,
+.CW power
+(Power PC)
+and
+.CW sparc .
+Furthermore, all versions of
+.CW emu
+can be built on any processor type, in the usual way for Plan 9.
+.PP
+Otherwise, as distributed,
+.CW emu
+for a platform can only be built when running on that platform.
+.PP
+One unusual variant makes the whole of Inferno a plug-in for Microsoft's
+Internet Explorer, giving the same environment for Inferno applications
+running in an HTML page as is provided by hosted or native Inferno.
+That is, there is not a distinct `applet' environment with special programming interfaces.
+The source for the various plug-in components is found in
+.CW /tools/plugin
+and
+.CW /usr/internet
+within the Inferno tree; they use the version of
+.I emu
+defined by the configuration file
+.CW /emu/Nt/ie .
+.SH
+Build steps
+.PP
+All the libraries and executables can be built in a tree containing only the source code.
+To do that for a supported variant of hosted Inferno, on Unix or Plan 9, do the following
+in the root of the Inferno tree:
+.nr Ci 0 +1
+.de Xx
+.IP \\n+(Ci
+..
+.Xx
+Edit
+.CW mkconfig
+to reflect your host environment,
+specifically ROOT (which must be an absolute path name), SYSHOST and OBJTYPE.
+The comments in the file should help you choose.
+.Xx
+Run
+.CW makemk.sh
+to rebuild the
+.CW mk
+command, which is used to build everything else.
+.Xx
+Set
+.CW PATH
+(or
+.CW path
+on Plan 9)
+to include the
+.CW bin
+directory for the platform, which will now contain the
+.CW mk
+binary just built.
+On Unix, export
+.CW PATH .
+.Xx
+Then
+.CW "mk nuke"
+to remove any extraneous object files.
+.Xx
+Finally,
+.CW "mk install"
+to create and install the libraries,
+.CW limbo
+compiler,
+.CW emu
+for hosted Inferno, and auxiliary commands.
+The rules do that in an order that ensures that the commands or libraries
+needed by a later stage are built and installed first.
+(Note that a plain
+.CW mk
+will not suffice, because it does not put the results in the search path.)
+.LP
+Doing something similar on Windows or Plan 9 currently requires the executable for
+.CW mk
+to be available in the search path,
+since there is no equivalent of
+.CW makemk.sh .
+Otherwise the procedure is the same.
+On Plan 9, of course, the host system's normal version of
+.CW mk
+should be adequate.
diff --git a/doc/port.ms b/doc/port.ms
index 0d11a578..e495101f 100644
--- a/doc/port.ms
+++ b/doc/port.ms
@@ -31,7 +31,10 @@ The source for
.CW mk
itself is included in
.CW utils/mk .
-(It must be compiled manually on the initial port to a new host environment.)
+It is included ready-made in the full and source-only distributions, to make life easier.
+It must be compiled manually only on the initial port to a new host environment;
+instructions for that are given below.
+.PP
.NH 1
The C compilers
.PP
@@ -189,17 +192,19 @@ with a subdirectory for each hosted platform:
.CW FreeBSD ,
.CW Irix ,
.CW Linux ,
+.CW MacOSX ,
+.CW NetBSD ,
.CW Nt
(for all Windows platforms, including the Internet Explorer plug-in),
-.CW MacOSX ,
.CW Plan9 ,
+.CW Solaris ,
and so on.
Each platform directory has a
.CW mkfile
and one or more configuration files of the form described by
.I config (6).
An executable for a particular host type is built on that host type,
-under the host's own command interpreter, not under Inferno.
+using the host's own command interpreter, not under Inferno.
Move to the
.CW emu
subdirectory appropriate to that host,
@@ -220,7 +225,7 @@ Emu itself is built by the
.CW mkfile
in the
.CW emu
-platform directory for the host, as described above.
+subdirectory containing the platform-specific source for the host platform.
Each library has its own
.CW mkfile ;
the various components are made in the right order by the
@@ -244,6 +249,8 @@ for
FreeBSD/386,
Irix/mips,
Linux/386,
+NetBSD/386,
+MacOSX/386,
MacOSX/power,
Plan 9,
Solaris/sparc,
@@ -290,16 +297,26 @@ within the Inferno tree; they use the version of
defined by the configuration file
.CW /emu/Nt/ie .
.PP
-All the libraries an executables can be built in a tree containing only the source code.
+All the libraries and executables can be built in a tree containing only the source code.
To do that for a supported variant of hosted Inferno, on Unix or Plan 9, do the following
in the root of the Inferno tree:
-.IP 1.
+.nr Ci 0 +1
+.de Xx
+.IP \\n+(Ci
+..
+.Xx
+Edit
+.CW mkconfig
+to reflect your host environment,
+specifically ROOT (which must be an absolute path name), SYSHOST and OBJTYPE.
+The comments in the file should help you choose.
+.Xx
Run
.CW makemk.sh
to rebuild the
.CW mk
command, which is used to build everything else.
-.IP 2.
+.Xx
Set
.CW PATH
(or
@@ -312,11 +329,11 @@ directory for the platform, which will now contain the
binary just built.
On Unix, export
.CW PATH .
-.IP 3.
+.Xx
Then
.CW "mk nuke"
to remove any extraneous object files.
-.IP 4.
+.Xx
Finally,
.CW "mk install"
to create and install the libraries,
diff --git a/doc/port.pdf b/doc/port.pdf
index 3d5795ff..e4111709 100644
--- a/doc/port.pdf
+++ b/doc/port.pdf
Binary files differ
diff --git a/include/version.h b/include/version.h
index f19c86f7..4cec3314 100644
--- a/include/version.h
+++ b/include/version.h
@@ -1 +1 @@
-#define VERSION "Fourth Edition (20081023)"
+#define VERSION "Fourth Edition (20081024)"
diff --git a/mkconfig b/mkconfig
index c80df8ff..ba97a5b7 100644
--- a/mkconfig
+++ b/mkconfig
@@ -14,14 +14,14 @@ TKSTYLE=std
#
# Except for building kernels, SYSTARG must always be the same as SYSHOST
#
-SYSHOST=Plan9 # build system OS type (Hp, Inferno, Irix, Linux, Nt, Plan9, Solaris)
+SYSHOST=Plan9 # build system OS type (Hp, Inferno, Irix, Linux, MacOSX, Nt, Plan9, Solaris)
SYSTARG=$SYSHOST # target system OS type (Hp, Inferno, Irix, Linux, Nt, Plan9, Solaris)
#
# specify the architecture of the target system - Plan 9 imports it from the
# environment; for other systems it is usually just hard-coded
#
-#OBJTYPE=386 # target system object type (s800, mips, 386, arm, sparc)
+#OBJTYPE=386 # target system object type (eg, 386, arm, mips, powerpc, s800, sparc)
OBJTYPE=$objtype
#