talloc: add --enable-talloc-compat1 to build a compat library for talloc 1.x.x
authorStefan Metzmacher <metze@samba.org>
Fri, 21 Aug 2009 07:25:57 +0000 (09:25 +0200)
committerAndrew Tridgell <tridge@samba.org>
Mon, 24 Aug 2009 06:29:58 +0000 (16:29 +1000)
metze

lib/talloc/Makefile.in
lib/talloc/compat/talloc_compat1.c [new file with mode: 0644]
lib/talloc/compat/talloc_compat1.m4 [new file with mode: 0644]
lib/talloc/compat/talloc_compat1.mk [new file with mode: 0644]
lib/talloc/configure.ac

index 8baa28baaedd9497124cddac3d4d9075d7b6cfbb..94f031a4bb40c77bec6d147c69886cfb9d200f52 100644 (file)
@@ -36,6 +36,8 @@ all:: showflags $(EXTRA_TARGETS)
 include $(tallocdir)/rules.mk
 include $(tallocdir)/talloc.mk
 
+@TALLOC_COMPAT1_MK@
+
 $(TALLOC_SOLIB): $(LIBOBJ)
        $(SHLD) $(SHLD_FLAGS) -o $@ $(LIBOBJ) $(VERSIONSCRIPT) $(EXPORTSFILE) $(SONAMEFLAG)$(TALLOC_SONAME)
 
diff --git a/lib/talloc/compat/talloc_compat1.c b/lib/talloc/compat/talloc_compat1.c
new file mode 100644 (file)
index 0000000..519e8c3
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+   Samba trivial allocation library - compat functions
+
+   Copyright (C) Stefan Metzmacher 2009
+
+     ** NOTE! The following LGPL license applies to the talloc
+     ** library. This does NOT imply that all of Samba is released
+     ** under the LGPL
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 3 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+/*
+ * This file contains only function to build a
+ * compat talloc.so.1 library on top of talloc.so.2
+ */
+
+#include "replace.h"
+#include "talloc.h"
+
+void *_talloc_reference(const void *context, const void *ptr);
+void *_talloc_reference(const void *context, const void *ptr) {
+       return _talloc_reference_loc(context, ptr,
+                                    "Called from talloc compat1 "
+                                    "_talloc_reference");
+}
+
+void *_talloc_steal(const void *new_ctx, const void *ptr);
+void *_talloc_steal(const void *new_ctx, const void *ptr)
+{
+       return talloc_reparent(talloc_parent(ptr), new_ctx, ptr);
+}
+
+#undef talloc_free
+int talloc_free(void *ptr);
+int talloc_free(void *ptr)
+{
+       return talloc_unlink(talloc_parent(ptr), ptr);
+}
+
diff --git a/lib/talloc/compat/talloc_compat1.m4 b/lib/talloc/compat/talloc_compat1.m4
new file mode 100644 (file)
index 0000000..2ec530e
--- /dev/null
@@ -0,0 +1,14 @@
+TALLOC_COMPAT1_MK=""
+AC_SUBST(TALLOC_COMPAT1_MK)
+
+AC_ARG_ENABLE(talloc-compat1,
+       [AS_HELP_STRING([--enable-talloc-compat1],
+               [Build talloc 1.x.x compat library [default=no]])],
+       [ enable_talloc_compat1=$enableval ],
+       [ enable_talloc_compat1=no ]
+)
+
+if test "x$enable_talloc_compat1" = x"yes"; then
+       TALLOC_COMPAT1_MK='include $(tallocdir)/compat/talloc_compat1.mk'
+fi
+
diff --git a/lib/talloc/compat/talloc_compat1.mk b/lib/talloc/compat/talloc_compat1.mk
new file mode 100644 (file)
index 0000000..d1817f0
--- /dev/null
@@ -0,0 +1,21 @@
+talloccompatdir := $(tallocdir)/compat
+
+TALLOC_COMPAT1_VERSION_MAJOR = 1
+TALLOC_COMPAT1_OBJ = $(talloccompatdir)/talloc_compat1.o
+
+TALLOC_COMPAT1_SOLIB = libtalloc-compat1-$(TALLOC_VERSION).$(SHLIBEXT)
+TALLOC_COMPAT1_SONAME = libtalloc.$(SHLIBEXT).$(TALLOC_COMPAT1_VERSION_MAJOR)
+
+$(TALLOC_COMPAT1_SOLIB): $(TALLOC_COMPAT1_OBJ) $(TALLOC_SOLIB)
+       $(SHLD) $(SHLD_FLAGS) -o $@ $(TALLOC_COMPAT1_OBJ) \
+               $(TALLOC_SOLIB) $(SONAMEFLAG)$(TALLOC_COMPAT1_SONAME)
+
+all:: $(TALLOC_COMPAT1_SOLIB)
+
+install::
+       ${INSTALLCMD} -d $(DESTDIR)$(libdir)
+       ${INSTALLCMD} -m 755 $(TALLOC_COMPAT1_SOLIB) $(DESTDIR)$(libdir)
+
+clean::
+       rm -f $(TALLOC_COMPAT1_OBJ) $(TALLOC_COMPAT1_SOLIB)
+
index 49f396cf6194dfeff75fc8bea3dc0117259dd8ff..a169f7972445577bc8cf1563b23b5db0ea8fbeb5 100644 (file)
@@ -34,6 +34,7 @@ AC_LIBREPLACE_SHLD
 AC_LIBREPLACE_SHLD_FLAGS
 
 m4_include(libtalloc.m4)
+m4_include(compat/talloc_compat1.m4)
 
 AC_PATH_PROG(XSLTPROC,xsltproc)
 DOC_TARGET=""