From 708f89314cb7d5ed8c47998e5b434accfc3c8e38 Mon Sep 17 00:00:00 2001
From: Fons Rademakers <Fons.Rademakers@cern.ch>
Date: Fri, 9 Jul 2010 17:45:12 +0000
Subject: [PATCH] Add support for third party allocators. To build and link
 with, e.g. tcmalloc do:     ./configure --with-alloc-lib=libtcmalloc or    
 ./configure --with-alloc-libdir=/my/alloc/lib --with-alloc-lib=libtcmalloc
 Note, as this only changes how root.exe (and apps using root-config --libs)
 are linked, after configure you need to do:     rm bin/root.exe     make to
 link with the new allocator.

git-svn-id: http://root.cern.ch/svn/root/trunk@34367 27541ba8-7e3a-0410-8455-c3a389f83636
---
 config/Makefile.aix           |  3 ++-
 config/Makefile.aix5          |  3 ++-
 config/Makefile.aixgcc        |  3 ++-
 config/Makefile.alphacxx6     |  3 ++-
 config/Makefile.alphagcc      |  3 ++-
 config/Makefile.freebsd4      |  3 ++-
 config/Makefile.freebsd5      |  3 ++-
 config/Makefile.freebsd7      |  3 ++-
 config/Makefile.hpuxacc       |  3 ++-
 config/Makefile.hpuxgcc       |  3 ++-
 config/Makefile.hpuxia64acc   |  3 ++-
 config/Makefile.hurddeb       |  3 ++-
 config/Makefile.in            |  3 +++
 config/Makefile.linux         |  3 ++-
 config/Makefile.linuxalphagcc |  3 ++-
 config/Makefile.linuxarm      |  3 ++-
 config/Makefile.linuxhppa     |  3 ++-
 config/Makefile.linuxia64ecc  |  3 ++-
 config/Makefile.linuxia64gcc  |  3 ++-
 config/Makefile.linuxicc      |  3 ++-
 config/Makefile.linuxmips     |  3 ++-
 config/Makefile.linuxmips64   |  3 ++-
 config/Makefile.linuxppc64gcc |  3 ++-
 config/Makefile.linuxppcgcc   |  3 ++-
 config/Makefile.linuxx8664gcc |  3 ++-
 config/Makefile.linuxx8664icc |  3 ++-
 config/Makefile.lynxos        |  3 ++-
 config/Makefile.macosx        |  2 +-
 config/Makefile.macosx64      |  2 +-
 config/Makefile.macosxicc     |  2 +-
 config/Makefile.macosxxlc     |  2 +-
 config/Makefile.openbsd       |  3 ++-
 config/Makefile.sgicc         |  3 ++-
 config/Makefile.sgicc64       |  3 ++-
 config/Makefile.sgin32gcc     |  3 ++-
 config/Makefile.solaris       |  3 ++-
 config/Makefile.solaris64CC5  |  2 +-
 config/Makefile.solarisCC5    |  2 +-
 config/Makefile.solarisgcc    |  2 +-
 config/Makefile.win32gcc      |  2 +-
 config/root-config.in         |  7 +++++++
 configure                     | 34 ++++++++++++++++++++++++++++++----
 42 files changed, 110 insertions(+), 43 deletions(-)

diff --git a/config/Makefile.aix b/config/Makefile.aix
index eb7755ac772..a00661460f3 100644
--- a/config/Makefile.aix
+++ b/config/Makefile.aix
@@ -36,7 +36,8 @@ SOFLAGS       =
 SOEXT         = a
 
 # System libraries:
-SYSLIBS       = -lm -lld $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -lld $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -lld
 
diff --git a/config/Makefile.aix5 b/config/Makefile.aix5
index 3da2147df7b..bb65d278904 100644
--- a/config/Makefile.aix5
+++ b/config/Makefile.aix5
@@ -39,7 +39,8 @@ SOEXT         = a
 FORCELINK     = yes
 
 # System libraries:
-SYSLIBS       = -lm -lld $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -lld $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -lld
 
diff --git a/config/Makefile.aixgcc b/config/Makefile.aixgcc
index 474bbc287d7..8aca8f44abe 100644
--- a/config/Makefile.aixgcc
+++ b/config/Makefile.aixgcc
@@ -35,7 +35,8 @@ SOEXT         = a
 FORCELINK     = yes
 
 # System libraries:
-SYSLIBS       = -lm -lld $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -lld $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -lld
 
diff --git a/config/Makefile.alphacxx6 b/config/Makefile.alphacxx6
index fc091cead60..69a1d90dd03 100644
--- a/config/Makefile.alphacxx6
+++ b/config/Makefile.alphacxx6
@@ -37,7 +37,8 @@ SOFLAGS       = -shared -nocxxstd -Wl,-expect_unresolved,*,-msym,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap
 
diff --git a/config/Makefile.alphagcc b/config/Makefile.alphagcc
index beaa12880c6..71a83fe0c31 100644
--- a/config/Makefile.alphagcc
+++ b/config/Makefile.alphagcc
@@ -33,7 +33,8 @@ SOFLAGS       = -Wl,-expect_unresolved,* -shared
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ltermcap $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ltermcap $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap
 
diff --git a/config/Makefile.freebsd4 b/config/Makefile.freebsd4
index 4f22cff9b00..8d2e4954867 100644
--- a/config/Makefile.freebsd4
+++ b/config/Makefile.freebsd4
@@ -37,7 +37,8 @@ SOFLAGS       = -shared -Wl,-x -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lstdc++ -lm $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lstdc++ -lm $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11 -lstdc++
 CILIBS        = -lm -ltermcap -lstdc++
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.freebsd5 b/config/Makefile.freebsd5
index 0dca8202bfa..6a97e1f88f2 100644
--- a/config/Makefile.freebsd5
+++ b/config/Makefile.freebsd5
@@ -32,7 +32,8 @@ SOFLAGS       = -shared -Wl,-x -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lstdc++ -lm $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lstdc++ -lm $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11 -lstdc++
 CILIBS        = -lm -ltermcap -lstdc++
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.freebsd7 b/config/Makefile.freebsd7
index 7d145be7fec..a238ba8306e 100644
--- a/config/Makefile.freebsd7
+++ b/config/Makefile.freebsd7
@@ -32,7 +32,8 @@ SOFLAGS       = -shared -Wl,-x -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lstdc++ -lm $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lstdc++ -lm $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11 -lstdc++
 CILIBS        = -lm -ltermcap -lstdc++
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.hpuxacc b/config/Makefile.hpuxacc
index 58b8a7b0898..e473cb200a5 100644
--- a/config/Makefile.hpuxacc
+++ b/config/Makefile.hpuxacc
@@ -40,7 +40,8 @@ SOFLAGS       = -b -Wl,+vnocompatwarnings
 SOEXT         = sl
 
 # System libraries:
-SYSLIBS       = -lm -ldld $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ldld $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -Wl,-E -ldld -lcurses
 
diff --git a/config/Makefile.hpuxgcc b/config/Makefile.hpuxgcc
index 10fb8ab0e83..d4885a88662 100644
--- a/config/Makefile.hpuxgcc
+++ b/config/Makefile.hpuxgcc
@@ -32,7 +32,8 @@ SOFLAGS       = -shared -fPIC
 SOEXT         = sl
 
 # System libraries:
-SYSLIBS       = -lm -ldld $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ldld $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -L/usr/lib -lm -ldld
 
diff --git a/config/Makefile.hpuxia64acc b/config/Makefile.hpuxia64acc
index c8d5dff0603..b1b1965c2ed 100644
--- a/config/Makefile.hpuxia64acc
+++ b/config/Makefile.hpuxia64acc
@@ -41,7 +41,8 @@ SOFLAGS       = -b -Wl,+vnocompatwarnings
 SOEXT         = sl
 
 # System libraries:
-SYSLIBS       = -lm -ldld $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ldld $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -Wl,-E -ldld -lcurses
 
diff --git a/config/Makefile.hurddeb b/config/Makefile.hurddeb
index 293fe97bd77..4184aa63e04 100644
--- a/config/Makefile.hurddeb
+++ b/config/Makefile.hurddeb
@@ -32,7 +32,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -lncurses -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.in b/config/Makefile.in
index 5400201c595..5729e5a6e34 100644
--- a/config/Makefile.in
+++ b/config/Makefile.in
@@ -236,6 +236,9 @@ AFSINCDIR      := @afsincdir@
 AFSEXTRACFLAGS := @afsextracflags@
 AFSSHARED      := @afsshared@
 
+ALLOCLIB       := @alloclib@
+ALLOCLIBDIR    := @alloclibdir@
+
 BUILDKRB5      := @buildkrb5@
 KRB5LIB        := @krb5lib@
 KRB5LIBDIR     := @krb5libdir@
diff --git a/config/Makefile.linux b/config/Makefile.linux
index a701cb868aa..87fb6c328d6 100644
--- a/config/Makefile.linux
+++ b/config/Makefile.linux
@@ -38,7 +38,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxalphagcc b/config/Makefile.linuxalphagcc
index 318ee677bef..9e87536d40f 100644
--- a/config/Makefile.linuxalphagcc
+++ b/config/Makefile.linuxalphagcc
@@ -34,7 +34,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxarm b/config/Makefile.linuxarm
index 6e59b9d74b0..55862207300 100644
--- a/config/Makefile.linuxarm
+++ b/config/Makefile.linuxarm
@@ -35,7 +35,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxhppa b/config/Makefile.linuxhppa
index accd67f140b..e81c25f1d56 100644
--- a/config/Makefile.linuxhppa
+++ b/config/Makefile.linuxhppa
@@ -38,7 +38,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxia64ecc b/config/Makefile.linuxia64ecc
index ebbeea5a173..b10d2f1b5b7 100644
--- a/config/Makefile.linuxia64ecc
+++ b/config/Makefile.linuxia64ecc
@@ -67,7 +67,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxia64gcc b/config/Makefile.linuxia64gcc
index 224b37bf1e8..71cf9f39d64 100644
--- a/config/Makefile.linuxia64gcc
+++ b/config/Makefile.linuxia64gcc
@@ -34,7 +34,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxicc b/config/Makefile.linuxicc
index 6dfe78de56a..c6d362fe68f 100644
--- a/config/Makefile.linuxicc
+++ b/config/Makefile.linuxicc
@@ -70,7 +70,8 @@ ICC_GE_101    = 110
 endif
 
 # System libraries:
-SYSLIBS       = -limf -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -limf -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -limf -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxmips b/config/Makefile.linuxmips
index 1cdc5f93df1..d7b9ad38594 100644
--- a/config/Makefile.linuxmips
+++ b/config/Makefile.linuxmips
@@ -41,7 +41,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxmips64 b/config/Makefile.linuxmips64
index 213e9b7777b..83d108e70cb 100644
--- a/config/Makefile.linuxmips64
+++ b/config/Makefile.linuxmips64
@@ -40,7 +40,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxppc64gcc b/config/Makefile.linuxppc64gcc
index ca0a3994bf0..bdda25ebe17 100644
--- a/config/Makefile.linuxppc64gcc
+++ b/config/Makefile.linuxppc64gcc
@@ -36,7 +36,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11 -lSM -lICE
 CILIBS        = -lm -ldl
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxppcgcc b/config/Makefile.linuxppcgcc
index 3f6541f15d8..d48c07d71e2 100644
--- a/config/Makefile.linuxppcgcc
+++ b/config/Makefile.linuxppcgcc
@@ -36,7 +36,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11 -lSM -lICE
 CILIBS        = -lm -ldl
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxx8664gcc b/config/Makefile.linuxx8664gcc
index 17b214658b9..d4fccf0e988 100644
--- a/config/Makefile.linuxx8664gcc
+++ b/config/Makefile.linuxx8664gcc
@@ -41,7 +41,8 @@ SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.linuxx8664icc b/config/Makefile.linuxx8664icc
index 02c61030886..50cf2a31af8 100644
--- a/config/Makefile.linuxx8664icc
+++ b/config/Makefile.linuxx8664icc
@@ -70,7 +70,8 @@ ICC_GE_101    = 110
 endif
 
 # System libraries:
-SYSLIBS       = -limf -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+SYSLIBS       = -limf -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -limf -lm -ldl -rdynamic
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.lynxos b/config/Makefile.lynxos
index 3381755e1c1..b1797cca7db 100644
--- a/config/Makefile.lynxos
+++ b/config/Makefile.lynxos
@@ -34,7 +34,8 @@ SOFLAGS       =
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap -lbsd
 CRYPTLIBS     = -lcrypt
diff --git a/config/Makefile.macosx b/config/Makefile.macosx
index 5ed852e2fdd..c4bc12f6684 100644
--- a/config/Makefile.macosx
+++ b/config/Makefile.macosx
@@ -102,7 +102,7 @@ endif
 
 # System libraries:
 SYSLIBS       = -lm $(EXTRA_LDFLAGS) $(FINK_LDFLAGS) $(OSTHREADLIBDIR) \
-                $(OSTHREADLIB) -ldl
+                $(OSTHREADLIB) -ldl $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm $(EXTRA_LDFLAGS) $(FINK_LDFLAGS) -ldl
 
diff --git a/config/Makefile.macosx64 b/config/Makefile.macosx64
index acedcb700f1..c5dac08b0d2 100644
--- a/config/Makefile.macosx64
+++ b/config/Makefile.macosx64
@@ -87,7 +87,7 @@ endif
 
 # System libraries:
 SYSLIBS       = -lm $(EXTRA_LDFLAGS) $(FINK_LDFLAGS) $(OSTHREADLIBDIR) \
-                $(OSTHREADLIB) -ldl
+                $(OSTHREADLIB) -ldl $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm $(EXTRA_LDFLAGS) $(FINK_LDFLAGS) -ldl
 
diff --git a/config/Makefile.macosxicc b/config/Makefile.macosxicc
index f3dd8b0658b..1b76f8be10d 100644
--- a/config/Makefile.macosxicc
+++ b/config/Makefile.macosxicc
@@ -121,7 +121,7 @@ endif
 
 # System libraries:
 SYSLIBS       = -lm $(EXTRA_LDFLAGS) $(OSTHREADLIBDIR) \
-                $(OSTHREADLIB) -ldl
+                $(OSTHREADLIB) -ldl $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm $(EXTRA_LDFLAGS) -ldl
 
diff --git a/config/Makefile.macosxxlc b/config/Makefile.macosxxlc
index 2e4ccf2ca05..7368de794c4 100644
--- a/config/Makefile.macosxxlc
+++ b/config/Makefile.macosxxlc
@@ -62,7 +62,7 @@ SOEXT         = dylib
 
 # System libraries:
 SYSLIBS       = -lm $(EXTRA_LDFLAGS) $(FINK_LDFLAGS) $(OSTHREADLIBDIR) \
-                $(OSTHREADLIB) -ldl
+                $(OSTHREADLIB) -ldl $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm $(EXTRA_LDFLAGS) $(FINK_LDFLAGS) -ldl
 
diff --git a/config/Makefile.openbsd b/config/Makefile.openbsd
index 4a08e34f402..801a255c6fc 100644
--- a/config/Makefile.openbsd
+++ b/config/Makefile.openbsd
@@ -34,7 +34,8 @@ SOFLAGS       = -shared -Wl,-x -Wl,-soname,
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lstdc++ -lm $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lstdc++ -lm $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 X11LIBDIR     = -L/usr/X11R6/lib
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11 -lstdc++
 CILIBS        = -lm -ltermcap -lstdc++
diff --git a/config/Makefile.sgicc b/config/Makefile.sgicc
index e0d1b8cef4b..4f2a7b42ef6 100644
--- a/config/Makefile.sgicc
+++ b/config/Makefile.sgicc
@@ -31,7 +31,8 @@ SOFLAGS       = -n32 -shared
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -lPW -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -lPW -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap -lbsd -lgen -ldl
 
diff --git a/config/Makefile.sgicc64 b/config/Makefile.sgicc64
index 07177825914..0007bfc284f 100644
--- a/config/Makefile.sgicc64
+++ b/config/Makefile.sgicc64
@@ -35,7 +35,8 @@ SOFLAGS       = -shared
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -lPW $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -lPW $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap -lbsd -lgen
 
diff --git a/config/Makefile.sgin32gcc b/config/Makefile.sgin32gcc
index 6eaa9e884b3..3ca4c2694ae 100644
--- a/config/Makefile.sgin32gcc
+++ b/config/Makefile.sgin32gcc
@@ -35,7 +35,8 @@ SOFLAGS       = -shared
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -L/usr/lib32 -lXext -lX11
 CILIBS        = -lm -lgen
 
diff --git a/config/Makefile.solaris b/config/Makefile.solaris
index 166d47f16fb..72589ee0248 100644
--- a/config/Makefile.solaris
+++ b/config/Makefile.solaris
@@ -32,7 +32,8 @@ SOFLAGS       = -G
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl -lnsl -lsocket -lgen $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm -ldl -lnsl -lsocket -lgen $(OSTHREADLIBDIR) $(OSTHREADLIB) \
+                $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap -ldl -L/usr/ccs/lib -lgen
 
diff --git a/config/Makefile.solaris64CC5 b/config/Makefile.solaris64CC5
index 341e8041dd6..48a1328fbd3 100644
--- a/config/Makefile.solaris64CC5
+++ b/config/Makefile.solaris64CC5
@@ -53,7 +53,7 @@ SOFLAGS       = -G $(CCPTR)
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl -lnsl -lsocket -lposix4
+SYSLIBS       = -lm -ldl -lnsl -lsocket -lposix4 $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap -ldl
 
diff --git a/config/Makefile.solarisCC5 b/config/Makefile.solarisCC5
index 2e4260813d1..02db099a86d 100644
--- a/config/Makefile.solarisCC5
+++ b/config/Makefile.solarisCC5
@@ -55,7 +55,7 @@ SOFLAGS       = -G $(CCPTR)
 SOEXT         = so
 
 # System libraries:
-SYSLIBS       = -lm -ldl -lnsl -lsocket -lposix4
+SYSLIBS       = -lm -ldl -lnsl -lsocket -lposix4 $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap -ldl
 
diff --git a/config/Makefile.solarisgcc b/config/Makefile.solarisgcc
index 97213219f9d..7f668c3a490 100644
--- a/config/Makefile.solarisgcc
+++ b/config/Makefile.solarisgcc
@@ -34,7 +34,7 @@ SOEXT         = so
 
 # System libraries:
 SYSLIBS       = -lm -ldl -L/usr/include/sys -lsocket -lnsl $(OSTHREADLIBDIR) \
-                $(OSTHREADLIB)
+                $(OSTHREADLIB) $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm -ltermcap -ldl -L/usr/ccs/lib -lgen
 
diff --git a/config/Makefile.win32gcc b/config/Makefile.win32gcc
index 366e0650541..e5d7c3248bb 100644
--- a/config/Makefile.win32gcc
+++ b/config/Makefile.win32gcc
@@ -44,7 +44,7 @@ EXEEXT        = .exe
 FORCELINK     = yes
 
 # System libraries:
-SYSLIBS       = -lm $(OSTHREADLIBDIR) $(OSTHREADLIB)
+SYSLIBS       = -lm $(OSTHREADLIBDIR) $(OSTHREADLIB) $(ALLOCLIBDIR) $(ALLOCLIB)
 XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
 CILIBS        = -lm
 CRYPTLIBS     = -lcrypt
diff --git a/config/root-config.in b/config/root-config.in
index 2b4f4f37e11..33dbec3757a 100755
--- a/config/root-config.in
+++ b/config/root-config.in
@@ -463,6 +463,13 @@ win32)
    ;;
 esac
 
+# allocator must be last in auxlibs
+for f in $features ; do
+   if test "x$f" = "xalloc" ; then
+      auxlibs="$auxlibs @alloclibdir@ @alloclib@"
+   fi
+done
+
 ### end of machine and compiler dependent settings ###
 
 prefix=@prefix@
diff --git a/configure b/configure
index 25299c8d7e1..8ba9d31daf9 100755
--- a/configure
+++ b/configure
@@ -35,6 +35,7 @@ deprecated_options="         \
 options="                    \
    enable_afs                \
    enable_alien              \
+   enable_alloc              \
    enable_asimage            \
    enable_astiff             \
    enable_bonjour            \
@@ -128,6 +129,7 @@ for c in $options ; do eval ${c}_explicit="" ; done
 
 enable_cling=
 enable_afs=no
+enable_alloc=no
 enable_gdml=no
 enable_globus=no
 enable_explicitlink=no
@@ -1233,6 +1235,8 @@ with options, prefix with --with-, enables corresponding support
   afs-shared         AFS support, controls usage of shared linkage AFS libraries {yes/no}
   alien-incdir       AliEn support, location of gapiUI.h
   alien-libdir       AliEn support, location of libapiUI
+  alloc-libdir       Alternative memory allocator support, location of allocator lib
+  alloc-lib          Alternative memory allocator support, allocator lib
   castor-incdir      CASTOR support, location of stager_api.h
   castor-libdir      CASTOR support, location of libshift
   chirp-incdir       Chirp support, location of chirp_client.h
@@ -1481,6 +1485,8 @@ if test $# -gt 0 ; then
       --with-afs-shared=*)     afsshared=$optarg     ; enable_afs="yes"     ;;
       --with-alien-incdir=*)   alienincdir=$optarg   ; enable_alien="yes"   ;;
       --with-alien-libdir=*)   alienlibdir=$optarg   ; enable_alien="yes"   ;;
+      --with-alloc-libdir=*)   alloclibdir=$optarg   ; enable_alloc="yes"   ;;
+      --with-alloc-lib=*)      alloclib=$optarg      ; enable_alloc="yes"   ;;
       --with-afterimage-incdir=*) afterimageincdir=$optarg; enable_builtin_afterimage=no ;;
       --with-afterimage-libdir=*) afterimagelibdir=$optarg; enable_builtin_afterimage=no ;;
       --with-castor-incdir=*)  castorincdir=$optarg  ; enable_castor="yes"  ;;
@@ -1547,9 +1553,6 @@ if test $# -gt 0 ; then
       --with-sapdb-libdir=*)   sapdblibdir=$optarg   ; enable_sapdb="yes"   ;;
       --with-rfio-incdir=*)    shiftincdir=$optarg   ; enable_rfio="yes"    ;;
       --with-rfio-libdir=*)    shiftlibdir=$optarg   ; enable_rfio="yes"    ;;
-      # leave --with-shift-* for backward compatibility, use --with-rfio-* instead
-      --with-shift-incdir=*)   shiftincdir=$optarg   ; enable_rfio="yes"    ;;
-      --with-shift-libdir=*)   shiftlibdir=$optarg   ; enable_rfio="yes"    ;;
       --with-srp=*)            srpdir=$optarg        ; enable_srp="yes"     ;;
       --with-srp-incdir=*)     srpincdir=$optarg     ; enable_srp="yes"     ;;
       --with-srp-libdir=*)     srplibdir=$optarg     ; enable_srp="yes"     ;;
@@ -2276,6 +2279,25 @@ if test "x$platform" = "xwin32"; then
    glewlibs=lib/libGLEW.lib
 fi
 
+######################################################################
+#
+### echo %%% Alternative Memory Allocator Support - Third party libraries
+#
+if test ! "x$enable_alloc" = "xno"; then
+    # Check for alternative memory allocator
+    check_library "$alloclib" "$enable_shared" "$alloclibdir" \
+        /usr/lib /usr/local/lib
+    alloclib=$found_lib
+    alloclibdir=$found_dir
+
+    if test "x$alloclib" = "x"; then
+        alloclibdir=""
+        enable_alloc="no"
+    fi
+fi
+check_explicit "$enable_alloc" "$enable_alloc_explicit" \
+     "Explicitly required allocator dependencies not fulfilled"
+
 ######################################################################
 #
 ### echo %%% MySQL Support - Third party libraries
@@ -5571,13 +5593,15 @@ fi
 message "Writing $MAKEOUT"
 sed -e "s|@aclocaldir@|$aclocaldir|"            \
     -e "s|@afslib@|$afslib|"                    \
-    -e "s|@afslibdir@|$afslibdirs|"              \
+    -e "s|@afslibdir@|$afslibdirs|"             \
     -e "s|@afsincdir@|$afsincdir|"              \
     -e "s|@afsextracflags@|$afsextracflags|"    \
     -e "s|@afsshared@|$afsshared|"              \
     -e "s|@alienincdir@|$alienincdir|"          \
     -e "s|@alienlib@|$alienlib|"                \
     -e "s|@alienlibdir@|$alienlibdir|"          \
+    -e "s|@alloclibdir@|$alloclibdir|"          \
+    -e "s|@alloclib@|$alloclib|"                \
     -e "s|@architecture@|$arch|"                \
     -e "s|@asextralib@|$asextralib|"            \
     -e "s|@asextralibdir@|$asextralibdir|"      \
@@ -5972,6 +5996,8 @@ sed -e "s|@architecture@|$arch|"           \
     -e "s|@dicttype@|$dicttype|"           \
     -e "s|@zliblib@|$zliblib|"             \
     -e "s|@pythonvers@|$pythonvers|"       \
+    -e "s|@alloclibdir@|$alloclibdir|"     \
+    -e "s|@alloclib@|$alloclib|"           \
     -e "s|@altcc@|$altcc|"                 \
     -e "s|@altcxx@|$altcxx|"               \
     -e "s|@altf77@|$altf772|"              \
-- 
GitLab