Specifically:
- use libtool so that the top level library contains the actual
objects, and not just the sub-archives, which the linker will just
ignore.
- create the source files via symlinks rather than referencing them
with relative paths. Doing it that way causes a 'make clean' to
delete objects in DtMmdb/ which is wrong.
- fix up utility/ - it seemed to be building more source files than
the original Imakefile listed. Other changes may need to be done
here if similar mistakes were made in other subdirs.
Also, rework the way we build convenience libs for the classes to use
libtool. This fixes some potential linking issues and dependency
checking.
Next up will be to see if we can link and install it, along with it's
message catalogs, resources, etc.
The return value from CanvasRenderer::_dofont is a pointer. It will be passed
to the free function. Ensure that pointer always points to a dynamically
allocated memory to avoid segmentation faults.
CDE has relied upon catgets() implementations following a relaxed
interpretation of the XPG internationalization standard that ignored
-1, the standard error value returned by catopen, as the catalog
argument. However, this same behavior causes segmentation faults with
the musl C library.
This patch:
- Centralizes (with the exception of ToolTalk) all calls to catopen(),
catgets(), and catclose() through MsgCat within the DtSvc library.
- Prevents calls to catgets() and catclose() that rely upon
undefined behavior.
- Eliminates a number of bespoke catgets() wrappers, including multiple
redundant caching implementations designed to work around a design
peculiarity in HP/UX.
- Eases building CDE without XPG internationalization support by providing
the appropriate macros.
Also, restructure some of the dependencies in the lib/tt binaries. We
will link with libtt (which will include libtirpc as a dependency),
and XTOOLLIB - all the right X11 stuff without needing to add it to
every OS. Removed several uneeded OS specializations ("if LINUX",
etc) as a result.