Platform configuration files for the SCons based build system
-------------------------------------------------------------

<platform>_<##>.cfg 
--------------

The <platform>_<##>.cfg files in this directory are used to determine
the right settings, libraries, source files etc. on the platform
where you are building Radiance. The build system will select the
appropriate file automatically.

If your platform isn't supported yet, then you can create a new
file with an appropriat name (SCons should tell you what it
expects). Usually, you will start by copying the file of the most
similar supported platform, and then make the necessary changes.

On unix based platforms without a specific config file, the file
"posix_<##>.cfg" will be used (which may or may not work well enough).

As of this writing, the following platforms are included where the
numbers 32 and 64 indicate 32 bit or 64 bit systems rspectively.
(although not all of them have been tested very recently):

* Linux_32.cfg    Linux
* Linux_63.cfg    Linux
* FreeBSD_32.cfg  FreeBSD unix
* FreeBSD_64.cfg  FreeBSD unix
* Darwin_64.cfg   Macintosh OS-X
* Darwin_32.cfg   Macintosh OS-X
* posix_64.cfg    default for unknown Unix systems
* posix_32.cfg    default for unknown Unix systems
* Windows_64.cfg  Microsoft Windows with Visual C/C++
* Windows_32.cfg  Microsoft Windows with Visual C/C++
* mingw_64.cfg    MingW on MS Windows  http://www.mingw.org/
* mingw_32.cfg    MingW on MS Windows  http://www.mingw.org/

The configuration for 32 bit and 64 bit architecture of the
same platform will typically be very similar, with just some
compiler flags indicating the different target.


<platform>_custom.cfg
---------------------

If you want to experiment with changes to the downloaded file, then
you can create a copy named <platform>_custom.cfg, and make your
changes there. If such a file exists, then it will be used in
place of the original.


Contents and format
-------------------

Any text starting with a hash character (#) until the end of the
line is ignored as a comment.

A config file consists of several sections, each of which is
introduced by a keyword in brackets.
Within each section, a configuration directive starts with a
keyword and a colon, followed by the data assigned to that keyword.


Sections
--------

[install] # directories where to install the software
[build]   # compile and link instructions for production builds
[debug]   # compile and link instructions for debug builds
[code]    # code compatibility configuration


Install section
---------------

Values in this section may refer to environment variables, in the
form {VARNAME}. On Windows the variable names must be given in
all uppercase.

  # The root directory of the Radiance installation
  # The second example reflects the installation standard on Windows.
RAD_BASEDIR: /opt/radiance
RAD_BASEDIR: {PROGRAMFILES}/radiance

  # The following are relative to RAD_BASEDIR!
  # The directory for executables 
RAD_BINDIR:  bin

  # The directory for support files (.cal, .pic, .fnt, etc.)
RAD_RLIBDIR: share/lib

  # The directory for the man pages
RAD_MANDIR:  share/man


Debug and Build sections
------------------------

The same keywords can (and usually will) be used in both, but
their assigned values will often differ.

  # The compiler to use (example: Gnu gcc)
CC: gcc

  # The directories for system header files (not normally needed).
CPPPATH: 

  # Symbols to define for the preprocessor (example for Mingw)
  # The symbol "RT_WINPROC" enables the use of our custom popen
  # routine, which allows for pipelining, backslash-newline
  # escapes, and some more functionality without the need for
  # a unix shell.
CPPDEFINES: freebsd HDSUF=.exe RT_WINPROC

  # Flags for the C preprocessor (example for gcc)
CPPFLAGS:  -O2 -Wall -Wno-uninitialized

  # Flags for the C compiler (example for debug build with gcc)
CCFLAGS: -pg

  # The directories for system libraries (not normally needed)
LIBPATH: 

  # Flags for the linker (example for debug build on Windows)
LINKFLAGS: /DEBUG /INCREMENTAL:NO

  # Flags specific to  ezxml.c (example for cygwin/mingw)
EZXML_CPPDEFINES: EZXML_NOMMAP

  # Where to find an installed libtiff and its include files
  # (Not needed when on a standard search path)
  # If no libtiff is found here or on the standard paths, then
  # the executables "normtiff" and "ra_tiff" won't be built.
TIFFLIB:
TIFFINCLUDE:


The Code section
----------------

  # There should be no need to edit this section in existing
  # config files. If you create a new file for a yet untested 
  # platform, you may need to ask on the dev-list what will
  # work here.

RAD_COMPAT:     # theoretically obsolete (src/common/strcmp.c)
RAD_MATHCOMPAT: # erf.c floating point error function
RAD_ARGSCOMPAT: # fixargv0.c for Windows
RAD_NETCOMPAT:  # [win_]netproc.c for ranimate
RAD_MLIB:       # usually 'm', or any fastlib available
RAD_SOCKETLIB:  # ws_2_32 on Windows (VC links it automatically)
RAD_PROCESS:    # our process abstraction and win_popen()
RAD_PCALLS:     # more custom process abstraction



