Re: CMake Integration
Aleš Čepek <[email protected]> Sun, 20 Oct 2019 17:43:28 +0200
| Newsgroups | gmane.comp.gnu.gama.bugs |
|---|---|
| Message-ID | <CAGN9seSAf1JCA=5pCzX6V=_pGGxaMr1n=qYCDZBaTcgAcvo=mg@mail.gmail.com> |
--===============7745586243039018582==
Content-Type: multipart/alternative; boundary="0000000000005c62f90595596e6a"
--0000000000005c62f90595596e6a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Dear Vasileios, I am impressed (no irony!). I like some of you
improvements, but strongly disagree with some of the others. Anyway, thank
you for you work a and effort. Let me now explain my main points.
First of all, Gama is a GNU project and its official build is based on GNU
Autotools, Cmake is used only for Windows builds of gama-local.exe from MS
Visual Studio (Petra Millarova) and last but not least by Anaconda system,
https://anaconda.org/conda-forge/gama/ (Kristian Evers). I am not much
familiar with these two platforms, but Petra and Kristian have the final
say in the CMake build changes.
Some random comments:
* Start using modern target syntax in CMake ... generally I am for, if
Petra and Kristian agree.
* Remove from the source code the old libExpat ... you cannot do this. If
you have a look at configure.ac you can see tha old expat sources are used
only in case when expat library is not installed on the system (I do not
want the build to fail if this library is missing, I do not want strict
external dependency)
* Integrated the libxml2, octave, SQLite3 in CMake ... same as in previous
point. Octave and Sqlite3 are optional extensions, if the libraries are not
available, these features are simply ignored. ... it would be nice if
octave and sqlite3 would be only optional features in the CMake build
(similarly as in the autotools)
* Factor out the common xml headers/sources into a new library.
This was necessary, because there was a cyclical dependency. Now CMake
can auto generate the ellipsoids.h/cpp and the language.h/cpp files
On Sun, 20 Oct 2019 at 16:23, Vasileios-Athanasios Anagnostopoulos <
[email protected]> wrote:
> Hello Everyone,
>
> As a pet project I started to update the CMake implementation of the
> gama project. You can find my progress in https://github.com/anagno/gama =
.
>
> * What has been done:
> * Start using modern target syntax in CMake
> * Remove from the source code the old libExpat
> * Integrated the libxml2, octave, SQLite3 in CMake
> * Factor out the common xml headers/sources into a new library.
> This was necessary, because there was a cyclical dependency. Now CMa=
ke
> can auto generate the ellipsoids.h/cpp and the language.h/cpp files
> during
> the generation of the project.
> * Integrated the Conan package manager as an optional in CMake
>
* Migrate the statan UT ... I am not sure with UT abbreviation. As to the
statan functions, I don't think they are rich enough to form an individual
library (surely I could find a statisticaly library, but why to define
another dependency just for a few simple functions)
* Migrate the generation of the docs in CMake (probably using Doxygen?) ...
I do not like Doxygen comments in the source codes, which is not important,
what is important is tha Gama as GNU project must come with documentation
in Texinfo. This was what I agreed with before Gama was dubbed a GNU
package by rms.
* qt ... this is a special case. I return to Qt application gama-q2 these
days but this is not an official part of GNU Gama.
* Test the new build system in Windows ... there is a limited unit test
support (compared with autotools tests suite), but I doubt that it is
needed to run test on internal matrix algorithms from ctest.
Is this of interest ? ... It is definitely of interest!
* When running the UT with valgrind via CMake ... there are memory leaks
... I would star with this issue, I guess that you detected missing of one
delete operator in LocalNetwork::~LocalNetwork() destructor (?) which is
allready fixed, but not committed to git yet.
Ale=C5=A1
* What still remains:
>
> * Complete the migration of the gama-local UT (not all UT are being
> executed via CMake)
> * Migrate the statan UT
> * Migrate the generation of the docs in CMake (probably using
> Doxygen?)
> * Update the documentation
> * I have not examine the qt library of gama and how it can be
> integrated with the changes
> * Test the new build system in Windows.
> * When running the UT with valgrind via CMake (i.e. ctest -j8 -T
> memcheck --
>
> https://gitlab.kitware.com/cmake/community/wikis/doc/ctest/Testing-With-C=
Test#dynamic-analysis),
>
> there are memory leaks. Investigate them and fix them (?)
>
>
> Is this of interest ? If yes, are they any limitations in my
> implementation that I have not considered and should be taken into
> consideration?
>
> Have a beautiful week and kind regards,
>
> Vasileios
>
> P.S.: My system is an Ubuntu 18.04 computer, so I am might have miss
> some compatibility problems with other linux distros.
>
> P.S.2:This is a pet project, so no promises on when it will be fully done
> :)
>
> _______________________________________________
> Bug-gama mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/bug-gama
>
--0000000000005c62f90595596e6a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div>Dear Vasileios, I am impressed (no i=
rony!). I like some of you improvements, but strongly disagree with some of=
the others. Anyway, thank you for you work a and effort. Let me now explai=
n my main points.<br></div><div>First of all, Gama is a GNU project and its=
official build is based on GNU Autotools, Cmake is used only for Windows b=
uilds of gama-local.exe from MS Visual Studio (Petra Millarova) and last bu=
t not least by Anaconda system, <a href=3D"https://anaconda.org/conda-forge=
/gama/">https://anaconda.org/conda-forge/gama/</a> (Kristian Evers). I am n=
ot much familiar with these two platforms, but Petra and Kristian have the =
final say in the CMake build changes.</div><div><br></div><div>Some random =
comments:<br></div><div>* Start using modern target syntax in CMake ... gen=
erally I am for, if Petra and Kristian agree.</div><div> * Remove from the =
source code the old libExpat ... you cannot do this. If you have a look at =
<a href=3D"http://configure.ac">configure.ac</a> you can see tha old expat =
sources are used only in case when expat library is not installed on the sy=
stem (I do not want the build to fail if this library is missing, I do not =
want strict external dependency)</div><div> * Integrated the libxml2, octav=
e, SQLite3 in CMake ... same as in previous point. Octave and Sqlite3 are o=
ptional extensions, if the libraries are not available, these features are =
simply ignored. ... it would be nice if octave and sqlite3 would be only op=
tional features in the CMake build (similarly as in the autotools)<br></div=
><div>* Factor out the common xml headers/sources into a new library.<br>
=C2=A0=C2=A0=C2=A0=C2=A0 This was necessary, because there was a cyclical d=
ependency. Now CMake<br>
=C2=A0=C2=A0=C2=A0=C2=A0 can auto generate the ellipsoids.h/cpp and the lan=
guage.h/cpp files </div></div><br><div class=3D"gmail_quote"><div dir=3D"lt=
r" class=3D"gmail_attr">On Sun, 20 Oct 2019 at 16:23, Vasileios-Athanasios =
Anagnostopoulos <<a href=3D"mailto:[email protected]">anagnwst=
[email protected]</a>> wrote:<br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex">Hello Everyone,<br>
<br>
As a pet project I started to update the CMake implementation of the <br>
gama project. You can find my progress in <a href=3D"https://github.com/ana=
gno/gama" rel=3D"noreferrer" target=3D"_blank">https://github.com/anagno/ga=
ma</a> .<br>
<br>
* What has been done:<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Start using modern target syntax in CMake<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Remove from the source code the old libExpat<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Integrated the libxml2, octave, SQLite3 in CMake=
<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Factor out the common xml headers/sources into a=
new library.<br>
=C2=A0=C2=A0=C2=A0=C2=A0 This was necessary, because there was a cyclical d=
ependency. Now CMake<br>
=C2=A0=C2=A0=C2=A0=C2=A0 can auto generate the ellipsoids.h/cpp and the lan=
guage.h/cpp files <br>
during<br>
=C2=A0=C2=A0=C2=A0=C2=A0 the generation of the project.<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Integrated the Conan package manager as an optio=
nal in CMake<br></blockquote><div><br></div><div>* Migrate the statan UT ..=
. I am not sure with UT abbreviation. As to the statan functions, I don'=
;t think they are rich enough to form an individual library (surely I could=
find a statisticaly library, but why to define another dependency just for=
a few simple functions)</div><div><br></div><div>* Migrate the generation =
of the docs in CMake (probably using Doxygen?) ... I do not like Doxygen co=
mments in the source codes, which is not important, what is important is th=
a Gama as GNU project must come with documentation in Texinfo. This was wha=
t I agreed with before Gama was dubbed a GNU package by rms.</div><div>* qt=
... this is a special case. I return to Qt application gama-q2 these days =
but this is not an official part of GNU Gama.<br></div><div>* Test the new =
build system in Windows ... there is a limited unit test support (compared =
with autotools tests suite), but I doubt that it is needed to run test on i=
nternal matrix algorithms from ctest.</div><div><br></div><div>Is this of i=
nterest ? ... It is definitely of interest!=C2=A0 <br></div><div><div>* Whe=
n running the UT with valgrind via CMake ... there are memory leaks ... I w=
ould star with this issue, I guess that you detected missing of one delete =
operator in LocalNetwork::~LocalNetwork() destructor (?) which is allready =
fixed, but not committed to git yet.</div><div>Ale=C5=A1<br></div><div><br>=
</div></div><div><br></div><div><br></div><blockquote class=3D"gmail_quote"=
style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex">
* What still remains:<br>
<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Complete the migration of the gama-local UT (not=
all UT are being <br>
executed via CMake)<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Migrate the statan UT<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Migrate the generation of the docs in CMake (pro=
bably using Doxygen?)<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Update the documentation<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * I have not examine the qt library of gama and ho=
w it can be <br>
integrated with the changes<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * Test the new build system in Windows.<br>
=C2=A0=C2=A0=C2=A0=C2=A0 * When running the UT with valgrind via CMake (i.e=
. ctest -j8 -T <br>
memcheck -- <br>
<a href=3D"https://gitlab.kitware.com/cmake/community/wikis/doc/ctest/Testi=
ng-With-CTest#dynamic-analysis" rel=3D"noreferrer" target=3D"_blank">https:=
//gitlab.kitware.com/cmake/community/wikis/doc/ctest/Testing-With-CTest#dyn=
amic-analysis</a>), <br>
there are memory leaks. Investigate them and fix them (?)<br>
<br>
<br>
Is this of interest ? If yes, are they any limitations in my <br>
implementation that I have not considered and should be taken into <br>
consideration?<br>
<br>
Have a beautiful week and kind regards,<br>
<br>
Vasileios<br>
<br>
P.S.: My system is an Ubuntu 18.04 computer, so I am might have miss <br>
some compatibility problems with other linux distros.<br>
<br>
P.S.2:This is a pet project, so no promises on when it will be fully done :=
)<br>
<br>
_______________________________________________<br>
Bug-gama mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a><=
br>
<a href=3D"https://lists.gnu.org/mailman/listinfo/bug-gama" rel=3D"noreferr=
er" target=3D"_blank">https://lists.gnu.org/mailman/listinfo/bug-gama</a><b=
r>
</blockquote></div></div>
--0000000000005c62f90595596e6a--
--===============7745586243039018582==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQnVnLWdhbWEg
bWFpbGluZyBsaXN0CkJ1Zy1nYW1hQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxt
YW4vbGlzdGluZm8vYnVnLWdhbWEK
--===============7745586243039018582==--