aboutsummaryrefslogtreecommitdiff
path: root/INSTALL
diff options
context:
space:
mode:
authorbhgv <bhgv.empire@gmail.com>2018-03-01 16:54:45 +0200
committerbhgv <bhgv.empire@gmail.com>2018-03-01 16:54:45 +0200
commitb786f20bbab5a59046aa78a2c6c2a11536497202 (patch)
tree0851ecdec889eb9b7ba3751cc04d4f0b474e4a9e /INSTALL
inferno-os tree was separated from the inferno-os-android (separated from the Android driver)
Diffstat (limited to 'INSTALL')
-rw-r--r--INSTALL86
1 files changed, 86 insertions, 0 deletions
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..24fd1b9
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,86 @@
+Installing hosted Inferno from source
+
+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 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
+that differs considerably for each port, namely
+emu/platform/os.c, the differences corresponding to the dif-
+ferent ways under Unix of implementing kernel-scheduled
+threads efficiently.
+
+ 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 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
+take them up now, but we have not determined their fitness.
+
+ The Plan 9 hosted implementation is unusual in that it
+supports several processor types: 386, mips, power (Power
+PC) and sparc. Furthermore, all versions of emu can be
+built on any processor type, in the usual way for Plan 9.
+
+ Otherwise, as distributed, emu for a platform can only
+be built when running on that platform.
+
+ One unusual variant makes the whole of Inferno a plug-
+in for Microsoft's Internet Explorer, giving the same envi-
+ronment 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 /tools/plugin and /usr/internet within the
+Inferno tree; they use the version of emu defined by the
+configuration file /emu/Nt/ie.
+
+Build steps
+
+ 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.
+
+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.
+
+4 Then mk nuke to remove any extraneous object files.
+
+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
+ later stage are built and installed first. (Note that
+ a plain mk will not suffice, because it does not put
+ the results in the search path.)
+
+Doing something similar on Windows or Plan 9 currently
+requires the executable for mk to be available in the
+search path, since there is no equivalent of makemk.sh.
+Otherwise the procedure is the same. On Plan 9, of course,
+the host system's normal version of mk should be adequate.