This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Factorize target program transformations in the GDB_AC_TRANSFORM macro.


This patch introduces a new M4 macro GDB_AC_TRANSFORM to avoid repeating
the common idiom which is the transformation of target program names,
i.e. from gdb to sparc64-linux-gnu-gdb.  It also makes gdb/configure.ac
and gdb/testsuite/configure.ac to use the new macro.

Tested in x86_64-unknown-linux-gnu.

gdb/ChangeLog:

2015-02-17  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* configure: Regenerated.
	* configure.ac: Use GDB_AC_TRANSFORM.
	* Makefile.in (aclocal_m4_deps): Added transform.m4.
	* acinclude.m4: sinclude transform.m4.
	* transform.m4: New file.
	(GDB_AC_TRANSFORM): New macro.

gdb/testsuite/ChangeLog:

2015-02-17  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* configure: Regenerated.
	* configure.ac: Use GDB_AC_TRANSFORM.
	* aclocal.m4: sinclude ../transform.m4.
---
 gdb/ChangeLog              |    9 +++++++++
 gdb/Makefile.in            |    1 +
 gdb/acinclude.m4           |    3 +++
 gdb/configure              |   24 +++++++++++++----------
 gdb/configure.ac           |   14 ++------------
 gdb/testsuite/ChangeLog    |    6 ++++++
 gdb/testsuite/aclocal.m4   |    1 +
 gdb/testsuite/configure    |   45 +++++++++++++++++++++++++++-----------------
 gdb/testsuite/configure.ac |   25 ++++--------------------
 gdb/transform.m4           |   23 ++++++++++++++++++++++
 10 files changed, 91 insertions(+), 60 deletions(-)
 create mode 100644 gdb/transform.m4

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index c646ee5..16e2f1c 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1528,6 +1528,7 @@ aclocal_m4_deps = \
 	configure.ac \
 	acx_configure_dir.m4 \
 	libmcheck.m4 \
+	transform.m4 \
 	../bfd/bfd.m4 \
 	../config/acinclude.m4 \
 	../config/plugins.m4 \
diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
index 6f71486..1f0b574 100644
--- a/gdb/acinclude.m4
+++ b/gdb/acinclude.m4
@@ -9,6 +9,9 @@ sinclude(acx_configure_dir.m4)
 # This gets GDB_AC_LIBMCHECK.
 sinclude(libmcheck.m4)
 
+# This gets GDB_AC_TRANSFORM.
+sinclude(transform.m4)
+
 dnl gdb/configure.in uses BFD_NEED_DECLARATION, so get its definition.
 sinclude(../bfd/bfd.m4)
 
diff --git a/gdb/configure b/gdb/configure
index 30a54d2..bb9697d 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -15141,17 +15141,21 @@ ac_config_links="$ac_config_links $ac_config_links_1"
 $as_echo "#define GDB_DEFAULT_HOST_CHARSET \"UTF-8\"" >>confdefs.h
 
 
-# Undo the $ec_script escaping suitable for Makefile.
-transform=`echo "$program_transform_name" | sed -e 's/\\$\\$/\\$/g'`
-GDB_TRANSFORM_NAME=`echo gdb | sed -e "$transform"`
-if test "x$GDB_TRANSFORM_NAME" = x; then
-  GDB_TRANSFORM_NAME=gdb
-fi
 
-GCORE_TRANSFORM_NAME=`echo gcore | sed -e "$transform"`
-if test "x$GCORE_TRANSFORM_NAME" = x; then
-  GCORE_TRANSFORM_NAME=gcore
-fi
+  gdb_ac_transform=`echo "$program_transform_name" | sed -e 's/\\$\\$/\\$/g'`
+  GDB_TRANSFORM_NAME=`echo gdb | sed -e "$gdb_ac_transform"`
+  if test "x$GDB_TRANSFORM_NAME" = x; then
+     GDB_TRANSFORM_NAME=gdb
+  fi
+
+
+
+  gdb_ac_transform=`echo "$program_transform_name" | sed -e 's/\\$\\$/\\$/g'`
+  GCORE_TRANSFORM_NAME=`echo gcore | sed -e "$gdb_ac_transform"`
+  if test "x$GCORE_TRANSFORM_NAME" = x; then
+     GCORE_TRANSFORM_NAME=gcore
+  fi
+
 
 ac_config_files="$ac_config_files gcore"
 
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 39fcef2..90bf71c 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -2444,18 +2444,8 @@ dnl  At the moment, we just assume it's UTF-8.
 AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "UTF-8",
           [Define to be a string naming the default host character set.])
 
-# Undo the $ec_script escaping suitable for Makefile.
-transform=`echo "$program_transform_name" | sed -e 's/[\\$][\\$]/\\$/g'`
-GDB_TRANSFORM_NAME=`echo gdb | sed -e "$transform"`
-if test "x$GDB_TRANSFORM_NAME" = x; then
-  GDB_TRANSFORM_NAME=gdb
-fi
-AC_SUBST(GDB_TRANSFORM_NAME)
-GCORE_TRANSFORM_NAME=`echo gcore | sed -e "$transform"`
-if test "x$GCORE_TRANSFORM_NAME" = x; then
-  GCORE_TRANSFORM_NAME=gcore
-fi
-AC_SUBST(GCORE_TRANSFORM_NAME)
+GDB_AC_TRANSFORM([gdb], [GDB_TRANSFORM_NAME])
+GDB_AC_TRANSFORM([gcore], [GCORE_TRANSFORM_NAME])
 AC_CONFIG_FILES([gcore], [chmod +x gcore])
 
 AC_OUTPUT(Makefile gdb-gdb.gdb doc/Makefile data-directory/Makefile,
diff --git a/gdb/testsuite/aclocal.m4 b/gdb/testsuite/aclocal.m4
index 2934db2..d40c3a9 100644
--- a/gdb/testsuite/aclocal.m4
+++ b/gdb/testsuite/aclocal.m4
@@ -1,5 +1,6 @@
 sinclude(../../config/acx.m4)
 sinclude(../../config/override.m4)
+sinclude(../transform.m4)
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
diff --git a/gdb/testsuite/configure b/gdb/testsuite/configure
index b593cd3..859f348 100755
--- a/gdb/testsuite/configure
+++ b/gdb/testsuite/configure
@@ -3479,26 +3479,37 @@ test "$program_suffix" != NONE &&
 ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
-transform=`echo "$program_transform_name" | sed -e 's/\\$\\$/\\$/g'`
-STRIP_TRANSFORM_NAME=`echo strip | sed -e "$transform"`
-if test "x$STRIP_TRANSFORM_NAME" = x; then
-  STRIP_TRANSFORM_NAME=strip
-fi
 
-READELF_TRANSFORM_NAME=`echo readelf | sed -e "$transform"`
-if test "x$READELF_TRANSFORM_NAME" = x; then
-  READELF_TRANSFORM_NAME=readelf
-fi
+  gdb_ac_transform=`echo "$program_transform_name" | sed -e 's/\\$\\$/\\$/g'`
+  STRIP_TRANSFORM_NAME=`echo strip | sed -e "$gdb_ac_transform"`
+  if test "x$STRIP_TRANSFORM_NAME" = x; then
+     STRIP_TRANSFORM_NAME=strip
+  fi
 
-GAS_TRANSFORM_NAME=`echo as | sed -e "$transform"`
-if test "x$GAS_TRANSFORM_NAME" = x; then
-  GAS_TRANSFORM_NAME=as
-fi
 
-NM_TRANSFORM_NAME=`echo nm | sed -e "$transform"`
-if test "x$NM_TRANSFORM_NAME" = x; then
-  NM_TRANSFORM_NAME=nm
-fi
+
+  gdb_ac_transform=`echo "$program_transform_name" | sed -e 's/\\$\\$/\\$/g'`
+  READELF_TRANSFORM_NAME=`echo readelf | sed -e "$gdb_ac_transform"`
+  if test "x$READELF_TRANSFORM_NAME" = x; then
+     READELF_TRANSFORM_NAME=readelf
+  fi
+
+
+
+  gdb_ac_transform=`echo "$program_transform_name" | sed -e 's/\\$\\$/\\$/g'`
+  GAS_TRANSFORM_NAME=`echo as | sed -e "$gdb_ac_transform"`
+  if test "x$GAS_TRANSFORM_NAME" = x; then
+     GAS_TRANSFORM_NAME=as
+  fi
+
+
+
+  gdb_ac_transform=`echo "$program_transform_name" | sed -e 's/\\$\\$/\\$/g'`
+  NM_TRANSFORM_NAME=`echo nm | sed -e "$gdb_ac_transform"`
+  if test "x$NM_TRANSFORM_NAME" = x; then
+     NM_TRANSFORM_NAME=nm
+  fi
+
 
 ac_config_files="$ac_config_files lib/pdtrace"
 
diff --git a/gdb/testsuite/configure.ac b/gdb/testsuite/configure.ac
index eed0191..9de9fcc 100644
--- a/gdb/testsuite/configure.ac
+++ b/gdb/testsuite/configure.ac
@@ -99,27 +99,10 @@ AC_SUBST(EXTRA_RULES)
 # Transform the name of some programs and generate the lib/pdtrace
 # test tool.
 AC_ARG_PROGRAM
-transform=`echo "$program_transform_name" | sed -e 's/[\\$][\\$]/\\$/g'`
-STRIP_TRANSFORM_NAME=`echo strip | sed -e "$transform"`
-if test "x$STRIP_TRANSFORM_NAME" = x; then
-  STRIP_TRANSFORM_NAME=strip
-fi
-AC_SUBST(STRIP_TRANSFORM_NAME)
-READELF_TRANSFORM_NAME=`echo readelf | sed -e "$transform"`
-if test "x$READELF_TRANSFORM_NAME" = x; then
-  READELF_TRANSFORM_NAME=readelf
-fi
-AC_SUBST(READELF_TRANSFORM_NAME)
-GAS_TRANSFORM_NAME=`echo as | sed -e "$transform"`
-if test "x$GAS_TRANSFORM_NAME" = x; then
-  GAS_TRANSFORM_NAME=as
-fi
-AC_SUBST(GAS_TRANSFORM_NAME)
-NM_TRANSFORM_NAME=`echo nm | sed -e "$transform"`
-if test "x$NM_TRANSFORM_NAME" = x; then
-  NM_TRANSFORM_NAME=nm
-fi
-AC_SUBST(NM_TRANSFORM_NAME)
+GDB_AC_TRANSFORM(strip, STRIP_TRANSFORM_NAME)
+GDB_AC_TRANSFORM(readelf, READELF_TRANSFORM_NAME)
+GDB_AC_TRANSFORM(as, GAS_TRANSFORM_NAME)
+GDB_AC_TRANSFORM(nm, NM_TRANSFORM_NAME)
 AC_CONFIG_FILES([lib/pdtrace], [chmod +x lib/pdtrace])
 
 AC_OUTPUT([Makefile \
diff --git a/gdb/transform.m4 b/gdb/transform.m4
new file mode 100644
index 0000000..d9079af
--- /dev/null
+++ b/gdb/transform.m4
@@ -0,0 +1,23 @@
+# Copyright (C) 2015 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# GDB_AC_TRANSFORM([PROGRAM], [VAR])
+#
+# Transform a tool name to get the installed name of PROGRAM and store
+# it in the output variable VAR.
+#
+# This macro uses the SED command stored in $program_transform_name,
+# but it undoes the Makefile-like escaping of $s performed by
+# AC_ARG_PROGRAM.
+
+AC_DEFUN([GDB_AC_TRANSFORM], [
+  gdb_ac_transform=`echo "$program_transform_name" | sed -e 's/[\\$][\\$]/\\$/g'`
+  $2=`echo $1 | sed -e "$gdb_ac_transform"`
+  if test "x$$2" = x; then
+     $2=$1
+  fi
+  AC_SUBST($2)
+])
-- 
1.7.10.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]