I originally developed 3DLDF on a DECalpha Personal Workstation with two processors running under the operating system Tru64 Unix 5.1, using the DEC C++ compiler. I then ported it to a PC Pentium 4 running under Linux 2.4, using the GNU C++ compiler GCC 2.95.3, and a PC Pentium II XEON under Linux 2.4, using GCC 3.3. I am currently only maintaining the last version. I do not believe that it's worthwhile to maintain a version for GCC 2.95. While I would like 3DLDF to run on as many platforms as possible, I would rather spend my time developing it than porting it. This is something where I would be grateful for help from other programmers.
Although I am no longer supporting ports to other systems, I have left some conditionally compiled code for managing platform dependencies in the CWEB sources of 3DLDF. This may make it easier for other people who want to port 3DLDF to other platforms.
Currently, the files io.web
, loader.web
, main.web
,
points.web
,
and pspglb.web
contain conditionally compiled code, depending on
which compiler, or in the case of GCC, which version of the compiler, is
used. The DEC C++
compiler defines the preprocessor macro
__DECCXX
and GCC defines __GNUC__
. In order to
distinguish between GCC 2.95.3 and GCC 3.3, I've added the macros
LDF_GCC_2_95
and LDF_GCC_3_3
in loader.web
, which
should be defined or undefined, depending on which compiler you're
using. In the distribution, LDF_GCC_3_3
is defined and
LDF_GCC_2_95
is undefined, so if you want to try using GCC 2.95, you'll
have to change this (it's not guaranteed to work).
3DLDF 1.1.5.1 now uses Autoconf and Automake, and the
configure
script generates a config.h
file, which is now
included in loader.web
. Some of
the preprocessor macros defined in config.h
are used to
conditionally include library header files, but so far, there is no error
handling code for the case that a file can't be included. I hope to improve the
way 3DLDF works together with Autoconf and Automake in the near future.
3DLDF 1.1.5 is the first release that contains template functions. Template instantiation differs from compiler to compiler, so using template functions will tend to make 3DLDF less portable. See Template Functions, for more information. I am no longer able to build 3DLDF on the DECalpha Personal Workstation. I'm fairly sure that it would be possible to port it, but I don't plan to do this, since Tru64 Unix 5.1 and the DEC C++
compiler are non-free software.