- tidy up some output, - print a warning when running an SSL server with no cert, - only log each connect/disconnect if the new "-out_conns" switch is used.
		
			
				
	
	
		
			108 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
There are two ways to build this code;
 | 
						|
 | 
						|
(1) Manually
 | 
						|
 | 
						|
(2) Using all-singing all-dancing (all-confusing) autotools, ie. autoconf,
 | 
						|
automake, and their little friends (autoheader, etc).
 | 
						|
 | 
						|
=================
 | 
						|
Building Manually
 | 
						|
=================
 | 
						|
 | 
						|
There is a basic "Makefile" in this directory that gets moved out of the way and
 | 
						|
ignored when building with autoconf et al. This Makefile is suitable for
 | 
						|
building tunala on Linux using gcc. Any other platform probably requires some
 | 
						|
tweaking. Here are the various bits you might need to do if you want to build
 | 
						|
this way and the default Makefile isn't sufficient;
 | 
						|
 | 
						|
* Compiler: Edit the "CC" definition in Makefile
 | 
						|
 | 
						|
* Headers, features: tunala.h controls what happens in the non-autoconf world.
 | 
						|
  It, by default, assumes the system has *everything* (except autoconf's
 | 
						|
  "config.h") so if a target system is missing something it must define the
 | 
						|
  appropriate "NO_***" symbols in CFLAGS. These include;
 | 
						|
 | 
						|
  - NO_HAVE_UNISTD_H, NO_HAVE_FCNTL_H, NO_HAVE_LIMITS_H
 | 
						|
    Indicates the compiling system doesn't have (or need) these header files.
 | 
						|
  - NO_HAVE_STRSTR, NO_HAVE_STRTOUL
 | 
						|
    Indicates the compiling system doesn't have these functions. Replacements
 | 
						|
    are compiled and used in breakage.c
 | 
						|
  - NO_HAVE_SELECT, NO_HAVE_SOCKET
 | 
						|
    Pointless symbols - these indicate select() and/or socket() are missing in
 | 
						|
    which case the program won't compile anyway.
 | 
						|
 | 
						|
  If you want to specify any of these, add them with "-D" prefixed to each in
 | 
						|
  the CFLAGS definition in Makefile.
 | 
						|
 | 
						|
* Compilation flags: edit DEBUG_FLAGS and/or CFLAGS directly to control the
 | 
						|
  flags passed to the compiler. This can also be used to change the degree of
 | 
						|
  optimisation.
 | 
						|
 | 
						|
* Linker flags: some systems (eg. Solaris) require extra linker flags such as;
 | 
						|
  -ldl, -lsocket, -lnsl, etc. If unsure, bring up the man page for whichever
 | 
						|
  function is "undefined" when the linker fails - that usually indicates what
 | 
						|
  you need to add. Make changes to the LINK_FLAGS symbol.
 | 
						|
 | 
						|
* Linker command: if a different linker syntax or even a different program is
 | 
						|
  required to link, edit the linker line directly in the "tunala:" target
 | 
						|
  definition - it currently assumes the "CC" (compiler) program is used to link.
 | 
						|
 | 
						|
======================
 | 
						|
Building Automagically
 | 
						|
======================
 | 
						|
 | 
						|
Automagic building is handled courtesy of autoconf, automake, etc. There are in
 | 
						|
fact two steps required to build, and only the first has to be done on a system
 | 
						|
with these tools installed (and if I was prepared to bloat out the CVS
 | 
						|
repository, I could store these extra files, but I'm not).
 | 
						|
 | 
						|
First step: "autogunk.sh"
 | 
						|
-------------------------
 | 
						|
 | 
						|
The "./autogunk.sh" script will call all the necessary autotool commands to
 | 
						|
create missing files and run automake and autoconf. The result is that a
 | 
						|
"./configure" script should be generated and a "Makefile.in" generated from the
 | 
						|
supplied "Makefile.am". NB: This script also moves the "manual" Makefile (see
 | 
						|
above) out of the way and calls it "Makefile.plain" - the "ungunk" script
 | 
						|
reverses this to leave the directory it was previously.
 | 
						|
 | 
						|
Once "ungunk" has been run, the resulting directory should be able to build on
 | 
						|
other systems without autoconf, automake, or libtool. Which is what the second
 | 
						|
step describes;
 | 
						|
 | 
						|
Second step: "./configure"
 | 
						|
--------------------------
 | 
						|
 | 
						|
The second step is to run the generated "./configure" script to create a
 | 
						|
config.h header for your system and to generate a "Makefile" (generated from
 | 
						|
"Makefile.in") tweaked to compile on your system. This is the standard sort of
 | 
						|
thing you see in GNU packages, for example, and the standard tricks also work.
 | 
						|
Eg. to override "configure"'s choice of compiler, set the CC environment
 | 
						|
variable prior to running configure, eg.
 | 
						|
 | 
						|
    CC=gcc ./configure
 | 
						|
 | 
						|
would cause "gcc" to be used even if there is an otherwise preferable (to
 | 
						|
autoconf) native compiler on your system.
 | 
						|
 | 
						|
After this run "make" and it should build the "tunala" executable.
 | 
						|
 | 
						|
Notes
 | 
						|
-----
 | 
						|
 | 
						|
- Some versions of autoconf (or automake?) generate a Makefile syntax that gives
 | 
						|
  trouble to some "make" programs on some systems (eg. OpenBSD). If this
 | 
						|
  happens, either build 'Manually' (see above) or use "gmake" instead of "make".
 | 
						|
  I don't like this either but like even less the idea of sifting into all the
 | 
						|
  script magic crud that's involved.
 | 
						|
 | 
						|
- On a solaris system I tried, the "configure" script specified some broken
 | 
						|
  compiler flags in the resulting Makefile that don't even get echoed to
 | 
						|
  stdout/err when the error happens (evil!). If this happens, go into the
 | 
						|
  generated Makefile, find the two affected targets ("%.o:" and "%.lo"), and
 | 
						|
  remove the offending hidden option in the $(COMPILE) line all the sludge after
 | 
						|
  the two first lines of script (ie. after the "echo" and the "COMPILE" lines).
 | 
						|
  NB: This will probably only function if "--disable-shared" was used, otherwise
 | 
						|
  who knows what would result ...
 | 
						|
 |