diff options
| author | bhgv <bhgv.empire@gmail.com> | 2018-03-01 16:54:45 +0200 |
|---|---|---|
| committer | bhgv <bhgv.empire@gmail.com> | 2018-03-01 16:54:45 +0200 |
| commit | b786f20bbab5a59046aa78a2c6c2a11536497202 (patch) | |
| tree | 0851ecdec889eb9b7ba3751cc04d4f0b474e4a9e /INSTALL | |
inferno-os tree was separated from the inferno-os-android (separated from the Android driver)
Diffstat (limited to 'INSTALL')
| -rw-r--r-- | INSTALL | 86 |
1 files changed, 86 insertions, 0 deletions
@@ -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. |
