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]

[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)
 ])


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