Regards,
Sinisa
+----------------------------------------------------------------------+
| ____ __ _____ _____ ___ == MySQL AB |
| /*/\*\/\*\ /*/ \*\ /*/ \*\ |*| Sinisa Milivojevic |
| /*/ /*/ /*/ \*\_ |*| |*||*| mailto:sinisa@stripped |
| /*/ /*/ /*/\*\/*/ \*\|*| |*||*| Larnaka, Cyprus |
| /*/ /*/ /*/\*\_/*/ \*\_/*/ |*|____ |
| ^^^^^^^^^^^^/*/^^^^^^^^^^^\*\^^^^^^^^^^^ |
| /*/ \*\ Developers Team |
+----------------------------------------------------------------------+
I posted this to the 'internals' list a few weeks ago, but looks like
the listserv was not working then. Just a little more info on Darwin
and Mac OS X.
-Nick
---------------------------------------
Although I work at Apple, I've been interested in trying to use mySQL
for a personal project. I download the sources for 3.23.24-beta, and
after a lot of wrestling and got it running on Mac OS X (public beta).
I'd like to feed back my changes, so no one else will need to go
through the porting pain.
First off, to clarify: "Mac OS X" and "Mac OS X Server" and very
different platforms. mySQL currently does compile on Mac OS X Server
(previously known as Rhapsody). What I did was get it building on Mac
OS X, which Apple recently had a public beta release. There have been
a few posts to this list in the past that have helped out.
1) strtol is built-in in Mac OS X. mySQL builds its own implementation
of the function into libmysqlclient.a. The result is any client
software fails on launch because strtol is defined twice. Simply
conditionalizing strtol.c did not work. For some reason strto.c (which
is included by strtol.c and strtoll.c etc) was compiled on its own and
since if LONGLONG and UNSIGNED are undefined it compiles into strtol.
It seems like the correct fix is somewhere in the makefiles (strto.c
should never be compiled on its own). My fix was to change strto.c
from:
#define function longtype strtolXXX
to:
#ifdef __APPLE_CC__
#define function longtype strtolXXX
#else
#define function longtype strtol
#endif
2) The file sql_cache.cc does not compile with Apple's gcc on Mac OS X.
I tracked this down to a compiler bug and reported it. The compiler
problem is a codegen problem with >32K static array initialization when
the array contains C++ classes that use templates... Since the cache
array does not seem to be used, I changed sql_cache.cc from:
#define SQL_CACHE_LENGTH 300
to:
#ifdef __APPLE_CC__
#define SQL_CACHE_LENGTH 30
#else
#define SQL_CACHE_LENGTH 300
#endif
3) Unlike Mac OS X Server, Mac OS X does support pthreads, but not the
full set that mySQL expects. I added the following to my_pthread.h.
(based on another posting to this list). Note: __APPLE_CC__ is a
conditional built in to the gcc compiler on Mac OS X.
diff -r mysql-3.23.24-beta/include/my_pthread.h
mysql-3.23.24-beta.my/include/my_pthread.h
381a382,397
> #if __APPLE_CC__
> #define pthread_condattr_init(A) pthread_dummy(0)
> #define pthread_condattr_destroy(A) pthread_dummy(0)
> #define pthread_cond_init( A, B ) pthread_cond_init( (A), 0 )
> #define pthread_kill(A,B) pthread_dummy(0)
> #define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
> #undef pthread_detach_this_thread
> #define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ;
> pthread_detach(tmp); }
> #ifdef sigset
> #undef sigset
> #define sigset(A,B) signal((A),(B))
> #endif
> #endif
4) In the configuration script, it's not clear to me how
$ac_cv_prog_gcc is set up. But Apple's gcc on Mac OS X does not
support -O6 only -O.
if test "$ac_cv_prog_gcc" = "yes"
then
DEBUG_CFLAGS="-g"
DEBUG_OPTIMIZE_CC="-O"
OPTIMIZE_CFLAGS="-O6" ## <-- does not work on Mac OS X, change to
-O
else
DEBUG_CFLAGS="-g"
DEBUG_OPTIMIZE_CC=""
OPTIMIZE_CFLAGS="-O"
fi
5) To distingush between Mac OS X and Mac OS X Server in config.guess,
the uname values are:
uname option Mac OS X Mac OS X Server
----------------------+--------------------------+---------------------
-----------+
-s Darwin Rhapsody
-r 1.2 5.6
-m Power Macintosh Power Macintosh
config.guess should be updated to recognize Mac OS X as a target.
-Nick
---------------------------------------------------------------------
Please check "http://www.mysql.com/Manual_chapter/manual_toc.html"
before
posting. To request this thread, e-mail
internals-thread19@stripped
To unsubscribe, send a message to the address shown in the
List-Unsubscribe header of this message. If you cannot see it,
e-mail internals-unsubscribe@stripped instead.
| Thread |
|---|
| • compiling mySQL on Mac OS X | Beotel | 3 Oct |