Hi Adriaan, On Tuesday 28 February 2006 22:42, Adriaan Moors wrote: > Hi, > > I'm quite excited to report that I got a checkout of trunk/kdelibs (24 feb > 2006) to compile on Mac OS X. I figured it might be interesting to report > on what I did (although I'm no KDE/CMake/OS X hacker by any means). I > apologise for the long post, but I hope it's useful (at the very least it > expresses my gratitude towards everyone who is working on this project). > > So, here's an overview of the steps I took. Some are probably pretty dumb, > but I think the main message is that there's very little work left to do to > get it to compile out of the box on a Mac. I'm running fink unstable on Mac > OS X 10.4.5 and I compiled everything with Apple's stock gcc 4.0. > > 0) built QT/Mac 4.1.1 (applied > http://websvn.kde.org/*checkout*/trunk/qt-copy/patches/0112-ksyntaxhighligh >ter- rehighlight-document.diff?rev=512475) > > 1) in kdelibs/ did a ccmake . > 1.1) provided full paths of *.dylib's (most of them from fink, in /sw/lib) > 1.1.1) not sure whether this is correct, maybe I should just provide > names suitable for -l linker flag (or is it ok/better to give full path?)
Did you try setting the CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH environment variables ? This should help. http://www.cmake.org/Wiki/CMake_Useful_Variables#Environment_Variables > 1.1.2) openexr has *.la's and not *.dylib's > --> used Imath IlmImf Iex Half What la files ? On Linux they are only text files. There must be also "real" libraries available. > 1.2) solved conflict between including libs from /usr/lib and /sw/lib > --> bz2 now from /sw/lib > 1.3) resolv was not detected as dependency > changed the following variable (as a quick hack, couldn't figure out > wat the real prob is): > //Where can the agg library be found > AGG_LIBRARIES:FILEPATH=/sw/lib/libagg.dylib;resolv So libagg needs libresolv ? For which functions ? > (changing this didn't help, since it's automatically generated: > kdecore_LIB_DEPENDS:STATIC=-F/Users/adriaan/nospotlight/local//lib > -framework QtCore;-lpthread;-framework Qt3Support;-framework > QtGui;-lSM;-lICE;/usr/X11R6/lib/libX11.dylib;/usr/X11R6/lib/libXext.dylib;D >COP;/ usr/lib/libz.dylib;-framework Carbon;/sw/lib/libbz2.dylib;-framework > QtXml;/sw/lib/libagg.dylib;dl;resolv) Ranger Rick, Tanner, what do you think about the following issues ? > 2) a lot of cpp-sources in kdelibs/kjs/ (ustring.cpp, operations.cpp etc) > included operations.h without including math.h first > --> moved #include <math.h> > so that it occured before > #include "operations.h" > it's been a long time since I programmed in C++, so I don't know if this > is a quirk in Apple's gcc 4.0 or... > > 3) added JSImmediate.cpp to the list of source files in CMakeList.txt This one is already in svn. > 4) -DBIND_8_COMPAT is needed for kio > (in kio/misc/kpac/CMakeFiles/kded_proxyscout.dir/flags.make) > --> added to FindKDE4.cmake > if(APPLE) > set ( _KDE4_PLATFORM_DEFINITIONS -D__APPLE_KDE__ > -DBIND_8_COMPAT) > > 5) (don't know if this is serious: > /usr/bin/ld: warning suggest use of -bind_at_load, as lazy binding may > result in errors or different symbols being used) > > 6) (hack) in notifybypopup.cpp > changed > KPassivePopup *pop = new KPassivePopup( config->winId ); > to > KPassivePopup *pop = new KPassivePopup(KPassivePopup::Boxed, > (WId) config->winId, 0 ); > (I couldn't figure out the proper C++ syntax to disambiguate the > call...) > > 7) incompatibility between fink's openexr (compiled with gcc 3.3) and kde 4 > (which I'm compiling using gcc 4) > --> recompile openexr using gcc 4 (by hand -- exrdisplay won't link and > fink package builds binaries and libs at same time) > 7.1) the error I got was: > cd /Users/adriaan/nospotlight/src/kdelibs/kimgio > /usr/bin/c++ -bundle -multiply_defined suppress -o ../lib/kimg_exr.so > "CMakeFiles/kimg_exr.dir/exr.o" > -L/Users/adriaan/nospotlight/src/kdelibs/lib -L/sw/lib -L/usr/X11R6/lib > -L/usr/local/lib > -F/Users/adriaan/nospotlight/local/lib -framework QtCore -lpthread > -lkdecore -lImath -lIlmImf -lIex -lHalf -framework Qt3Support -framework > QtGui -lSM -lICE -lX11 -lXext -lDCOP > -F/Users/adriaan/nospotlight/local//lib -framework QtCore -lpthread -lz > -framework Carbon -lbz2 -framework QtXml -lagg -lresolv -ldl > -L/usr/lib/gcc/powerpc-apple-darwin8/4.0.0/ -lstdc++ > > /usr/bin/ld: Undefined symbols: > std::basic_string<char, std::char_traits<char>, std::allocator<char>> > > ::_S_empty_rep_storage > > std::basic_string<char, std::char_traits<char>, std::allocator<char>> > > ::_Rep::_S_create(unsigned long, std::allocator<char> const&) > > __ZNSaIcED4Ev > __ZNSt15basic_streambufIcSt11char_traitsIcEEC4Ev > __ZNSt15basic_streambufIcSt11char_traitsIcEED4Ev > std::__default_alloc_template<true, 0>::deallocate(void*, unsigned > long) std::__default_alloc_template<true, 0>::_S_force_new > std::__default_alloc_template<true, 0>::_S_free_list > std::__default_alloc_template<true, 0>::_S_node_allocator_lock > __ZNSt24__default_alloc_templateILb1ELi0EE5_LockD4Ev > std::__default_alloc_template<true, 0>::allocate(unsigned long) > std::__default_alloc_template<true, 0>::_S_refill(unsigned long) > collect2: ld returned 1 exit status > > 7.2) so I did: > wget http://savannah.nongnu.org/download/openexr/OpenEXR-1.2.2.tar.gz > tar xvzf OpenEXR-1.2.2.tar.gz > perl -pi -e > 's,-L\$\(top_builddir\)\S+,,g;s,-l(IlmImf|Imath|Half|Iex),\$(top_builddir)/ >\1/ lib\1.la,g' `find . -name Makefile.in` > patch -p1 < > /sw/fink/dists/unstable/main/finkinfo/graphics/openexr.patch ./configure > --enable-shared=no --disable-imfexamples CC=gcc-4.0 CXX=g++-4.0 CPP=cpp-4.0 > MAKEFLAGS=-j1 > # commented out parts of SUBDIRS in Makefile that didn't refer to the > libraries > make > sudo make install > > 8) now simply doing make ; sudo make install in kdelibs/ installed > kdelibs!! > > 9) I did export MAC_DISPLAY=:0 (what's this supposed to be set to?), > removed /sw/bin from the PATH and then did khotnewstuff --> which showed me > a GUI (but no hot new stuff ;-( ) > > > I hope this was interesting to someone. I would be more than willing to > perform other experiments (time permitting). You're very welcome :-) A good thing would be if you could setup a nightly build on your machine. Basically this means creating a cron job which executes "make Nightly" once per day. The results will go here: http://public.kitware.com/KDE/Testing/Dashboard/20060301-0100-Nightly/Dashboard.html Bye Alex -- Work: alexander.neundorf AT jenoptik.com - http://www.jenoptik-los.de Home: neundorf AT kde.org - http://www.kde.org alex AT neundorf.net - http://www.neundorf.net _______________________________________________ Kde-buildsystem mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-buildsystem
