[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-buildsystem
Subject:    Re: Is ECM a good place for implementing Nim support in CMake?
From:       Alexander Neundorf <neundorf () kde ! org>
Date:       2024-04-28 19:58:26
Message-ID: 1975769.yKVeVyVuyW () unknownc4d9870202f1
[Download RAW message or body]

On Sonntag, 28. April 2024 12:50:06 CEST Albert Astals Cid wrote:
> El divendres, 19 d'abril del 2024, a les 11:17:09 (CEST), Anna (cybertailor)
> Vyalkova va escriure:
> > Hi,
> > 
> > I'd like to develop Nim applications (with possible GUI support via
> > nimqt) but this language lacks support for any standard build system.
> > 
> > So that's the thing I'm focused on right now (just happened to also be
> > my favorite thing).
> > 
> > Alternatives I considered:
> > 
> > 1. Procedure described in "CMakeAddNewLanguage.txt". First of all,
> > that's scary and second it doesn't cover my use case: Nim is not a
> > compiler but rather a transpiler. It compiles Nim code into C/C++/JS
> > code and then calls system compiler to get native binaries. These steps
> > could be separated.
> > 
> > 2. Going with my own "nim-for-cmake" module library. That's possible but
> > requires lots of boilerplate code that can be avoided if these modules
> > become part of ECM.
> > 
> > I've implemented an alternative build system for Nim's "nimble" packages
> > before so I know the necessary steps: 1) find the compiler, 2) find the
> > deps, 3) generate a json-script, 4) extract the depfiles, 5) execute the
> > script.
> > 
> > Can I start making such ECM module or should it be a separate CMake
> > module library?
> 
> You will probably find more people that know about ECM in kde frameworks
> devel mailing list than here, this list is nowadays pretty dormant.
> 
> My suggetsion would be, talk to the cmake folks, they are a relatively open
> bunch of people that like their build system to support as many things
> possible and what you really want is to have support in cmake itself, not
> having to include some extra stuff to make it work.

yes, right here, probably the "Development" channel:
https://discourse.cmake.org/[1]

Alex




--------
[1] https://discourse.cmake.org/

[Attachment #3 (unknown)]

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">On Sonntag, 28. \
April 2024 12:50:06 CEST Albert Astals Cid wrote:</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; El divendres, 19 \
d'abril del 2024, a les 11:17:09 (CEST), Anna (cybertailor)</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; Vyalkova va \
escriure:</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; \
Hi,</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; I'd like to \
develop Nim applications (with possible GUI support via</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; nimqt) but this \
language lacks support for any standard build system.</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; </p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; So that's the \
thing I'm focused on right now (just happened to also be</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; my favorite \
thing).</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; \
Alternatives I considered:</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; </p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; 1. Procedure \
described in &quot;CMakeAddNewLanguage.txt&quot;. First of all,</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; that's scary and \
second it doesn't cover my use case: Nim is not a</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; compiler but \
rather a transpiler. It compiles Nim code into C/C++/JS</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; code and then \
calls system compiler to get native binaries. These steps</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; could be \
separated.</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; \
</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; 2. Going \
with my own &quot;nim-for-cmake&quot; module library. That's possible but</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; requires lots of \
boilerplate code that can be avoided if these modules</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; become part of \
ECM.</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; I've \
implemented an alternative build system for Nim's &quot;nimble&quot; packages</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; before so I know \
the necessary steps: 1) find the compiler, 2) find the</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; deps, 3) generate \
a json-script, 4) extract the depfiles, 5) execute the</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; script.</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; </p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; Can I start making \
such ECM module or should it be a separate CMake</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; &gt; module \
library?</p> <p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; You will probably \
find more people that know about ECM in kde frameworks</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; devel mailing list than \
here, this list is nowadays pretty dormant.</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; </p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; My suggetsion would be, \
talk to the cmake folks, they are a relatively open</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; bunch of people that \
like their build system to support as many things</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; possible and what you \
really want is to have support in cmake itself, not</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">&gt; having to include some \
extra stuff to make it work.</p> <br /><p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">yes, right here, probably \
the &quot;Development&quot; channel:</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;"><a \
href="https://discourse.cmake.org/">https://discourse.cmake.org/</a></p> <br /><p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Alex</p> <br /><br /><br \
/></body> </html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic