From 0fb5ea7814abf025a6a7897e7f4237f8b9ab7ee3 Mon Sep 17 00:00:00 2001 From: zhou wei <52485244+zhouwei25@users.noreply.github.com> Date: Mon, 2 Mar 2020 17:26:50 +0800 Subject: [PATCH] fix bug that sourcecode of third_party can't be cached correctly,and add cache for xbyak and openblas (#22772) --- cmake/external/openblas.cmake | 23 +++++++++++++++-------- cmake/external/xbyak.cmake | 12 ++++++++++-- cmake/third_party.cmake | 8 ++++---- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/cmake/external/openblas.cmake b/cmake/external/openblas.cmake index eff73c792a..162ea532fa 100644 --- a/cmake/external/openblas.cmake +++ b/cmake/external/openblas.cmake @@ -14,15 +14,22 @@ INCLUDE(ExternalProject) -SET(CBLAS_SOURCES_DIR ${THIRD_PARTY_PATH}/openblas) +SET(CBLAS_PREFIX_DIR ${THIRD_PARTY_PATH}/openblas) +SET(CBLAS_SOURCE_DIR ${THIRD_PARTY_PATH}/openblas/src/extern_openblas) SET(CBLAS_INSTALL_DIR ${THIRD_PARTY_PATH}/install/openblas) +SET(CBLAS_REPOSITORY https://github.com/xianyi/OpenBLAS.git) +SET(CBLAS_TAG v0.3.7) +cache_third_party(extern_openblas + REPOSITORY ${CBLAS_REPOSITORY} + TAG ${CBLAS_TAG} + DIR CBLAS_SOURCE_DIR) + IF(NOT WIN32) SET(CBLAS_LIBRARIES "${CBLAS_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}openblas${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE FILEPATH "openblas library." FORCE) SET(CBLAS_INC_DIR "${CBLAS_INSTALL_DIR}/include" CACHE PATH "openblas include directory." FORCE) SET(OPENBLAS_CC "${CMAKE_C_COMPILER} -Wno-unused-but-set-variable -Wno-unused-variable") - SET(OPENBLAS_COMMIT "v0.3.7") IF(APPLE) SET(OPENBLAS_CC "${CMAKE_C_COMPILER} -isysroot ${CMAKE_OSX_SYSROOT}") @@ -37,9 +44,9 @@ IF(NOT WIN32) extern_openblas ${EXTERNAL_PROJECT_LOG_ARGS} ${SHALLOW_CLONE} - GIT_REPOSITORY https://github.com/xianyi/OpenBLAS.git - GIT_TAG ${OPENBLAS_COMMIT} - PREFIX ${CBLAS_SOURCES_DIR} + "${OPENBLAS_DOWNLOAD_CMD}" + PREFIX ${CBLAS_PREFIX_DIR} + SOURCE_DIR ${CBLAS_SOURCE_DIR} INSTALL_DIR ${CBLAS_INSTALL_DIR} BUILD_IN_SOURCE 1 BUILD_COMMAND make -j$(nproc) ${COMMON_ARGS} ${OPTIONAL_ARGS} @@ -55,9 +62,9 @@ ELSE(NOT WIN32) ExternalProject_Add( extern_openblas ${EXTERNAL_PROJECT_LOG_ARGS} - GIT_REPOSITORY https://github.com/xianyi/OpenBLAS.git - GIT_TAG "v0.3.7" - PREFIX ${CBLAS_SOURCES_DIR} + "${OPENBLAS_DOWNLOAD_CMD}" + PREFIX ${CBLAS_PREFIX_DIR} + SOURCE_DIR ${CBLAS_SOURCE_DIR} INSTALL_DIR ${CBLAS_INSTALL_DIR} BUILD_IN_SOURCE 0 UPDATE_COMMAND "" diff --git a/cmake/external/xbyak.cmake b/cmake/external/xbyak.cmake index f60eb81139..1314f6fb5e 100644 --- a/cmake/external/xbyak.cmake +++ b/cmake/external/xbyak.cmake @@ -16,8 +16,11 @@ include(ExternalProject) set(XBYAK_PROJECT extern_xbyak) set(XBYAK_PREFIX_DIR ${THIRD_PARTY_PATH}/xbyak) +SET(XBYAK_SOURCE_DIR ${THIRD_PARTY_PATH}/xbyak/src/extern_xbyak) set(XBYAK_INSTALL_ROOT ${THIRD_PARTY_PATH}/install/xbyak) set(XBYAK_INC_DIR ${XBYAK_INSTALL_ROOT}/include) +set(XBYAK_REPOSITORY https://github.com/herumi/xbyak.git) +set(XBYAK_TAG v5.661) # Jul 26th include_directories(${XBYAK_INC_DIR}) include_directories(${XBYAK_INC_DIR}/xbyak) @@ -28,14 +31,19 @@ add_definitions(-DPADDLE_WITH_XBYAK) add_definitions(-DXBYAK64) add_definitions(-DXBYAK_NO_OP_NAMES) +cache_third_party(${XBYAK_PROJECT} + REPOSITORY ${XBYAK_REPOSITORY} + TAG ${XBYAK_TAG} + DIR XBYAK_SOURCE_DIR) + ExternalProject_Add( ${XBYAK_PROJECT} ${EXTERNAL_PROJECT_LOG_ARGS} ${SHALLOW_CLONE} + "${XBYAK_DOWNLOAD_CMD}" DEPENDS "" - GIT_REPOSITORY "https://github.com/herumi/xbyak.git" - GIT_TAG "v5.661" # Jul 26th PREFIX ${XBYAK_PREFIX_DIR} + SOURCE_DIR ${XBYAK_SOURCE_DIR} UPDATE_COMMAND "" CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${XBYAK_INSTALL_ROOT} CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${XBYAK_INSTALL_ROOT} diff --git a/cmake/third_party.cmake b/cmake/third_party.cmake index bd59801b95..7bfa18d626 100644 --- a/cmake/third_party.cmake +++ b/cmake/third_party.cmake @@ -60,9 +60,9 @@ FUNCTION(cache_third_party TARGET) MESSAGE(FATAL_ERROR "Download link (Git repo or URL) must be specified for cache!") ENDIF() IF(WITH_TP_CACHE) - IF(NOT cache_third_party_DIR) - MESSAGE(FATAL_ERROR "Please input the ${TARGET_NAME}_SOURCE_DIR for overwriting when -DWITH_TP_CACHE=ON") - ENDIF() + IF(NOT cache_third_party_DIR) + MESSAGE(FATAL_ERROR "Please input the ${TARGET_NAME}_SOURCE_DIR for overwriting when -DWITH_TP_CACHE=ON") + ENDIF() # Generate and verify cache dir for third_party source code SET(cache_third_party_REPOSITORY ${cache_third_party_REPOSITORY} ${cache_third_party_URL}) IF(cache_third_party_REPOSITORY AND cache_third_party_TAG) @@ -87,8 +87,8 @@ FUNCTION(cache_third_party TARGET) IF(files_len GREATER 0) list(APPEND ${TARGET_NAME}_DOWNLOAD_CMD DOWNLOAD_COMMAND "") ENDIF() - SET(${cache_third_party_DIR} ${${cache_third_party_DIR}} PARENT_SCOPE) ENDIF() + SET(${cache_third_party_DIR} ${${cache_third_party_DIR}} PARENT_SCOPE) ENDIF() # Pass ${TARGET_NAME}_DOWNLOAD_CMD to parent scope, the double quotation marks can't be removed