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.
|