Add docs target and build option BUILD_DOCS

This commit is contained in:
Dennis Klein 2018-05-03 18:54:51 +02:00 committed by Dennis Klein
parent f0f9f45c25
commit c0977d1f1e
3 changed files with 122 additions and 62 deletions

View File

@ -26,19 +26,25 @@ include(CTest)
# Build options ################################################################ # Build options ################################################################
option(BUILD_NANOMSG_TRANSPORT "Build nanomsg transport." OFF) include(CMakeDependentOption)
option(BUILD_OFI_TRANSPORT "Build experimental OFI transport." OFF) option(BUILD_FAIRMQ "Build FairMQ library and devices." ON)
option(BUILD_DDS_PLUGIN "Build DDS plugin." OFF) cmake_dependent_option(BUILD_TESTING "Build tests." OFF "BUILD_FAIRMQ" OFF)
option(BUILD_EXAMPLES "Build FairMQ examples." ON) cmake_dependent_option(BUILD_NANOMSG_TRANSPORT "Build nanomsg transport." OFF "BUILD_FAIRMQ" OFF)
cmake_dependent_option(BUILD_OFI_TRANSPORT "Build experimental OFI transport." OFF "BUILD_FAIRMQ" OFF)
cmake_dependent_option(BUILD_DDS_PLUGIN "Build DDS plugin." OFF "BUILD_FAIRMQ" OFF)
cmake_dependent_option(BUILD_EXAMPLES "Build FairMQ examples." ON "BUILD_FAIRMQ" OFF)
option(BUILD_DOCS "Build FairMQ documentation." OFF)
################################################################################ ################################################################################
# Dependencies ################################################################# # Dependencies #################################################################
if(BUILD_FAIRMQ)
find_package2(PUBLIC Boost VERSION 1.64 REQUIRED find_package2(PUBLIC Boost VERSION 1.64 REQUIRED
COMPONENTS program_options thread system filesystem regex date_time signals COMPONENTS program_options thread system filesystem regex date_time signals
) )
find_package2(PUBLIC FairLogger VERSION 1.0.6 REQUIRED) find_package2(PUBLIC FairLogger VERSION 1.0.6 REQUIRED)
find_package2(PRIVATE ZeroMQ VERSION 4.1.5 REQUIRED) find_package2(PRIVATE ZeroMQ VERSION 4.1.5 REQUIRED)
endif()
if(BUILD_NANOMSG_TRANSPORT) if(BUILD_NANOMSG_TRANSPORT)
find_package2(PRIVATE nanomsg VERSION 1.0.0 REQUIRED) find_package2(PRIVATE nanomsg VERSION 1.0.0 REQUIRED)
@ -58,16 +64,22 @@ endif()
if(BUILD_TESTING) if(BUILD_TESTING)
find_package2(PRIVATE GTest VERSION 1.7.0 REQUIRED) find_package2(PRIVATE GTest VERSION 1.7.0 REQUIRED)
endif() endif()
if(BUILD_DOCS)
find_package2(PRIVATE Doxygen VERSION 1.8.8 REQUIRED COMPONENTS dot OPTIONAL_COMPONENTS mscgen dia)
endif()
################################################################################ ################################################################################
# Targets ###################################################################### # Targets ######################################################################
if(BUILD_FAIRMQ)
configure_file(${PROJECT_NAME_LOWER}/Version.h.in configure_file(${PROJECT_NAME_LOWER}/Version.h.in
${CMAKE_BINARY_DIR}/${PROJECT_NAME_LOWER}/Version.h ${CMAKE_BINARY_DIR}/${PROJECT_NAME_LOWER}/Version.h
@ONLY @ONLY
) )
add_subdirectory(fairmq) add_subdirectory(fairmq)
endif()
if(BUILD_TESTING) if(BUILD_TESTING)
add_subdirectory(test) add_subdirectory(test)
@ -76,12 +88,25 @@ endif()
if(BUILD_EXAMPLES) if(BUILD_EXAMPLES)
add_subdirectory(examples) add_subdirectory(examples)
endif() endif()
if(BUILD_DOCS)
set(DOXYGEN_OUTPUT_DIRECTORY doxygen)
set(DOXYGEN_PROJECT_NUMBER ${PROJECT_GIT_VERSION})
set(DOXYGEN_PROJECT_BRIEF "C++ Message Passing Framework")
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
doxygen_add_docs(doxygen README.md fairmq)
add_custom_target(docs ALL DEPENDS doxygen)
endif()
################################################################################ ################################################################################
# Package components ########################################################### # Package components ###########################################################
if(BUILD_FAIRMQ)
list(APPEND PROJECT_PACKAGE_COMPONENTS fairmq) list(APPEND PROJECT_PACKAGE_COMPONENTS fairmq)
endif()
if(BUILD_TESTING)
list(APPEND PROJECT_PACKAGE_COMPONENTS tests) list(APPEND PROJECT_PACKAGE_COMPONENTS tests)
endif()
if(BUILD_DDS_PLUGIN) if(BUILD_DDS_PLUGIN)
list(APPEND PROJECT_PACKAGE_COMPONENTS dds_plugin) list(APPEND PROJECT_PACKAGE_COMPONENTS dds_plugin)
endif() endif()
@ -91,18 +116,25 @@ endif()
if(BUILD_OFI_TRANSPORT) if(BUILD_OFI_TRANSPORT)
list(APPEND PROJECT_PACKAGE_COMPONENTS ofi_transport) list(APPEND PROJECT_PACKAGE_COMPONENTS ofi_transport)
endif() endif()
if(BUILD_EXAMPLES)
list(APPEND PROJECT_PACKAGE_COMPONENTS examples)
endif()
if(BUILD_DOCS)
list(APPEND PROJECT_PACKAGE_COMPONENTS docs)
endif()
################################################################################ ################################################################################
# Installation ################################################################# # Installation #################################################################
if(BUILD_FAIRMQ)
install(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME_LOWER}/Version.h install(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME_LOWER}/Version.h
DESTINATION ${PROJECT_INSTALL_INCDIR} DESTINATION ${PROJECT_INSTALL_INCDIR}
) )
# Install cmake modules
install(FILES cmake/FindZeroMQ.cmake install(FILES cmake/FindZeroMQ.cmake
DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR} DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR}
) )
endif()
if(BUILD_DDS_PLUGIN) if(BUILD_DDS_PLUGIN)
install(FILES cmake/FindDDS.cmake install(FILES cmake/FindDDS.cmake
DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR} DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR}
@ -118,14 +150,20 @@ if(BUILD_OFI_TRANSPORT)
DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR} DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR}
) )
endif() endif()
if(BUILD_DOCS)
install(DIRECTORY ${CMAKE_BINARY_DIR}/doxygen/html
DESTINATION ${PROJECT_INSTALL_DATADIR}/docs
)
endif()
install_cmake_package() install_cmake_package()
################################################################################ ################################################################################
# Summary ###################################################################### # Summary ######################################################################
if(PROJECT_PACKAGE_DEPENDENCIES)
message(STATUS " ") message(STATUS " ")
message(STATUS " ${Cyan}DEPENDENCY VERSION PREFIX${CR}") message(STATUS " ${Cyan}DEPENDENCY FOUND VERSION PREFIX${CR}")
foreach(dep IN LISTS PROJECT_PACKAGE_DEPENDENCIES) foreach(dep IN LISTS PROJECT_PACKAGE_DEPENDENCIES)
if(${dep}_VERSION) if(${dep}_VERSION)
if(${dep} STREQUAL Boost) if(${dep} STREQUAL Boost)
@ -139,11 +177,11 @@ foreach(dep IN LISTS PROJECT_PACKAGE_DEPENDENCIES)
if(PROJECT_${dep}_VERSION) if(PROJECT_${dep}_VERSION)
set(version_req_str " (>= ${PROJECT_${dep}_VERSION})") set(version_req_str " (>= ${PROJECT_${dep}_VERSION})")
endif() endif()
pad(${dep} 15 " " dep_padded) pad(${dep} 20 " " dep_padded)
if(DISABLE_COLOR) if(DISABLE_COLOR)
pad("${version_str}${version_req_str}" 20 " " version_padded) pad("${version_str}${version_req_str}" 25 " " version_padded)
else() else()
pad("${version_str}${version_req_str}" 20 " " version_padded COLOR 1) pad("${version_str}${version_req_str}" 25 " " version_padded COLOR 1)
endif() endif()
if(${dep} STREQUAL FairLogger) if(${dep} STREQUAL FairLogger)
set(prefix ${FairLogger_ROOT}) set(prefix ${FairLogger_ROOT})
@ -153,15 +191,27 @@ foreach(dep IN LISTS PROJECT_PACKAGE_DEPENDENCIES)
set(prefix ${msgpack_ROOT}) set(prefix ${msgpack_ROOT})
elseif(${dep} STREQUAL OFI) elseif(${dep} STREQUAL OFI)
get_filename_component(prefix ${${dep}_INCLUDE_DIRS}/.. ABSOLUTE) get_filename_component(prefix ${${dep}_INCLUDE_DIRS}/.. ABSOLUTE)
elseif(${dep} STREQUAL Doxygen)
get_target_property(doxygen_bin Doxygen::doxygen INTERFACE_LOCATION)
get_filename_component(prefix ${doxygen_bin} DIRECTORY)
get_filename_component(prefix ${prefix}/.. ABSOLUTE)
else() else()
get_filename_component(prefix ${${dep}_INCLUDE_DIR}/.. ABSOLUTE) get_filename_component(prefix ${${dep}_INCLUDE_DIR}/.. ABSOLUTE)
endif() endif()
message(STATUS " ${BWhite}${dep_padded}${CR}${version_padded}${prefix}") message(STATUS " ${BWhite}${dep_padded}${CR}${version_padded}${prefix}")
unset(version_str) unset(version_str)
unset(version_padded)
unset(version_req_str)
endforeach() endforeach()
endif()
message(STATUS " ") message(STATUS " ")
message(STATUS " ${Cyan}COMPONENT BUILT? INFO${CR}") message(STATUS " ${Cyan}COMPONENT BUILT? INFO${CR}")
message(STATUS " ${BWhite}fairmq${CR} ${BGreen}YES${CR} (default, always built)") if(BUILD_FAIRMQ)
set(fairmq_summary "${BGreen}YES${CR} (default, disable with ${BMagenta}-DBUILD_FAIRMQ=OFF${CR})")
else()
set(fairmq_summary "${BRed} NO${CR} (enable with ${BMagenta}-DBUILD_FAIRMQ=ON${CR})")
endif()
message(STATUS " ${BWhite}fairmq${CR} ${fairmq_summary}")
if(BUILD_TESTING) if(BUILD_TESTING)
set(tests_summary "${BGreen}YES${CR} (default, disable with ${BMagenta}-DBUILD_TESTING=OFF${CR})") set(tests_summary "${BGreen}YES${CR} (default, disable with ${BMagenta}-DBUILD_TESTING=OFF${CR})")
else() else()
@ -192,5 +242,11 @@ else()
set(examples_summary "${BRed} NO${CR} (enable with ${BMagenta}-DBUILD_EXAMPLES=ON${CR})") set(examples_summary "${BRed} NO${CR} (enable with ${BMagenta}-DBUILD_EXAMPLES=ON${CR})")
endif() endif()
message(STATUS " ${BWhite}examples${CR} ${examples_summary}") message(STATUS " ${BWhite}examples${CR} ${examples_summary}")
if(BUILD_DOCS)
set(docs_summary "${BGreen}YES${CR} (disable with ${BMagenta}-DBUILD_DOCS=OFF${CR})")
else()
set(docs_summary "${BRed} NO${CR} (default, enable with ${BMagenta}-DBUILD_DOCS=ON${CR})")
endif()
message(STATUS " ${BWhite}docs${CR} ${docs_summary}")
message(STATUS " ") message(STATUS " ")
################################################################################ ################################################################################

View File

@ -1,3 +1,4 @@
<!-- {#mainpage} -->
# FairMQ # FairMQ
C++ Message passing framework C++ Message passing framework
@ -34,6 +35,7 @@ a simulation, reconstruction and analysis framework.
* [**FairLogger**](https://github.com/FairRootGroup/FairLogger) (PUBLIC) * [**FairLogger**](https://github.com/FairRootGroup/FairLogger) (PUBLIC)
* [CMake](https://cmake.org/) (BUILD) * [CMake](https://cmake.org/) (BUILD)
* [GTest](https://github.com/google/googletest) (BUILD, optional, `tests`) * [GTest](https://github.com/google/googletest) (BUILD, optional, `tests`)
* [Doxygen](http://www.doxygen.org/) (BUILD, optional, `docs`)
* [ZeroMQ](http://zeromq.org/) (PRIVATE) * [ZeroMQ](http://zeromq.org/) (PRIVATE)
* [Msgpack](https://msgpack.org/index.html) (PRIVATE, optional, `nanomsg_transport`) * [Msgpack](https://msgpack.org/index.html) (PRIVATE, optional, `nanomsg_transport`)
* [nanomsg](http://nanomsg.org/) (PRIVATE, optional, `nanomsg_transport`) * [nanomsg](http://nanomsg.org/) (PRIVATE, optional, `nanomsg_transport`)

View File

@ -239,11 +239,13 @@ macro(install_cmake_package)
set(PACKAGE_INSTALL_DESTINATION set(PACKAGE_INSTALL_DESTINATION
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${PROJECT_VERSION} ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${PROJECT_VERSION}
) )
if(BUILD_FAIRMQ)
install(EXPORT ${PROJECT_EXPORT_SET} install(EXPORT ${PROJECT_EXPORT_SET}
NAMESPACE ${PROJECT_NAME}:: NAMESPACE ${PROJECT_NAME}::
DESTINATION ${PACKAGE_INSTALL_DESTINATION} DESTINATION ${PACKAGE_INSTALL_DESTINATION}
EXPORT_LINK_INTERFACE_LIBRARIES EXPORT_LINK_INTERFACE_LIBRARIES
) )
endif()
write_basic_package_version_file( write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
VERSION ${PROJECT_VERSION} VERSION ${PROJECT_VERSION}