From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id AFB3F2214D for ; Tue, 31 Jul 2018 08:45:48 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fZT2Ao2lVJpJ for ; Tue, 31 Jul 2018 08:45:48 -0400 (EDT) Received: from smtp46.i.mail.ru (smtp46.i.mail.ru [94.100.177.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 70539220D5 for ; Tue, 31 Jul 2018 08:45:48 -0400 (EDT) Date: Tue, 31 Jul 2018 15:45:44 +0300 From: Alexander Turenko Subject: [tarantool-patches] Re: [PATCH] use TarantoolConfig instead of FindTarantool Message-ID: <20180731124544.7l7cq5xjzakj4cqb@tkn_work_nb> References: <20180726143906.37863-1-k.belyavskiy@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180726143906.37863-1-k.belyavskiy@tarantool.org> Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: Konstantin Belyavskiy Cc: tarantool-patches@freelists.org Hi! I don't have much knowledge about cmake, but here is my two coins. WBR, Alexander Turenko. On Thu, Jul 26, 2018 at 05:39:06PM +0300, Konstantin Belyavskiy wrote: > Use TarantoolConfig.cmake instead of FindTarantool.cmake and > distribute it within tarantool-dev package. > Module, which requires tarantool id its deps now can simply do: > find_package(Tarantool CONFIG REQUIRED) > and does not obligate to have FindTarantool.cmake any more. > Tested with following modules: > avro-schema, cbench > > Proposal for #3147 > --- > Ticket: https://github.com/tarantool/tarantool/issues/3147 > Branch: https://github.com/tarantool/tarantool/tree/kbelyavs/gh-3147-use-tarantoolconfig-instead-findtarantool > CMakeLists.txt | 1 + > TarantoolConfig.cmake | 44 ++++++++++++++++++++++++++++++++++++++++++++ Shouldn't we place the file in cmake/ or extra/? I guess extra/ is better choice for files, which don't used during build and just installed. We don't install this new file in RPM/Deb developers packages? We should, I think. > 2 files changed, 45 insertions(+) > create mode 100644 TarantoolConfig.cmake > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index d0cae0f01..f3f002f86 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -218,6 +218,7 @@ set(MODULE_LIBSUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}") > > install(DIRECTORY DESTINATION ${MODULE_LUADIR}) > install(DIRECTORY DESTINATION ${MODULE_LIBDIR}) > +install(FILES TarantoolConfig.cmake DESTINATION cmake) > > include(cmake/multilib.cmake) > > diff --git a/TarantoolConfig.cmake b/TarantoolConfig.cmake > new file mode 100644 > index 000000000..f0595c5c3 > --- /dev/null > +++ b/TarantoolConfig.cmake > @@ -0,0 +1,44 @@ > +# Define GNU standard installation directories > +include(GNUInstallDirs) > + > +macro(extract_definition name output input) > + string(REGEX MATCH "#define[\t ]+${name}[\t ]+\"([^\"]*)\"" > + _t "${input}") > + string(REGEX REPLACE "#define[\t ]+${name}[\t ]+\"(.*)\"" "\\1" > + ${output} "${_t}") > +endmacro() > + > +find_path(TARANTOOL_INCLUDE_DIR tarantool/module.h > + HINTS ENV TARANTOOL_DIR /usr/local/include > +) > + > +if(TARANTOOL_INCLUDE_DIR) > + set(_config "-") > + file(READ "${TARANTOOL_INCLUDE_DIR}/tarantool/module.h" _config0) > + string(REPLACE "\\" "\\\\" _config ${_config0}) > + unset(_config0) > + extract_definition(PACKAGE_VERSION TARANTOOL_VERSION ${_config}) > + extract_definition(INSTALL_PREFIX _install_prefix ${_config}) > + unset(_config) > +endif() > + > +include(FindPackageHandleStandardArgs) > +find_package_handle_standard_args(TARANTOOL > + REQUIRED_VARS TARANTOOL_INCLUDE_DIR VERSION_VAR TARANTOOL_VERSION) > +if(TARANTOOL_FOUND) > + set(TARANTOOL_INCLUDE_DIRS "${TARANTOOL_INCLUDE_DIR}" > + "${TARANTOOL_INCLUDE_DIR}/tarantool/" > + CACHE PATH "Include directories for Tarantool") > + set(TARANTOOL_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}/tarantool" > + CACHE PATH "Directory for storing Lua modules written in Lua") > + set(TARANTOOL_INSTALL_LUADIR "${CMAKE_INSTALL_DATADIR}/tarantool" > + CACHE PATH "Directory for storing Lua modules written in C") I understand this is pure copy of FindTarantool.cmake from avro-schema, but 'in Lua' and 'in C' in descriptions should be swapped. > + > + if (NOT TARANTOOL_FIND_QUIETLY AND NOT FIND_TARANTOOL_DETAILS) > + set(FIND_TARANTOOL_DETAILS ON CACHE INTERNAL "Details about TARANTOOL") > + message(STATUS "Tarantool LUADIR is ${TARANTOOL_INSTALL_LUADIR}") > + message(STATUS "Tarantool LIBDIR is ${TARANTOOL_INSTALL_LIBDIR}") > + endif () > +endif() > +mark_as_advanced(TARANTOOL_INCLUDE_DIRS TARANTOOL_INSTALL_LIBDIR > + TARANTOOL_INSTALL_LUADIR) > -- > 2.14.3 (Apple Git-98) > >