Changes between Version 9 and Version 10 of CMake


Ignore:
Timestamp:
Apr 15, 2018, 3:22:15 PM (6 years ago)
Author:
Mateusz Łoskot
Comment:

Remove SOCI as example: an old shit, not even close to so called Modern CMake

Legend:

Unmodified
Added
Removed
Modified
  • CMake

    v9 v10  
    2020
    2121CMake is a highly capable cross-platform build system. It is a meta-build system able to generate native build configurations for number of development toolsets on variety of platforms. CMake configuration would be very beneficial for GDAL users and developers. Let get the thing done.
    22 
    23 = Brainstorm =
    24 
    25 == Mateusz Loskot ==
    26 
    27 I suggested [http://lists.osgeo.org/pipermail/gdal-dev/2011-October/030336.html modular approach] and presented CMake for [http://soci.sourceforge.net/ SOCI] project as a proof of concept.
    28 
    29 The basic idea is outlined below:
    30  * GDAL is formed of core implementation and large number of configurable modules (drivers).
    31  * GDAL depends on large number of third-party software libraries.
    32  * There is 1:1 dependency between GDAL driver and third-party library. Many drivers share common dependencies like ''zlib'' or ''libjpeg'' libraries.
    33  * I suggest to divide configuration into three steps (see ''SOCI'' approach):
    34    1. Basic configuration which determines architecture, system, building toolset, etc.
    35    2. Look for all third-party libraries used by GDAL, required and optional.
    36    3. Depending on results of the step '''2.''', switch on/off building of GDAL features and drivers.
    37  * If any of GDAL dependencies (third-party libraries) are explicitly switched off, then relevant lookup in step '''2.''' is skipped.
    38  * If any of GDAL features or drivers are explicitly switched off, then it does not affect lookup in step '''2.''' but only decisions in step '''3.''' Means, lookup of corresponding dependencies is performed.
    39  * This way we don't care about solving the whole graph dependencies.
    40    * For example, if user switches off ''JPEG'' driver, We don't want to have to check: are there any other drivers enabled that depend on ''libjpeg''? Shall we turn off ''libjpeg'' lookup?
    41    * Disabling a driver is decision that solely affects step '''3.''' but does not affect any part of step '''2.'''
    42    * But, configuration choices by user which switch off/on dependencies lookup in step '''2.''' will do affect checks performed in step '''3.''' automatically.
    43    * For example, if user switches off ''libjpeg'', then all features and drivers depending on ''JPEG'' support will be switched off automatically in step '''3.'''
    44