linux-kernel-style configuration

No more editing of Makefile or config.h!

As admin you will of course first be confronted with the new configuration script. Note that it took me a LOT of time to get this working, and the reason that I did it is that I think it will take away every excuse not to upgrade fast: You will have to go over the configuration once more, but with the help of extensive help texts if requested (answer with a '?' on a question and hit return). After this, in the future, you will never ever have to redo this configuration, or any editing of any file. When a new release is brought out, typing './configure', 'make config', 'make' and 'make install' will do (except for hitting 'return' 6 times). When a NEW configuration needs to be answered in a new release, it will be automatically detected and you will be asked to answer this new configuration question only.

I'd like to stress the importance of using 'make install' now, because when you 'manage' to use that, the whole installation of a new version should literally not take more then 5 minutes on a fast machine. You might want to look in the Makefile for what 'make install' does: it copies the ircd executable to the directory that you specified during the configuration - it tries to chown and chgrp to the owner and group you specified - and set the permissions as you specified (you might need to become root before you do 'make install' under certain circumstances). It copies the executable to a UNIQUE name and then makes a symbolic link to this executable - the name of the symbolic link is also one that you specified during configuration. The use of a symbolic link allows to restart a new version with /RESTART or signal SIGINT, and the use of 'make install' without overwriting the old executable.

I tested the configuration scripts on all Operating Systems - but it might still need some tweaking - let me know asap when something doesn't work for you.

IMPORTANT:

If you run two or more servers on the same machine (or file system), please note the following impact on the directory structure. The configuration defaults (your answers to the 'make config' questions) are stored in a file config/.config. However, a symbolic link is made with a file '.config' just outside the source tree (note that your configuration gets lost when you remove the source tree !). When you upgrade to a new version, this '.config' link which is just outside the source tree is used as default. Therefore you should group the source trees of different versions in separate directories for separate servers (with separate configurations). For instance:
 ircd/ ---- routing/  ---- ircu2.10.00/
       |               \-- ircu2.10.01/
       |               \-- ircu2.10.02/
       |
       \--- client/   ---- ircu2.10.00/
       |               \-- ircu2.10.01/
       |               \-- ircu2.10.02/
       |
       \--- test/     etc.
Also, if you call the symbolic links all 'ircd', then you should specify a different bin/ directory for each different server to install the executable in (otherwise make sure you use different SYMLINK names for the different servers)! For instance:
 ircd/ ---- routing/  ---- .config (sym. link to ircu2.10.02/config/.config)
       |               \-- bin/ircd -> ircd.9708290350.fixfoo
       |               \-- ircu2.10.00/
       |               \-- ircu2.10.01/config/.config
       |               \-- ircu2.10.02/config/.config
       |
       \--- client/   ---- .config (sym. link to latest version in this dir)
                       \-- bin/ircd -> ircd.9708281633.2_10_01
                       etc...
Note that you can edit and/or copy any .config file from one source tree to another, and then run 'make config' to use that .config to generate the Makefile and config.h. This might sometimes be faster then browsing through all questions to find the one you want to change and it is handy to have reasonable defaults when you configure your second server (same thing for config.cache). 
Questions and comments about this page should go to the maintainer: Carlo Wood (Run @ IRC).