summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README90
1 files changed, 90 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..b4fcc82
--- /dev/null
+++ b/README
@@ -0,0 +1,90 @@
+This directory contains everything you should need to create a working
+version of the Miranda system. Before compiling Miranda on a new host:
+ make cleanup
+removes old object files and collects information about the current
+platform in .host.
+
+Then
+ make
+should recreate a working version of Miranda, in this directory. To try
+it out say `./mira'. (See below for what to do if things go wrong.)
+Before doing the `make' you might want to inspect the first few lines of
+Makefile which sets the options to cc and a few other things that might
+need adjusting.
+
+There is a selection of example Miranda scripts in the directory `ex'.
+For stress testing the garbage collector try ./mira ex/parafs.m (say
+output). Note that in a mira session /e opens the editor (default vi)
+on the current script.
+
+Other makefile targets supported are (need to be executed as root):-
+ make install
+copies the mira executables and associated files (miralib, mira.1) to
+the appropriate places in the root filing system, so they can be
+accessed by all users; and
+ make release
+creates a gzipped tar image of the binaries suitable for installing
+Miranda on other machines of the same object code type. To use the tar
+image on another machine, be root, and say
+ cd /
+ tar xzpf [pathname]
+where [pathname] is the gzipped tarfile.
+
+Before `make install' or `make release' you should inspect paths BIN,
+LIB, MAN at the top of the Makefile and modify if needed, to put things
+at the places in the root filing system where you want them to go.
+
+Be aware that the garbage collector works by scanning the C stack to
+find anything that is or seems to be a pointer into the heap (see
+bases() in data.c) and is therefore somewhat fragile as it can be foxed
+by aggressive compiler optimisations. GC errors manifest as "impossible
+event" messages, or segmentation faults. If these appear try
+recompiling at a lower level of optimisation (e.g. without -O) or with
+a different C compiler - e.g. clang instead of gcc or vice versa.
+
+------------------------------------------------------------------------
+
+What to do if things need changing
+----------------------------------
+
+It is possible that everything will work first time, just on saying
+`make'. If however you are obliged to make changes for the new host
+(the XYZ machine say) it best to proceed as follows.
+
+The second line of the Makefile defines some CFLAGS (used by cc) as
+delivered most of these are commented out, leaving -O as the only flag.
+Add a flag
+ -DXYZ
+to the CFLAGS line. Then at each place in a source file where you have
+to change something, do it in the following style
+
+ #ifdef XYZ
+ your modified code
+ #else
+ the original code
+ #endif
+
+You will see that this method has been used to cater for certain machine
+dependencies at a few places in the sources. Looking to see where this
+has already been done is likely to give you an idea as to which lines
+may need modifying for your machine.
+
+If you are running under System 5 UNIX you may include -DSYSTEM5 in the
+CFLAGS line of the Makefile, as a couple of system 5 dependencies are
+#ifdef'd in the sources (relate to signal(), unclear if they are still
+needed).
+
+One other place where platform dependency is possible is in twidth()
+near bottom of file steer.c, which uses an ioctl() call to find width of
+current window. This feature isn't critical, however, just aesthetic.
+
+The sources have no documentation other than embedded comments: you have
+to figure out how things work from these and the Makefile.
+
+Reports of problems encountered, changes needed, etc to mira-bugs (at)
+miranda.org.uk
+ Thanks!
+
+David Turner
+University of Kent
+13.01.2020