Enable fallback for gflags, glog and protobuf

This commit is contained in:
Amit Prakash Ambasta
2017-05-31 16:22:00 +05:30
parent 84c9eddc61
commit 50151907e1
6 changed files with 213 additions and 11 deletions

27
cmake/external/cbc.cmake vendored Normal file
View File

@@ -0,0 +1,27 @@
SET(CBC_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/src)
SET(CBC_URL https://github.com/google/protobuf)
IF(WIN32)
SET(CBC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/${CMAKE_BUILD_TYPE}/libcbc.lib)
ELSE()
SET(CBC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/libprotobuf.a)
ENDIF()
ExternalProject_Add(Cbc
PREFIX Cbc
GIT_REPOSITORY ${CBC_URL}
GIT_TAG "v${CBC_VERSION}"
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
BUILD_IN_SOURCE 1
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf
CONFIGURE_COMMAND ${CMAKE_COMMAND} cmake/
-Dprotobuf_BUILD_TESTS=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
${Protobuf_ADDITIONAL_CMAKE_OPTIONS}
INSTALL_COMMAND ""
CMAKE_CACHE_ARGS
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON)
LIST(APPEND ${PROJECT_NAME}externalTargets Protobuf)

27
cmake/external/gflags.cmake vendored Normal file
View File

@@ -0,0 +1,27 @@
SET(Gflags_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/gflags/src/gflags/include/)
SET(Gflags_URL https://github.com/gflags/gflags)
IF(WIN32)
SET(Gflags_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/gflags/src/gflags/${CMAKE_BUILD_TYPE}/libgflags.lib)
ELSE()
SET(Gflags_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/gflags/src/gflags/lib/libgflags.a)
ENDIF()
ExternalProject_Add(Gflags
PREFIX Gflags
GIT_REPOSITORY ${Gflags_URL}
GIT_TAG "v${Gflags_VERSION}"
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
BUILD_IN_SOURCE 1
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/gflags/src/gflags
CONFIGURE_COMMAND ${CMAKE_COMMAND}
-DBUILD_TESTING=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
${Gflags_ADDITIONAL_CMAKE_OPTIONS}
INSTALL_COMMAND ""
CMAKE_CACHE_ARGS
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON)
LIST(APPEND ${PROJECT_NAME}externalTargets Gflags)

29
cmake/external/glog.cmake vendored Normal file
View File

@@ -0,0 +1,29 @@
SET(GLOG_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog/)
LIST(APPEND GLOG_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog/src/)
SET(GLOG_URL https://github.com/google/glog)
IF(WIN32)
SET(GLOG_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog/${CMAKE_BUILD_TYPE}/libglog.lib)
ELSE()
SET(GLOG_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog/libglog.a)
ENDIF()
MESSAGE("Glog: ${GLOG_VERSION}")
ExternalProject_Add(Glog
PREFIX Glog
GIT_REPOSITORY ${GLOG_URL}
GIT_TAG "v${GLOG_VERSION}"
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
BUILD_IN_SOURCE 1
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog
CONFIGURE_COMMAND ${CMAKE_COMMAND}
-DBUILD_TESTING=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
${Glogs_ADDITIONAL_CMAKE_OPTIONS}
INSTALL_COMMAND ""
CMAKE_CACHE_ARGS
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON)
LIST(APPEND ${PROJECT_NAME}externalTargets Glog)

34
cmake/external/protobuf.cmake vendored Normal file
View File

@@ -0,0 +1,34 @@
SET(Protobuf_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/src)
SET(Protobuf_URL https://github.com/google/protobuf)
IF(WIN32)
SET(Protobuf_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/${CMAKE_BUILD_TYPE}/libprotobuf.lib)
SET(Protobuf_PROTOC_EXECUTABLE
${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/${CMAKE_BUILD_TYPE}/protoc.exe)
SET(Protobuf_ADDITIONAL_CMAKE_OPTIONS -Dprotobuf_MSVC_STATIC_RUNTIME:BOOL=OFF -A x64)
ELSE()
SET(Protobuf_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/libprotobuf.a)
SET(Protobuf_PROTOC_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/protoc)
ENDIF()
ExternalProject_Add(Protobuf
PREFIX Protobuf
DEPENDS Zlib
GIT_REPOSITORY ${Protobuf_URL}
GIT_TAG "v${Protobuf_VERSION}"
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
BUILD_IN_SOURCE 1
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf
CONFIGURE_COMMAND ${CMAKE_COMMAND} cmake/
-Dprotobuf_BUILD_TESTS=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DZLIB_ROOT=${ZLIB_INSTALL}
${Protobuf_ADDITIONAL_CMAKE_OPTIONS}
INSTALL_COMMAND ""
CMAKE_CACHE_ARGS
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
-DZLIB_ROOT:STRING=${ZLIB_INSTALL})
LIST(APPEND ${PROJECT_NAME}externalTargets Protobuf)

45
cmake/external/zlib.cmake vendored Normal file
View File

@@ -0,0 +1,45 @@
INCLUDE(ExternalProject)
SET(Zlib_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/zlib_archive)
SET(Zlib_URL https://github.com/madler/zlib)
SET(Zlib_BUILD ${CMAKE_CURRENT_BINARY_DIR}/zlib/src/zlib)
SET(Zlib_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/zlib/install)
SET(Zlib_TAG 50893291621658f355bc5b4d450a8d06a563053d)
IF(WIN32)
SET(Zlib_STATIC_LIBRARIES
debug ${CMAKE_CURRENT_BINARY_DIR}/zlib/install/lib/zlibstaticd.lib
optimized ${CMAKE_CURRENT_BINARY_DIR}/zlib/install/lib/zlibstatic.lib)
ELSE()
SET(Zlib_STATIC_LIBRARIES
${CMAKE_CURRENT_BINARY_DIR}/zlib/install/lib/libz.a)
ENDIF()
SET(Zlib_HEADERS
"${Zlib_INSTALL}/include/zconf.h"
"${Zlib_INSTALL}/include/zlib.h")
ExternalProject_Add(Zlib
PREFIX zlib
GIT_REPOSITORY ${Zlib_URL}
GIT_TAG ${Zlib_TAG}
INSTALL_DIR ${Zlib_INSTALL}
BUILD_IN_SOURCE 1
DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
CMAKE_CACHE_ARGS
-DCMAKE_BUILD_TYPE:STRING=RELEASE
-DCMAKE_INSTALL_PREFIX:STRING=${Zlib_INSTALL}
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON)
ADD_CUSTOM_TARGET(Zlib_CREATE_DESTINATION_DIR
COMMAND ${CMAKE_COMMAND} -E make_directory ${Zlib_INCLUDE_DIR}
DEPENDS Zlib)
ADD_CUSTOM_TARGET(Zlib_COPY_HEADERS_TO_DESTINATION DEPENDS Zlib_CREATE_DESTINATION_DIR)
FOREACH(header_file ${ZLIB_HEADERS})
ADD_CUSTOM_COMMAND(TARGET Zlib_COPY_HEADERS_TO_DESTINATION PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${header_file} ${Zlib_INCLUDE_DIR})
ENDFOREACH()
LIST(APPEND ${PROJECT_NAME}externalTargets Zlib)