From c4d962006ddb910927a805cc318b89635379d4b4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=84=B8=ED=9D=AC/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Principal=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Thu, 10 May 2018 08:24:41 +0900 Subject: [PATCH] Add gflags download and build (#210) * Add gflags download and build This will add download and build gflags within cmake - default action is off - system installed version can be used when download is off Signed-off-by: SaeHie Park * apply comments * move compile line * use interface and move build options settings --- CMakeLists.txt | 1 + cmake/packages/GFlagsConfig.cmake | 33 +++++++++++++++++++++++++++++++++ cmake/packages/GFlagsSourceConfig.cmake | 18 ++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 cmake/packages/GFlagsConfig.cmake create mode 100644 cmake/packages/GFlagsSourceConfig.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index fbc463d..62f9ac9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ option(DOWNLOAD_EIGEN "Download Eigen source" OFF) option(DOWNLOAD_FARMHASH "Download farmhash source" OFF) option(DOWNLOAD_GEMMLOWP "Download GEMM low precesion library source" OFF) option(DOWNLOAD_NEON2SSE "Download NEON2SSE library source" OFF) +option(DOWNLOAD_GFLAGS "Download GFlags source" OFF) option(DOWNLOAD_FLATBUFFERS "Download FlatBuffers source" OFF) option(DOWNLOAD_TENSORFLOW "Download TensorFlow source" OFF) option(DOWNLOAD_CAFFE "Download Caffe source" OFF) diff --git a/cmake/packages/GFlagsConfig.cmake b/cmake/packages/GFlagsConfig.cmake new file mode 100644 index 0000000..f93c784 --- /dev/null +++ b/cmake/packages/GFlagsConfig.cmake @@ -0,0 +1,33 @@ +function(_GFlags_import) + if(TARGET gflags) + set(GFlags_FOUND True PARENT_SCOPE) + return() + endif() + + nncc_find_package(GFlagsSource QUIET) + + if(GFlagsSource_FOUND) + # build static multi-thread library + set(GFLAGS_BUILD_STATIC_LIB On) + set(GFLAGS_BUILD_gflags_LIB On) + set(GFLAGS_BUILD_gflags_nothreads_LIB Off) + add_subdirectory(${GFLAGS_SOURCE_DIR} external/gflags) + else(GFlagsSource_FOUND) + set(GFLAGS_ROOT_DIR "" CACHE PATH "Folder contains GFlags") + find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h PATHS ${GFLAGS_ROOT_DIR}) + find_library(GFLAGS_LIBRARY gflags) + + if(NOT GFLAGS_INCLUDE_DIR) + set(GFlags_FOUND False PARENT_SCOPE) + return() + endif(NOT GFLAGS_INCLUDE_DIR) + + add_library(gflags INTERFACE) + target_include_directories(gflags INTERFACE ${GFLAGS_INCLUDE_DIR}) + target_link_libraries(gflags INTERFACE ${GFLAGS_LIBRARY}) + endif(GFlagsSource_FOUND) + + set(GFlags_FOUND True PARENT_SCOPE) +endfunction(_GFlags_import) + +_GFlags_import() diff --git a/cmake/packages/GFlagsSourceConfig.cmake b/cmake/packages/GFlagsSourceConfig.cmake new file mode 100644 index 0000000..89d230d --- /dev/null +++ b/cmake/packages/GFlagsSourceConfig.cmake @@ -0,0 +1,18 @@ +function(_GFlagsSource_import) + if(NOT DOWNLOAD_GFLAGS) + set(GFlagsSource_FOUND False PARENT_SCOPE) + return() + endif(NOT DOWNLOAD_GFLAGS) + + nncc_find_package(ExternalSourceTools REQUIRED) + nncc_find_package(OptionTools REQUIRED) + + envoption(GFLAGS_URL https://github.com/gflags/gflags/archive/v2.2.1.tar.gz) + + ExternalSource_Download(GFLAGS ${GFLAGS_URL}) + + set(GFLAGS_SOURCE_DIR ${GFLAGS_SOURCE_DIR} PARENT_SCOPE) + set(GFlagsSource_FOUND True PARENT_SCOPE) +endfunction(_GFlagsSource_import) + +_GFlagsSource_import() -- 2.7.4