summaryrefslogtreecommitdiff
path: root/INSTALL
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2007-03-20 09:55:16 +0000
committerCharles.Forsyth <devnull@localhost>2007-03-20 09:55:16 +0000
commita68c9668fe82198ab9ada1c43e898cb313ec65d9 (patch)
tree084f54ee0c1cc3564721025d4ed5cad042ca9c00 /INSTALL
parent5adffe81dcb3fc6d3582bb7686183c10fd4839d7 (diff)
20070320-0955
Diffstat (limited to 'INSTALL')
-rw-r--r--INSTALL80
1 files changed, 80 insertions, 0 deletions
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 00000000..7f86204c
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,80 @@
+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.
+
+ Like the native kernels _eeee_mmmm_uuuu relies on several auxil-
+iary libraries (the source of which it often shares with the
+native kernels). Emu itself is built by the _mmmm_kkkk_ffff_iiii_llll_eeee in the
+_eeee_mmmm_uuuu platform directory for the host, as described above.
+Each library has its own _mmmm_kkkk_ffff_iiii_llll_eeee; the various components are
+made in the right order by the _mmmm_kkkk_ffff_iiii_llll_eeee at the root of the
+Inferno tree. The _mmmm_kkkk_ffff_iiii_llll_eeee for each platform will also
+invoke _mmmm_kkkk 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, 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 _kkkk_pppp_rrrr_oooo_cccc in _eeee_mmmm_uuuu/*/_oooo_ssss._cccc.
+
+ 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: _3333_8888_6666, _mmmm_iiii_pppp_ssss, _pppp_oooo_wwww_eeee_rrrr (Power
+PC) and _ssss_pppp_aaaa_rrrr_cccc. Furthermore, all versions of _eeee_mmmm_uuuu can be
+built on any processor type, in the usual way for Plan 9.
+
+ Otherwise, as distributed, _eeee_mmmm_uuuu 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 /_tttt_oooo_oooo_llll_ssss/_pppp_llll_uuuu_gggg_iiii_nnnn and /_uuuu_ssss_rrrr/_iiii_nnnn_tttt_eeee_rrrr_nnnn_eeee_tttt within the
+Inferno tree; they use the version of _eeee_mmmm_uuuu defined by the
+configuration file /_eeee_mmmm_uuuu/_NNNN_tttt/_iiii_eeee.
+
+ 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:
+
+1. Run _mmmm_aaaa_kkkk_eeee_mmmm_kkkk._ssss_hhhh to rebuild the _mmmm_kkkk command, which is
+ used to build everything else.
+
+2. Set _PPPP_AAAA_TTTT_HHHH (or _pppp_aaaa_tttt_hhhh on Plan 9) to include the _bbbb_iiii_nnnn
+ directory for the platform, which will now contain the
+ _mmmm_kkkk binary just built. On Unix, export _PPPP_AAAA_TTTT_HHHH.
+
+3. Then _mmmm_kkkk _nnnn_uuuu_kkkk_eeee to remove any extraneous object files.
+
+4. Finally, _mmmm_kkkk _iiii_nnnn_ssss_tttt_aaaa_llll_llll to create and install the
+ libraries, _llll_iiii_mmmm_bbbb_oooo compiler, _eeee_mmmm_uuuu 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 _mmmm_kkkk 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 _mmmm_kkkk to be available in the
+search path, since there is no equivalent of _mmmm_aaaa_kkkk_eeee_mmmm_kkkk._ssss_hhhh.
+Otherwise the procedure is the same. On Plan 9, of course,
+the host system's normal version of _mmmm_kkkk should be adequate.