Many: use srelax() is some places
[s-mailx.git] / INSTALL
blob26ce08e681a5308ad6d68c886b5d52e311c7cd39
1 I n s t a l l i n g  S - n a i l
2 ================================
4 Compilation
5 -----------
7 System specific notes can be found in the next section.
8 Any (optional) feature is adjustable and documented in `conf.rc'.
9 Adjustments may also take place from the command line, overriding
10 those made in `conf.rc' (if any).
12   $ [make &&] make install
13   $ make uninstall          # Won't remove the system wide startup file!
14   $ make distclean          # *Completely* cleanup working directory
16 With adjustments:
18   $ make WANT_IMAP=0 install
19   $ make WANT_LINE_EDITOR=0 PREFIX=/some/nasty/prefix install
21 There are also some predefined restricted configuration sets available,
22 which take precedence over anything else:
24 . CONFIG=MINIMAL
25   little is left but some air to breathe; no internet connectivity, no
26   internationalized domain names, no command line editor, no
27   documentation strings.
29 . CONFIG=MEDIUM
30   Like MINIMAL, but with documentation strings, and the builtin command
31   line editor will be included if that is possible.
33 . CONFIG=NETSEND
34   WANT_SMTP and WANT_SSL settings are enabled, internationalized domain
35   names will be supported if the necessary libraries are available,
36   otherwise identical to MEDIUM.
38 E.g.:
40   $ make CONFIG=MINIMAL DESTDIR=xtest install
42 would create a `s-nail' binary and install a `s-nail' manual etc.
43 under the prefix `/usr/local' but rooted under [./]`xtest', i.e., the
44 binary would be installed as `[./]xtest/usr/local/bin/s-nail'.
46 Note that, due to the way the S-nail(1) build system is designed, the
47 only safe way to overwrite compiler and linker flags, i.e., CFLAGS and
48 LDFLAGS, is from within the make(1) command line when running the target
49 that performs the build:
51   $ make CFLAGS='-O2' LDFLAGS='-Wl,--sort-common' [all|install|build]
53 The following make(1) target exists, and note that you can use
54 a VERBOSE=1 option to gain more (or a different kind of) verbosity:
56 . all         Create / check and update configuration, build.
57 . install     Create / check and update configuration, build, install.
58 . clean       Remove anything which can be rebuild.
59 . distclean   Remove anything which can be rebuild or reconfigured.
60 . uninstall   Uninstall (if configured).
62 . config      Only create or check and update the configuration.
63 . build       Only build (using the existing configuration).
64 . test        Run ./cc-test.sh in --check-only mode on the built binary.
65 . packager-install
66               Only install using the built files of the existing
67               configuration.  It is possible to overwrite DESTDIR= when
68               using this target (a following `uninstall' won't know
69               about that overwritten value, however).
71 If some libraries are missing that you know are installed on your
72 system, or if other errors occur due to missing files but which you know
73 exist, please ensure that the environment variable `C_INCLUDE_PATH'
74 includes the necessary `include/' paths and the environment variable
75 `LD_LIBRARY_PATH' includes the necessary `lib/'rary paths.
77 The S-nail make system will inspect these two environment variables and
78 *automatically* convert them to cc(1) (c99(1)) -I and -L options (since
79 these environment variables are, different to the command line options,
80 not part of the POSIX standard).
81 To set these environment variables, the following can be done in
82 a Bourne/Korn/POSIX compatible shell:
84   $ C_INCLUDE_PATH="${C_INCLUDE_PATH}:/usr/local/include"
85   $ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib"
86   $ export C_INCLUDE_PATH LD_LIBRARY_PATH
87   $ make install
89 The S-nail make system will also automatically integrate pkgsrc(7) paths
90 into this mechanism.  pkgsrc(7) is used to handle building (compilation),
91 installation and removal of software packages on a lot of operating
92 systems, including all BSD systems, Linux, Solaris ...
94 Notes for S-nail(1) v14.*
95 -------------------------
97 S-nail(1) is known to be driven without errors by the `./cc-test.sh'
98 shell script, with the extended CFLAGS and WARN variables uncommented in
99 the Makefile, on the following operating systems:
101 . Mac OS X Snow Leopard (x86_64).
102   gcc-mp-4.8 (MacPorts gcc48 4.8.1_3) 4.8.1.
103   Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM 2.9svn).
105 . FreeBSD 10.0 (amd64; 2013-06-23).
106   clang version 3.3 (tags/RELEASE_33/final 183502) 20130610.
108 . NetBSD 6.99.23 (amd64).
109   gcc (NetBSD nb1 20120916) 4.5.4 (forgot to look: ID as of 6.99.19).
111 . DragonFly BSD v3.4.1-RELEASE.
112   gcc 4.7.2 [DragonFly] Release/2012-09-20.
114 . OpenBSD 5.4 (5.4 GENERIC#36 i386).
115   gcc (GCC) 4.2.1 20070719.
117 . CRUX 3.0 (mLinux 3.6.11).
118   gcc (CRUX-x86_64-multilib) 4.7.2.
120 . Slackware 14 3.2.29-smp (i386).
121   gcc (GCC) 4.7.1.
122   clang version 3.0 (tags/RELEASE_30/final).
124 . UnixWare 7.1.4.
125   You need to pass "CFLAGS='-v -O'" to the make(1) run.
126   And because the UnixWare make(1) doesn't pass those flags through to
127   recursively invoked make(1)s (and because the S-nail build system
128   doesn't track CC and CFLAGS in `conf.rc' for updates), you need to use
129   the -e option, as in:
131     $ make -e CFLAGS='-v -O'
133   Due to this you possibly want to use env(1) to be on the safe side...
134   Also, `conf.rc' sets `MAILSPOOL=/var/mail' by default, whereas
135   UnixWare uses `/var/spool/mail', so you need to overwrite it (either
136   in `conf.rc', or from within the command line).
138 OpenIndiana is targeted for v14.5.
139 And i'm very interested in reports from other combinations.
140 (It should work practically everywhere, generally speaking.)
142 Program features yet to be overhauled
143 -------------------------------------
145 Since i've forked Heirloom mailx(1) (for real) as S-nail(1) on
146 2012-09-18 i make my way through the codebase, but have not yet taken
147 a look (rather: at all) into the following modules/parts:
149   [List view/threading], Maildir, SSL, IMAP, POP3, SMTP, GSSAPI, Caching
151 These will remain features of S-nail(1) and they will be looked at, and
152 of course i will fix bugs when i notice them, but they are not yet part
153 of the overhauled "S-nail core" (though SMTP and POP are in daily use,
154 and IMAP is slowly coming along).
156 I'll hope to be able to release S-nail v20 on 2018-03-25, the 40th
157 anniversary of Mail, as a good one, then.  Also see `TODO'.
159 vim:set fenc=utf-8:s-ts-mode