From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13150 invoked by alias); 30 Jan 2009 20:36:47 -0000 Received: (qmail 13142 invoked by uid 22791); 30 Jan 2009 20:36:45 -0000 X-SWARE-Spam-Status: No, hits=-1.0 required=5.0 tests=AWL,BAYES_00,HK_OBFDOM,J_CHICKENPOX_29,J_CHICKENPOX_39,J_CHICKENPOX_92,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.33.17) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 30 Jan 2009 20:36:41 +0000 Received: from zps77.corp.google.com (zps77.corp.google.com [172.25.146.77]) by smtp-out.google.com with ESMTP id n0UKaJdC027367; Fri, 30 Jan 2009 20:36:20 GMT Received: from localhost (ruffy.corp.google.com [172.18.118.116]) by zps77.corp.google.com with ESMTP id n0UKaF9Z016584; Fri, 30 Jan 2009 12:36:16 -0800 Received: by localhost (Postfix, from userid 67641) id A82971C7A17; Fri, 30 Jan 2009 12:36:15 -0800 (PST) To: gdb-patches@sourceware.org, keiths@redhat.com Subject: [RFA] fixes to building gdb w/gdbtk and w/o tcl/tk Message-Id: <20090130203615.A82971C7A17@localhost> Date: Fri, 30 Jan 2009 23:17:00 -0000 From: dje@google.com (Doug Evans) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-01/txt/msg00545.txt.bz2 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 * 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) ])