UWrap is a tool aimed at processing tree structures, identifying patterns and generating another tree structure as a result. The main use case currently implemented and documented is to process an Ada source tree generated by libadalang in order to either generate various kind of messages and analysis, or to wrap it around another Ada source file. This can be used in particular to wrap a thin binding generated by -fdump-ada-specs to a thicker binding.
NOTE ON THE CURRENT STAGE OF THE DOCUMENTATION
Since it was initially written, many elements of the language have evolved (although the fundamental concepts have not changed). The current documentation is not up to date and describes syntactically and sometimes semantically incorrect structures. The testsuite, however, is up to date and can be used as a reference.
Full documentation is currently work in progress. However, a tutorial is available to provide basic concepts from a user point of view.
To build UWrap, you will need a recent version of the GNAT Ada compiler, as well as Langkit and Libadalang.
To make the project, you will first need to build its two dependencies lang_template and lang_test, and properly set the path:
cd lang_test
make
cd ../lang_template
make
cd ..
source env.sh
gprbuild
This will create the uwrap executable under obj/. Note that this executable needs to stay here, as it expects specific files under ../include.