Commit f8215b34 authored by jerryjacobs's avatar jerryjacobs

Cleanup compiling doc, added mac-osx

parent 607ec762
--== How to build kicad ==-- Compiling KiCad from Source
First Written: 19-Dec-2007 ===========================
Last Revised: 13-May-2009 KiCad Documentation Team
Last revised on 31-Jan-2010 by Jerry Jacobs
Kicad needs wxWidgets, the multi platform G.U.I. Introduction
------------
Perform these steps in sequence. (Platform specific details are given in This is a generic guide how to compile kicad from scratch. On windows and linux.
sections below.) If you need something more distribution specific or the experimental mac-osx port
read the other documents in the Documentation/compiling folder.
1) If windows, then install "msys" and "mingw". Installation of Tools
2) If linux, then install "mesa". ---------------------
3) Make sure g++ and "make" are in your path. On windows:
4) Install wxWidgets [and build it if on windows].
5) Install zlib [and build it if on windows]. Get msys and mingw here:
6) Install CMAKE
7) Install Boost C++ Template Libraries (*.hpp files)
8) Install the kicad source tree.
9) Use cmake to build the kicad makefiles.
10) Use make to build and install kicad.
11) Making a "Debug" build.
12) Variables for fine-tuning the build process.
===== Step Details ====================================================
1) If windows, then install "msys" and "mingw".
Skip this step if on a Unix box. Get msys and mingw here:
http://mingw.org/ http://mingw.org/
msys sets up a development environment that allows the bash shell to run. msys sets up a development environment that allows the bash shell to run.
mingw are a set of tools that run on windows or under msys. You will need mingw are a set of tools that run on windows or under msys. You will need
at least the following mingw packages: make, gcc, g++, binutils, autoconf, and at least the following mingw packages: make, gcc, g++, binutils, autoconf, and
automake. automake.
On linux:
----------------------------------------------------------------------------- Install "mesa". Use your package manager to install the
development libaries.
2) If linux, install "mesa". Use your package manager to install the
development libaries.
-----------------------------------------------------------------------------
3) Make sure g++ and "make" are in your path.
Tools in PATH
-------------
Make sure g++, make and other tools are in your path.
If windows, then try running g++ and make from within your msys bash shell. If windows, then try running g++ and make from within your msys bash shell.
----------------------------------------------------------------------------- Install or Build wxWidgets
--------------------------
4) Install wxWidgets [and build it if on windows].
If on windows, download If on windows, download
http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.8.zip or a newer version. http://sourceforge.net/projects/wxwindows/files/wxAll/2.8.10/wxWidgets-2.8.10.zip/download
or a newer version.
Start msys so you have a bash shell. Decide where your wxWidgets build directory Start msys so you have a bash shell. Decide where your wxWidgets build directory
will be. It must be where you can access it from within the msys environment, will be. It must be where you can access it from within the msys environment,
such as home/<user>. Edit your msys/1.0/etc/fstab file if needed to provide such as home/<user>. Edit your msys/1.0/etc/fstab file if needed to provide
...@@ -66,17 +48,21 @@ there, and then: ...@@ -66,17 +48,21 @@ there, and then:
mkdir build-release mkdir build-release
mkdir build-debug mkdir build-debug
-- release .Release
----
cd build-release cd build-release
../configure --enable-unicode --enable-monolithic --disable-shared --with-msw --with-opengl ../configure --enable-unicode --enable-monolithic --disable-shared --with-msw --with-opengl
make make
make install make install
----
-- debug .Debug
----
cd build-debug cd build-debug
../configure --enable-unicode --enable-monolithic --enable-debug --enable-debug_gdb --disable-shared --with-msw --with-opengl ../configure --enable-unicode --enable-monolithic --enable-debug --enable-debug_gdb --disable-shared --with-msw --with-opengl
make make
make install make install
----
I think the default is to install into /usr/local/wxMSW-2.8.8. You can probably I think the default is to install into /usr/local/wxMSW-2.8.8. You can probably
pass --prefix=<wxInstallDir> to configure above to change where "make install" pass --prefix=<wxInstallDir> to configure above to change where "make install"
...@@ -94,10 +80,8 @@ alternative is to build static libaries from source. Verify that wx-config is in ...@@ -94,10 +80,8 @@ alternative is to build static libaries from source. Verify that wx-config is in
your path by running it from a command prompt. Linux users then go to next step. your path by running it from a command prompt. Linux users then go to next step.
----------------------------------------------------------------------------- Install or Build zlib
---------------------
5) Install zlib [and build it if on windows].
If on windows, download http://www.zlib.net/zlib123.zip or a newer version. If on windows, download http://www.zlib.net/zlib123.zip or a newer version.
Start msys so you have a bash shell. Decide where your zlib build directory Start msys so you have a bash shell. Decide where your zlib build directory
will be. It must be where you can access it from within the msys environment, will be. It must be where you can access it from within the msys environment,
...@@ -113,20 +97,17 @@ build directory. Change directories into there, and then: ...@@ -113,20 +97,17 @@ build directory. Change directories into there, and then:
If linux, use your package manager to install zlib pre-built binaries. If linux, use your package manager to install zlib pre-built binaries.
Note (JP Charras): Note (JP Charras):
Under Linux, zlib is usually installed. Under Linux, zlib is usually installed.
If it is not found by the wxWidget installation, wxWidgets creates an alternate zlib library. If it is not found by the wxWidget installation, wxWidgets creates an alternate zlib library.
Under Windows, if zlib is not installed, my cmake build will try to use the Under Windows, if zlib is not installed, my cmake build will try to use the
wxWidgets zlib build. So, under windows kicad build should work without wxWidgets zlib build. So, under windows kicad build should work without
zlib install. zlib install.
If you are using the wxWidget zlib, make sure that the wxWidgets/src/zlib directory is copied
to ${wxWidgets_ROOT_DIR}/src/zlib
----------------------------------------------------------------------------- If you are using the wxWidget zlib, make sure that the wxWidgets/src/zlib directory is copied
to ${wxWidgets_ROOT_DIR}/src/zlib
6) Install CMAKE.
Install CMake
-------------
If windows, download the installation binary for windows from cmake.org. If windows, download the installation binary for windows from cmake.org.
Install that and choose to add cmake to your path during installation. You Install that and choose to add cmake to your path during installation. You
will have to restart and command shells for the new path to take effect. will have to restart and command shells for the new path to take effect.
...@@ -139,43 +120,13 @@ or later. If only an older one is available in your package repository, build ...@@ -139,43 +120,13 @@ or later. If only an older one is available in your package repository, build
command prompt. command prompt.
----------------------------------------------------------------------------- Obtain Sources
--------------
7) Install Boost C++ Libraries
Under linux, boost is already installed, but can be too old.
If this is the case, you *must* update boost.
Go to http://www.boost.org/ dowlload the latest version of boost.
unzip (or untar) boots file.
under Windows, files can be installed (unzipped) everywhere, but when create
makefiles using cmake, you will have a message saying boost is not found,
something like:
-- Check for installed Boost -- not found
CMake Error at CMakeModules/CheckFindPackageResult.cmake:6 (message):
Boost was not found - it is required to build Kicad
Edit the CMakeCache.txt file to replace the Boost_INCLUDE_DIR "notfound" value by the right value:
You must find a line like
//Path to a file.
Boost_INCLUDE_DIR:PATH=Boost_INCLUDE_DIR-NOTFOUND
and edit it to set the right path, something like:
Boost_INCLUDE_DIR:PATH=f:/boost/boost
(on my computer boost is unzipper in f:\boost, and boost installed files are
in f:\boost\boost)
-----------------------------------------------------------------------------
8) Install the kicad source tree.
You can use the subversion repository or a tar file for this. See the wiki. You can use the subversion repository or a tar file for this. See the wiki.
----------------------------------------------------------------------------- Create Makefiles with CMake
---------------------------
9) Use cmake to create the kicad makefiles.
If windows, go into your msys shell. Linux and windows users both then make If windows, go into your msys shell. Linux and windows users both then make
two "out of source" build directories: two "out of source" build directories:
cd <kicadSource> cd <kicadSource>
...@@ -197,21 +148,8 @@ gives the final install directory. If not what you want, edit it with a text ...@@ -197,21 +148,8 @@ gives the final install directory. If not what you want, edit it with a text
editor and re-run the same cmake command again, but with no editor and re-run the same cmake command again, but with no
-DCMAKE_INSTALL_PREFIX given on the command line. -DCMAKE_INSTALL_PREFIX given on the command line.
CMake will try and find the boost header files and will often fail. If it Compiling with Make
fails, you will have to edit your CMakeCache.txt file manually and set your ------------------~
Boost_INCLUDE_DIR:PATH=/svn/boost-trunk
setting to point to the base of the boost installation directory. Account
for the fact that the boost #include references use a <boost/..> type prefix.
Example C++ code: #include <boost/ptr_container/ptr_vector.hpp> and please
notice the leading <boost/ in the path.
So point your Boost_INCLUDE_DIR:PATH= variable to a directory above the
"boost" directory.
-----------------------------------------------------------------------------
10) Use make to build and install kicad.
You compile Kicad here. You will only need to do step 8) again when one of the You compile Kicad here. You will only need to do step 8) again when one of the
CMakeLists.txt files change. If windows, you must be in your msys shell. CMakeLists.txt files change. If windows, you must be in your msys shell.
On either platform then: On either platform then:
...@@ -223,10 +161,8 @@ On either platform then: ...@@ -223,10 +161,8 @@ On either platform then:
You are now done unless you want to make a Debug build. You are now done unless you want to make a Debug build.
----------------------------------------------------------------------------- Compiling a Debug version
-------------------------
11) Making a "Debug" build.
cd <kicadSource>/build/debug cd <kicadSource>/build/debug
On either cmake command line shown below, you can optionally include On either cmake command line shown below, you can optionally include
...@@ -244,10 +180,8 @@ Make the Debug binaries: ...@@ -244,10 +180,8 @@ Make the Debug binaries:
make make
----------------------------------------------------------------------------- Fine-tune Build Process
-----------------------
12) Variables for fine-tuning the build process.
These should be set from command line: These should be set from command line:
CMAKE_BUILD_TYPE Release/Debug (REQUIRED) CMAKE_BUILD_TYPE Release/Debug (REQUIRED)
...@@ -258,7 +192,6 @@ These should be set from command line: ...@@ -258,7 +192,6 @@ These should be set from command line:
wxWidgets_USE_STATIC ON/OFF (OPTIONAL) wxWidgets_USE_STATIC ON/OFF (OPTIONAL)
CMAKE_VERBOSE_MAKEFILE ON/OFF (OPTIONAL) CMAKE_VERBOSE_MAKEFILE ON/OFF (OPTIONAL)
Turns ON/OFF verbose build messages. Turns ON/OFF verbose build messages.
You can also pass VERBOSE=1 to make for the same effect. You can also pass VERBOSE=1 to make for the same effect.
...@@ -269,10 +202,5 @@ These should be set from command line: ...@@ -269,10 +202,5 @@ These should be set from command line:
KICAD_PYTHON ON/OFF KICAD_PYTHON ON/OFF
-----------------------------------------------------------------------------
Note: that it is easy to build only a specific binary such as pcbnew alone: Note: that it is easy to build only a specific binary such as pcbnew alone:
make pcbnew make pcbnew
-----------------------------------------------------------------------------
Mac OSX Boost check macro error
===============================
Credits by Nick
http://stuffthingsandjunk.blogspot.com/2009/02/kicad-osx-nightlies-fixed.html
The following files have to be patched to remove the check macro error on OSX
build. This is also for Boost 1.40.0 !
This patch is added on revision 2033 (kicad/include/boost directory!)
So if upgrading to new version apply this if you get the same error.
See below snippets of the two files that have to be edit.
Just subsitude check with check_ in both files.
boost/ptr_container/detail/static_move_ptr.hpp
----------------------------------------------
% diff /temp/boost_1_37_0/boost/ptr_container/detail/static_move_ptr.hpp
/temp/kicad-sources/boost/ptr_container/detail/static_move_ptr.hpp
154c155
< void check(const static_move_ptr& ptr)
---
> void check_(const static_move_ptr& ptr)
boost/detail/is_incrementable.hpp
---------------------------------
% diff /temp/boost_1_37_0/boost/detail/is_incrementable.hpp
/temp/kicad-sources/boost/detail/is_incrementable.hpp
68c68
< char (& check(tag) )[2];
---
> char (& check_(tag) )[2];
71c71
< char check(T const&);
---
> char check_(T const&);
81c81
< , value = sizeof(is_incrementable_::check(BOOST_comma(++x,0))) == 1
---
> , value = sizeof(is_incrementable_::check_(BOOST_comma(++x,0))) ==
> 1
92c92
< , value = sizeof(is_incrementable_::check(BOOST_comma(x++,0))) == 1
---
> , value = sizeof(is_incrementable_::check_(BOOST_comma(x++,0))) ==
> 1
The error was
-------------
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
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)
* CMake (http://www.cmake.org)
* wxWidgets 2.9 (http://www.wxwidgets.org/downloads)
* Doxygen (http://www.doxygen.nl)
Building wxWidgets 2.9
~~~~~~~~~~~~~~~~~~~~~~
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 \
--enable-universal_binary --enable-aui --enable-debug --with-osx_cocoa --with-macosx \
--with-macosx-sdk=/Developer/SDKs/MacOSX10.5.sdk/ --prefix=/opt/wxwidgets-svn
If you dont need the debugging symbols then you can remove the --enable-debug parameter.
Compiling and installing:
make
sudo make install
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
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 :-)
\ No newline at end of file
--== notes about wxWidgets problems ==--
Last Revised: 30-May-2009
Kicad needs wxWidgets, the multi platform G.U.I.
Known problems:
wxMSW:
*DO NOT* use wxMSW.2.8.1
Linux and macOSX
- Printing problems (all version).
Note old versions of wxWidgets give
very ugly results (poor printing resolution set to 72ppi)
So use a very recent version (> 2.8.8 (that also solve other bugs)
- Bad arcs (before 2.7.1).
wxWidgets patches:
*************************************************************************************
wxGTK version:
*************************************************************************************
Patch for printing wide traces that were shown with missing rounded end caps:
wxGTK-2.8.6/src/generic/dcpsg.cpp
line 1634
PsPrint( "%%EndProlog\n" );
must be
PsPrint( "%%EndProlog\n" );
PsPrint("%%BeginSetup\n");
PsPrint( "1 setlinecap\n" );
PsPrint("%%EndSetup\n");
patch for Arcs drawings
NOT NEEDED for wxWidgets 2.7.1 and later, needed for versions prior to 2.7.1)
wxGTK-2.x.y/src/gtk/dcclient.cpp
in function WindowDC::DoDrawArc
line 572 for wxWidgets 2.7.0-1:
if (m_pen.GetStyle() != wxTRANSPARENT)
{
gdk_draw_arc( m_window, m_penGC, FALSE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 );
gdk_draw_line( m_window, m_penGC, xx1, yy1, xxc, yyc );
gdk_draw_line( m_window, m_penGC, xxc, yyc, xx2, yy2 );
}
must be
if (m_pen.GetStyle() != wxTRANSPARENT)
{
gdk_draw_arc( m_window, m_penGC, FALSE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 );
if (m_brush.GetStyle() != wxTRANSPARENT)
{
gdk_draw_line( m_window, m_penGC, xx1, yy1, xxc, yyc );
gdk_draw_line( m_window, m_penGC, xxc, yyc, xx2, yy2 );
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment