summaryrefslogtreecommitdiff
path: root/INSTALL
blob: 7f86204ccad2ed6ef29de117214dbf3e456f1c8d (plain)
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
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.