169 lines
7.4 KiB
Plaintext
169 lines
7.4 KiB
Plaintext
Compiling KiCad on Apple Mac OS X
|
|
=================================
|
|
First written: 2010-01-31
|
|
Last edited by: Jerry Jacobs <xor.gate.engineering[at]gmail[dot]com>
|
|
|
|
|
|
Snow Leopard
|
|
------------
|
|
|
|
Requirements
|
|
* XCode Tools (http://developer.apple.com/tools/xcode)
|
|
* bzr (bazaar)
|
|
* CMake (http://www.cmake.org)
|
|
* wxWidgets 2.9 (http://www.wxwidgets.org/downloads)
|
|
* Doxygen (http://www.doxygen.nl)
|
|
* ccache (http://www.macports.org)
|
|
|
|
|
|
Building wxWidgets 2.9 Universal
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
To check if your tools and libraries are installed check with file for architectures.
|
|
|
|
user@macosx$ file /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib
|
|
|
|
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib: Mach-O universal binary with 4 architectures
|
|
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib (for architecture ppc7400): Mach-O dynamically linked shared library stub ppc
|
|
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib (for architecture ppc64)Mach-O 64-bit dynamically linked shared library stub ppc64
|
|
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib (for architecture i386):Mach-O dynamically linked shared library stub i386
|
|
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library stub x86_64
|
|
|
|
You need the architectures what you are compiling for !
|
|
|
|
If you have problems that the 64bits library is not build you should add in
|
|
the configure file:
|
|
|
|
At time of writing (2009-01-16) this is on line 18381
|
|
changing this: OSX_UNIV_OPTS="-arch ppc -arch i386"
|
|
into this: OSX_UNIV_OPTS="-arch ppc -arch i386 -arch x86_64"
|
|
|
|
Building a universal monolib wxWidgets 2.9 with the following parameters:
|
|
./configure --enable-unicode=yes --enable-shared=no --enable-monolithic --with-opengl --with-expat=builtin --enable-universal_binary --enable-aui --enable-debug --with-osx_cocoa --with-macosx-sdk=/Developer/SDKs/MacOSX10.5.sdk/ --prefix=/opt/wxwidgets/<rev>
|
|
|
|
<rev> Should be subsituded with the revision from SVN
|
|
|
|
Then you should a message like this:
|
|
|
|
Configured wxWidgets 2.9.2 for `i686-apple-darwin10.4.0'
|
|
|
|
Which GUI toolkit should wxWidgets use? osx_cocoa
|
|
Should wxWidgets be compiled into single library? yes
|
|
Should wxWidgets be linked as a shared library? no
|
|
Should wxWidgets support Unicode? yes (using UTF-8)
|
|
What level of wxWidgets compatibility should be enabled?
|
|
wxWidgets 2.6 no
|
|
wxWidgets 2.8 yes
|
|
Which libraries should wxWidgets use?
|
|
STL no
|
|
jpeg builtin
|
|
png builtin
|
|
regex builtin
|
|
tiff builtin
|
|
zlib sys
|
|
expat builtin
|
|
libmspack no
|
|
sdl no
|
|
|
|
|
|
If you don't need the debugging symbols then you can remove the --enable-debug parameter.
|
|
|
|
Compiling and installing:
|
|
make
|
|
sudo make install
|
|
|
|
|
|
Move the old Mac OS X wxconfig and symlink it to the new compiled 2.9
|
|
|
|
sudo mv /usr/bin/wx-config /usr/bin/wx-config.osx
|
|
sudo ln -s /opt/wxwidgets-svn/bin/wx-config /usr
|
|
|
|
Building KiCad
|
|
~~~~~~~~~~~~~~
|
|
Extract the sources or get them from subversion.
|
|
|
|
user@mac-osx$ cmake .
|
|
|
|
Regarding Kicad the only things i've changed are the Variables
|
|
in the generated CMakeCache.txt
|
|
|
|
It depends on which CMake version you use:
|
|
|
|
//Flags used by the compiler during all build types.
|
|
//This fixes also BOOST macro errors
|
|
CMAKE_CXX_FLAGS:STRING=-D__ASSERTMACROS__
|
|
|
|
//Build architectures for OSX
|
|
CMAKE_OSX_ARCHITECTURES:STRING=x86_64 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk/ -mmacosx-version-min=10.5
|
|
|
|
//The product will be built against the headers and libraries located
|
|
// inside the indicated SDK.
|
|
CMAKE_OSX_SYSROOT:PATH=/Developer/SDKs/MacOSX10.5.sdk
|
|
|
|
//Minimum OS X version to target for deployment (at runtime); newer
|
|
// APIs weak linked. Set to empty string for default value.
|
|
CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.5
|
|
|
|
Or:
|
|
|
|
CMAKE_OSX_ARCHITECTURE = x86_64 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk/ -mmacosx-version-min=10.5
|
|
CMAKE_OSX_SYSROOT = /Developer/SDKs/MacOSX10.5.sdk
|
|
CMAKE_CXX_FLAGS = -D__ASSERTMACROS__
|
|
|
|
|
|
Then we invoke make:
|
|
user@mac-osx$ make
|
|
|
|
It is also possible to give all the options on the commandline and not to edit the CMakeCache.txt. This is a oneliner for Leopard and up:
|
|
|
|
cmake ~/Repositories/testing -DCMAKE_OSX_ARCHITECTURES="i386 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6" -DCMAKE_CXX_FLAGS="-D__ASSERTMACROS__" -DCMAKE_OSX_SYSROOT="/Developer/SDKs/MacOSX10.6.sdk"
|
|
|
|
Optional compiler cache
|
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
If you (re)compile often, you would love to use cache. The best is to install it using macports and set the libexec symlink
|
|
directory of ccache in your PATH variable.
|
|
|
|
Then start with a clean directory and invoke cmake, make sure that the C++ compiler points to /opt/local/libexec/ccache/g++
|
|
|
|
Further reading at http://trac.macports.org/wiki/howto/ccache
|
|
|
|
Known Problems
|
|
~~~~~~~~~~~~~~
|
|
In file included from
|
|
/temp/kicad-sources/boost_1_38_0/boost/ptr_container/detail/reversible_ptr_container.hpp:22In
|
|
file included from
|
|
/temp/kicad-sources/boost_1_38_0/boost/ptr_container/detail/reversible_ptr_container.hpp:22,
|
|
from
|
|
/temp/kicad-sources/boost_1_38_0/boost/ptr_container/ptr_sequence_adapter.hpp:20,
|
|
from
|
|
/temp/kicad-sources/boost_1_38_0/boost/ptr_container/ptr_vector.hpp:20,
|
|
from
|
|
/temp/kicad-sources/kicad/include/board_item_struct.h:9,
|
|
from /temp/kicad-sources/kicad/include/pcbstruct.h:10,
|
|
from /temp/kicad-sources/kicad/3d-viewer/3d_viewer.h:29,
|
|
from /temp/kicad-sources/kicad/3d-viewer/3d_aux.cpp:23:
|
|
/temp/kicad-sources/boost_1_38_0/boost/ptr_container/detail/static_move_ptr.hpp:154:50:
|
|
error: macro "check" passed 2 arguments, but takes just 1
|
|
|
|
CMAKE_CXX_FLAGS = -D__ASSERTMACROS__ fixes this :-)
|
|
|
|
|
|
configure:18585: gcc -isysroot /Developer/SDKs/MacOSX10.5.sdk/ -mmacosx-version-min=10.5 -o conftest -arch i386 -arch x86_64 -arch ppc -arch i386 -arch x86_64 -arch ppc conftest.c >&5
|
|
ld: warning: in /Developer/SDKs/MacOSX10.5.sdk//usr/lib/libSystem.dylib, missing required architecture ppc in file
|
|
|
|
Installing rosetta and xcode with all architectures fixes this "problem"
|
|
|
|
|
|
ld: warning: in /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks//QuickTime.framework/QuickTime, missing required architecture x86_64 in file
|
|
|
|
You get this error because the QuickTime 10.6 framework is not build with 64bit support. This not a real issue for KiCad because we don't use it anyway.
|
|
|
|
Undefined symbols:
|
|
"TestForIntersectionOfStraightLineSegments(int, int, int, int, int, int, int, int, int*, int*, double*)", referenced from:
|
|
clipLine(EDA_Rect*, int&, int&, int&, int&)in libcommon.a(gr_basic.cpp.o)
|
|
|
|
Make sure you marked the build type Release:
|
|
|
|
//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
|
|
// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
|
|
CMAKE_BUILD_TYPE:STRING=Release
|