pull up r24469, r24530, r24533, r24534, r24535, r24537 from trunk
[krb5.git] / src / config / pre.in
index 470140138a2aaf184254e8f2b4335fee9f67053e..de08645550a51b43aee74f226a6bd25aa33f0883 100644 (file)
@@ -1,5 +1,21 @@
+############################################################
 ## config/pre.in
 ## common prefix for all Makefile.in in the Kerberos V5 tree.
+##
+
+# These are set per-directory by autoconf 2.52 and 2.53:
+#  srcdir=@srcdir@
+#  top_srcdir=@top_srcdir@
+# but these are only set by autoconf 2.53, and thus not useful to us on
+# Mac OS X yet (as of 10.2):
+#  abs_srcdir=@abs_srcdir@
+#  abs_top_srcdir=@abs_top_srcdir@
+#  builddir=@builddir@
+#  abs_builddir=@abs_builddir@
+#  top_builddir=@top_builddir@
+#  abs_top_builddir=@abs_top_builddir@
+# The "top" variables refer to the directory with the configure (or
+# config.status) script.
 
 WHAT = unix
 SHELL=/bin/sh
@@ -8,48 +24,108 @@ all:: all-$(WHAT)
 
 clean:: clean-$(WHAT)
 
+distclean:: distclean-$(WHAT)
+
 install:: install-$(WHAT)
 
 check:: check-$(WHAT)
 
-all-recurse: all-prerecurse
-all-postrecurse:: all-recurse
+install-headers:: install-headers-$(WHAT)
+
+##############################
+# Recursion rule support
+#
+
+# The commands for the recursion targets live in config/post.in.
+#
+# General form of recursion rules:
+#
+# Each recursive target foo-unix has related targets: foo-prerecurse,
+# foo-recurse, and foo-postrecurse
+#
+# The foo-recurse rule is in post.in.  It is what actually recursively
+# calls make.
+#
+# foo-recurse depends on foo-prerecurse, so any targets that must be
+# built before descending into subdirectories must be dependencies of
+# foo-prerecurse.
+#
+# foo-postrecurse depends on foo-recurse, but targets that must be
+# built after descending into subdirectories should be have
+# foo-recurse as dependencies in addition to being listed under
+# foo-postrecurse, to avoid ordering issues.
+#
+# The foo-prerecurse, foo-recurse, and foo-postrecurse rules are all
+# single-colon rules, to avoid nasty ordering problems with
+# double-colon rules.
+#
+# e.g.
+# all:: includes foo
+# foo:
+#      echo foo
+# includes::
+#      echo bar
+# includes::
+#      echo baz
+#
+# will result in "bar", "foo", "baz" on AIX, and possibly others.
 all-unix:: all-postrecurse
+all-postrecurse: all-recurse
+all-recurse: all-prerecurse
 
-all-prerecurse::
-all-postrecurse::
+all-prerecurse:
+all-postrecurse:
 
-clean-unix:: clean-prerecurse
-clean-unix:: clean-recurse
 clean-unix:: clean-postrecurse
+clean-postrecurse: clean-recurse
+clean-recurse: clean-prerecurse
+
+clean-prerecurse:
+clean-postrecurse:
 
-clean-prerecurse::
-clean-postrecurse::
+distclean-unix: distclean-postrecurse
+distclean-postrecurse: distclean-recurse
+distclean-recurse: distclean-prerecurse
 
-distclean-unix:: distclean-prerecurse
-distclean-unix:: distclean-recurse
-distclean-unix:: distclean-postrecurse
+distclean-prerecurse:
+distclean-postrecurse:
 
-install-unix:: install-prerecurse
-install-unix:: install-recurse
 install-unix:: install-postrecurse
+install-postrecurse: install-recurse
+install-recurse: install-prerecurse
+
+install-prerecurse:
+install-postrecurse:
+
+install-headers-unix:: install-headers-postrecurse
+install-headers-postrecurse: install-headers-recurse
+install-headers-recurse: install-headers-prerecurse
 
-install-prerecurse::
-install-postrecurse::
+install-headers-prerecurse:
+install-headers-postrecurse:
 
-check-unix:: check-prerecurse
-check-unix:: check-recurse
 check-unix:: check-postrecurse
+check-postrecurse: check-recurse
+check-recurse: check-prerecurse
 
-check-prerecurse::
-check-postrecurse::
+check-prerecurse:
+check-postrecurse:
 
-Makefiles:: Makefiles-prerecurse
-Makefiles:: Makefiles-recurse
-Makefiles:: Makefiles-postrecurse
+Makefiles: Makefiles-postrecurse
+Makefiles-postrecurse: Makefiles-recurse
+Makefiles-recurse: Makefiles-prerecurse
 
-Makefiles-prerecurse::
-Makefiles-postrecurse::
+Makefiles-prerecurse:
+Makefiles-postrecurse:
+
+generate-files-mac: generate-files-mac-postrecurse
+generate-files-mac-postrecurse: generate-files-mac-recurse
+generate-files-mac-recurse: generate-files-mac-prerecurse
+generate-files-mac-prerecurse:
+
+#
+# end recursion rule support
+##############################
 
 # Directory syntax:
 #
@@ -60,32 +136,55 @@ C=./
 # "/" for UNIX, "\" for Windows; *sigh*
 S=/
 
-SUBDIRS = @subdirs@ $(LOCAL_SUBDIRS)
+#
 srcdir = @srcdir@
-SRCTOP = @srcdir@/$(BUILDTOP)
+top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 CONFIG_RELTOPDIR = @CONFIG_RELTOPDIR@
 
-ALL_CFLAGS = $(DEFS) $(DEFINES) $(CPPFLAGS) $(LOCALINCLUDES) $(CFLAGS)
+FAKEDEST=$(BUILDTOP)/util/fakedest
+FAKEPREFIX=$(FAKEDEST)/$(prefix)
+FAKELIBDIR=$(FAKEPREFIX)/lib
+
+# DEFS         set by configure
+# DEFINES      set by local Makefile.in
+# LOCALINCLUDES        set by local Makefile.in
+# CPPFLAGS     user override
+# CFLAGS       user override but starts off set by configure
+# WARN_CFLAGS  user override but starts off set by configure
+# PTHREAD_CFLAGS set by configure, not included in CFLAGS so that we
+#              don't pull the pthreads library into shared libraries
+ALL_CFLAGS = $(DEFS) $(DEFINES) $(KRB_INCLUDES) $(LOCALINCLUDES) \
+       -DKRB5_DEPRECATED=1 \
+       $(CPPFLAGS) $(CFLAGS) $(WARN_CFLAGS) $(PTHREAD_CFLAGS)
+ALL_CXXFLAGS = $(DEFS) $(DEFINES) $(KRB_INCLUDES) $(LOCALINCLUDES) \
+       -DKRB5_DEPRECATED=1 \
+       $(CPPFLAGS) $(CXXFLAGS) $(WARN_CXXFLAGS) $(PTHREAD_CFLAGS)
+
 CFLAGS = @CFLAGS@
+CXXFLAGS = @CXXFLAGS@
+WARN_CFLAGS = @WARN_CFLAGS@
+WARN_CXXFLAGS = @WARN_CXXFLAGS@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+THREAD_LINKOPTS = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
 CPPFLAGS = @CPPFLAGS@
 DEFS = @DEFS@
 CC = @CC@
+CXX = @CXX@
 LD = $(PURE) @LD@
 DEPLIBS = @DEPLIBS@
+KRB_INCLUDES = -I$(BUILDTOP)/include -I$(top_srcdir)/include
 LDFLAGS = @LDFLAGS@
 LD_UNRESOLVED_PREFIX = @LD_UNRESOLVED_PREFIX@
 LD_SHLIBDIR_PREFIX = @LD_SHLIBDIR_PREFIX@
 LDARGS = @LDARGS@
 LIBS = @LIBS@
-SRVLIBS = @SRVLIBS@
-SRVDEPLIBS = @SRVDEPLIBS@
-CLNTLIBS = @CLNTLIBS@
-CLNTDEPLIBS = @CLNTDEPLIBS@
 
 INSTALL=@INSTALL@
 INSTALL_STRIP=
 INSTALL_PROGRAM=@INSTALL_PROGRAM@ $(INSTALL_STRIP)
+INSTALL_SCRIPT=@INSTALL_PROGRAM@
 INSTALL_DATA=@INSTALL_DATA@
 INSTALL_SHLIB=@INSTALL_SHLIB@
 INSTALL_SETUID=$(INSTALL) $(INSTALL_STRIP) -m 4755 -o root
@@ -95,8 +194,12 @@ prefix=@prefix@
 INSTALL_PREFIX=$(prefix)
 INSTALL_EXEC_PREFIX=@exec_prefix@
 exec_prefix=@exec_prefix@
+datarootdir=@datarootdir@
 SHLIB_TAIL_COMP=@SHLIB_TAIL_COMP@
 
+datadir = @datadir@
+EXAMPLEDIR = $(datadir)/examples/krb5
+
 KRB5MANROOT = @mandir@
 ADMIN_BINDIR = @sbindir@
 SERVER_BINDIR = @sbindir@
@@ -108,35 +211,42 @@ FILE_MANDIR = $(KRB5MANROOT)/man5
 KRB5_LIBDIR = @libdir@
 KRB5_SHLIBDIR = @libdir@$(SHLIB_TAIL_COMP)
 KRB5_INCDIR = @includedir@
+MODULE_DIR = @libdir@/krb5/plugins
+KRB5_DB_MODULE_DIR = $(MODULE_DIR)/kdb
+KRB5_PA_MODULE_DIR = $(MODULE_DIR)/preauth
+KRB5_AD_MODULE_DIR = $(MODULE_DIR)/authdata
+KRB5_LIBKRB5_MODULE_DIR = $(MODULE_DIR)/libkrb5
+GSS_MODULE_DIR = @libdir@/gss
 KRB5_INCSUBDIRS = \
+       $(KRB5_INCDIR)/kadm5 \
+       $(KRB5_INCDIR)/krb5 \
        $(KRB5_INCDIR)/gssapi \
-       $(KRB5_INCDIR)/kerberosIV
+       $(KRB5_INCDIR)/gssrpc
 
 #
 # Macros used by the KADM5 (OV-based) unit test system.
 # XXX check which of these are actually used!
 #
 TESTDIR                = $(BUILDTOP)/kadmin/testing
-STESTDIR       = $(SRCTOP)/kadmin/testing
+STESTDIR       = $(top_srcdir)/kadmin/testing
 COMPARE_DUMP   = $(TESTDIR)/scripts/compare_dump.pl
-FIX_CONF_FILES = $(TESTDIR)/scripts/fixup-conf-files.pl
 INITDB         = $(STESTDIR)/scripts/init_db
 MAKE_KEYTAB    = $(TESTDIR)/scripts/make-host-keytab.pl
 LOCAL_MAKE_KEYTAB= $(TESTDIR)/scripts/make-host-keytab.pl
-RESTORE_FILES  = $(STESTDIR)/scripts/restore_files.sh
-SAVE_FILES     = $(STESTDIR)/scripts/save_files.sh
 ENV_SETUP      = $(TESTDIR)/scripts/env-setup.sh
-CLNTTCL                = $(TESTDIR)/util/ovsec_kadm_clnt_tcl
-SRVTCL         = $(TESTDIR)/util/ovsec_kadm_srv_tcl
+CLNTTCL                = $(TESTDIR)/util/kadm5_clnt_tcl
+SRVTCL         = $(TESTDIR)/util/kadm5_srv_tcl
 # Dejagnu variables.
 # We have to set the host with --host so that setup_xfail will work.
 # If we don't set it, then the host type used is "native", which
 # doesn't match "*-*-*".
 host=@krb5_cv_host@
-DEJAFLAGS      = $(DEJALFLAGS) $(CLFLAGS) --debug --srcdir $(srcdir) --host \
-                  $(host)
+DEJAFLAGS      = --debug --srcdir $(srcdir) --host $(host)
 RUNTEST                = runtest $(DEJAFLAGS)
 
+RUNPYTEST      = PYTHONPATH=$(top_srcdir)/util VALGRIND="$(VALGRIND)" \
+                       $(PYTHON)
+
 START_SERVERS  = $(STESTDIR)/scripts/start_servers $(TEST_SERVER) $(TEST_PATH)
 START_SERVERS_LOCAL = $(STESTDIR)/scripts/start_servers_local
 
@@ -149,7 +259,7 @@ STOP_SERVERS_LOCAL = $(STESTDIR)/scripts/stop_servers_local
 transform = @program_transform_name@
 
 RM = rm -f
-CP  = cp
+CP = cp
 MV = mv -f
 CHMOD=chmod
 RANLIB = @RANLIB@
@@ -160,17 +270,17 @@ AWK = @AWK@
 LEX = @LEX@
 LEXLIB = @LEXLIB@
 YACC = @YACC@
-AUTOCONF = @AUTOCONF@
-AUTOCONFFLAGS = @AUTOCONFFLAGS@
-AUTOHEADER = @AUTOHEADER@
-AUTOHEADERFLAGS = @AUTOHEADERFLAGS@
+PERL = @PERL@
+PYTHON = @PYTHON@
+AUTOCONF = autoconf
+AUTOCONFFLAGS =
+AUTOHEADER = autoheader
+AUTOHEADERFLAGS =
+MOVEIFCHANGED = $(top_srcdir)/config/move-if-changed
 
-HOST_TYPE = @HOST_TYPE@
 SHEXT = @SHEXT@
 STEXT=@STEXT@
 VEXT=@VEXT@
-DO_MAKE_SHLIB = @DO_MAKE_SHLIB@
-SHLIB_STATIC_TARGET=@SHLIB_STATIC_TARGET@
 
 TOPLIBD = $(BUILDTOP)/lib
 
@@ -195,47 +305,58 @@ EXEEXT =
 
 
 CC_LINK=@CC_LINK@
+CXX_LINK=@CXX_LINK@
+
+# prefix (with no spaces after) for rpath flag to cc
+RPATH_FLAG=@RPATH_FLAG@
+
+# link flags to add PROG_RPATH to the rpath
+PROG_RPATH_FLAGS=@PROG_RPATH_FLAGS@
 
 # this gets set by configure to either $(STLIBEXT) or $(SHLIBEXT),
 # depending on whether we're building with shared libraries.
 DEPLIBEXT=@DEPLIBEXT@
 
-KADMCLNT_DEPLIB        = $(TOPLIBD)/libkadm5clnt$(DEPLIBEXT)
-KADMSRV_DEPLIB = $(TOPLIBD)/libkadm5srv$(DEPLIBEXT)
+KDB5_PLUGIN_DEPLIBS = @KDB5_PLUGIN_DEPLIBS@
+KDB5_PLUGIN_LIBS = @KDB5_PLUGIN_LIBS@
+
+KADMCLNT_DEPLIB        = $(TOPLIBD)/libkadm5clnt_mit$(DEPLIBEXT)
+KADMSRV_DEPLIB = $(TOPLIBD)/libkadm5srv_mit$(DEPLIBEXT)
 KDB5_DEPLIB    = $(TOPLIBD)/libkdb5$(DEPLIBEXT)
-DB_DEPLIB      = $(TOPLIBD)/libdb$(DEPLIBEXT)
 GSSRPC_DEPLIB  = $(TOPLIBD)/libgssrpc$(DEPLIBEXT)
 GSS_DEPLIB     = $(TOPLIBD)/libgssapi_krb5$(DEPLIBEXT)
-KRB4_DEPLIB    = @KRB4_DEPLIB@         # $(TOPLIBD)/libkrb4$(DEPLIBEXT)
-DES425_DEPLIB  = @DES425_DEPLIB@       # $(TOPLIBD)/libdes425$(DEPLIBEXT)
 KRB5_DEPLIB    = $(TOPLIBD)/libkrb5$(DEPLIBEXT)
 CRYPTO_DEPLIB  = $(TOPLIBD)/libk5crypto$(DEPLIBEXT)
 COM_ERR_DEPLIB = $(COM_ERR_DEPLIB-@COM_ERR_VERSION@)
 COM_ERR_DEPLIB-sys = # empty
 COM_ERR_DEPLIB-k5 = $(TOPLIBD)/libcom_err$(DEPLIBEXT)
+SUPPORT_LIBNAME=krb5support
+SUPPORT_DEPLIB = $(TOPLIBD)/lib$(SUPPORT_LIBNAME)$(DEPLIBEXT)
 
 # These are forced to use ".a" as an extension because they're never
 # built shared.
 SS_DEPLIB      = $(SS_DEPLIB-@SS_VERSION@)
 SS_DEPLIB-k5   = $(TOPLIBD)/libss.a
 SS_DEPLIB-sys  =
-KRB524_DEPLIB  = @KRB524_DEPLIB@
-PTY_DEPLIB     = $(TOPLIBD)/libpty.a
+APPUTILS_DEPLIB        = $(TOPLIBD)/libapputils.a
 
-KRB5_BASE_DEPLIBS      = $(KRB5_DEPLIB) $(CRYPTO_DEPLIB) $(COM_ERR_DEPLIB)
-KRB4COMPAT_DEPLIBS     = $(KRB4_DEPLIB) $(DES425_DEPLIB) $(KRB5_BASE_DEPLIBS)
-KDB5_DEPLIBS           = $(KDB5_DEPLIB) $(DB_DEPLIB)
+KRB5_BASE_DEPLIBS      = $(KRB5_DEPLIB) $(CRYPTO_DEPLIB) $(COM_ERR_DEPLIB) $(SUPPORT_DEPLIB)
+KDB5_DEPLIBS           = $(KDB5_DEPLIB) $(KDB5_PLUGIN_DEPLIBS)
 GSS_DEPLIBS            = $(GSS_DEPLIB)
 GSSRPC_DEPLIBS         = $(GSSRPC_DEPLIB) $(GSS_DEPLIBS)
 KADM_COMM_DEPLIBS      = $(GSSRPC_DEPLIBS) $(KDB5_DEPLIBS) $(GSSRPC_DEPLIBS)
 KADMSRV_DEPLIBS                = $(KADMSRV_DEPLIB) $(KDB5_DEPLIBS) $(KADM_COMM_DEPLIBS)
 KADMCLNT_DEPLIBS       = $(KADMCLNT_DEPLIB) $(KADM_COMM_DEPLIBS)
 
-# Header file dependencies we might override someday.
+# Header file dependencies we might override.
 # See util/depfix.sed.
+# Also see depend-verify-* in post.in, which wants to confirm that we're using
+# the in-tree versions.
+COM_ERR_VERSION = @COM_ERR_VERSION@
 COM_ERR_DEPS   = $(COM_ERR_DEPS-@COM_ERR_VERSION@)
-COM_ERR_DEPS-sys = # empty
+COM_ERR_DEPS-sys =
 COM_ERR_DEPS-k5        = $(BUILDTOP)/include/com_err.h
+SS_VERSION     = @SS_VERSION@
 SS_DEPS                = $(SS_DEPS-@SS_VERSION@)
 SS_DEPS-sys    =
 SS_DEPS-k5     = $(BUILDTOP)/include/ss/ss.h $(BUILDTOP)/include/ss/ss_err.h
@@ -246,86 +367,94 @@ SS_DEPS-k5        = $(BUILDTOP)/include/ss/ss.h $(BUILDTOP)/include/ss/ss_err.h
 GEN_LIB                = @GEN_LIB@
 
 SS_LIB         = $(SS_LIB-@SS_VERSION@)
-SS_LIB-sys     = -lss
+SS_LIB-sys     = @SS_LIB@
 SS_LIB-k5      = $(TOPLIBD)/libss.a
-KDB5_LIB       = -lkdb5
-DB_LIB         = -ldb
-
-KRB5_LIB                       = $(KRB5_LIB_@LIB_LINK_OPT@)
-KRB5_LIB_libopt                        = -lkrb5
-KRB5_LIB_frameworkopt          = -framework Kerberos5
+KDB5_LIB       = -lkdb5 $(KDB5_PLUGIN_LIBS)
 
-K5CRYPTO_LIB                   = $(K5CRYPTO_LIB_@LIB_LINK_OPT@)
-K5CRYPTO_LIB_libopt            = -lk5crypto
-K5CRYPTO_LIB_frameworkopt      = -framework Kerberos5Crypto
+DL_LIB         = @DL_LIB@
 
+KRB5_LIB                       = -lkrb5
+K5CRYPTO_LIB                   = -lk5crypto
 COM_ERR_LIB                    = -lcom_err
-
-GSS_KRB5_LIB                   = $(GSS_KRB5_LIB_@LIB_LINK_OPT@)
-GSS_KRB5_LIB_libopt            = -lgssapi_krb5
-GSS_KRB5_LIB_frameworkopt      = -framework Krb5GSSAPILib
-
-# KRB4_LIB is -lkrb4 if building --with-krb4
-# needs fixing if ever used on Mac OS X!
-KRB4_LIB       = @KRB4_LIB@
-
-# DES425_LIB is -ldes425 if building --with-krb4
-# needs fixing if ever used on Mac OS X!
-DES425_LIB     = @DES425_LIB@
-
-# KRB524_LIB is $(BUILDTOP)/krb524/libkrb524.a if building --with-krb4
-# needs fixing if ever used on Mac OS X!
-KRB524_LIB     = @KRB524_LIB@
+GSS_KRB5_LIB                   = -lgssapi_krb5
+SUPPORT_LIB                    = -l$(SUPPORT_LIBNAME)
 
 # HESIOD_LIBS is -lhesiod...
 HESIOD_LIBS    = @HESIOD_LIBS@
 
-KRB5_BASE_LIBS = $(KRB5_LIB) $(K5CRYPTO_LIB) $(COM_ERR_LIB) $(GEN_LIB) $(LIBS)
-KRB4COMPAT_LIBS        = $(KRB4_LIB) $(DES425_LIB) $(KRB5_BASE_LIBS)
-KDB5_LIBS      = $(KDB5_LIB) $(DB_LIB)
+KRB5_BASE_LIBS = $(KRB5_LIB) $(K5CRYPTO_LIB) $(COM_ERR_LIB) $(SUPPORT_LIB) $(GEN_LIB) $(LIBS) $(DL_LIB)
+KDB5_LIBS      = $(KDB5_LIB) $(GSSRPC_LIBS)
 GSS_LIBS       = $(GSS_KRB5_LIB)
 # needs fixing if ever used on Mac OS X!
 GSSRPC_LIBS    = -lgssrpc $(GSS_LIBS)
 KADM_COMM_LIBS = $(GSSRPC_LIBS)
 # need fixing if ever used on Mac OS X!
-KADMSRV_LIBS   = -lkadm5srv $(HESIOD_LIBS) $(KDB5_LIBS) $(KADM_COMM_LIBS)
-KADMCLNT_LIBS  = -lkadm5clnt $(KADM_COMM_LIBS)
+KADMSRV_LIBS   = -lkadm5srv_mit $(HESIOD_LIBS) $(KDB5_LIBS) $(KADM_COMM_LIBS)
+KADMCLNT_LIBS  = -lkadm5clnt_mit $(KADM_COMM_LIBS)
 
-# need fixing if ever used on Mac OS X!
-PTY_LIB                = -lpty
+# libutil for NetBSD, et al. for openpty(), etc.
+UTIL_LIB       = @UTIL_LIB@
 
-#
-# some more stuff for --with-krb4
-KRB4_LIBPATH   = @KRB4_LIBPATH@
-KRB4_INCLUDES  = @KRB4_INCLUDES@
+# Misc stuff for linking server programs (and maybe some others,
+# eventually) but which we don't want to install.
+APPUTILS_LIB   = -lapputils
+
+# So test programs can find their libraries without "make install", etc.
+KRB5_RUN_ENV=@KRB5_RUN_ENV@
+KRB5_RUN_VARS=@KRB5_RUN_VARS@
 
 #
 # variables for --with-tcl=
 TCL_LIBS       = @TCL_LIBS@
 TCL_LIBPATH    = @TCL_LIBPATH@
 TCL_RPATH      = @TCL_RPATH@
+TCL_MAYBE_RPATH = @TCL_MAYBE_RPATH@
 TCL_INCLUDES   = @TCL_INCLUDES@
 
+# Crypto and PRNG back-end selections
+CRYPTO_IMPL    = @CRYPTO_IMPL@
+PRNG_ALG       = @PRNG_ALG@
+
 # error table rules
 #
 ### /* these are invoked as $(...) foo.et, which works, but could be better */
 COMPILE_ET= $(COMPILE_ET-@COM_ERR_VERSION@)
 COMPILE_ET-sys= compile_et
-COMPILE_ET-k5= $(BUILDTOP)/util/et/compile_et -d $(SRCTOP)/util/et
+COMPILE_ET-k5= $(BUILDTOP)/util/et/compile_et -d $(top_srcdir)/util/et
 
 .SUFFIXES:  .h .c .et .ct
 
-.et.h:
-       $(COMPILE_ET) $<
+# These versions cause both .c and .h files to be generated at once.
+# But GNU make doesn't understand this, and parallel builds can trigger
+# both of them at once, causing them to stomp on each other.  The versions
+# below only update one of the files, so compile_et has to get run twice,
+# but it won't break parallel builds.
+#.et.h: ; $(COMPILE_ET) $<
+#.et.c: ; $(COMPILE_ET) $<
 
+.et.h:
+       $(RM) et-h-$*.et et-h-$*.c et-h-$*.h
+       $(CP) $< et-h-$*.et
+       $(COMPILE_ET) et-h-$*.et
+       $(MV) et-h-$*.h $*.h
+       $(RM) et-h-$*.et et-h-$*.c
 .et.c:
-       $(COMPILE_ET) $<
+       $(RM) et-c-$*.et et-c-$*.c et-c-$*.h
+       $(CP) $< et-c-$*.et
+       $(COMPILE_ET) et-c-$*.et
+       $(MV) et-c-$*.c $*.c
+       $(RM) et-c-$*.et et-c-$*.h
 
 # rule to make object files
 #
-.SUFFIXES: .c .o
+.SUFFIXES: .cpp .c .o
 .c.o:
        $(CC) $(ALL_CFLAGS) -c $<
+# Use .cpp because that's what autoconf uses in its test.
+# If the compiler doesn't accept a .cpp suffix here, it wouldn't
+# have accepted it when autoconf tested it.
+.cpp.o:
+       $(CXX) $(ALL_CXXFLAGS) -c $<
 
 # ss command table rules
 #
@@ -336,5 +465,123 @@ MAKE_COMMANDS-k5= $(BUILDTOP)/util/ss/mk_cmds
 .ct.c:
        $(MAKE_COMMANDS) $<
 
+## Parameters to be set by configure for use in lib.in:
+##
+#
+# These settings are for building shared libraries only.  Including
+# libpriv.in will override with values appropriate for static
+# libraries that we don't install.  Some values will depend on whether
+# the platform supports major and minor version number extensions on
+# shared libraries, hence the FOO_@@ settings.
+
+LN_S=@LN_S@
+AR=@AR@
+
+# Set to "lib$(LIBBASE)$(STEXT) lib$(LIBBASE)$(SHEXT) lib$(LIBBASE)$(PFEXT)" or
+# some subset thereof by configure; determines which types of libs get
+# built.
+LIBLIST=@LIBLIST@
+
+# Set by configure; list of library symlinks to make to $(TOPLIBD)
+LIBLINKS=@LIBLINKS@
+
+# Set by configure; name of plugin module to build (libfoo.a or foo.so)
+PLUGIN=@PLUGIN@
+
+# Set by configure; symlink for plugin module for static plugin linking
+PLUGINLINK=@PLUGINLINK@
+
+# Set by configure; list of install targets for libraries
+LIBINSTLIST=@LIBINSTLIST@
+
+# Set by configure; install target
+PLUGININST=@PLUGININST@
+
+# Some of these should really move to pre.in, since programs will need
+# it too. (e.g. stuff that has dependencies on the libraries)
+
+# usually .a
+STLIBEXT=@STLIBEXT@
+
+# usually .so.$(LIBMAJOR).$(LIBMINOR)
+SHLIBVEXT=@SHLIBVEXT@
+
+# usually .so.$(LIBMAJOR) (to allow for major-version compat)
+SHLIBSEXT=@SHLIBSEXT@
+
+# usually .so
+SHLIBEXT=@SHLIBEXT@
+
+# usually _p.a
+PFLIBEXT=@PFLIBEXT@
+
+#
+DYNOBJEXT=@DYNOBJEXT@
+MAKE_DYNOBJ_COMMAND=@MAKE_DYNOBJ_COMMAND@
+DYNOBJ_EXPDEPS=@DYNOBJ_EXPDEPS@
+DYNOBJ_EXPFLAGS=@DYNOBJ_EXPFLAGS@
+
+# File with symbol names to be exported, both functions and data,
+# currently not distinguished.
+SHLIB_EXPORT_FILE=$(srcdir)/$(LIBPREFIX)$(LIBBASE).exports
+
+# File that needs to be current for building the shared library,
+# usually SHLIB_EXPORT_FILE, but not always, if we have to convert
+# it to another, intermediate form for the linker.
+SHLIB_EXPORT_FILE_DEP=@SHLIB_EXPORT_FILE_DEP@
+
+# Command to run to build a shared library.
+# In systems that require multiple commands, like AIX, it may need
+# to change to rearrange where the various parameters fit in.
+MAKE_SHLIB_COMMAND=@MAKE_SHLIB_COMMAND@
+
+# run path flags for explicit libraries depending on this one,
+# e.g. "-R$(SHLIB_RPATH)"
+SHLIB_RPATH_FLAGS=@SHLIB_RPATH_FLAGS@
+
+# flags for explicit libraries depending on this one,
+# e.g. "$(SHLIB_RPATH_FLAGS) $(SHLIB_SHLIB_DIRFLAGS) $(SHLIB_EXPLIBS)"
+SHLIB_EXPFLAGS=@SHLIB_EXPFLAGS@
+
+## Parameters to be set by configure for use in libobj.in:
+
+# Set to "OBJS.ST OBJS.SH OBJS.PF" or some subset thereof by
+# configure; determines which types of object files get built.
+OBJLISTS=@OBJLISTS@
+
+# Note that $(LIBSRCS) *cannot* contain any variable references, or
+# the suffix substitution will break on some platforms!
+SHLIBOBJS=$(STLIBOBJS:.o=@SHOBJEXT@)
+PFLIBOBJS=$(STLIBOBJS:.o=@PFOBJEXT@)
+
+# "$(CC) -G", "$(LD) -Bshareable", etc.
+LDCOMBINE=@LDCOMBINE@
+
+#
+# rules to make various types of object files
 #
-# end of pre.in
+PICFLAGS=@PICFLAGS@
+PROFFLAGS=@PROFFLAGS@
+
+# platform-dependent temporary files that should get cleaned up
+EXTRA_FILES=@EXTRA_FILES@
+
+VALGRIND=
+# Need absolute paths here because under kshd or ftpd we may run programs
+# while in other directories.
+VALGRIND_LOGDIR = `cd $(BUILDTOP)&&pwd`
+VALGRIND1 = valgrind --tool=memcheck --log-file=$(VALGRIND_LOGDIR)/vg.%p --trace-children=yes -v --leak-check=yes --suppressions=`cd $(top_srcdir)&&pwd`/util/valgrind-suppressions
+
+# Set OFFLINE=yes to disable tests that assume network connectivity.
+# (Specifically, this concerns the ability to fetch DNS data for
+# mit.edu, to verify that SRV queries are working.)  Note that other
+# tests still assume that the local hostname can be resolved into
+# something that looks like an FQDN, with an IPv4 address.
+OFFLINE=no
+
+# Used when running Python tests.
+PYTESTFLAGS=
+
+##
+## end of pre.in
+############################################################