05 September 2012

Ultimate++ Library Edition

This weekend I'm evaluating several GUI Libraries which have very liberal license such as new BSD or MIT. and found only IUP which is C based. There are some GUI libraries come as part of framework, they use different configuration and often have their own build tool: VCF and U++. Both C++ based and was meant to be work together with the sources instead of available in usual binary distribution such as GTK, considering their license which developer given total freedom to modify the library itself. I tried to package it into distribution friendly way. Let's try U++!

Overall from its examples U++ was intended to compete with Qt or Wx though with current situation Qt is the most advanced. U++ use BLITZ for a fast compilation (SCU), sort of what GHC did which a bit confusing to packaged as they're combined objects. Binary size is reasonably small at minimal setup but as usual mingw build is always significantly larger than VS especially with C++.

U++ has a quirk to make it available as package, while we can choose not using BLITZ and rebuild all *.a (except theIDE related) to monolithic archive there is an exception: files *.icpp which determined and called by "uses" in .upp file that compiled and appended during linking process. This create problem for generic packaging as they are conditional requirement. The (ignorant) easy workaround is to link the whole *.icpp objects (can be done in pkg-config's libs option too). This however create up to 700KB larger binary as some objects aren't actually needed but will works with generic compilation way.

Here is binary as library for both 32bit and 64bit
http://osspack32.googlecode.com/files/upp4193_32_64.7z
http://osspack32.googlecode.com/files/upp4193_mingw32.7z (only for MinGW32 dwarf2)

note: it's MinGW-W64 SJLJ based and if using with vanilla G++ you'll need to append -lpthread during linking and naturally TheIDE still needed for GUI craft. When using postgres/ssl plugin then openssl and postgres client library required. 

Currently I had side project related to postgres and need BSD licensed GUI with built-in support, but after some trials I found myself lost... this weird(unique) C++ approach is too high for me to boot :-(

No comments:

Post a Comment