> -----Original Message----- > From: Steve Ellcey [mailto:[email protected]] > Sent: Dienstag, 8. November 2011 22:51 > To: Sergei Golubchik > Cc: Vladislav Vaintroub; [email protected] > Subject: Re: [Maria-developers] Shared plugin library build question > > On Sun, 2011-11-06 at 15:45 +0100, Sergei Golubchik wrote: > <skip>
> I have downloaded these sources and done a trial build. I have run into > a couple of problems so far. When compiling 5.5/mysys/base64.c I get an > error because it is including <base64.h> and > finding /usr/local/include/base64.h before 5.5/include/base64.h. This > causes an error because the base64_encode in that header does not match > the one in mariadb. I assume we are using the wrong base64.h because > mysys/CMakeFiles/CMakeDirectoryInformation.cmake > has: > > SET(CMAKE_C_INCLUDE_PATH > "include" > "/usr/local/include" > "/wsp/sje/mariadb/bazaar/repo/5.5/include" > "/wsp/sje/mariadb/bazaar/repo/5.5/mysys" > ) > > where /usr/local/include is listed before the 5.5/include and 5.5/mysys > directories. Unfortunately, CMakeDirectoryInformation.cmake is > generated by Cmake and I am not sure where it gets its information from > about the order of the include files. Include directories in cmake are manipulated by INCLUDE_DIRECTORIES directive http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:include_directories . It has an option for appending , prepending and an for SYSTEM headers( I'm not sure about exact effect of this one) mysys/CMakeLists.txt has at the very top of the file INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys) I assume ZLIB_INCLUDE_DIR is /usr/local/include, since we use system zlib if it is available. You can try to change order here and for example move ${CMAKE_SOURCE_DIR}/include to the start of the list. I think the best option for MySQL, and for MariaDB is to rename own base64.h and function prototypes in a way that it does not conflict with system headers on any system it is meant to be run on. Relying on the include order is fragile, I also do not see how it would not solve the problem with same function name different prototypes - how can we always reliably force use our base64_encode rather than system one ? FYI: I am building in an object > directory that is separate from the source directory, I don't know if > that is related to the problem or not. It should not be a problem. _______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp

