Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » U++ Developers corner » U++ libraries and TheIDE converted to Meson build system
U++ libraries and TheIDE converted to Meson build system [message #58674] Sun, 17 July 2022 23:56 Go to previous message
germandiago is currently offline  germandiago
Messages: 14
Registered: June 2021
Location: Valencia
Promising Member
Hello everyone.


I have been long interested in using U++ to be able to compare it to WxWidgets. The code patterns that U++ uses look nice to me and the environment fully mature. The problem for me has been consuming it from other build system, in my case from Meson.



So I took my weekend and converted U++ to compile with Meson build system. Currently it is building under Linux and with static libraries (as I saw from what the Makefile is doing). I am using the 2022.2 tag from the github repo since my target is to make something consumable as a library to systems foreign to TheIde environment.

Beware that this is work in progress and right now it is working in Linux (others coming) with a static library setup tested.

For the conversion I extracted all files from the Makefile and started to code, one by one, a library per directory, so that it has basically the same structure as the original. I also ripped off some internal dependencies such as zstd and libpng. Now they are consumed from the package manager or Meson wraps if absent in subprojects/ (see Meson subprojects for more info) This allows to change those dependencies more easily when new versions come up and also allows for the use of Meson wraps, which is the package management system of Meson. It also flattens internal dependencies and makes them explicitly visible.
I did not compile absolutely all the code but the one necessary to run TheIde and start it.


My own plan is to use the layout designer but use Meson for package consumption and Emacs/CLion and for application creation.



There are some improvements I can think of (and some mistakes maybe, I would need some review) along the way to convert it. I would like to ask if you would be interested in me contributing this work. My plan is:

- make the Meson build system work in Windows
- make the Meson build system work in Mac
- make Meson generate .pc and .cmake packages out of the box. There is support for it in Meson.
- publish packages for all libraries (I suspect the ones in the ide/ directory are private and the others are meant to be for public cinsumption?)
- publish a wrap Meson file based on this work to be able to download the libraries from Meson and compile
them.
- publish a Conan recipe based on this work as well, which would allow the libraries to be consumed from many more sources.

Some highlights about the current conversion:

- It is easy to obtain debug/release and any setup you like, including ASAN and other builds since Meson provides all that.
- You can compile also shared libraries (I just use neutral library targets, you can choose) BUT it has not been tested in shared setup so far. I just tested the static library variant so far.
-This opens the possibility of compiling plugins dynamically?
- Getting rid of all "customized" nested dependencies is something not fully done yet, but doable. (Done for zstd, pcre, lzma, lzma sdk, zlib so far)

I will publish a branch in the next few days.

EDIT: Just pusblished it at https:// github.com/germandiagogomez/ultimatepp/tree/feature/meson-bu ild-system-based-on-2022.2
Feedback is and will be very welcome.

[Updated on: Mon, 18 July 2022 08:07]

Report message to a moderator

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Source Code Efficiency Minor Issue
Next Topic: log file in Oracle8
Goto Forum:
  


Current Time: Sun Apr 28 16:02:00 CEST 2024

Total time taken to generate the page: 0.08095 seconds