[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Make CVS HEAD version build out of the box
From: |
Paul Smith |
Subject: |
Re: Make CVS HEAD version build out of the box |
Date: |
Sun, 30 Sep 2007 10:08:45 -0400 |
On Sun, 2007-09-30 at 17:28 +0800, Yongwei Wu wrote:
> On 30/09/2007, Eli Zaretskii <address@hidden> wrote:
> > > Date: Sun, 30 Sep 2007 11:20:52 +0800
> > > From: "Yongwei Wu" <address@hidden>
> > >
> > > I found that the CVS HEAD version cannot build out of the box. Please
> > > review whether my patch is appropriate.
> >
> > Thank you.
> >
> > > --- build_w32.bat 4 Jul 2007 19:35:17 -0000 2.13
> > > +++ build_w32.bat 30 Sep 2007 03:15:30 -0000
> > > @@ -16,7 +16,7 @@ rem
> > > rem You should have received a copy of the GNU General Public License
> > > along
> > > rem with this program. If not, see <http://www.gnu.org/licenses/>.
> > >
> > > -if not exist config.h copy config.h.W32 config.h
> > > +if not exist config.h copy config.h.W32.template config.h
> >
> > This isn't right: the batch file is for building Make from an official
> > tarball, not from CVS.
>
> I was really guessing my modification might not be right. However, I
> do not know how to build Make from CVS, and have not found
> documentation.
Up until now, as far as I know no one has supported building GNU make
from CVS on Windows platforms. To actually create a distribution
tarball takes a lot of tools such as autoconf, automake, gettext, etc.
which I believe do run on Windows but are not commonly found.
However, I have no objection to the creation of a new batch file or
whatever that will make this easier.
> > > --- dir.c 4 Jul 2007 19:35:18 -0000 1.66
> > > +++ dir.c 30 Sep 2007 03:15:31 -0000
> > > @@ -458,7 +458,7 @@ find_directory (const char *name)
> > > /* Remove any trailing '\'. Windows32 stat fails even on valid
> > > directories if they end in '\'. */
> > > if (p[-1] == '\\')
> > > - p[-1] = '\0';
> > > + ((char *)p)[-1] = '\0';
> > > #endif
> > >
> > > #ifdef VMS
> > > @@ -471,7 +471,7 @@ find_directory (const char *name)
> > > /* Put back the trailing '\'. If we don't, we're permanently
> > > truncating the value! */
> > > if (p[-1] == '\0')
> > > - p[-1] = '\\';
> > > + ((char *)p)[-1] = '\\';
> > > #endif
> >
> > I don't understand why you needed these changes. Which compiler did
> > you use, and what error message(s) it emitted, that require such
> > changes?
>
> In the CVS version, "name" and "p" are now declared const char *. So
> any decent compiler should complain. I was using GCC 3.4.5 when
> compiling.
Well, obviously casting a const char* to a char* so you can modify it is
not valid code. There's a reason these values are const, and that
reason is that they should not be modified.
I can't accept this change; you'll have to find a way of rewriting this
code that does NOT involve casting away const.
Cheers!
--
-------------------------------------------------------------------------------
Paul D. Smith <address@hidden> Find some GNU make tips at:
http://www.gnu.org http://make.mad-scientist.us
"Please remain calm...I may be mad, but I am a professional." --Mad Scientist