* Fix building of Github plugin support for Windows using Mingw-w64

* Pre-built binaries for OpenSSL can be used from the LuaDist project: https://github.com/LuaDist/openssl/releases
* Building of Boost libraries fixed for Mingw-w64 for github plugin
This commit is contained in:
Brian Sidebotham 2013-10-07 20:49:44 +01:00
parent 602aa1682c
commit 7c340f6b19
3 changed files with 50 additions and 21 deletions

View File

@ -53,14 +53,7 @@ option( KICAD_SCRIPTING_WXPYTHON
option( USE_FP_LIB_TABLE "Use the new footprint library table implementation. ( default OFF)" )
# BUILD_GITHUB_PLUGIN for MINGW is pretty demanding due to download_openssl.cmake and openssl's
# use of perl to drive its configure step. You might find it works in a cross builder say on linux.
# Dick is not personally supporting Windows any more with this exotic stuff. Some other windows
# developer will have to smooth out the build issues. So enable this for MINGW without my help but
# with my best wishes.
if( NOT MINGW )
option( BUILD_GITHUB_PLUGIN "Build the GITHUB_PLUGIN for pcbnew." OFF )
endif()
option( BUILD_GITHUB_PLUGIN "Build the GITHUB_PLUGIN for pcbnew." OFF )
#Set version option (stable or testing)

View File

@ -87,21 +87,27 @@ if( BUILD_GITHUB_PLUGIN )
# It will probably be simpler to make this the only path in the future.
# (BTW "test" yields "unit_test_framework" when passed to bootstrap.{sh,bat} ).
# (BTW "test" yields "unit_test_framework" when passed to bootstrap.sh ).
#message( STATUS "BOOST_LIBS_BUILT:${BOOST_LIBS_BUILT}" )
string( REPLACE "unit_test_framework" "test" libs_csv "${BOOST_LIBS_BUILT}" )
#message( STATUS "REPLACE libs_csv:${libs_csv}" )
string( REGEX REPLACE "\\;" "," libs_csv "${libs_csv}" )
#message( STATUS "libs_csv:${libs_csv}" )
string( REPLACE "unit_test_framework" "test" boost_libs_list "${BOOST_LIBS_BUILT}" )
#message( STATUS "REPLACE libs_csv:${boost_libs_list}" )
if( MINGW )
set( bootstrap "bootstart.bat mingw" )
set( bootstrap bootstrap.bat mingw )
foreach( lib ${boost_libs_list} )
set( b2_libs ${b2_libs} --with-${lib} )
endforeach()
unset( PIC_STUFF )
else()
set( bootstrap bootstrap.sh )
string( REGEX REPLACE "\\;" "," libs_csv "${boost_libs_list}" )
#message( STATUS "libs_csv:${libs_csv}" )
set( bootstrap bootstrap.sh --with-libraries=${libs_csv} )
# pass to *both* C and C++ compilers
set( PIC_STUFF "cflags=${PIC_FLAG}" )
set( BOOST_INCLUDE "${BOOST_ROOT}/include" )
unset( b2_libs )
endif()
ExternalProject_Add( boost
@ -120,13 +126,13 @@ if( BUILD_GITHUB_PLUGIN )
BINARY_DIR "${PREFIX}/src/boost/"
CONFIGURE_COMMAND ./${bootstrap}
--with-libraries=${libs_csv}
BUILD_COMMAND ./b2
variant=release
threading=multi
toolset=gcc
${PIC_STUFF}
${b2_libs}
#link=static
--prefix=<INSTALL_DIR>
install
@ -134,12 +140,35 @@ if( BUILD_GITHUB_PLUGIN )
INSTALL_COMMAND ""
)
if( MINGW )
execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE )
string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.[0-9]+.*" "\\1\\2" BOOST_GCC_VERSION ${GCC_VERSION} )
#message( STATUS "BOOST_GCC_VERSION: ${BOOST_GCC_VERSION}" )
string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9])" "\\1_\\2" BOOST_LIB_VERSION ${BOOST_RELEASE} )
#message( STATUS "BOOST_LIB_VERSION: ${BOOST_LIB_VERSION}" )
# adjust the names of the libraries to suit the build. There's no
# symbolic links provided on the MinGW build to allow us to use
# generic names for the libs
foreach( lib ${BOOST_LIBS_BUILT} )
set( mingw_boost_libs ${mingw_boost_libs} ${lib}-mgw${BOOST_GCC_VERSION}-mt-${BOOST_LIB_VERSION} )
endforeach()
set( BOOST_LIBS_BUILT ${mingw_boost_libs} )
set( BOOST_INCLUDE "${BOOST_ROOT}/include/boost-${BOOST_LIB_VERSION}" )
unset( mingw_boost_libs )
endif()
set( boost_libs "" )
set_boost_lib_names( "${BOOST_LIBS_BUILT}" boost_libs )
#message( STATUS "BOOST_ROOT:${BOOST_ROOT} boost_libs:${boost_libs}" )
set( Boost_LIBRARIES ${boost_libs} CACHE FILEPATH "Boost libraries directory" )
set( Boost_INCLUDE_DIR "${BOOST_ROOT}/include" CACHE FILEPATH "Boost include directory" )
set( Boost_LIBRARIES ${boost_libs} CACHE FILEPATH "Boost libraries directory" )
set( Boost_INCLUDE_DIR "${BOOST_INCLUDE}" CACHE FILEPATH "Boost include directory" )
#message( STATUS "Boost_INCLUDE_DIR: ${Boost_INCLUDE_DIR}" )
else( BUILD_GITHUB_PLUGIN )

View File

@ -26,7 +26,7 @@
#################################################
include( download_avhttp )
if( MINGW )
if( MINGW AND NOT OPENSSL_ROOT_DIR )
# download, compile and install to scratch dir a recent OPENSSL library and headers
include( download_openssl )
else()
@ -64,6 +64,13 @@ target_link_libraries( github_plugin
${OPENSSL_LIBRARIES}
)
if( MINGW )
target_link_libraries( github_plugin
${wxWidgets_LIBRARIES}
ws2_32
)
endif()
add_dependencies( github_plugin boost )
add_dependencies( github_plugin avhttp )