From 55dbe80d0537ae2addf7bcd682372fe1829152a6 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 21 Aug 2009 09:25:57 +0200 Subject: talloc: add --enable-talloc-compat1 to build a compat library for talloc 1.x.x metze --- lib/talloc/Makefile.in | 2 ++ lib/talloc/compat/talloc_compat1.c | 51 +++++++++++++++++++++++++++++++++++++ lib/talloc/compat/talloc_compat1.m4 | 14 ++++++++++ lib/talloc/compat/talloc_compat1.mk | 21 +++++++++++++++ lib/talloc/configure.ac | 1 + 5 files changed, 89 insertions(+) create mode 100644 lib/talloc/compat/talloc_compat1.c create mode 100644 lib/talloc/compat/talloc_compat1.m4 create mode 100644 lib/talloc/compat/talloc_compat1.mk (limited to 'lib') diff --git a/lib/talloc/Makefile.in b/lib/talloc/Makefile.in index 8baa28baae..94f031a4bb 100644 --- a/lib/talloc/Makefile.in +++ b/lib/talloc/Makefile.in @@ -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 index 0000000000..519e8c3a83 --- /dev/null +++ b/lib/talloc/compat/talloc_compat1.c @@ -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 . +*/ + +/* + * 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 index 0000000000..2ec530e079 --- /dev/null +++ b/lib/talloc/compat/talloc_compat1.m4 @@ -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 index 0000000000..d1817f0f71 --- /dev/null +++ b/lib/talloc/compat/talloc_compat1.mk @@ -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) + diff --git a/lib/talloc/configure.ac b/lib/talloc/configure.ac index 49f396cf61..a169f79724 100644 --- a/lib/talloc/configure.ac +++ b/lib/talloc/configure.ac @@ -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="" -- cgit