From a1c0d15a1ffd5d5ee665a2996115e4f5f73a5219 Mon Sep 17 00:00:00 2001 From: Edward Hennis Date: Tue, 6 Dec 2016 17:17:24 -0500 Subject: [PATCH] Provide BOOST_ROOT to CMake docs target (RIPD-1364): * Should make building docs with CMake incrementally easier and more reliable. * Wrap makeqbk in explicit bash shell (if available). --- Builds/CMake/CMakeFuncs.cmake | 6 +++--- CMakeLists.txt | 38 +++++++++++++++++++++++++++++++---- docs/source.dox | 6 +++--- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/Builds/CMake/CMakeFuncs.cmake b/Builds/CMake/CMakeFuncs.cmake index 378c40f3dc..1e61d70807 100644 --- a/Builds/CMake/CMakeFuncs.cmake +++ b/Builds/CMake/CMakeFuncs.cmake @@ -269,11 +269,11 @@ endmacro() # Params: Boost components to search for. macro(use_boost) + if ((NOT DEFINED BOOST_ROOT) AND (DEFINED ENV{BOOST_ROOT})) + set(BOOST_ROOT $ENV{BOOST_ROOT}) + endif() if(WIN32 OR CYGWIN) # Workaround for MSVC having two boost versions - x86 and x64 on same PC in stage folders - if ((NOT DEFINED BOOST_ROOT) AND (DEFINED ENV{BOOST_ROOT})) - set(BOOST_ROOT $ENV{BOOST_ROOT}) - endif() if(DEFINED BOOST_ROOT) if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND IS_DIRECTORY ${BOOST_ROOT}/stage64/lib) set(Boost_LIBRARY_DIR ${BOOST_ROOT}/stage64/lib) diff --git a/CMakeLists.txt b/CMakeLists.txt index 89780725d2..e479017069 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -458,15 +458,45 @@ set_property(TARGET ${other_target} PROPERTY EXCLUDE_FROM_DEFAULT_BUILD true) find_program( B2_EXE NAMES b2 - PATHS ENV BOOST_ROOT + HINTS ${BOOST_ROOT} + PATHS ${BOOST_ROOT} DOC "Location of the b2 build executable from Boost") -if(${B2_EXE} STREQUAL "b2-NOTFOUND") +if(${B2_EXE} STREQUAL "B2_EXE-NOTFOUND") message(WARNING "Boost b2 executable not found. docs target will not be buildable") +elseif(NOT BOOST_ROOT) + if(Boost_INCLUDE_DIRS) + set(BOOST_ROOT ${Boost_INCLUDE_DIRS}) + else() + get_filename_component(BOOST_ROOT ${B2_EXE} DIRECTORY) + endif() endif() +# The value for BOOST_ROOT will be determined based on +# 1) The environment BOOST_ROOT +# 2) The Boost_INCLUDE_DIRS found by `get_boost` +# 3) The folder the `b2` executable is found in. +# If those checks don't yield the correct path, BOOST_ROOT +# can be defined on the cmake command line: +# cmake -DBOOST_ROOT= +if(BOOST_ROOT) + set(B2_PARAMS "-sBOOST_ROOT=${BOOST_ROOT}") +endif() + +# Find bash to help Windows avoid file association problems +find_program( + BASH_EXE + NAMES bash sh + DOC "Location of the bash shell executable" + ) +if(${BASH_EXE} STREQUAL "BASH_EXE-NOTFOUND") + message(WARNING + "Unable to find bash executable. docs target may not be buildable") + set(BASH_EXE "") +endif() + add_custom_target(docs - COMMAND "./makeqbk.sh" - COMMAND ${B2_EXE} + COMMAND ${CMAKE_COMMAND} -E env "PATH=$ENV{PATH} " ${BASH_EXE} ./makeqbk.sh + COMMAND ${B2_EXE} ${B2_PARAMS} BYPRODUCTS "${CMAKE_SOURCE_DIR}/docs/html/index.html" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/docs" SOURCES "${doc_srcs}" diff --git a/docs/source.dox b/docs/source.dox index 58acc58cf8..d057b48c13 100644 --- a/docs/source.dox +++ b/docs/source.dox @@ -106,9 +106,9 @@ INPUT = \ \ ../src/ripple/protocol/STObject.h \ ../src/ripple/protocol/JsonFields.h \ - ../src/ripple/test/AbstractClient.h \ - ../src/ripple/test/JSONRPCClient.h \ - ../src/ripple/test/WSClient.h \ + ../src/test/support/AbstractClient.h \ + ../src/test/support/JSONRPCClient.h \ + ../src/test/support/WSClient.h \ INPUT_ENCODING = UTF-8