ltrace: convert to gentargets and bump to 0.5.3

[Peter: remove unneeded 0.5 USE_DEMANGLE patch]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
diff --git a/package/ltrace/ltrace-0.5-00-susv3-legacy.patch b/package/ltrace/ltrace-0.5-00-susv3-legacy.patch
deleted file mode 100644
index 7518124..0000000
--- a/package/ltrace/ltrace-0.5-00-susv3-legacy.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ltrace-0.5.orig/read_config_file.c	2006-02-20 22:48:07.000000000 +0100
-+++ ltrace-0.5/read_config_file.c	2007-10-02 12:18:21.000000000 +0200
-@@ -57,7 +57,7 @@
- 
- 	while (tmp->name) {
- 		if (!strncmp(*str, tmp->name, strlen(tmp->name))
--		    && index(" ,)#", *(*str + strlen(tmp->name)))) {
-+		    && strchr(" ,)#", *(*str + strlen(tmp->name)))) {
- 			*str += strlen(tmp->name);
- 			return tmp->pt;
- 		}
diff --git a/package/ltrace/ltrace-0.5-fix-build-without-USE_DEMANGLE.patch b/package/ltrace/ltrace-0.5-fix-build-without-USE_DEMANGLE.patch
deleted file mode 100644
index 180f688..0000000
--- a/package/ltrace/ltrace-0.5-fix-build-without-USE_DEMANGLE.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-[PATCH] ltrace: fix build when USE_DEMANGLE isn't enabled
-
-summary.c unconditionally calls my_demangle(), which is only available
-when USE_DEMANGLE is enabled (which requires libiberty).
-
-Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
----
- summary.c |    5 +++++
- 1 file changed, 5 insertions(+)
-
-Index: ltrace-0.5/summary.c
-===================================================================
---- ltrace-0.5.orig/summary.c
-+++ ltrace-0.5/summary.c
-@@ -83,7 +83,12 @@ void show_summary(void)
- 		       (int)entries[i].tv.tv_sec, (int)entries[i].tv.tv_usec,
- 		       (unsigned long int)(c / entries[i].count),
- 		       entries[i].count,
-+#ifdef USE_DEMANGLE
- 		       opt_C ? my_demangle(entries[i].name) : entries[i].name);
-+#else
-+		       entries[i].name);
-+#endif
-+
- 	}
- 	printf
- 	    ("------ ----------- ----------- --------- --------------------\n");
diff --git a/package/ltrace/ltrace-0.5.3-configure-fixes.patch b/package/ltrace/ltrace-0.5.3-configure-fixes.patch
new file mode 100644
index 0000000..8d95883
--- /dev/null
+++ b/package/ltrace/ltrace-0.5.3-configure-fixes.patch
@@ -0,0 +1,128 @@
+Fix several issues with the configure script:
+
+ * Allow option values to contains equal signs, like
+   CC="/foo/arm-linux-gcc --sysroot=/foobar/usr"
+
+ * Parse the option before doing the tests so that CC/CFLAGS can be
+   used during the tests.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ configure |   72 +++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 37 insertions(+), 35 deletions(-)
+
+Index: ltrace-0.5.3/configure
+===================================================================
+--- ltrace-0.5.3.orig/configure
++++ ltrace-0.5.3/configure
+@@ -6,6 +6,38 @@
+   exit 1
+ fi
+ 
++CC=gcc
++CPPFLAGS=' -I /usr/include/libelf'
++CFLAGS='-g -O2'
++LIBS='-lelf '
++INSTALL='/usr/bin/install -c'
++iquote='-iquote '
++iquoteend=''
++
++prefix=/usr/local
++sysconfdir='${prefix}/etc'
++bindir='${prefix}/bin'
++mandir='${prefix}/share/man'
++docdir='${prefix}/share/doc/ltrace'
++for x_option
++do
++  if test -n "$x_prev"; then
++    eval $x_prev=\$x_option
++    x_prev=
++    continue
++  fi
++  case $x_option in
++    --*=* | *=*)
++      x_var=`echo $x_option | sed 's/^--//' | sed 's/=.*//'`
++      x_val=`echo $x_option | sed 's/^[^=]*=//'`
++      eval $x_var=\"$x_val\"
++      ;;
++    --*)
++      x_prev=`echo $x_option | sed 's/^--//'`
++      ;;
++  esac
++done
++
+ echo -n "checking package name... "
+ PACKAGE_NAME='ltrace'
+ echo $PACKAGE_NAME
+@@ -30,9 +62,10 @@
+   return cplus_demangle();
+ }
+ EOF
+-if gcc conftest.c -liberty 2>/dev/null
++if $CC $CFLAGS conftest.c -liberty 2>/dev/null
+ then
+   HAVE_LIBIBERTY=1
++  LIBS="$LIBS -liberty"
+   echo "yes"
+ else
+   unset HAVE_LIBIBERTY
+@@ -48,9 +81,10 @@
+   return __cxa_demangle();
+ }
+ EOF
+-if gcc conftest.c -lsupc++ 2>/dev/null
++if $CC $CFLAGS conftest.c -lsupc++ 2>/dev/null
+ then
+   HAVE_LIBSUPC__=1
++  LIBS="$LIBS -lsupc++"
+   echo "yes"
+ else
+   unset HAVE_LIBSUPC__
+@@ -67,7 +101,7 @@
+   return 0;
+ }
+ EOF
+-if gcc conftest.c 2>/dev/null
++if $CC $CFLAGS conftest.c 2>/dev/null
+ then
+   HAVE_ELF_C_READ_MMAP=1
+   echo "yes"
+@@ -77,38 +111,6 @@
+ fi
+ rm -f conftest.c a.out
+ 
+-CC=gcc
+-CPPFLAGS=' -I /usr/include/libelf'
+-CFLAGS='-g -O2'
+-LIBS='-lelf -lsupc++ -liberty '
+-INSTALL='/usr/bin/install -c'
+-iquote='-iquote '
+-iquoteend=''
+-
+-prefix=/usr/local
+-sysconfdir='${prefix}/etc'
+-bindir='${prefix}/bin'
+-mandir='${prefix}/share/man'
+-docdir='${prefix}/share/doc/ltrace'
+-for x_option
+-do
+-  if test -n "$x_prev"; then
+-    eval $x_prev=\$x_option
+-    x_prev=
+-    continue
+-  fi
+-  case $x_option in
+-    --*=* | *=*)
+-      x_var=`echo $x_option | sed 's/^--//' | sed 's/=.*//'`
+-      x_val=`echo $x_option | sed 's/^.*=//'`
+-      eval $x_var=$x_val
+-      ;;
+-    --*)
+-      x_prev=`echo $x_option | sed 's/^--//'`
+-      ;;
+-  esac
+-done
+-
+ echo "configure: creating Makefile"
+ #
+ # Makefile.in -> Makefile
diff --git a/package/ltrace/ltrace-0.5.3-susv3-legacy.patch b/package/ltrace/ltrace-0.5.3-susv3-legacy.patch
new file mode 100644
index 0000000..4c9bb8a
--- /dev/null
+++ b/package/ltrace/ltrace-0.5.3-susv3-legacy.patch
@@ -0,0 +1,20 @@
+Use the strchr() function instead of the legacy index() function.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ read_config_file.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: ltrace-0.5.3/read_config_file.c
+===================================================================
+--- ltrace-0.5.3.orig/read_config_file.c
++++ ltrace-0.5.3/read_config_file.c
+@@ -83,7 +83,7 @@
+ 
+ 	while (tmp->name) {
+ 		if (!strncmp(*str, tmp->name, strlen(tmp->name))
+-				&& index(" ,()#*;012345[", *(*str + strlen(tmp->name)))) {
++				&& strchr(" ,()#*;012345[", *(*str + strlen(tmp->name)))) {
+ 			*str += strlen(tmp->name);
+ 			return lookup_prototype(tmp->pt);
+ 		}
diff --git a/package/ltrace/ltrace.mk b/package/ltrace/ltrace.mk
index 4a6811d..9808240 100644
--- a/package/ltrace/ltrace.mk
+++ b/package/ltrace/ltrace.mk
@@ -3,13 +3,11 @@
 # ltrace
 #
 #############################################################
-LTRACE_VERSION=0.5
-LTRACE_SOURCE=ltrace_$(LTRACE_VERSION).orig.tar.gz
-LTRACE_PATCH=ltrace_$(LTRACE_VERSION)-3.1.diff.gz
-LTRACE_SITE=$(BR2_DEBIAN_MIRROR)/debian/pool/main/l/ltrace
-LTRACE_DIR=$(BUILD_DIR)/ltrace-$(LTRACE_VERSION)
-LTRACE_BINARY=ltrace
-LTRACE_TARGET_BINARY=usr/bin/ltrace
+LTRACE_VERSION      = 0.5.3
+LTRACE_SOURCE       = ltrace_$(LTRACE_VERSION).orig.tar.gz
+LTRACE_PATCH        = ltrace_$(LTRACE_VERSION)-2.1.diff.gz
+LTRACE_SITE         = $(BR2_DEBIAN_MIRROR)/debian/pool/main/l/ltrace
+LTRACE_DEPENDENCIES = libelf
 
 # ltrace uses arch=ppc for powerpc
 LTRACE_ARCH:=$(KERNEL_ARCH:powerpc=ppc)
@@ -17,71 +15,27 @@
 LTRACE_ARCH:=arm
 endif
 
-$(DL_DIR)/$(LTRACE_SOURCE):
-	$(call DOWNLOAD,$(LTRACE_SITE),$(LTRACE_SOURCE))
+define LTRACE_CONFIGURE_CMDS
+	(cd $(@D) ; ./configure 		\
+		--prefix=/usr			\
+		CC='$(TARGET_CC)' 		\
+		CFLAGS='$(TARGET_CFLAGS)')
+endef
 
-ifneq ($(LTRACE_PATCH),)
-LTRACE_PATCH_FILE:=$(DL_DIR)/$(LTRACE_PATCH)
-$(LTRACE_PATCH_FILE):
-	$(call DOWNLOAD,$(LTRACE_SITE),$(LTRACE_PATCH))
+define LTRACE_BUILD_CMDS
+	$(MAKE) -C $(@D) ARCH=$(LTRACE_ARCH)
+endef
 
-else
-LTRACE_PATCH_FILE:=
-endif
-
-$(LTRACE_DIR)/.patched: $(DL_DIR)/$(LTRACE_SOURCE) $(LTRACE_PATCH_FILE)
-	$(ZCAT) $(DL_DIR)/$(LTRACE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-ifneq ($(LTRACE_PATCH),)
-	$(ZCAT) $(LTRACE_PATCH_FILE) | patch -p1 -d $(LTRACE_DIR)
-endif
-	toolchain/patch-kernel.sh $(LTRACE_DIR) package/ltrace ltrace\*.patch
-	$(CONFIG_UPDATE) $(@D)
-	chmod +x $(LTRACE_DIR)/configure
-	touch $@
-
-$(LTRACE_DIR)/.configured: $(LTRACE_DIR)/.patched
-	(cd $(LTRACE_DIR); rm -rf config.cache; \
-		$(TARGET_CONFIGURE_OPTS) \
-		$(TARGET_CONFIGURE_ARGS) \
-		./configure $(QUIET) \
-		--target=$(GNU_TARGET_NAME) \
-		--host=$(GNU_TARGET_NAME) \
-		--build=$(GNU_HOST_NAME) \
-		--prefix=/usr \
-		--sysconfdir=/etc \
-		$(DISABLE_LARGEFILE) \
-	)
-	touch $@
-
-$(LTRACE_DIR)/$(LTRACE_BINARY): $(LTRACE_DIR)/.configured
-	$(MAKE) ARCH=$(LTRACE_ARCH) -C $(LTRACE_DIR)
-
-$(TARGET_DIR)/$(LTRACE_TARGET_BINARY): $(LTRACE_DIR)/$(LTRACE_BINARY)
-	#$(MAKE) DESTDIR=$(TARGET_DIR) ARCH=$(LTRACE_ARCH)  -C $(LTRACE_DIR) install
-	$(INSTALL) -D $(LTRACE_DIR)/$(LTRACE_BINARY) $@
 ifeq ($(BR2_HAVE_DOCUMENTATION),y)
-	$(INSTALL) -D $(LTRACE_DIR)/ltrace.1 \
+define LTRACE_INSTALL_DOCUMENTATION
+	$(INSTALL) -D $(@D)/ltrace.1 \
 		$(TARGET_DIR)/usr/share/man/man1/ltrace.1
+endef
 endif
-	$(STRIPCMD) $(STRIP_STRIP_ALL) $@
 
-ltrace: libelf $(TARGET_DIR)/$(LTRACE_TARGET_BINARY)
+define LTRACE_INSTALL_TARGET_CMDS
+	$(INSTALL) -D $(@D)/ltrace $(TARGET_DIR)/usr/bin
+	$(LTRACE_INSTALL_DOCUMENTATION)
+endef
 
-ltrace-source: $(DL_DIR)/$(LTRACE_SOURCE) $(LTRACE_PATCH_FILE)
-
-ltrace-clean:
-	-$(MAKE) -C $(LTRACE_DIR) clean
-	rm -f $(LTRACE_DIR)/$(LTRACE_BINARY) \
-		$(TARGET_DIR)/usr/share/man/man1/ltrace.1*
-
-ltrace-dirclean:
-	rm -rf $(LTRACE_DIR)
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_LTRACE),y)
-TARGETS+=ltrace
-endif
+$(eval $(call GENTARGETS,package,ltrace))