From f8215b34fb65268422c33d3a2c02e22f4e95cb9b Mon Sep 17 00:00:00 2001 From: jerryjacobs Date: Sun, 31 Jan 2010 19:49:53 +0000 Subject: [PATCH] Cleanup compiling doc, added mac-osx --- Documentation/compiling/COMPILING.txt | 172 +++++------------- .../compiling/boost_mac_osx_notes.txt | 72 -------- ...{COMPILING-Debian.txt => linux-debian.txt} | 0 ...{COMPILING-Ubuntu.txt => linux-ubuntu.txt} | 0 Documentation/compiling/mac-osx.txt | 92 ++++++++++ .../compiling/wxWidgets_patch_notes.txt | 59 ------ 6 files changed, 142 insertions(+), 253 deletions(-) delete mode 100644 Documentation/compiling/boost_mac_osx_notes.txt rename Documentation/compiling/{COMPILING-Debian.txt => linux-debian.txt} (100%) rename Documentation/compiling/{COMPILING-Ubuntu.txt => linux-ubuntu.txt} (100%) create mode 100644 Documentation/compiling/mac-osx.txt delete mode 100644 Documentation/compiling/wxWidgets_patch_notes.txt diff --git a/Documentation/compiling/COMPILING.txt b/Documentation/compiling/COMPILING.txt index 7e241abae7..13adba77ab 100644 --- a/Documentation/compiling/COMPILING.txt +++ b/Documentation/compiling/COMPILING.txt @@ -1,59 +1,41 @@ ---== How to build kicad ==-- -First Written: 19-Dec-2007 -Last Revised: 13-May-2009 +Compiling KiCad from Source +=========================== +KiCad Documentation Team +Last revised on 31-Jan-2010 by Jerry Jacobs +Introduction +------------ +This is a generic guide how to compile kicad from scratch. On windows and linux. +If you need something more distribution specific or the experimental mac-osx port +read the other documents in the Documentation/compiling folder. -Kicad needs wxWidgets, the multi platform G.U.I. +Installation of Tools +--------------------- +On windows: -Perform these steps in sequence. (Platform specific details are given in -sections below.) - - -1) If windows, then install "msys" and "mingw". -2) If linux, then install "mesa". -3) Make sure g++ and "make" are in your path. -4) Install wxWidgets [and build it if on windows]. -5) Install zlib [and build it if on windows]. -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: +Get msys and mingw here: http://mingw.org/ 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 at least the following mingw packages: make, gcc, g++, binutils, autoconf, and automake. +On linux: ------------------------------------------------------------------------------ - -2) If linux, install "mesa". Use your package manager to install the - development libaries. - - ------------------------------------------------------------------------------ - -3) Make sure g++ and "make" are in your path. +Install "mesa". Use your package manager to install the +development libaries. +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. ------------------------------------------------------------------------------ - -4) Install wxWidgets [and build it if on windows]. - +Install or Build wxWidgets +-------------------------- 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 will be. It must be where you can access it from within the msys environment, such as home/. Edit your msys/1.0/etc/fstab file if needed to provide @@ -66,17 +48,21 @@ there, and then: mkdir build-release mkdir build-debug --- release +.Release +---- cd build-release ../configure --enable-unicode --enable-monolithic --disable-shared --with-msw --with-opengl make make install +---- --- debug +.Debug +---- cd build-debug ../configure --enable-unicode --enable-monolithic --enable-debug --enable-debug_gdb --disable-shared --with-msw --with-opengl make make install +---- I think the default is to install into /usr/local/wxMSW-2.8.8. You can probably pass --prefix= 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 your path by running it from a command prompt. Linux users then go to next step. ------------------------------------------------------------------------------ - -5) Install zlib [and build it if on windows]. - +Install or Build zlib +--------------------- 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 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: If linux, use your package manager to install zlib pre-built binaries. Note (JP Charras): - Under Linux, zlib is usually installed. - 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 - wxWidgets zlib build. So, under windows kicad build should work without - zlib install. +Under Linux, zlib is usually installed. +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 +wxWidgets zlib build. So, under windows kicad build should work without +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 - - ------------------------------------------------------------------------------ - -6) Install CMAKE. +If you are using the wxWidget zlib, make sure that the wxWidgets/src/zlib directory is copied +to ${wxWidgets_ROOT_DIR}/src/zlib +Install CMake +------------- If windows, download the installation binary for windows from cmake.org. 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. @@ -139,43 +120,13 @@ or later. If only an older one is available in your package repository, build command prompt. ------------------------------------------------------------------------------ - -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. - +Obtain Sources +-------------- You can use the subversion repository or a tar file for this. See the wiki. ------------------------------------------------------------------------------ - -9) Use cmake to create the kicad makefiles. +Create Makefiles with CMake +--------------------------- If windows, go into your msys shell. Linux and windows users both then make two "out of source" build directories: cd @@ -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 -DCMAKE_INSTALL_PREFIX given on the command line. -CMake will try and find the boost header files and will often fail. If it -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 type prefix. -Example C++ code: #include and please -notice the leading /build/debug On either cmake command line shown below, you can optionally include @@ -244,10 +180,8 @@ Make the Debug binaries: make ------------------------------------------------------------------------------ - -12) Variables for fine-tuning the build process. - +Fine-tune Build Process +----------------------- These should be set from command line: CMAKE_BUILD_TYPE Release/Debug (REQUIRED) @@ -258,7 +192,6 @@ These should be set from command line: wxWidgets_USE_STATIC ON/OFF (OPTIONAL) - CMAKE_VERBOSE_MAKEFILE ON/OFF (OPTIONAL) Turns ON/OFF verbose build messages. You can also pass VERBOSE=1 to make for the same effect. @@ -269,10 +202,5 @@ These should be set from command line: KICAD_PYTHON ON/OFF - ------------------------------------------------------------------------------ - Note: that it is easy to build only a specific binary such as pcbnew alone: make pcbnew - ------------------------------------------------------------------------------ diff --git a/Documentation/compiling/boost_mac_osx_notes.txt b/Documentation/compiling/boost_mac_osx_notes.txt deleted file mode 100644 index d9f491441f..0000000000 --- a/Documentation/compiling/boost_mac_osx_notes.txt +++ /dev/null @@ -1,72 +0,0 @@ -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 diff --git a/Documentation/compiling/COMPILING-Debian.txt b/Documentation/compiling/linux-debian.txt similarity index 100% rename from Documentation/compiling/COMPILING-Debian.txt rename to Documentation/compiling/linux-debian.txt diff --git a/Documentation/compiling/COMPILING-Ubuntu.txt b/Documentation/compiling/linux-ubuntu.txt similarity index 100% rename from Documentation/compiling/COMPILING-Ubuntu.txt rename to Documentation/compiling/linux-ubuntu.txt diff --git a/Documentation/compiling/mac-osx.txt b/Documentation/compiling/mac-osx.txt new file mode 100644 index 0000000000..7c2ce612b5 --- /dev/null +++ b/Documentation/compiling/mac-osx.txt @@ -0,0 +1,92 @@ +Compiling KiCad on Apple Mac OS X +================================= + First written: 2010-01-31 +Last edited by: Jerry Jacobs + + +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 diff --git a/Documentation/compiling/wxWidgets_patch_notes.txt b/Documentation/compiling/wxWidgets_patch_notes.txt deleted file mode 100644 index d863e95a75..0000000000 --- a/Documentation/compiling/wxWidgets_patch_notes.txt +++ /dev/null @@ -1,59 +0,0 @@ ---== 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 ); - } - } -