Commit 537d82fb authored by Maciej Suminski's avatar Maciej Suminski
Browse files

Upstream merge.

parents 3dc9f295 54bbba6c
Loading
Loading
Loading
Loading
+54 −8
Original line number Original line Diff line number Diff line
@@ -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 )
@@ -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
@@ -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" )


@@ -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 )
@@ -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.
#================================================
#================================================
@@ -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 #
#####################
#####################
@@ -272,7 +319,6 @@ check_find_package_result(CAIRO_FOUND "Cairo")
#################################################
#################################################
include( download_boost )
include( download_boost )



##########################
##########################
# Find wxWidgets library #
# Find wxWidgets library #
##########################
##########################
@@ -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
@@ -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
        )
        )
+8 −1
Original line number Original line Diff line number Diff line
@@ -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
+33 −28
Original line number Original line Diff line number Diff line
@@ -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 )


@@ -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 )
+97 −11
Original line number Original line Diff line number Diff line
@@ -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
@@ -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 )
@@ -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
@@ -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}"
@@ -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}"
@@ -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


@@ -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 )


@@ -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
    )
    )
+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