With the addition of dtappbuilder to autotools, every make run
(including make install) causes src/ab to regenerate files that cause
the whole directory to be recompiled, even on a 'make install'.
This seems to be primarily caused by dtbuilder.msg (and possibly
dtbuilder.c) being modified after it is generated, which is apparently
normal behavior for dtcodegen.
This fix sets both dtbuilder.msg and dtbuilder.c as "order-dependant
prequisites" so that they are always generated first (there are
already rules to do generate them) and then subsequently the only
thing required is that they exist since we don't care if they are
modified after that point. If you need to make changes to them, edit
their respective .src files instead.
This seems to resolve the issue, but perhaps at the expense of adding
another requirement to use gmake.
We also need to disable parallel building in this module :(
When building a program foo in-tree, libtool 2.4.6 generates an
executable called lt-foo with a wrapper script called foo. This
means that argv[0] inside the program is lt-foo rather than foo.
This is a problem for dtcodegen, which uses the program name for various
purposes including the "generated by" banner and the logfile name.
Remove the lt- prefix if present to avoid this.
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.