From: Arjen M. <arj...@wl...> - 2006-11-22 08:11:50
|
Hello all, PLplot has several build systems, suited for different platforms: - The system based on autotools, meant for UNIX, Linux and such platforms - The system for building the PLplot library on Windows, using the native tools (compiler, linker, batch files, nmake) This was necessary, because the autotools do not run on basic Windows (you need Cygwin or MinGW to get the right environment). Several months ago, Alan started porting PLplot to the CMake build system and given the success we have had in adapting it for all platforms we actively support, this "CBS" will be the default build system for PLplot 5.7.0 which is due in a few days/weeks. The autotools build system will no longer be supported (or at least not as intensively as it used to). This raises the question whether the Windows-specific build system should be deprecated as well. And this is what I wanted to consult you all about. Let me review the advantages and disadvantages of both systems: Windows-specific: - Advantages: - Nothing needed except the MSVC 6.0 compiler and the tools that come with it - Disadvantages: - Limited support for more modern versions of the MS Visual C/C++ compilers (you need to build a project for it yourself) - Limited support for Fortran (there is a preliminary makefile to create the Fortran wrapper library), only suitable for Compaq Visual Fortran - No support for the scripting (dynamic) languages (Perl, Python and Tcl) or for Java - Currently no support for external libraries, such as GD to make PNG, JPEG and GIF files. - No support for antialiasing fonts - (From a maintainer's point of view) Separate sources that need to be adjusted to reflect general development, separate driver (win3) that looks a lot like the wingcc driver that is used for Cygwin and MinGW under Windows. - Expectations: - Further developing this build system will be a time-consuming affair. All the nice extra features (antialiasing fonts, more programming languages, extra drivers) require considerable updates of the makefiles, as there is only an ad hoc method to configure them. CBS: - Advantages: - Generation of makefiles or project files or solutions, depending on your preferences and the available tools - Support for other C/C++ compilers than MSVC 6.0 - Support for other builds than the release build (creating a debuggable library is easy) - Support for Fortran (several compilers) and Tcl. - Automatic builds for all sets of examples (C, C++, Fortran, Tcl) - (From a maintainer's point of view) - The source code is _exactly_ the same as for the UNIX-like platforms - including the driver (wingcc) - It is much easier to expand the supported languages and compilers (For Java and Python this has not been done yet. The wrappers are created via SWIG and the procedure is well established for Linux/UNIX/OSX) - Disadvantages: - You will need to install CMake - that is easy enough, but it is an extra step - The system is new, it has only been tested by the maintainers and a few users - There are still a few quirks that need to be solved (this has to do with the location of the generated DLLs and other output files, but the old system does not provide much support there either) - Expectations: - With CBS it will be much easier to incorporate developments from the other platforms. The main problems have to do with _finding_ the various external libraries as under Windows there is no particular standard location for _libraries_ (as opposed to applications). - The deployment component CPack in CMake may be helpful in providing binary versions of the libraries. We have no experience with it at the moment, but it looks like a good solution for people who can not or do not want to build the library themselves. So, here are my primary questions: Is there a need to continue maintaining the old build system, based on makefiles and Windows-specific source code? Would the use of CBS mean that PLplot becomes inaccessible for you? I realise that the above description is rather biased towards CBS, but it _is_ a much better build system, from a maintainer's point of view at the very least. Awaiting your replies, Arjen |