CoinBuildSystem - coin-or-foundation/tlc GitHub Wiki

Notes on Possible Improvements to the COIN-OR Build System

We are currently in the lidst of redesigning the core COIN build system. Comments on this page are largely out of date.

Kipp's Comments

After moving to the Subversion Control System, I think it might be a good idea to examine the entire build process. I am willing to be on such a committee.

Here are a few thoughts:

  1. Have the build process depend on a single parameter file to get all of the parameter settings. Currently, the user has to search through a number of files to set optimization levels, whether to use dynamic versus static libs, which libraries to use (in makefile.location), etc. It would be great to have all of the parameter settings in a single file.

  2. The makefiles should be consistent across projects. For example, the makefiles should conform in calling {\tt Makefile.lib} when generating the library and calling {\tt Makefile.rules} in the unitTest makefile. Also the link command that used in the makefiles should be consistent.

  3. The makefiles should be as platform/compiler independent as possible. This will not be easy, however, I think this can be achieved to a high degree. To illustrate, I am attaching a document that describes how I modified the current makefile system so that it can be used to build various COIN projects using the Microsoft Visual Studio .NET compiler. It does not interfere with the current build system. I have used the same set of makefiles to build under both Windows and Mac OS X. If we start from scratch, we can do something far more elegant than what I have. I also attach a zip of the relevant makefiles and scripts.

    = Ted's Comments =

  4. Get rid of CoinLibsDefined mecahnism for determining which COIN libraries are installed. It's easy enough to detect the presence of a directory to see whether a certain project has been downloaded. Currently, the Smi unitTest won't compile out of the box unless Makefile.location is modified. It seems silly that when calling make from the Smi directory, we can't detect that Smi is installed.

  5. We need universal overrides for optimization level and so forth. Currently, to get everything to compile with the same optimization level requires either a command-line override or lots of editing of Makefiles.


Attachments: