This commit will not completely remove all Imake files, specifically
those for sections that have not been completed yet.
Also, the databases dir has been moved to databases-delete-later until
we have everything building and installed properly.
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.
With this patch, CDE (autotools) builds and runs on fbsd 12 now.
fbsd11 should work too, but not yet tested.
You must use gmake - ie:
./configure MAKE=gmake
gmake
Seems all of the BSD's will need to use gmake for now.
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.
Some files were trying to access the global includes directy in the
build area with things like #include <api/c/tt_c.h>, which is now
wrong. Se we fix all of those up. tt_c.h and tttk.h are now global,
so we no longer need to root around various build dirs to find them.
TT builds again.
Redo the way the main CDE libs are specified in configure.ac... The
current way could not work due to evaluation issues, and the fact that
variables like $srcdir and the like are only valid in Makefiles, not
configure.
Use @LIBNAME@ rather then $(LIBNAME) in Makefile.am files - this way
the location is always evaluated when it's run, not in configure -
which can't work for a variety of reasons.
Got some of the TT binaries to build.
Made a new include/cppfile.inc file that can be used to pre-process
files. The downside is that currently you can only pre-process one
file at a time per Makefile. Something more robust is needed, but at
least tt/bin/shell now builds. Will need to come up with a better way.
This should allow an autoregen and ./confiure to work. We only
generate Makefiles for lib/* and ./Makefile for now. We'll ad more as
we go along.
Make still fails as we need to figure out TT - tirpc lib, rpcgen,
etc. But it's a start!
This is enabled by default. To disable, add:
in the config/cf/site.def or host.def file.
You will need to have the libtirpc-dev package installed.
The benefit is that you will no longer need to run rpcbind in insecure
mode (the -i option). There are other benefits we may be able to take
advantage of in the future, like supporting IPV6 for ToolTalk.
Patch from Pascal Stumpf <Pascal.Stumpf@cubes.de>:
So here are all the patches that deal with the fact that modern
compilers assume different scoping rules for variables declared in for
loops. On Linux, -fpermissive has been added as a compiler flag to
compensate for this old C code, but I think it is the wrong approach.
Sorry, couldn't help sneaking in a || defined(CSRG_BASED) and some casts
needed for other reasons ...
Remove from individual Imakefiles.
Also, remove '#if 0' block in linux.cf, and remove empty
LinuxMachineDefines. This should be working correctly. If not, let me
know.