This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[RFA] fixes to building gdb w/gdbtk and w/o tcl/tk
- From: dje at google dot com (Doug Evans)
- To: gdb-patches at sourceware dot org, keiths at redhat dot com
- Date: Fri, 30 Jan 2009 12:36:15 -0800 (PST)
- Subject: [RFA] fixes to building gdb w/gdbtk and w/o tcl/tk
Hi. I accidently did a cvs update -d in src/gdb and got gdbtk.
The system I happened to be using doesn't have tcl/tk,
and building gdb would mysteriously fail during configure-gdb.
It turns out there's an errant "exit 0" in config/tcl.m4.
Another problem with tcl.m4 is that it can assign "# no Tcl configs found"
to TCL_BIN_DIR but then not quote uses of TCL_BIN_DIR.
[I'm ignoring the whole spaces-in-pathnames issue here.
I'm guessing a lot more quoting would be needed to fix that.]
Another problem is that gdb/configure.ac will configure gdbtk
even if tcl/tk detection fails.
[the patch to configure.ac seems large, but 90% of it is just reindentation]
Ok to check in?
[generated files elided in the attached patch]
2009-01-30 Doug Evans <dje@google.com>
* config/tcl.m4 (SC_PATH_TCLCONFIG): Don't exit 0 if tclconfig fails.
(SC_PATH_TKCONFIG): Don't exit 0 if tkconfig fails.
(SC_LOAD_TCLCONFIG): Quote all uses of TCL_BIN_DIR, it may contain
"# no Tcl configs found".
(SC_BUILD_TCLSH): Ditto.
(SC_LOAD_TKCONFIG): Similarily for TK_BIN_DIR.
* gdb/configure.ac (gdbkt): Check both no_tcl/no_tk first, before
doing any further tcl/tk configury. Don't configure gdbtk if
tcl or tk check fails.
* gdb/aclocal.m4: Regenerate.
* gdb/configure: Regenerate.
* gdb/gdbtk/plugins/configure: Regenerate.
Index: gdb/configure.ac
===================================================================
RCS file: /cvs/src/src/gdb/configure.ac,v
retrieving revision 1.85
diff -u -p -u -p -r1.85 configure.ac
--- gdb/configure.ac 28 Jan 2009 15:01:00 -0000 1.85
+++ gdb/configure.ac 30 Jan 2009 20:16:59 -0000
@@ -1696,7 +1699,12 @@ if test "${enable_gdbtk}" = "yes"; then
cd $here
SC_PATH_TCLCONFIG
- if test -z "${no_tcl}"; then
+
+ # If $no_tk is nonempty, then we can't do Tk, and there is no
+ # point to doing Tcl.
+ SC_PATH_TKCONFIG
+
+ if test -z "${no_tcl}" -a -z "${no_tk}"; then
SC_LOAD_TCLCONFIG
# Check for in-tree tcl
@@ -1728,62 +1736,57 @@ if test "${enable_gdbtk}" = "yes"; then
AC_SUBST(TCL_LIBRARY)
AC_SUBST(TCL_DEPS)
- # If $no_tk is nonempty, then we can't do Tk, and there is no
- # point to doing Tcl.
- if test -z "${no_tk}"; then
- SC_PATH_TKCONFIG
- SC_LOAD_TKCONFIG
-
- # Check for in-tree Tk
- intree="no"
- if test "${TK_SRC_DIR}" = "${topdir}/tk"; then
- intree="yes"
- fi
-
- # Find Tk private headers
- if test x"${intree}" = xno; then
- CY_AC_TK_PRIVATE_HEADERS
- TK_INCLUDE="${TK_INCLUDE_SPEC} ${TK_PRIVATE_INCLUDE}"
- TK_LIBRARY=${TK_LIB_SPEC}
- TK_DEPS=""
- else
- TK_INCLUDE="-I${TK_SRC_DIR}/generic"
- TK_LIBRARY="${TK_BUILD_LIB_SPEC}"
- TK_DEPS="../tk/${configdir}/${TK_LIB_FILE}"
- fi
- AC_SUBST(TK_INCLUDE)
- AC_SUBST(TK_LIBRARY)
- AC_SUBST(TK_DEPS)
- AC_SUBST(TK_XINCLUDES)
-
- ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)"
-
- # Include some libraries that Tcl and Tk want.
- TCL_LIBS='$(LIBGUI) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
- # Yes, the ordering seems wrong here. But it isn't.
- # TK_LIBS is the list of libraries that need to be linked
- # after Tcl/Tk. Note that this isn't put into LIBS. If it
- # were in LIBS then any link tests after this point would
- # try to include things like `$(LIBGUI)', which wouldn't work.
- GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
-
- CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)"
- CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)"
- CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)"
- CONFIG_ALL="${CONFIG_ALL} all-gdbtk"
- CONFIG_CLEAN="${CONFIG_CLEAN} clean-gdbtk"
- CONFIG_INSTALL="${CONFIG_INSTALL} install-gdbtk"
- CONFIG_UNINSTALL="${CONFIG_UNINSTALL} uninstall-gdbtk"
-
- if test x$gdb_cv_os_cygwin = xyes; then
- WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
- WIN32LDAPP="-Wl,--subsystem,console"
- CONFIG_OBS="${CONFIG_OBS} gdbres.o"
- fi
+ SC_LOAD_TKCONFIG
+
+ # Check for in-tree Tk
+ intree="no"
+ if test "${TK_SRC_DIR}" = "${topdir}/tk"; then
+ intree="yes"
+ fi
+
+ # Find Tk private headers
+ if test x"${intree}" = xno; then
+ CY_AC_TK_PRIVATE_HEADERS
+ TK_INCLUDE="${TK_INCLUDE_SPEC} ${TK_PRIVATE_INCLUDE}"
+ TK_LIBRARY=${TK_LIB_SPEC}
+ TK_DEPS=""
+ else
+ TK_INCLUDE="-I${TK_SRC_DIR}/generic"
+ TK_LIBRARY="${TK_BUILD_LIB_SPEC}"
+ TK_DEPS="../tk/${configdir}/${TK_LIB_FILE}"
+ fi
+ AC_SUBST(TK_INCLUDE)
+ AC_SUBST(TK_LIBRARY)
+ AC_SUBST(TK_DEPS)
+ AC_SUBST(TK_XINCLUDES)
+
+ ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_GDBTK_CFLAGS)"
+
+ # Include some libraries that Tcl and Tk want.
+ TCL_LIBS='$(LIBGUI) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
+ # Yes, the ordering seems wrong here. But it isn't.
+ # TK_LIBS is the list of libraries that need to be linked
+ # after Tcl/Tk. Note that this isn't put into LIBS. If it
+ # were in LIBS then any link tests after this point would
+ # try to include things like `$(LIBGUI)', which wouldn't work.
+ GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
+
+ CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_GDBTK_OBS)"
+ CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_GDBTK_DEPS)"
+ CONFIG_SRCS="${CONFIG_SRCS} \$(SUBDIR_GDBTK_SRCS)"
+ CONFIG_ALL="${CONFIG_ALL} all-gdbtk"
+ CONFIG_CLEAN="${CONFIG_CLEAN} clean-gdbtk"
+ CONFIG_INSTALL="${CONFIG_INSTALL} install-gdbtk"
+ CONFIG_UNINSTALL="${CONFIG_UNINSTALL} uninstall-gdbtk"
+
+ if test x$gdb_cv_os_cygwin = xyes; then
+ WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32"
+ WIN32LDAPP="-Wl,--subsystem,console"
+ CONFIG_OBS="${CONFIG_OBS} gdbres.o"
fi
- fi
- AC_CONFIG_SUBDIRS(gdbtk)
+ AC_CONFIG_SUBDIRS(gdbtk)
+ fi
fi
AC_SUBST(X_CFLAGS)
Index: config/tcl.m4
===================================================================
RCS file: /cvs/src/src/config/tcl.m4,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 tcl.m4
--- config/tcl.m4 2 Aug 2008 21:20:13 -0000 1.2
+++ config/tcl.m4 30 Jan 2009 20:17:00 -0000
@@ -114,7 +114,6 @@ AC_DEFUN([SC_PATH_TCLCONFIG], [
if test x"${ac_cv_c_tclconfig}" = x ; then
TCL_BIN_DIR="# no Tcl configs found"
AC_MSG_WARN([Can't find Tcl configuration definitions])
- exit 0
else
no_tcl=
TCL_BIN_DIR=${ac_cv_c_tclconfig}
@@ -237,7 +236,6 @@ AC_DEFUN([SC_PATH_TKCONFIG], [
if test x"${ac_cv_c_tkconfig}" = x ; then
TK_BIN_DIR="# no Tk configs found"
AC_MSG_WARN([Can't find Tk configuration definitions])
- exit 0
else
no_tk=
TK_BIN_DIR=${ac_cv_c_tkconfig}
@@ -285,7 +283,7 @@ AC_DEFUN([SC_LOAD_TCLCONFIG], [
# of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
# instead of TCL_BUILD_LIB_SPEC since it will work with both an
# installed and uninstalled version of Tcl.
- if test -f ${TCL_BIN_DIR}/Makefile ; then
+ if test -f "${TCL_BIN_DIR}/Makefile" ; then
TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
@@ -295,7 +293,7 @@ AC_DEFUN([SC_LOAD_TCLCONFIG], [
# against Tcl.framework installed in an arbitary location.
case ${TCL_DEFS} in
*TCL_FRAMEWORK*)
- if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then
+ if test -f "${TCL_BIN_DIR}/${TCL_LIB_FILE}"; then
for i in "`cd ${TCL_BIN_DIR}; pwd`" \
"`cd ${TCL_BIN_DIR}/../..; pwd`"; do
if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
@@ -304,7 +302,7 @@ AC_DEFUN([SC_LOAD_TCLCONFIG], [
fi
done
fi
- if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then
+ if test -f "${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"; then
TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}"
TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
fi
@@ -368,7 +366,7 @@ AC_DEFUN([SC_LOAD_TKCONFIG], [
# of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
# instead of TK_BUILD_LIB_SPEC since it will work with both an
# installed and uninstalled version of Tcl.
- if test -f ${TK_BIN_DIR}/Makefile ; then
+ if test -f "${TK_BIN_DIR}/Makefile" ; then
TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
@@ -378,7 +376,7 @@ AC_DEFUN([SC_LOAD_TKCONFIG], [
# against Tk.framework installed in an arbitary location.
case ${TK_DEFS} in
*TK_FRAMEWORK*)
- if test -f ${TK_BIN_DIR}/${TK_LIB_FILE}; then
+ if test -f "${TK_BIN_DIR}/${TK_LIB_FILE}"; then
for i in "`cd ${TK_BIN_DIR}; pwd`" \
"`cd ${TK_BIN_DIR}/../..; pwd`"; do
if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then
@@ -387,7 +385,7 @@ AC_DEFUN([SC_LOAD_TKCONFIG], [
fi
done
fi
- if test -f ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}; then
+ if test -f "${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"; then
TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}"
TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"
fi
@@ -481,7 +479,7 @@ AC_DEFUN([SC_PROG_TCLSH], [
AC_DEFUN([SC_BUILD_TCLSH], [
AC_MSG_CHECKING([for tclsh in Tcl build directory])
- BUILD_TCLSH=${TCL_BIN_DIR}/tclsh
+ BUILD_TCLSH="${TCL_BIN_DIR}/tclsh"
AC_MSG_RESULT([$BUILD_TCLSH])
AC_SUBST(BUILD_TCLSH)
])