diff options
author | Alexander Kutsan <akutsan@luxoft.com> | 2017-08-09 17:30:02 +0300 |
---|---|---|
committer | Alexander Kutsan <akutsan@luxoft.com> | 2017-08-15 23:09:43 +0300 |
commit | 38b4426e797c6cde7e4e88467f85bd31e7464644 (patch) | |
tree | 4d0aaaf35c1aac43ae1d82a4d362746dd2d82c26 /src/3rd_party | |
parent | 33143bfdfdd142206298228bd945a8213221160e (diff) | |
download | sdl_core-38b4426e797c6cde7e4e88467f85bd31e7464644.tar.gz |
Fix instalation of bson to avoid root access
Diffstat (limited to 'src/3rd_party')
-rw-r--r-- | src/3rd_party/CMakeLists.txt | 51 | ||||
-rw-r--r-- | src/3rd_party/FindBSON.cmake | 26 |
2 files changed, 62 insertions, 15 deletions
diff --git a/src/3rd_party/CMakeLists.txt b/src/3rd_party/CMakeLists.txt index f9abfb55ce..9abc187d0c 100644 --- a/src/3rd_party/CMakeLists.txt +++ b/src/3rd_party/CMakeLists.txt @@ -283,22 +283,43 @@ if(HMI_DBUS_API) add_subdirectory(dbus-cmake) endif() -set(BSON_LIBS_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX_ARCH}/lib PARENT_SCOPE) -set(BSON_INCLUDE_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX}/include PARENT_SCOPE) -set(EMHASHMAP_INCLUDE_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX}/include PARENT_SCOPE) -set(EMHASHMAP_LIBS_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX_ARCH}/lib PARENT_SCOPE) -set(BSON_LIB_SOURCE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bson_c_lib) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}") +set(CMAKE_SOURCE_PREFIX ${CMAKE_SOURCE_PREFIX} "${3RD_PARTY_INSTALL_PREFIX}") +find_package (BSON) +message (STATUS "bson installed in " ${BSON_LIBS_DIRECTORY} " , " ${BSON_INCLUDE_DIRECTORY}) +message (STATUS "emhashmap installed in " ${EMHASHMAP_LIBS_DIRECTORY} " , " ${EMHASHMAP_INCLUDE_DIRECTORY}) -include(ExternalProject) -ExternalProject_Add(libbson - GIT_REPOSITORY "http://github.com/smartdevicelink/bson_c_lib.git" - GIT_TAG "master" - BINARY_DIR ${BSON_LIB_SOURCE_DIRECTORY} - DOWNLOAD_DIR ${BSON_LIB_SOURCE_DIRECTORY} - SOURCE_DIR ${BSON_LIB_SOURCE_DIRECTORY} - CONFIGURE_COMMAND touch aclocal.m4 configure.ac Makefile.am Makefile.in configure && ./configure - BUILD_COMMAND make - INSTALL_COMMAND sudo make install) +if (${BSON_LIB} MATCHES "BSON_LIB-NOTFOUND") + message (STATUS "Building bson required") + set(BSON_LIB_SOURCE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bson_c_lib CACHE INTERNAL "Sources of bson library" FORCE) + set(BSON_LIBS_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX}/lib CACHE INTERNAL "Installation path of bson libraries" FORCE) + set(BSON_INCLUDE_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX}/include CACHE INTERNAL "Installation path of bson headers" FORCE) + set(EMHASHMAP_LIBS_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX}/lib CACHE INTERNAL "Installation path of emashmap libraries" FORCE) + set(EMHASHMAP_INCLUDE_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX}/include CACHE INTERNAL "Installation path of emashmap headers" FORCE) + + set(BSON_INSTALL_COMMAND make install) + if (${3RD_PARTY_INSTALL_PREFIX} MATCHES "/usr/local") + set(BSON_INSTALL_COMMAND sudo make install) + endif() + include(ExternalProject) + ExternalProject_Add(libbson + GIT_REPOSITORY "http://github.com/LuxoftAKutsan/bson_c_lib.git" +# TODO Change GIT_REPOSITORY to http://github.com/smartdevicelink/bson_c_lib.git +# after merge of https://github.com/smartdevicelink/bson_c_lib/pull/2 + GIT_TAG "master" + BINARY_DIR ${BSON_LIB_SOURCE_DIRECTORY} + INSTALL_DIR ${3RD_PARTY_INSTALL_PREFIX} + DOWNLOAD_DIR ${BSON_LIB_SOURCE_DIRECTORY} + SOURCE_DIR ${BSON_LIB_SOURCE_DIRECTORY} + CONFIGURE_COMMAND touch aclocal.m4 configure.ac Makefile.am Makefile.in configure && ./configure --prefix=${3RD_PARTY_INSTALL_PREFIX} + BUILD_COMMAND make + INSTALL_COMMAND ${BSON_INSTALL_COMMAND}) +else() + get_filename_component(BSON_LIBS_DIRECTORY ${BSON_LIB} DIRECTORY) + get_filename_component(EMHASHMAP_LIBS_DIRECTORY ${EMHASHMAP_LIB} DIRECTORY) + set(BSON_LIBS_DIRECTORY ${BSON_LIBS_DIRECTORY} CACHE INTERNAL "Installation path of bson libraries" FORCE) + set(EMHASHMAP_LIBS_DIRECTORY ${BSON_LIBS_DIRECTORY} CACHE INTERNAL "Installation path of emashmap libraries" FORCE) +endif() add_custom_target(install-3rd_party DEPENDS ${install-3rd_party_logger_var} diff --git a/src/3rd_party/FindBSON.cmake b/src/3rd_party/FindBSON.cmake new file mode 100644 index 0000000000..91d53624f1 --- /dev/null +++ b/src/3rd_party/FindBSON.cmake @@ -0,0 +1,26 @@ +set(INCLUDE_PATH "${CMAKE_SOURCE_PREFIX}/include") +set(LIB_PATH "${CMAKE_SOURCE_PREFIX}/lib") + +find_path(BSON_INCLUDE_DIRECTORY bson_object.h bson_array.h bson_util.h + PATHS "${INCLUDE_PATH}") + +find_library(BSON_LIB + NAMES bson + PATHS ${LIB_PATH}) + +find_path(EMHASHMAP_INCLUDE_DIRECTORY emhashmap.h + PATHS ${INCLUDE_PATH} + PATH_SUFFIXES emhashmap) + +find_library(EMHASHMAP_LIB + NAMES emhashmap + PATHS ${LIB_PATH}) + + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(BSON DEFAULT_MSG BSON_INCLUDE_DIRECTORY BSON_LIB + EMHASHMAP_INCLUDE_DIRECTORY EMHASHMAP_LIB) + +mark_as_advanced(BSON_INCLUDE_DIRECTORY BSON_LIB) +mark_as_advanced(EMHASHMAP_INCLUDE_DIRECTORY EMHASHMAP_LIB) |