Make -lXinerama a dep on libDtXinerama so it doen't need to be
specified in Makefile.am files or in LIBS as it was being done
previously.
This still needs a little work, ideally Xinerama should be completely
optional and only enabled if present. But we can save that for
later.
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.
Previously we would detect whether TIRPC is installed or not, and set
TIRPCINC to the include directory with the -DOPT_TIRPC macro defined.
Then, pretty much every Makefile.am needs to be sure that $(TIRPCINC) is
specified in the cpp/c/cxx flags.
Since we can never be sure that an RPC header file might be indirectly
included, a better approach is to simply add TIRPCINC to the global
list of CXXFLAGS and CFLAGS in configure.ac for everybody. This way,
it is always specified properly on tirpc systems, and we don't need to
always add it to every individual Makefile.am since everyone will get
it by default.
TIRPCLIB is still marked as a dep in libtt, so as long as libtt is
linked, you should automatically get the tirpc library too. This is
still unchanged.
This means that when linking against libtt, libtirpc should also
automatically be linked in if we determined that we are using tirpc.
This avoids having to link every program that uses libtt (almost all
of them) from having to have a $(TIRPCLIB) added to their link
commands.
That was not fun. There were a variety of issues. It's needs
testing.
We use the new GENCPP for preprocessing the various scripts and config
files in config/
For ksh, we need a full pathname. AC_CHECK_PROGS only sets the name,
so we can't use that (think of a "#!" in a shell script.
We use some shell scripting to locate the ksh pathname.
While on that subject, the current use of CPP (gcc -E) as a general
preprocessor does not work very well. I messes up whitespace,
adds/translates random whitespace, and complains bitterly about single
quotes (') in various places like comments. It's not usable for what
CDE needs.
So, now we use GENCPP. Using shell scripting like that used for ksh,
we locate the cpp program, and set GENCPP to "/full/path/to/cpp
-traditional -nostdinc". This is what Linux uses now in an Imake
build, and it works fine. We'll have to see what the BSD/Solari do.
We might need to just include BSD's "tradcpp" into the build and use
that. It too works well in limited testing, but eats blank lines. We
can live with that if we have to.
Removed PORT_NOFORK define in favor of autotools vfork availablility
checking. Use vfork if present.
Got rid of getenv/putenv definitions in favor of including correct
system headers.
Use FD_CLOEXEC in fcntl() call rather than hardcoded '1'.
Added -lm check to configure so dtwm will build.
Renamed internal round() function to wmround() to fix warning about
redefinition of builtin.
Fixed missing backslash in Makefile.am that prevented half the sources
from building.
We take advantage of subdir-object and just build the subdir source
files directly as normal dependencies of libDtSvc in the top level
Makefile.am.
This means the intevening subdirectory Makefiles are no longer needed,
and no need to replicate flags and the like between the
subdirectory Makefile.am files.
Also, no need to build fake .a libs we can't really use.
configure: remove AC_OUTPUT_FILES related the the lib/DtSvc/*
subdirectories. They are no longer needed.
We were building subsets of this library as archive.a objects, then
trying to combine them into a shared object. This warnings, and link
failures due to the lack of 0fPIC when building the archive libraries.
Now, we do not buld archive libraries, and the main libDtSvc.so
library is build by adding all of the .lo file in the component
subdirectories.
In a future commit, we could just remove the SUBDIR builds (DtUtil1,
etc) and build the sub objects directly.
Static builds are disabled - there is no reason to build both shared
and static versions of everything.
MAJOR/MINOR/MICRO variables changed to CDE_VERSION_MAJOR/MINOR/MICRO.
Make DtXinerama a shared (la) library.
Add DTCLIENTLIBS SUBST to replace the role of Imake DtClientLibs, DT
libs needed to link most CDE programs.
Add AC_PROG_RANDLIB.
At this stage, these certainly won't actually build yet.
Just fix up the relevent Makefile.am files so that autogen does not
emit errors and warnings for them.
Removed AIX/HPUX support in Makefile.am files. No point in
propogating that stuff when we've already removed much of that
unmaintained code from the codebase.
Commented out all of the Sun Pro stuff. Someone whos using that will
need to go through and fix it. This is mostly in dtmail and dthelp.
In fact, someone who does Solaris in general will need to go through
this stuff.
Next up, we'll replace any remaining 'if SUN' conditionals with 'if
SOLARIS' which is a more appropriate name and was already defined in
configure.ac.
Then we'll see about getting these new directories building.
First attempt at setting certain -Defines and compiler flags (like
-fno-strict-aliasing). Only linux for now.
Add CSRG_BASED to CPP_SOURCE_FLAGS rather than directly at CFLAGS.
This will be added to CFLAGS later on in the script along with other
gathered flags and options.
Set CFLAGS, CXXFLAGS, and CPPFLAGS at the end, composed of other env
variables we set earlier on.
cppfile.inc - don't set BUIT_SOURCES or CLEANFILES here as they
overwrite (or in case of the CLEANFILES +=...) ignore the settings.
Do those in the Makefile.am always.
We still need a better way to preprocess generic files. cppfile.inc
will only work for one file per Makefile...
There are/were two dproto.h files, one in DtSearch, one in raima. The
one in raima is the one we want, so replace the global Dt/dproto.h
with it. Also correct a prototype declaration error in that file.
Delete the dproto.h file in DtSearch, it's garbage and unused.
Next, redo the way yacc is used. Autotools does "the right thing" by
simply including the .y file in *_SOURCES and using
BUILT_SOURCES/CLEANFILES to manage it. No need for special rules to
handle yacc and lex.
These really need to go away and are primarily used by older
unsupported platforms.
Here we fake these for Linux (4.15), freebsd (10.0), openbsd (6.2),
netbsd (8.0), and solaris (5.10).
I'm not sure about the Solaris one as I don't have any of them.
Basically, anything after Solaris 5.10, which is pretty ancient.
These should be considered temporary - all uses of these macros in the
code should be removed in favor of functionality-specific checks in
configure.