aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorPaweł Bylica <chfast@gmail.com>2017-09-20 02:46:32 +0800
committerPaweł Bylica <chfast@gmail.com>2017-09-20 02:55:47 +0800
commitb9e4d5b6c87bd2b787f296e01602ee69d5846ce4 (patch)
tree1f1122fb3fe0edf9ffd4a475ac35115a38121db6 /scripts
parent4a499a38ea4e95ad5e4176c4586cb50bb633fdeb (diff)
downloaddexon-solidity-b9e4d5b6c87bd2b787f296e01602ee69d5846ce4.tar.gz
dexon-solidity-b9e4d5b6c87bd2b787f296e01602ee69d5846ce4.tar.zst
dexon-solidity-b9e4d5b6c87bd2b787f296e01602ee69d5846ce4.zip
Windows: Copy install_deps.cmake from cpp-dependencies repo
Diffstat (limited to 'scripts')
-rw-r--r--scripts/install_deps.bat2
-rw-r--r--scripts/install_deps.cmake99
2 files changed, 100 insertions, 1 deletions
diff --git a/scripts/install_deps.bat b/scripts/install_deps.bat
index 512a28df..d02005cc 100644
--- a/scripts/install_deps.bat
+++ b/scripts/install_deps.bat
@@ -58,4 +58,4 @@ REM
REM Copyright (c) 2016 solidity contributors.
REM ---------------------------------------------------------------------------
-cmake -P deps\install_deps.cmake
+cmake -P scripts\install_deps.cmake
diff --git a/scripts/install_deps.cmake b/scripts/install_deps.cmake
new file mode 100644
index 00000000..d1284b9e
--- /dev/null
+++ b/scripts/install_deps.cmake
@@ -0,0 +1,99 @@
+get_filename_component(ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../deps" ABSOLUTE)
+
+set(CACHE_DIR "${ROOT_DIR}/cache")
+set(PACKAGES_DIR "${ROOT_DIR}/packages")
+
+function(download URL DST_FILE STATUS)
+ set(TMP_FILE "${DST_FILE}.part")
+
+ get_filename_component(FILE_NAME ${DST_FILE} NAME)
+ if (NOT EXISTS ${DST_FILE})
+ message("Downloading ${FILE_NAME}")
+ file(DOWNLOAD ${URL} ${TMP_FILE} SHOW_PROGRESS STATUS DOWNLOAD_STATUS)
+ list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
+ if (STATUS_CODE EQUAL 0)
+ file(RENAME ${TMP_FILE} ${DST_FILE})
+ else()
+ file(REMOVE ${TMP_FILE})
+ list(GET DOWNLOAD_STATUS 1 ERROR_MSG)
+
+ message("ERROR! Downloading '${FILE_NAME}' failed.")
+ message(STATUS "URL: ${URL}")
+ message(STATUS "Error: ${STATUS_CODE} ${ERROR_MSG}")
+ set(STATUS FALSE PARENT_SCOPE)
+ return()
+ endif()
+ else()
+ message("Using cached ${FILE_NAME}")
+ endif()
+ set(STATUS TRUE PARENT_SCOPE)
+endfunction(download)
+
+function(download_and_unpack PACKAGE_URL DST_DIR)
+ get_filename_component(FILE_NAME ${PACKAGE_URL} NAME)
+
+ set(DST_FILE "${CACHE_DIR}/${FILE_NAME}")
+ set(TMP_FILE "${DST_FILE}.part")
+
+ file(MAKE_DIRECTORY ${CACHE_DIR})
+ file(MAKE_DIRECTORY ${DST_DIR})
+
+ download(${PACKAGE_URL} ${DST_FILE} STATUS)
+
+ if (STATUS)
+ message("Unpacking ${FILE_NAME} to ${DST_DIR}")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${DST_FILE}
+ WORKING_DIRECTORY ${DST_DIR})
+ endif()
+endfunction(download_and_unpack)
+
+# Packs installed package binaries and headers into an archive.
+function(create_package NAME DIR)
+ message("Creating package ${NAME}")
+ file(MAKE_DIRECTORY ${PACKAGES_DIR})
+
+ # To create an archive without addicional top level directory
+ # (like package-X.Y.Z) we need to know all top level files/dirs.
+ # Usually it is just "win64" dir.
+ file(GLOB TOP_FILES RELATIVE ${DIR} "${DIR}/*")
+
+ set(PACKAGE_FILE "${PACKAGES_DIR}/${NAME}.tar.gz")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E
+ tar -czf ${PACKAGE_FILE} ${TOP_FILES}
+ WORKING_DIRECTORY ${DIR})
+endfunction(create_package)
+
+# Downloads the source code of the package and unpacks it to dedicated 'src'
+# dir. Also creates 'build' and 'install' dir to be used by a build script.
+function(prepare_package_source NAME VERSION URL)
+ set(PACKAGE_NAME "${NAME}-${VERSION}")
+
+ set(PACKAGE_DIR "${CACHE_DIR}/${PACKAGE_NAME}")
+ set(SOURCE_DIR "${PACKAGE_DIR}/src")
+ set(BUILD_DIR "${PACKAGE_DIR}/build")
+ set(INSTALL_DIR "${PACKAGE_DIR}/install")
+
+ if (NOT EXISTS ${SOURCE_DIR})
+ download_and_unpack(${URL} ${PACKAGE_DIR} STATUS)
+ file(GLOB ORIG_SOURCE_DIR_NAME "${PACKAGE_DIR}/*")
+ file(RENAME ${ORIG_SOURCE_DIR_NAME} ${SOURCE_DIR})
+ endif()
+
+ file(MAKE_DIRECTORY ${BUILD_DIR})
+ file(MAKE_DIRECTORY ${INSTALL_DIR})
+
+ # Export names and dirs to be used by a package-specific build script.
+ set(PACKAGE_NAME ${PACKAGE_NAME} PARENT_SCOPE)
+ set(SOURCE_DIR ${SOURCE_DIR} PARENT_SCOPE)
+ set(BUILD_DIR ${BUILD_DIR} PARENT_SCOPE)
+ set(INSTALL_DIR ${INSTALL_DIR} PARENT_SCOPE)
+endfunction()
+
+set(INSTALL_DIR "${ROOT_DIR}/install")
+set(SERVER "https://github.com/ethereum/cpp-dependencies/releases/download/vc140/")
+
+function(download_and_install PACKAGE_NAME)
+ download_and_unpack("${SERVER}${PACKAGE_NAME}.tar.gz" ${INSTALL_DIR})
+endfunction(download_and_install)
+
+download_and_install("boost-1.61")