config: make makefile builder be a config tool also
[openafs.git] / src / config / Makefile.config.in
index bba79b0..75b6327 100644 (file)
@@ -25,6 +25,7 @@ prefix=@prefix@
 sbindir=@sbindir@
 sysconfdir=@sysconfdir@
 viceetcdir=@viceetcdir@/
+top_builddir=@top_builddir@
 
 
 #
@@ -32,6 +33,7 @@ viceetcdir=@viceetcdir@/
 #
 AR = @AR@
 AS = @AS@
+ASFLAGS = @ASFLAGS@
 AFSD_LIBS = @AFSD_LIBS@
 AFSD_LDFLAGS = @AFSD_LDFLAGS@
 CC = @CC@
@@ -46,18 +48,22 @@ DBG = @DBG@
 DEST = @DEST@
 DIR_roken = @DIR_roken@
 FSINCLUDES = @FSINCLUDES@
+GENCAT = @GENCAT@
 INCLUDE_LIBINTL = @INCLUDE_libintl@
 KERN_DBG = @KERN_DBG@
 KERN_OPTMZ = @KERN_OPTMZ@
 LD = @LD@
 LDFLAGS_roken = @LDFLAGS_roken@
 LDFLAGS_hcrypto = @LDFLAGS_hcrypto@
+LDFLAGS_krb5 = @KRB5_LDFLAGS@
 LEX = @LEX@
 LIB_AFSDB = @LIB_AFSDB@
 LIB_crypt = @LIB_crypt@
 LIB_curses = @LIB_curses@
 LIB_hcrypto = @LIB_hcrypto@
 LIB_roken = @LIB_roken@
+LIB_krb5 = @KRB5_LIBS@
+LIBTOOL= @LIBTOOL@
 LIBS = @LIBS@
 LIB_LIBINTL = @LIB_libintl@
 LINUX_KERNEL_PATH = @LINUX_KERNEL_PATH@
@@ -139,8 +145,55 @@ KERNELDIR = ../libafs
 # Build helper apps
 #
 COMPILE_ET = ${TOP_OBJDIR}/src/comerr/compile_et
+CONFIGTOOL = ${TOP_OBJDIR}/src/config/config
 RXGEN = ${TOP_OBJDIR}/src/rxgen/rxgen
-SHELL = /bin/sh
+SHELL = @SHELL@
+LWPTOOL = ${TOP_SRCDIR}/config/lwptool
+
+#
+# "Pretty" build line stuff
+#
+
+# Default to disabling the "pretty" build lines
+# If the user specifies 'V=0', the variables below expand to their _V0
+# variants, which enable the "pretty" build lines
+V=1
+
+RUNCMD=RUNCMD () { \
+       echo "  $$1  $$2"; \
+       shift; shift; \
+       "$$@" || failcode=$$?; \
+       if [ x"$$failcode" != x ] ; then \
+               echo >&2; \
+               echo "FAILED COMMAND: $$@" >&2; \
+               echo >&2; \
+               echo "In dir:" >&2; \
+               pwd >&2; \
+               echo >&2; \
+               exit $$failcode; \
+       fi; \
+       exit 0; \
+} ; RUNCMD
+
+RUN_CC_NOQ_V0=${RUNCMD} CC "`pwd`/$@"
+RUN_LD_NOQ_V0=${RUNCMD} LD "`pwd`/$@"
+
+# Prefixing a command with $(Q) will suppress that line from being printed
+# during a "pretty" make, so the RUNCMD function above can decide itself how
+# much to print. The Q is just for "quiet", and Q kinda looks like @.
+#
+# The _NOQ variants of the RUN_ commands are for when a compiler invocation is
+# in the middle of e.g. a switch/case or an if/else, etc. In those cases, we
+# want to prefix the _entire_ command with $(Q), not just the compiler, linker,
+# etc.
+Q_V0=@
+Q=$(Q_V$(V))
+
+RUN_CC=$(Q)$(RUN_CC_NOQ_V$(V))
+RUN_LD=$(Q)$(RUN_LD_NOQ_V$(V))
+
+RUN_CC_NOQ=$(RUN_CC_NOQ_V$(V))
+RUN_LD_NOQ=$(RUN_LD_NOQ_V$(V))
 
 #
 # Common/standard cflags/paths/etc
@@ -161,20 +214,87 @@ COMMON_LDFLAGS=$(LDFLAGS) $(LDFLAGS_hcrypto) $(LDFLAGS_roken) $(DBG) $(OPTMZ)
 # LWP Flags
 LWP_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS)
 LWP_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(XLDFLAGS) $(ARCHFLAGS)
-LWP_CCRULE=$(CCOBJ) $(LWP_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+LWP_CCRULE        =$(RUN_CC) $(CCOBJ) $(LWP_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+LWP_CCRULE_NOQ=$(RUN_CC_NOQ) $(CCOBJ) $(LWP_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
 
 # Pthreaded
 PTH_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS) $(MT_CFLAGS)
 PTH_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(MT_LDFLAGS)
-PTH_CCRULE=$(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+PTH_CCRULE        =$(RUN_CC) $(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+PTH_CCRULE_NOQ=$(RUN_CC_NOQ) $(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
 
 # Shared
 SHD_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS) $(MT_CFLAGS) $(SHLIB_CFLAGS)
 SHD_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(SHLIB_LDFLAGS)
-SHD_CCRULE=$(MT_CC) $(SHD_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+SHD_CCRULE        =$(RUN_CC) $(MT_CC) $(SHD_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+SHD_CCRULE_NOQ=$(RUN_CC_NOQ) $(MT_CC) $(SHD_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+
+# Libtool - for objects that are part of pthread-only libraries
+LT_CCRULE=$(RUN_CC) $(LIBTOOL) --quiet --mode=compile --tag=CC \
+             $(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
+
+LT_current=0
+LT_revision=0
+LT_age=0
+
+# Basic rule to link a shared library.
+LT_LDLIB_shlib=$(LIBTOOL) --quiet --mode=link --tag=CC \
+               $(MT_CC) -rpath $(libdir) \
+               $(PTH_LDFLAGS) $(PTH_CFLAGS) $(LDFLAGS_$(@)) \
+               -o $@ \
+               -no-undefined \
+               -export-symbols $@.sym \
+               -version-info=$(LT_current):$(LT_revision):$(LT_age)
+
+
+# Link a static convenience library (contains no PIC code)
+LT_LDLIB_static=$(LIBTOOL) --quiet --mode=link --tag=CC \
+                $(MT_CC) -static $(LDFLAGS) $(DBG) $(OPTMZ) \
+                $(LDFLAGS_$(@)) -o $@
+
+# Link a convenience library for use in other libs (contains PIC code)
+LT_LDLIB_pic= $(LIBTOOL) --quiet --mode=link --tag=CC \
+              $(MT_CC) $(LDFLAGS) $(DBG) $(OPTMZ) \
+              $(LDFLAGS_$(@)) -o $@
+
+# Libtool - for objects that are built for both pthread and lwp libraries
+LTLWP_CCRULE=$(RUN_CC) $(LWPTOOL) --mode compile \
+                --lwpcc "$(CCOBJ)" \
+                --mtcc "$(LIBTOOL) --quiet --mode=compile --tag=CC $(MT_CC) $(MT_CFLAGS)" \
+                -o $@ \
+                -- \
+                $(COMMON_CFLAGS) $(MODULE_CFLAGS) $(CFLAGS_$(@)) \
+                -c
+
+LT_LDLIB_lwp=$(RUN_LD) $(LWPTOOL) --mode link \
+                --ranlib "$(RANLIB)" \
+                --linker "$(AR) crv" \
+                -o $@ \
+                --
+
+LT_LDLIB_lwp_NOQ=$(RUN_LD_NOQ) $(LWPTOOL) --mode link \
+                --ranlib "$(RANLIB)" \
+                --linker "$(AR) crv" \
+                -o $@ \
+                --
+
+# Use this to link an executable with one or more libtool libraries
+LT_LDRULE        = $(RUN_LD) $(LIBTOOL) --quiet --mode=link --tag=CC \
+                            $(MT_CC) $(PTH_LDFLAGS) $(PTH_CFLAGS) \
+                            $(LDFLAGS_$(@)) -o $@
+
+LT_LDRULE_static = $(RUN_LD) $(LIBTOOL) --quiet --mode=link --tag=CC \
+                            $(MT_CC) -static $(PTH_LDFLAGS) $(PTH_CFLAGS) \
+                            $(LDFLAGS_$(@)) -o $@
+
+LT_INSTALL_DATA=$(LIBTOOL) --quiet --mode=install $(INSTALL_DATA)
+LT_INSTALL_PROGRAM=$(LIBTOOL) --quiet --mode=install $(INSTALL_PROGRAM)
+
+LT_CLEAN=$(RM) -rf .lwp .libs *.la *.lo
 
 # Default rules. These will be overriden if the module Makefile specifically
 # includes a particular type (lwp, pthread, or shared)
 
-AFS_LDRULE =$(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
+AFS_LDRULE         =$(RUN_LD) $(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
+AFS_LDRULE_NOQ =$(RUN_LD_NOQ) $(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@