You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.6 KiB
74 lines
2.6 KiB
# this macro requires the following variables to be specified:
|
|
#
|
|
# ETH_DEPENDENCY_SERVER - server from which dependencies should be downloaded
|
|
# ETH_DEPENDENCY_INSTALL_DIR - install location for all dependencies
|
|
#
|
|
# usage:
|
|
#
|
|
# eth_download("json-rpc-cpp")
|
|
# eth_download("json-rpc-cpp" VERSION "0.3.2")
|
|
#
|
|
# params:
|
|
# VERSION - exact version we want to use
|
|
# OSX_SCRIPT - script which will be executed on apple in install phase
|
|
# UNIX_SCRIPT - script which will be executed on unix in install phase
|
|
# WIN_SCRIPT - script which will be executed on win in install phase
|
|
|
|
# OSX_SCRIPT, WIN_SCRIPT, UNIX_SCRIPT are taking 2 params:
|
|
# $1 is package_source,
|
|
# $2 is ETH_DEPENDENCY_INSTALL_DIR
|
|
#
|
|
# parsing arguments
|
|
# http://www.cmake.org/cmake/help/v3.0/module/CMakeParseArguments.html
|
|
#
|
|
# for macos you may need to specify OSX_SCRIPT with install_name_tool to fix dylib
|
|
# http://stackoverflow.com/questions/2985315/using-install-name-tool-whats-going-wrong
|
|
#
|
|
# TODO:
|
|
# check if install_command is handling symlinks correctly on linux and windows
|
|
|
|
macro(eth_download eth_package_name)
|
|
|
|
set (extra_macro_args ${ARGN})
|
|
set (options)
|
|
set (one_value_args VERSION OSX_SCRIPT UNIX_SCRIPT WIN_SCRIPT)
|
|
set (multi_value_args)
|
|
cmake_parse_arguments (ETH_DOWNLOAD "${options}" "${one_value_args}" "${multi_value_args}" ${extra_macro_args})
|
|
|
|
if (ETH_DOWNLOAD_VERSION)
|
|
set(eth_tar_name "${eth_package_name}-${ETH_DOWNLOAD_VERSION}.tar.gz")
|
|
else()
|
|
set(eth_tar_name "${eth_package_name}.tar.gz")
|
|
endif()
|
|
|
|
message(STATUS "download path for ${eth_package_name} is : ${ETH_DEPENDENCY_SERVER}/${eth_tar_name}")
|
|
|
|
# we need that to copy symlinks
|
|
# see http://superuser.com/questions/138587/how-to-copy-symbolic-links
|
|
if (APPLE)
|
|
set (eth_package_copy cp -a . ${ETH_DEPENDENCY_INSTALL_DIR})
|
|
set (eth_package_install ${ETH_DOWNLOAD_OSX_SCRIPT})
|
|
elseif (UNIX)
|
|
set (eth_package_copy cp -a . ${ETH_DEPENDENCY_INSTALL_DIR})
|
|
set (eth_package_install ${ETH_DOWNLOAD_UNIX_SCRIPT})
|
|
else ()
|
|
set (eth_package_copy cmake -E copy_directory . ${ETH_DEPENDENCY_INSTALL_DIR})
|
|
set (eth_package_install ${ETH_DOWNLOAD_WIN_SCRIPT})
|
|
endif()
|
|
|
|
if (eth_package_install)
|
|
message(STATUS "install script: ${eth_package_install}")
|
|
set (eth_package_install ${eth_package_install} . ${ETH_DEPENDENCY_INSTALL_DIR})
|
|
else ()
|
|
set (eth_package_install echo 0) # cause empty string is not handled properly
|
|
endif()
|
|
|
|
ExternalProject_Add(${eth_package_name}
|
|
URL ${ETH_DEPENDENCY_SERVER}/${eth_tar_name}
|
|
BINARY_DIR ${eth_package_name}-prefix/src/${eth_package_name}
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ${eth_package_copy}
|
|
INSTALL_COMMAND ${eth_package_install}
|
|
)
|
|
endmacro()
|
|
|
|
|