Loading CMakeLists.txt +54 −8 Original line number Original line Diff line number Diff line Loading @@ -40,6 +40,10 @@ option( KICAD_SCRIPTING_WXPYTHON "set this option ON to build wxpython implementation for wx interface building in python and py.shell" "set this option ON to build wxpython implementation for wx interface building in python and py.shell" ) ) option( KICAD_BUILD_STATIC "Builds Kicad and all libraries static (except wx-widgets)" ) # when option KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES is enabled: # when option KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES is enabled: # PYTHON_EXECUTABLE can be defined when invoking cmake # PYTHON_EXECUTABLE can be defined when invoking cmake # ( use -DPYTHON_EXECUTABLE=<python path>/python.exe or python2 ) # ( use -DPYTHON_EXECUTABLE=<python path>/python.exe or python2 ) Loading Loading @@ -75,10 +79,10 @@ mark_as_advanced( KICAD_USER_CONFIG_DIR ) #================================================ #================================================ # Set flags for GCC. # Set flags for GCC, or treat llvm as GCC #================================================ #================================================ if( CMAKE_COMPILER_IS_GNUCXX ) if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpversion execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_VARIABLE GCC_VERSION Loading Loading @@ -110,6 +114,14 @@ if( CMAKE_COMPILER_IS_GNUCXX ) set( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG" ) set( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG" ) set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG" ) set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG" ) if( GXX_HAS_VISIBILITY_FLAG AND NOT APPLE ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden" ) endif() if( GXX_HAS_VISIBILITY_INLINES_FLAG AND NOT APPLE ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden" ) endif() if( MINGW ) if( MINGW ) set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" ) set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" ) Loading Loading @@ -157,7 +169,12 @@ if( CMAKE_COMPILER_IS_GNUCXX ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs" ) endif() endif() endif( CMAKE_COMPILER_IS_GNUCXX ) if( APPLE ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__ASSERTMACROS__" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__ASSERTMACROS__" ) endif() endif( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) if( KICAD_KEEPCASE ) if( KICAD_KEEPCASE ) add_definitions( -DKICAD_KEEPCASE ) add_definitions( -DKICAD_KEEPCASE ) Loading Loading @@ -242,6 +259,19 @@ include( Functions ) include( ExternalProject ) include( ExternalProject ) if ( APPLE ) set( KICAD_BUILD_STATIC ON) if( NOT CMAKE_CXX_COMPILER ) EXEC_PROGRAM( wx-config ARGS --cc OUTPUT_VARIABLE CMAKE_C_COMPILER ) endif( NOT CMAKE_CXX_COMPILER ) if( NOT CMAKE_CXX_COMPILER ) EXEC_PROGRAM( wx-config ARGS --cxx OUTPUT_VARIABLE CMAKE_CXX_COMPILER ) endif( NOT CMAKE_CXX_COMPILER ) endif( APPLE ) #================================================ #================================================ # Find libraries that are needed to build KiCad. # Find libraries that are needed to build KiCad. #================================================ #================================================ Loading @@ -256,6 +286,23 @@ add_definitions(-DWX_COMPATIBILITY) find_package( OpenGL QUIET ) find_package( OpenGL QUIET ) check_find_package_result( OPENGL_FOUND "OpenGL" ) check_find_package_result( OPENGL_FOUND "OpenGL" ) if ( KICAD_BUILD_STATIC ) #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so;.dylib;.dll") include( download_pkgconfig ) set( PKG_CONFIG_EXECUTABLE "${PKGCONFIG_ROOT}/bin/pkg-config") include( download_glew ) set( GLEW_GLEW_LIBRARY "${GLEW_ROOT}/lib/libGLEW.a") set( GLEW_INCLUDE_DIR "${GLEW_ROOT}/include") include( download_pixman ) set( PIXMAN_LIBRARY "${PIXMAN_ROOT}/lib/libpixman-1.a") include( download_libpng ) include( download_cairo ) set( CAIRO_INCLUDE_DIR "${CAIRO_ROOT}/include/cairo") set( CAIRO_LIBRARY "${CAIRO_ROOT}/lib/libcairo.a") endif( KICAD_BUILD_STATIC ) ##################### ##################### # Find GLEW library # # Find GLEW library # ##################### ##################### Loading @@ -272,7 +319,6 @@ check_find_package_result(CAIRO_FOUND "Cairo") ################################################# ################################################# include( download_boost ) include( download_boost ) ########################## ########################## # Find wxWidgets library # # Find wxWidgets library # ########################## ########################## Loading Loading @@ -484,7 +530,7 @@ if( UNIX ) set( UNIX_MIME_DIR resources/linux/mime ) set( UNIX_MIME_DIR resources/linux/mime ) set( UNIX_MIMELNK_FILES ${UNIX_MIME_DIR}/mimelnk ) set( UNIX_MIMELNK_FILES ${UNIX_MIME_DIR}/mimelnk ) set( UNIX_MIME_FILES ${UNIX_MIME_DIR}/mime ) set( UNIX_MIME_FILES ${UNIX_MIME_DIR}/mime ) set( UNIX_ICONS_FILES ${UNIX_MIME_DIR}/icons ) set( UNIX_ICON_FILES ${UNIX_MIME_DIR}/icons ) set( UNIX_APPLICATIONS_FILES ${UNIX_MIME_DIR}/applications ) set( UNIX_APPLICATIONS_FILES ${UNIX_MIME_DIR}/applications ) # Install Mimelnk directory # Install Mimelnk directory Loading @@ -494,7 +540,7 @@ if( UNIX ) ) ) # Install Mime directory # Install Mime directory install( DIRECTORY ${UNIX_ICONS_FILES} install( DIRECTORY ${UNIX_ICON_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/share DESTINATION ${CMAKE_INSTALL_PREFIX}/share COMPONENT resources COMPONENT resources ) ) Loading CMakeModules/CreateBzrVersionHeader.cmake +8 −1 Original line number Original line Diff line number Diff line Loading @@ -30,8 +30,15 @@ macro( create_bzr_version_header ) set( _Bazaar_SAVED_LC_ALL "$ENV{LC_ALL}" ) set( _Bazaar_SAVED_LC_ALL "$ENV{LC_ALL}" ) set( ENV{LC_ALL} C ) set( ENV{LC_ALL} C ) # Get the tree revison execute_process( COMMAND execute_process( COMMAND ${Bazaar_EXECUTABLE} log -r-1 ${PROJECT_SOURCE_DIR} ${Bazaar_EXECUTABLE} revno --tree ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE _bazaar_TREE_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) # Get more info about that revision execute_process( COMMAND ${Bazaar_EXECUTABLE} log -r${_bazaar_TREE_DATE} ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE _bazaar_LAST_CHANGE_LOG OUTPUT_VARIABLE _bazaar_LAST_CHANGE_LOG ERROR_VARIABLE _bazaar_log_error ERROR_VARIABLE _bazaar_log_error RESULT_VARIABLE _bazaar_log_result RESULT_VARIABLE _bazaar_log_result Loading CMakeModules/PerformFeatureChecks.cmake +33 −28 Original line number Original line Diff line number Diff line Loading @@ -45,6 +45,10 @@ macro(perform_feature_checks) include( CheckIncludeFileCXX ) include( CheckIncludeFileCXX ) include( CheckCXXSymbolExists ) include( CheckCXXSymbolExists ) include( CheckCXXSourceCompiles ) include( CheckCXXSourceCompiles ) include( CheckCXXCompilerFlag ) check_cxx_compiler_flag( -fvisibility=hidden GXX_HAS_VISIBILITY_FLAG ) check_cxx_compiler_flag( -fvisibility-inlines-hidden GXX_HAS_VISIBILITY_INLINES_FLAG ) check_include_file( "malloc.h" HAVE_MALLOC_H ) check_include_file( "malloc.h" HAVE_MALLOC_H ) Loading Loading @@ -107,6 +111,7 @@ macro(perform_feature_checks) # Generate config.h. # Generate config.h. configure_file( ${PROJECT_SOURCE_DIR}/CMakeModules/config.h.cmake configure_file( ${PROJECT_SOURCE_DIR}/CMakeModules/config.h.cmake ${CMAKE_BINARY_DIR}/config.h) ${CMAKE_BINARY_DIR}/config.h ) endmacro( perform_feature_checks ) endmacro( perform_feature_checks ) CMakeModules/download_boost.cmake +97 −11 Original line number Original line Diff line number Diff line Loading @@ -40,8 +40,10 @@ set( BOOST_ROOT "${PROJECT_SOURCE_DIR}/boost_root" ) # Space separated list which indicates the subset of boost libraries to compile. # Space separated list which indicates the subset of boost libraries to compile. # Chosen libraries are based on AVHTTP requirements, and possibly # Chosen libraries are based on AVHTTP requirements, and possibly # unit_test_framework for its own worth. # unit_test_framework for its own worth. # tool_manager.cpp -> coroutine -> context (_jump_fcontext) (on OSX) set( BOOST_LIBS_BUILT set( BOOST_LIBS_BUILT #context context #coroutine #coroutine date_time date_time #exception #exception Loading @@ -55,7 +57,6 @@ set( BOOST_LIBS_BUILT thread thread #unit_test_framework #unit_test_framework ) ) #-----</configure>--------------------------------------------------------------- #-----</configure>--------------------------------------------------------------- find_package( BZip2 REQUIRED ) find_package( BZip2 REQUIRED ) Loading Loading @@ -88,6 +89,16 @@ endfunction() string( REPLACE "unit_test_framework" "test" boost_libs_list "${BOOST_LIBS_BUILT}" ) string( REPLACE "unit_test_framework" "test" boost_libs_list "${BOOST_LIBS_BUILT}" ) #message( STATUS "REPLACE libs_csv:${boost_libs_list}" ) #message( STATUS "REPLACE libs_csv:${boost_libs_list}" ) # Default Toolset set( BOOST_TOOLSET "toolset=gcc" ) if( KICAD_BUILD_STATIC ) set( BOOST_LINKTYPE "link=static" ) else() unset( BOOST_LINKTYPE ) endif() if( MINGW ) if( MINGW ) if( MSYS ) if( MSYS ) # The Boost system does not build properly on MSYS using bootstrap.sh. Running # The Boost system does not build properly on MSYS using bootstrap.sh. Running Loading @@ -101,18 +112,62 @@ if( MINGW ) foreach( lib ${boost_libs_list} ) foreach( lib ${boost_libs_list} ) set( b2_libs ${b2_libs} --with-${lib} ) set( b2_libs ${b2_libs} --with-${lib} ) endforeach() endforeach() unset( PIC_STUFF ) unset( BOOST_CFLAGS ) else() else() string( REGEX REPLACE "\\;" "," libs_csv "${boost_libs_list}" ) string( REGEX REPLACE "\\;" "," libs_csv "${boost_libs_list}" ) #message( STATUS "libs_csv:${libs_csv}" ) #message( STATUS "libs_csv:${libs_csv}" ) set( bootstrap ./bootstrap.sh --with-libraries=${libs_csv} ) set( bootstrap ./bootstrap.sh --with-libraries=${libs_csv} ) # pass to *both* C and C++ compilers # pass to *both* C and C++ compilers set( PIC_STUFF "cflags=${PIC_FLAG}" ) set( BOOST_CFLAGS "cflags=${PIC_FLAG}" ) set( BOOST_INCLUDE "${BOOST_ROOT}/include" ) set( BOOST_INCLUDE "${BOOST_ROOT}/include" ) unset( b2_libs ) unset( b2_libs ) endif() endif() if( APPLE ) # I set this to being compatible with wxWidgets # wxWidgets still using libstdc++ (gcc), meanwhile OSX # has switched to libc++ (llvm) by default set( BOOST_CXXFLAGS "cxxflags=-mmacosx-version-min=10.5 -fno-common" ) set( BOOST_LINKFLAGS "linkflags=-mmacosx-version-min=10.5 -fno-common" ) set( BOOST_TOOLSET "toolset=darwin" ) if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set(BOOST_CXXFLAGS "${BOOST_CXXFLAGS} -fno-lto" ) set(BOOST_LINKFLAGS "${BOOST_LINKFLAGS} -fno-lto" ) endif() if( CMAKE_OSX_ARCHITECTURES ) if( (CMAKE_OSX_ARCHITECTURES MATCHES "386" OR CMAKE_OSX_ARCHITECTURES MATCHES "ppc ") AND (CMAKE_OSX_ARCHITECTURES MATCHES "64")) message( "-- BOOST found 32/64 Address Model" ) set( BOOST_ADDRESSMODEL "address-model=32_64" ) endif() if( (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "386") AND (CMAKE_OSX_ARCHITECTURES MATCHES "ppc")) message("-- BOOST found ppc/x86 Architecture") set(BOOST_ARCHITECTURE "architecture=combined") elseif( (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "386") ) message("-- BOOST found x86 Architecture") set(BOOST_ARCHITECTURE "architecture=x86") elseif( (CMAKE_OSX_ARCHITECTURES MATCHES "ppc64" OR CMAKE_OSX_ARCHITECTURES MATCHES "ppc") ) message("-- BOOST found ppc Architecture") set(BOOST_ARCHITECTURE "architecture=ppc") endif() set( BOOST_CFLAGS "${BOOST_CFLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}" ) set( BOOST_CXXFLAGS "${BOOST_CXXFLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}" ) set( BOOST_LINKFLAGS "${BOOST_LINKFLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}" ) endif() endif() ExternalProject_Add( boost ExternalProject_Add( boost PREFIX "${PREFIX}" PREFIX "${PREFIX}" DOWNLOAD_DIR "${DOWNLOAD_DIR}" DOWNLOAD_DIR "${DOWNLOAD_DIR}" Loading @@ -125,10 +180,37 @@ ExternalProject_Add( boost # fails when applying a patch to the branch twice and doesn't have a switch # fails when applying a patch to the branch twice and doesn't have a switch # to ignore previously applied patches # to ignore previously applied patches PATCH_COMMAND bzr revert PATCH_COMMAND bzr revert # PATCH_COMMAND continuation (any *_COMMAND here can be continued with COMMAND): # bzr revert is insufficient to remove "added" files: COMMAND bzr clean-tree -q --force COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_minkowski.patch" COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_minkowski.patch" COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_cstdint.patch" COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_cstdint.patch" COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_macosx_x86.patch" #https://svn.boost.org/trac/boost/ticket/8266 # tell bzr about "added" files by last patch: COMMAND bzr add libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_macosx_x86_build.patch" #https://svn.boost.org/trac/boost/ticket/8266 COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_macosx_older_openssl.patch" #https://svn.boost.org/trac/boost/ticket/9273 COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_mingw.patch" #https://svn.boost.org/trac/boost/ticket/7262 # tell bzr about "added" files by last patch: COMMAND bzr add libs/context/src/asm/make_i386_ms_pe_gas.S COMMAND bzr add libs/context/src/asm/jump_i386_ms_pe_gas.S COMMAND bzr add libs/context/src/asm/make_x86_64_ms_pe_gas.S COMMAND bzr add libs/context/src/asm/jump_x86_64_ms_pe_gas.S COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/patch_macosx_context_ppc_v2.patch" #https://svn.boost.org/trac/boost/ticket/8266 COMMAND bzr add libs/context/build/Jamfile.v2 COMMAND bzr add libs/context/build/architecture.jam COMMAND bzr add libs/context/src/asm/jump_combined_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/jump_ppc32_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/jump_ppc64_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/make_combined_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/make_ppc32_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/make_ppc64_sysv_macho_gas.S # [Mis-]use this step to erase all the boost headers and libraries before # [Mis-]use this step to erase all the boost headers and libraries before # replacing them below. # replacing them below. UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${BOOST_ROOT}" UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${BOOST_ROOT}" Loading @@ -139,10 +221,14 @@ ExternalProject_Add( boost BUILD_COMMAND ./b2 BUILD_COMMAND ./b2 variant=release variant=release threading=multi threading=multi toolset=gcc ${BOOST_CFLAGS} ${PIC_STUFF} ${BOOST_TOOLSET} ${BOOST_CXXFLAGS} ${BOOST_LINKFLAGS} ${BOOST_ADDRESSMODEL} ${BOOST_ARCHITECTURE} ${b2_libs} ${b2_libs} #link=static ${BOOST_LINKTYPE} --prefix=<INSTALL_DIR> --prefix=<INSTALL_DIR> install install Loading Loading @@ -175,8 +261,8 @@ endif() set( boost_libs "" ) set( boost_libs "" ) set_boost_lib_names( "${BOOST_LIBS_BUILT}" boost_libs ) set_boost_lib_names( "${BOOST_LIBS_BUILT}" boost_libs ) set( Boost_LIBRARIES ${boost_libs} CACHE FILEPATH "Boost libraries directory" ) set( Boost_LIBRARIES ${boost_libs} ) set( Boost_INCLUDE_DIR "${BOOST_INCLUDE}" CACHE FILEPATH "Boost include directory" ) set( Boost_INCLUDE_DIR "${BOOST_INCLUDE}" ) mark_as_advanced( Boost_LIBRARIES Boost_INCLUDE_DIR ) mark_as_advanced( Boost_LIBRARIES Boost_INCLUDE_DIR ) Loading @@ -194,7 +280,7 @@ ExternalProject_Add_Step( boost bzr_commit_boost ExternalProject_Add_Step( boost bzr_add_boost ExternalProject_Add_Step( boost bzr_add_boost # add only the headers to the scratch repo, repo = "../.bzr" from ${headers_src} # add only the headers to the scratch repo, repo = "../.bzr" from ${headers_src} COMMAND bzr add -q ${headers_src} COMMAND bzr add -q ${PREFIX}/src/boost COMMENT "adding pristine boost files to 'boost scratch repo'" COMMENT "adding pristine boost files to 'boost scratch repo'" DEPENDERS bzr_commit_boost DEPENDERS bzr_commit_boost ) ) Loading CMakeModules/download_cairo.cmake 0 → 100644 +91 −0 Original line number Original line Diff line number Diff line # This program source code file is part of KICAD, a free EDA CAD application. # # Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> # Copyright (C) 2013 Kicad Developers, see AUTHORS.txt for contributors. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, you may find one here: # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html # or you may search the http://www.gnu.org website for the version 2 license, # or you may write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # Downloads and builds CAIRO #-----<configure>---------------------------------------------------------------- set( CAIRO_RELEASE 1.12.0 ) set( CAIRO_MD5 e6c85575ba7094f88b637bdfd835a751 ) # re-calc this on every RELEASE change # The boost headers [and static libs if built] go here, at the top of KiCad # source tree in boost_root. set( CAIRO_ROOT "${PROJECT_SOURCE_DIR}/cairo_root" ) #-----</configure>--------------------------------------------------------------- find_package( BZip2 REQUIRED ) set( PREFIX ${DOWNLOAD_DIR}/cairo ) if (APPLE) if( CMAKE_OSX_ARCHITECTURES ) set( CAIRO_CFLAGS "CFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES}" ) set( CAIRO_LDFLAGS "LDFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -framework CoreServices -framework Cocoa" ) set( CAIRO_OPTS --enable-ft=no ) endif( CMAKE_OSX_ARCHITECTURES ) if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set(CAIRO_CFLAGS "${CAIRO_CFLAGS} -fno-lto" ) endif() if( CMAKE_OSX_SYSROOT ) #set( CAIRO_CFLAGS "${CAIRO_CFLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") set( CAIRO_LDFLAGS "${CAIRO_LDFLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") endif( CMAKE_OSX_SYSROOT) endif(APPLE) # <SOURCE_DIR> = ${PREFIX}/src/glew # There is a Bazaar 'boost scratch repo' in <SOURCE_DIR>/boost and after committing pristine # download, the patch is applied. This lets you regenerate a new patch at any time # easily, simply by editing the working tree in <SOURCE_DIR> and doing "bzr diff" in there. ExternalProject_Add( cairo PREFIX "${PREFIX}" DOWNLOAD_DIR "${DOWNLOAD_DIR}" URL http://cairographics.org/releases/cairo-${CAIRO_RELEASE}.tar.gz URL_MD5 ${CAIRO_MD5} STAMP_DIR "${PREFIX}" DEPENDS pkgconfig pixman libpng BUILD_IN_SOURCE 1 #SOURCE_DIR "${PREFIX}" #PATCH_COMMAND "" CONFIGURE_COMMAND ./configure --prefix=${CAIRO_ROOT} --enable-static --disable-shared PKG_CONFIG=${PROJECT_SOURCE_DIR}/pkgconfig_root/bin/pkg-config PKG_CONFIG_PATH=${PROJECT_SOURCE_DIR}/pixman_root/lib/pkgconfig:${PROJECT_SOURCE_DIR}/libpng_root/lib/pkgconfig --enable-png=yes --enable-svg=yes --disable-silent-rules --disable-dependency-tracking ${CAIRO_CFLAGS} ${CAIRO_LDFLAGS} ${CAIRO_OPTS} #BINARY_DIR "${PREFIX}" BUILD_COMMAND make INSTALL_DIR "${CAIRO_ROOT}" INSTALL_COMMAND make install ) Loading
CMakeLists.txt +54 −8 Original line number Original line Diff line number Diff line Loading @@ -40,6 +40,10 @@ option( KICAD_SCRIPTING_WXPYTHON "set this option ON to build wxpython implementation for wx interface building in python and py.shell" "set this option ON to build wxpython implementation for wx interface building in python and py.shell" ) ) option( KICAD_BUILD_STATIC "Builds Kicad and all libraries static (except wx-widgets)" ) # when option KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES is enabled: # when option KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES is enabled: # PYTHON_EXECUTABLE can be defined when invoking cmake # PYTHON_EXECUTABLE can be defined when invoking cmake # ( use -DPYTHON_EXECUTABLE=<python path>/python.exe or python2 ) # ( use -DPYTHON_EXECUTABLE=<python path>/python.exe or python2 ) Loading Loading @@ -75,10 +79,10 @@ mark_as_advanced( KICAD_USER_CONFIG_DIR ) #================================================ #================================================ # Set flags for GCC. # Set flags for GCC, or treat llvm as GCC #================================================ #================================================ if( CMAKE_COMPILER_IS_GNUCXX ) if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpversion execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_VARIABLE GCC_VERSION Loading Loading @@ -110,6 +114,14 @@ if( CMAKE_COMPILER_IS_GNUCXX ) set( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG" ) set( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG" ) set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG" ) set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG" ) if( GXX_HAS_VISIBILITY_FLAG AND NOT APPLE ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden" ) endif() if( GXX_HAS_VISIBILITY_INLINES_FLAG AND NOT APPLE ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden" ) endif() if( MINGW ) if( MINGW ) set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" ) set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" ) Loading Loading @@ -157,7 +169,12 @@ if( CMAKE_COMPILER_IS_GNUCXX ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs" ) endif() endif() endif( CMAKE_COMPILER_IS_GNUCXX ) if( APPLE ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__ASSERTMACROS__" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__ASSERTMACROS__" ) endif() endif( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) if( KICAD_KEEPCASE ) if( KICAD_KEEPCASE ) add_definitions( -DKICAD_KEEPCASE ) add_definitions( -DKICAD_KEEPCASE ) Loading Loading @@ -242,6 +259,19 @@ include( Functions ) include( ExternalProject ) include( ExternalProject ) if ( APPLE ) set( KICAD_BUILD_STATIC ON) if( NOT CMAKE_CXX_COMPILER ) EXEC_PROGRAM( wx-config ARGS --cc OUTPUT_VARIABLE CMAKE_C_COMPILER ) endif( NOT CMAKE_CXX_COMPILER ) if( NOT CMAKE_CXX_COMPILER ) EXEC_PROGRAM( wx-config ARGS --cxx OUTPUT_VARIABLE CMAKE_CXX_COMPILER ) endif( NOT CMAKE_CXX_COMPILER ) endif( APPLE ) #================================================ #================================================ # Find libraries that are needed to build KiCad. # Find libraries that are needed to build KiCad. #================================================ #================================================ Loading @@ -256,6 +286,23 @@ add_definitions(-DWX_COMPATIBILITY) find_package( OpenGL QUIET ) find_package( OpenGL QUIET ) check_find_package_result( OPENGL_FOUND "OpenGL" ) check_find_package_result( OPENGL_FOUND "OpenGL" ) if ( KICAD_BUILD_STATIC ) #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so;.dylib;.dll") include( download_pkgconfig ) set( PKG_CONFIG_EXECUTABLE "${PKGCONFIG_ROOT}/bin/pkg-config") include( download_glew ) set( GLEW_GLEW_LIBRARY "${GLEW_ROOT}/lib/libGLEW.a") set( GLEW_INCLUDE_DIR "${GLEW_ROOT}/include") include( download_pixman ) set( PIXMAN_LIBRARY "${PIXMAN_ROOT}/lib/libpixman-1.a") include( download_libpng ) include( download_cairo ) set( CAIRO_INCLUDE_DIR "${CAIRO_ROOT}/include/cairo") set( CAIRO_LIBRARY "${CAIRO_ROOT}/lib/libcairo.a") endif( KICAD_BUILD_STATIC ) ##################### ##################### # Find GLEW library # # Find GLEW library # ##################### ##################### Loading @@ -272,7 +319,6 @@ check_find_package_result(CAIRO_FOUND "Cairo") ################################################# ################################################# include( download_boost ) include( download_boost ) ########################## ########################## # Find wxWidgets library # # Find wxWidgets library # ########################## ########################## Loading Loading @@ -484,7 +530,7 @@ if( UNIX ) set( UNIX_MIME_DIR resources/linux/mime ) set( UNIX_MIME_DIR resources/linux/mime ) set( UNIX_MIMELNK_FILES ${UNIX_MIME_DIR}/mimelnk ) set( UNIX_MIMELNK_FILES ${UNIX_MIME_DIR}/mimelnk ) set( UNIX_MIME_FILES ${UNIX_MIME_DIR}/mime ) set( UNIX_MIME_FILES ${UNIX_MIME_DIR}/mime ) set( UNIX_ICONS_FILES ${UNIX_MIME_DIR}/icons ) set( UNIX_ICON_FILES ${UNIX_MIME_DIR}/icons ) set( UNIX_APPLICATIONS_FILES ${UNIX_MIME_DIR}/applications ) set( UNIX_APPLICATIONS_FILES ${UNIX_MIME_DIR}/applications ) # Install Mimelnk directory # Install Mimelnk directory Loading @@ -494,7 +540,7 @@ if( UNIX ) ) ) # Install Mime directory # Install Mime directory install( DIRECTORY ${UNIX_ICONS_FILES} install( DIRECTORY ${UNIX_ICON_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/share DESTINATION ${CMAKE_INSTALL_PREFIX}/share COMPONENT resources COMPONENT resources ) ) Loading
CMakeModules/CreateBzrVersionHeader.cmake +8 −1 Original line number Original line Diff line number Diff line Loading @@ -30,8 +30,15 @@ macro( create_bzr_version_header ) set( _Bazaar_SAVED_LC_ALL "$ENV{LC_ALL}" ) set( _Bazaar_SAVED_LC_ALL "$ENV{LC_ALL}" ) set( ENV{LC_ALL} C ) set( ENV{LC_ALL} C ) # Get the tree revison execute_process( COMMAND execute_process( COMMAND ${Bazaar_EXECUTABLE} log -r-1 ${PROJECT_SOURCE_DIR} ${Bazaar_EXECUTABLE} revno --tree ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE _bazaar_TREE_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) # Get more info about that revision execute_process( COMMAND ${Bazaar_EXECUTABLE} log -r${_bazaar_TREE_DATE} ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE _bazaar_LAST_CHANGE_LOG OUTPUT_VARIABLE _bazaar_LAST_CHANGE_LOG ERROR_VARIABLE _bazaar_log_error ERROR_VARIABLE _bazaar_log_error RESULT_VARIABLE _bazaar_log_result RESULT_VARIABLE _bazaar_log_result Loading
CMakeModules/PerformFeatureChecks.cmake +33 −28 Original line number Original line Diff line number Diff line Loading @@ -45,6 +45,10 @@ macro(perform_feature_checks) include( CheckIncludeFileCXX ) include( CheckIncludeFileCXX ) include( CheckCXXSymbolExists ) include( CheckCXXSymbolExists ) include( CheckCXXSourceCompiles ) include( CheckCXXSourceCompiles ) include( CheckCXXCompilerFlag ) check_cxx_compiler_flag( -fvisibility=hidden GXX_HAS_VISIBILITY_FLAG ) check_cxx_compiler_flag( -fvisibility-inlines-hidden GXX_HAS_VISIBILITY_INLINES_FLAG ) check_include_file( "malloc.h" HAVE_MALLOC_H ) check_include_file( "malloc.h" HAVE_MALLOC_H ) Loading Loading @@ -107,6 +111,7 @@ macro(perform_feature_checks) # Generate config.h. # Generate config.h. configure_file( ${PROJECT_SOURCE_DIR}/CMakeModules/config.h.cmake configure_file( ${PROJECT_SOURCE_DIR}/CMakeModules/config.h.cmake ${CMAKE_BINARY_DIR}/config.h) ${CMAKE_BINARY_DIR}/config.h ) endmacro( perform_feature_checks ) endmacro( perform_feature_checks )
CMakeModules/download_boost.cmake +97 −11 Original line number Original line Diff line number Diff line Loading @@ -40,8 +40,10 @@ set( BOOST_ROOT "${PROJECT_SOURCE_DIR}/boost_root" ) # Space separated list which indicates the subset of boost libraries to compile. # Space separated list which indicates the subset of boost libraries to compile. # Chosen libraries are based on AVHTTP requirements, and possibly # Chosen libraries are based on AVHTTP requirements, and possibly # unit_test_framework for its own worth. # unit_test_framework for its own worth. # tool_manager.cpp -> coroutine -> context (_jump_fcontext) (on OSX) set( BOOST_LIBS_BUILT set( BOOST_LIBS_BUILT #context context #coroutine #coroutine date_time date_time #exception #exception Loading @@ -55,7 +57,6 @@ set( BOOST_LIBS_BUILT thread thread #unit_test_framework #unit_test_framework ) ) #-----</configure>--------------------------------------------------------------- #-----</configure>--------------------------------------------------------------- find_package( BZip2 REQUIRED ) find_package( BZip2 REQUIRED ) Loading Loading @@ -88,6 +89,16 @@ endfunction() string( REPLACE "unit_test_framework" "test" boost_libs_list "${BOOST_LIBS_BUILT}" ) string( REPLACE "unit_test_framework" "test" boost_libs_list "${BOOST_LIBS_BUILT}" ) #message( STATUS "REPLACE libs_csv:${boost_libs_list}" ) #message( STATUS "REPLACE libs_csv:${boost_libs_list}" ) # Default Toolset set( BOOST_TOOLSET "toolset=gcc" ) if( KICAD_BUILD_STATIC ) set( BOOST_LINKTYPE "link=static" ) else() unset( BOOST_LINKTYPE ) endif() if( MINGW ) if( MINGW ) if( MSYS ) if( MSYS ) # The Boost system does not build properly on MSYS using bootstrap.sh. Running # The Boost system does not build properly on MSYS using bootstrap.sh. Running Loading @@ -101,18 +112,62 @@ if( MINGW ) foreach( lib ${boost_libs_list} ) foreach( lib ${boost_libs_list} ) set( b2_libs ${b2_libs} --with-${lib} ) set( b2_libs ${b2_libs} --with-${lib} ) endforeach() endforeach() unset( PIC_STUFF ) unset( BOOST_CFLAGS ) else() else() string( REGEX REPLACE "\\;" "," libs_csv "${boost_libs_list}" ) string( REGEX REPLACE "\\;" "," libs_csv "${boost_libs_list}" ) #message( STATUS "libs_csv:${libs_csv}" ) #message( STATUS "libs_csv:${libs_csv}" ) set( bootstrap ./bootstrap.sh --with-libraries=${libs_csv} ) set( bootstrap ./bootstrap.sh --with-libraries=${libs_csv} ) # pass to *both* C and C++ compilers # pass to *both* C and C++ compilers set( PIC_STUFF "cflags=${PIC_FLAG}" ) set( BOOST_CFLAGS "cflags=${PIC_FLAG}" ) set( BOOST_INCLUDE "${BOOST_ROOT}/include" ) set( BOOST_INCLUDE "${BOOST_ROOT}/include" ) unset( b2_libs ) unset( b2_libs ) endif() endif() if( APPLE ) # I set this to being compatible with wxWidgets # wxWidgets still using libstdc++ (gcc), meanwhile OSX # has switched to libc++ (llvm) by default set( BOOST_CXXFLAGS "cxxflags=-mmacosx-version-min=10.5 -fno-common" ) set( BOOST_LINKFLAGS "linkflags=-mmacosx-version-min=10.5 -fno-common" ) set( BOOST_TOOLSET "toolset=darwin" ) if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set(BOOST_CXXFLAGS "${BOOST_CXXFLAGS} -fno-lto" ) set(BOOST_LINKFLAGS "${BOOST_LINKFLAGS} -fno-lto" ) endif() if( CMAKE_OSX_ARCHITECTURES ) if( (CMAKE_OSX_ARCHITECTURES MATCHES "386" OR CMAKE_OSX_ARCHITECTURES MATCHES "ppc ") AND (CMAKE_OSX_ARCHITECTURES MATCHES "64")) message( "-- BOOST found 32/64 Address Model" ) set( BOOST_ADDRESSMODEL "address-model=32_64" ) endif() if( (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "386") AND (CMAKE_OSX_ARCHITECTURES MATCHES "ppc")) message("-- BOOST found ppc/x86 Architecture") set(BOOST_ARCHITECTURE "architecture=combined") elseif( (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "386") ) message("-- BOOST found x86 Architecture") set(BOOST_ARCHITECTURE "architecture=x86") elseif( (CMAKE_OSX_ARCHITECTURES MATCHES "ppc64" OR CMAKE_OSX_ARCHITECTURES MATCHES "ppc") ) message("-- BOOST found ppc Architecture") set(BOOST_ARCHITECTURE "architecture=ppc") endif() set( BOOST_CFLAGS "${BOOST_CFLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}" ) set( BOOST_CXXFLAGS "${BOOST_CXXFLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}" ) set( BOOST_LINKFLAGS "${BOOST_LINKFLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}" ) endif() endif() ExternalProject_Add( boost ExternalProject_Add( boost PREFIX "${PREFIX}" PREFIX "${PREFIX}" DOWNLOAD_DIR "${DOWNLOAD_DIR}" DOWNLOAD_DIR "${DOWNLOAD_DIR}" Loading @@ -125,10 +180,37 @@ ExternalProject_Add( boost # fails when applying a patch to the branch twice and doesn't have a switch # fails when applying a patch to the branch twice and doesn't have a switch # to ignore previously applied patches # to ignore previously applied patches PATCH_COMMAND bzr revert PATCH_COMMAND bzr revert # PATCH_COMMAND continuation (any *_COMMAND here can be continued with COMMAND): # bzr revert is insufficient to remove "added" files: COMMAND bzr clean-tree -q --force COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_minkowski.patch" COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_minkowski.patch" COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_cstdint.patch" COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_cstdint.patch" COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_macosx_x86.patch" #https://svn.boost.org/trac/boost/ticket/8266 # tell bzr about "added" files by last patch: COMMAND bzr add libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_macosx_x86_build.patch" #https://svn.boost.org/trac/boost/ticket/8266 COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_macosx_older_openssl.patch" #https://svn.boost.org/trac/boost/ticket/9273 COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/boost_mingw.patch" #https://svn.boost.org/trac/boost/ticket/7262 # tell bzr about "added" files by last patch: COMMAND bzr add libs/context/src/asm/make_i386_ms_pe_gas.S COMMAND bzr add libs/context/src/asm/jump_i386_ms_pe_gas.S COMMAND bzr add libs/context/src/asm/make_x86_64_ms_pe_gas.S COMMAND bzr add libs/context/src/asm/jump_x86_64_ms_pe_gas.S COMMAND bzr patch -p0 "${PROJECT_SOURCE_DIR}/patches/patch_macosx_context_ppc_v2.patch" #https://svn.boost.org/trac/boost/ticket/8266 COMMAND bzr add libs/context/build/Jamfile.v2 COMMAND bzr add libs/context/build/architecture.jam COMMAND bzr add libs/context/src/asm/jump_combined_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/jump_ppc32_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/jump_ppc64_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/make_combined_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/make_ppc32_sysv_macho_gas.S COMMAND bzr add libs/context/src/asm/make_ppc64_sysv_macho_gas.S # [Mis-]use this step to erase all the boost headers and libraries before # [Mis-]use this step to erase all the boost headers and libraries before # replacing them below. # replacing them below. UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${BOOST_ROOT}" UPDATE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${BOOST_ROOT}" Loading @@ -139,10 +221,14 @@ ExternalProject_Add( boost BUILD_COMMAND ./b2 BUILD_COMMAND ./b2 variant=release variant=release threading=multi threading=multi toolset=gcc ${BOOST_CFLAGS} ${PIC_STUFF} ${BOOST_TOOLSET} ${BOOST_CXXFLAGS} ${BOOST_LINKFLAGS} ${BOOST_ADDRESSMODEL} ${BOOST_ARCHITECTURE} ${b2_libs} ${b2_libs} #link=static ${BOOST_LINKTYPE} --prefix=<INSTALL_DIR> --prefix=<INSTALL_DIR> install install Loading Loading @@ -175,8 +261,8 @@ endif() set( boost_libs "" ) set( boost_libs "" ) set_boost_lib_names( "${BOOST_LIBS_BUILT}" boost_libs ) set_boost_lib_names( "${BOOST_LIBS_BUILT}" boost_libs ) set( Boost_LIBRARIES ${boost_libs} CACHE FILEPATH "Boost libraries directory" ) set( Boost_LIBRARIES ${boost_libs} ) set( Boost_INCLUDE_DIR "${BOOST_INCLUDE}" CACHE FILEPATH "Boost include directory" ) set( Boost_INCLUDE_DIR "${BOOST_INCLUDE}" ) mark_as_advanced( Boost_LIBRARIES Boost_INCLUDE_DIR ) mark_as_advanced( Boost_LIBRARIES Boost_INCLUDE_DIR ) Loading @@ -194,7 +280,7 @@ ExternalProject_Add_Step( boost bzr_commit_boost ExternalProject_Add_Step( boost bzr_add_boost ExternalProject_Add_Step( boost bzr_add_boost # add only the headers to the scratch repo, repo = "../.bzr" from ${headers_src} # add only the headers to the scratch repo, repo = "../.bzr" from ${headers_src} COMMAND bzr add -q ${headers_src} COMMAND bzr add -q ${PREFIX}/src/boost COMMENT "adding pristine boost files to 'boost scratch repo'" COMMENT "adding pristine boost files to 'boost scratch repo'" DEPENDERS bzr_commit_boost DEPENDERS bzr_commit_boost ) ) Loading
CMakeModules/download_cairo.cmake 0 → 100644 +91 −0 Original line number Original line Diff line number Diff line # This program source code file is part of KICAD, a free EDA CAD application. # # Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> # Copyright (C) 2013 Kicad Developers, see AUTHORS.txt for contributors. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, you may find one here: # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html # or you may search the http://www.gnu.org website for the version 2 license, # or you may write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # Downloads and builds CAIRO #-----<configure>---------------------------------------------------------------- set( CAIRO_RELEASE 1.12.0 ) set( CAIRO_MD5 e6c85575ba7094f88b637bdfd835a751 ) # re-calc this on every RELEASE change # The boost headers [and static libs if built] go here, at the top of KiCad # source tree in boost_root. set( CAIRO_ROOT "${PROJECT_SOURCE_DIR}/cairo_root" ) #-----</configure>--------------------------------------------------------------- find_package( BZip2 REQUIRED ) set( PREFIX ${DOWNLOAD_DIR}/cairo ) if (APPLE) if( CMAKE_OSX_ARCHITECTURES ) set( CAIRO_CFLAGS "CFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES}" ) set( CAIRO_LDFLAGS "LDFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES} -framework CoreServices -framework Cocoa" ) set( CAIRO_OPTS --enable-ft=no ) endif( CMAKE_OSX_ARCHITECTURES ) if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set(CAIRO_CFLAGS "${CAIRO_CFLAGS} -fno-lto" ) endif() if( CMAKE_OSX_SYSROOT ) #set( CAIRO_CFLAGS "${CAIRO_CFLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") set( CAIRO_LDFLAGS "${CAIRO_LDFLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") endif( CMAKE_OSX_SYSROOT) endif(APPLE) # <SOURCE_DIR> = ${PREFIX}/src/glew # There is a Bazaar 'boost scratch repo' in <SOURCE_DIR>/boost and after committing pristine # download, the patch is applied. This lets you regenerate a new patch at any time # easily, simply by editing the working tree in <SOURCE_DIR> and doing "bzr diff" in there. ExternalProject_Add( cairo PREFIX "${PREFIX}" DOWNLOAD_DIR "${DOWNLOAD_DIR}" URL http://cairographics.org/releases/cairo-${CAIRO_RELEASE}.tar.gz URL_MD5 ${CAIRO_MD5} STAMP_DIR "${PREFIX}" DEPENDS pkgconfig pixman libpng BUILD_IN_SOURCE 1 #SOURCE_DIR "${PREFIX}" #PATCH_COMMAND "" CONFIGURE_COMMAND ./configure --prefix=${CAIRO_ROOT} --enable-static --disable-shared PKG_CONFIG=${PROJECT_SOURCE_DIR}/pkgconfig_root/bin/pkg-config PKG_CONFIG_PATH=${PROJECT_SOURCE_DIR}/pixman_root/lib/pkgconfig:${PROJECT_SOURCE_DIR}/libpng_root/lib/pkgconfig --enable-png=yes --enable-svg=yes --disable-silent-rules --disable-dependency-tracking ${CAIRO_CFLAGS} ${CAIRO_LDFLAGS} ${CAIRO_OPTS} #BINARY_DIR "${PREFIX}" BUILD_COMMAND make INSTALL_DIR "${CAIRO_ROOT}" INSTALL_COMMAND make install )