maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #04555
Re: [Commits] Rev 3227: Fix embedded build on Windows. in file:///H:/bzr/5.5/
Hi, Vladislav!
On Jan 20, Vladislav Vaintroub wrote:
> > -----Original Message-----
> > From: Sergei Golubchik [mailto:serg@xxxxxxxxxxxx]
> > Sent: Freitag, 20. Januar 2012 17:23
> > To: maria-developers@xxxxxxxxxxxxxxxxxxx; wlad@xxxxxxxxxxxx
> > Subject: Re: [Commits] Rev 3227: Fix embedded build on Windows. in
> > file:///H:/bzr/5.5/
> >
> > On Jan 20, Vladislav Vaintroub wrote:
> > > revno: 3227
> > > revision-id: wlad@xxxxxxxxxxxxxxxx-20120120155435-y8tyd01st3fpbq1e
> > > parent: wlad@xxxxxxxxxxxxxxxx-20120120113906-f6wcj47dyo6jyt45
> > > committer: Vladislav Vaintroub <wlad@xxxxxxxxxxxxxxxx>
> > > branch nick: 5.5
> > > timestamp: Fri 2012-01-20 16:54:35 +0100
> > > message:
> > > Fix embedded build on Windows.
> >
> > > === modified file 'mysys/CMakeLists.txt'
> > > --- a/mysys/CMakeLists.txt 2012-01-20 00:57:58 +0000
> > > +++ b/mysys/CMakeLists.txt 2012-01-20 15:54:35 +0000
> > > @@ -46,7 +46,7 @@
> > > SET (MYSYS_SOURCES ${MYSYS_SOURCES} my_addr_resolve.c)
> > > ENDIF()
> > >
> > > -IF(WITH_SAFEMALLOC OR NOT HAVE_CXX_NEW)
> > > +IF(NOT HAVE_CXX_NEW)
> > > ADD_DEFINITIONS( -DUSE_MYSYS_NEW)
> >
> > Why is that?
> Well, when I added WITH_SAFEMALLOC , build started to fail. Thus I removed
> it again. The build started to fail because I forgot that WITH_SAFEMALLOC is
> no more Boolean, and is set AUTO on Windows, so it was compiled in.
>
> I'm not surprised that embedded build failed, yet I'm surprised that normal
> server was built on Windows. On Windows, one cannot have multiply defined
> symbols, and since there is already one "new" in C runtime library, it
> actually had to fail.
>
> > Note, that we should always use mysys/new.cc when safemalloc is enabled.
> This was my thought exactly, when I added it. But I guess, in this case
> my_new.cc might need some smarter tricks in order to replace system new().If
> I'm not mistaken, the old MySQL version of this file used "weak" attributes
> or something similar.
I thought that it was me who added WITH_SAFEMALLOC to that IF(). But now
I've checked and indeed, I did not. I did it in the top-level
CMakeLists.txt:
193 # force -DUSE_MYSYS_NEW unless already done by HAVE_CXX_NEW
194 IF(HAVE_CXX_NEW)
195 SET(DUSE_MYSYS_NEW "-DUSE_MYSYS_NEW")
196 ENDIF()
197
198 IF(WITH_SAFEMALLOC MATCHES "ON")
199 ADD_DEFINITIONS( -DSAFEMALLOC ${DUSE_MYSYS_NEW})
200 ELSEIF(WITH_SAFEMALLOC MATCHES "AUTO" AND NOT WIN32)
201 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC")
202 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC ${DUSE_MYSYS_NEW"}
203 ENDIF()
which is supposed to add -DUSE_MYSYS_NEW to the debug flags if
safemalloc is used and HAVE_CXX_NEW is set (is HAVE_CXX_NEW is unset,
-DUSE_MYSYS_NEW is added in mysys, independently from safemalloc).
This should be enough and no additional safemalloc checks in
mysys/CMakeLists.txt should be needed, as far as I understand it.
Regards,
Sergei
References