While autoconf isn't pretty, it has done me the least amount of harm of any
of the major build systems.  Without patches for the downstream packagers
and CI (travis/appveyor), I would be -1.  e.g. debian/ubuntu,
redhat/centos, macport/brew/fink, and others

With those patches, I'm -0.

BTW, It's not unreasonable to have separate build systems.  It's work, but
very doable.  I maintain a bazel build environment.  I have to notice add
or deletes of files in upstream, but it's been working for more than a
decade.

On Sat, Oct 28, 2017 at 11:11 PM, Alexander Bruy <alexander.b...@gmail.com>
wrote:

> While I'm not GDAL developer or regular contributor (submitted only
> few patches),
> but still often build GDAL trunk on WIndows and Linux, and less often on
> Mac.
>
> Personally I think that solution proposed in
> https://trac.osgeo.org/gdal/ticket/7080
> is more preferable. It does not require *all* dependencies to be build
> with cmake,
> it does not require maintaining forks with special directory structure for
> *all*
> dependencies, it plays well with conventions/packages provided on all
> systems
> out of the box. Maybe borsch is good for in-house use when all stack
> is build from
> scratch but it is not suitable for real-world use cases.
>
> Of course, #7080 is not ideal, there are some issues, but as I understand
> the
> work is not over and most (if not all) issues can be solved.
>
> Just my 2c.
>
> 2017-10-28 0:06 GMT+03:00 Dmitry Baryshnikov <bishop....@gmail.com>:
> > Hi,
> >
> > As Even said it make sense to move discussion from this ticket
> > (https://trac.osgeo.org/gdal/ticket/7080) to the list.
> >
> > First of all I would like to make small introduction to Borsch project.
> Here
> > it is some useful links:
> >
> > * Borsch repository: https://github.com/nextgis-borsch/borsch
> >
> > * Presentation on FOSS4G 2016:
> > http://nextgis.ru/wp-content/uploads/2016/08/NextGIS-Borsh-
> presentation.pdf
> >
> > * GDAL repository adapted for Borsch:
> > https://github.com/nextgis-borsch/lib_gdal
> >
> > Shortly speaking Borsch is 3 CMake scripts which add ability to include
> > dependence library in one line of code.
> >
> > It looks like:
> >
> > find_anyproject(TIFF REQUIRED)
> >
> > Certainly developer can add additional parameter to configure dependency
> in
> > find_anyproject function.
> >
> > Inside  find_anyproject work 2 cases:
> >
> > 1. First of all (by default, but can be overridden) CMake searches host
> > system for dependency library (headers and lib files). This is usual
> CMake
> > find_package (https://cmake.org/cmake/help/
> v3.0/command/find_package.html)
> > with some additional logic to try different options for hard cases (like
> > Qt).
> >
> > 2. If library not found, find_anyproject can get the sources or prebuild
> > library from github.
> >
> > So the GDAL or any other library can be build the normal way, but
> developer
> > have additional features to configure build all libraries with one
> compiler
> > and one set of compiler/linker settings (with some limits). Such way we
> can
> > have rather complicated scenarios to build GDAL and dependencies.
> >
> > Here it is several examples of benefits of this approach:
> >
> > 1. NextGIS Mobile SDK v3. SDK based on GDAL and need it in one library
> for
> > iOS as *.framework and for Android as *.so (arm7, arm64, i386, x86_64
> > architecture). I build all dependencies include GDAL statically and link
> in
> > one fat library. The all code that do it:
> > https://github.com/nextgis/nextgis_datastore/blob/master/
> cmake/extlib.cmake#L118-L236
> >
> > By the way the library also builds on Linux and Mac OS (Windows under
> > development) and CMake try to use existed in host system libraries. If
> CMake
> > find GDAL in host system it will use it and all (-DENABLE_PLSCENES=OFF
> ... )
> > will be ignored as it already build with another parameters.
> >
> > 2. Build GDAL Windows standalone installer and GDAL Ubuntu ppa:
> > https://github.com/nextgis/ppa/blob/master/gdal/master/debian/rules
> >
> > 3. Build QGIS
> > (https://github.com/nextgis/nextgisqgis/blob/master/CMakeLists.txt#L149
> ),
> > PostGIS
> > (https://github.com/nextgis-borsch/postgis/blob/master/
> CMakeLists.txt#L165),
> > Formbuilder
> > (https://github.com/nextgis/formbuilder/blob/master/cmake/
> extlib.cmake#L53-L173)
> >
> > This is main Borsch features.
> >
> >
> > There are some additional conventions like:
> >
> >     * I modify all libraries included into Borsch repository to install
> on
> > unix-like paths. For Linux this is usual, for Windows and Mac OS this
> let us
> > to use Qt installer framework an install software mach similar like on
> > Linux. This is about target "install" which is vary on different
> libraries
> > (CMake has it own conventions about it). This is not mandatory for Borsch
> > itself but useful. CMake can register installed libraries in system
> > repository to simplify find them in find_package function.
> >
> >     * CMake get library version from sources in all libraries included
> into
> > Borsch (if applicable, otherwise set it in CMake script). This is
> necessary
> > if exact version of library needed. This is not mandatory. One more
> benefit
> > during building process we can see dependency library version in console.
> >
> >     * We modify all libraries included into Borsch repository to find
> > dependencies using find_anyproject. It is simple to use libraries from
> our
> > borsch repository, but developer can fork them or use any other sources
> and
> > build systems to have dependency library in it's host system.
> >
> > One can see this is all very flexible.
> >
> >
> > What about GDAL.
> >
> > 1. After unification GDALDataset and OGRDatasource current sources tree
> is
> > not fit for this new logic of GDAL classes. I rearranged sources more
> closer
> > to GDAL classes and CMake needs. Main changes are moving raster and
> vector
> > drivers inside drivers folder
> > (https://github.com/nextgis-borsch/lib_gdal/tree/master/drivers).This
> > simplify situation where different drivers need the same dependency
> library
> > (libpg, libsqlite, etc.). Also there are several raster/vector drivers
> which
> > need a separate directory but now presented in ogr or frmts directories.
> > There are some bad decisions I made - for example I moved unit tests into
> > separate repository - this was a mistake. We will return unit tests back
> to
> > GDAL repository.
> >
> > An example of cmake friendly way see
> > https://github.com/nextgis-borsch/lib_gdal/blob/master/
> drivers/vector/CMakeLists.txt.
> > The driver developer must only create new folder and put CMakeLists.txt
> file
> > into it. The upper CMake script will find new driver and add it to GDAL
> > build. In common cases no need to modify upper CMake scripts.
> >
> > 2. I remove third-party code from drivers folders (TIFF, GeoTIF, PNG,
> JPEG
> > etc). All this code are in separate repositories. I don't see the
> difference
> > to get this code from git pull from main GDAL repository or from the
> > separate repository via find_anyproject process. Current GDAL repository
> > looks like the https://github.com/nextgis-borsch packed in one
> repository.
> >
> >
> > In conclusion:
> >
> > 1. Borsch added flexible and useful features and not remove existing
> > approach
> >
> > 2. The current cmaked GDAL are in production in my company more than a
> year
> > on Windows, Linix, Mac OS, iOS, Android.
> >
> > 3. I'm ready to discuss and improve current solution. Any help are
> welcome
> >
> > 4. I also will be happy to contribute directly or via PR into GDAL trunk
> > instead of backporting in both directions improvements that we do in
> GDAL .
> >
> >
> > Finally:
> >
> > Find the link to page with the CMake in GDAL discussion -
> > https://trac.osgeo.org/gdal/wiki/CMake
> >
> > --
> > Best regards,
> >     Dmitry
> >
> >
> > _______________________________________________
> > gdal-dev mailing list
> > gdal-dev@lists.osgeo.org
> > https://lists.osgeo.org/mailman/listinfo/gdal-dev
>
>
>
> --
> Alexander Bruy
> _______________________________________________
> gdal-dev mailing list
> gdal-dev@lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev
>



-- 
--
http://schwehr.org
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to