diff --git a/CMakeLists.txt b/CMakeLists.txt index 31d67ae1e..917ea805d 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,7 +46,17 @@ option(SLS_BUILD_DOCS "docs" OFF) option(SLS_BUILD_EXAMPLES "examples" OFF) option(SLS_TUNE_LOCAL "tune to local machine" OFF) - +# Use ld.gold if it is available and isn't disabled explicitly +option(SLS_USE_LD_GOLD "Use GNU gold linker" ON) +if (SLS_USE_LD_GOLD) + execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) + if ("${LD_VERSION}" MATCHES "GNU gold") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold") + else () + message(WARNING "GNU gold linker isn't available, using the default system linker.") + endif () +endif () set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index a81df2b7f..a37acd1e3 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,71 +1,69 @@ -find_package(Doxygen) -find_package(Sphinx) +find_package(Doxygen REQUIRED) +find_package(Sphinx REQUIRED) -if (DOXYGEN_FOUND AND SPHINX_FOUND) - # message(${CMAKE_PROJECT_SORURCE_DIR}/slsDetectorSoftware/src) - # Utility to generate command line documentation - add_executable(gendoc src/gendoc.cpp) - # This is a bit hacky, but better than exposing stuff? - target_include_directories(gendoc PRIVATE ${PROJECT_SOURCE_DIR}/slsDetectorSoftware/src) - target_link_libraries(gendoc PRIVATE - slsDetectorShared - ) - set_target_properties(gendoc PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - ) - - - #Doxygen - set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) - set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) +# Utility to generate command line documentation +add_executable(gendoc src/gendoc.cpp) +# This is a bit hacky, but better than exposing stuff? +target_include_directories(gendoc PRIVATE ${PROJECT_SOURCE_DIR}/slsDetectorSoftware/src) +target_link_libraries(gendoc PRIVATE + slsDetectorShared +) +set_target_properties(gendoc PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin +) - #Sphinx - set(SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src) - set(SPHINX_BUILD ${CMAKE_CURRENT_BINARY_DIR}) - set(SPHINX_SOURCE_FILES - src/commandline.rst - src/container_utils.rst - src/consuming.rst - src/dependencies.rst - src/detector.rst - src/index.rst - src/installation.rst - src/pydetector.rst - src/pyenums.rst - src/pyexamples.rst - src/receiver.rst - src/result.rst - src/type_traits.rst - src/ToString.rst - src/examples.rst - - ) - foreach(filename ${SPHINX_SOURCE_FILES}) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${filename} - "${SPHINX_BUILD}/${filename}") - endforeach(filename ${SPHINX_SOURCE_FILES}) - configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in" - "${SPHINX_BUILD}/conf.py" - @ONLY) +#Doxygen +set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) +set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) +configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) + +#Sphinx +set(SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src) +set(SPHINX_BUILD ${CMAKE_CURRENT_BINARY_DIR}) + +set(SPHINX_SOURCE_FILES + src/commandline.rst + src/container_utils.rst + src/consuming.rst + src/dependencies.rst + src/detector.rst + src/index.rst + src/installation.rst + src/pydetector.rst + src/pyenums.rst + src/pyexamples.rst + src/receiver.rst + src/result.rst + src/type_traits.rst + src/ToString.rst + src/examples.rst + +) + +foreach(filename ${SPHINX_SOURCE_FILES}) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${filename} + "${SPHINX_BUILD}/${filename}") +endforeach(filename ${SPHINX_SOURCE_FILES}) + +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in" + "${SPHINX_BUILD}/conf.py" + @ONLY) + +add_custom_target(docs + gendoc + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} + COMMAND ${SPHINX_EXECUTABLE} -a -b html + -Dbreathe_projects.slsDetectorPackage=${CMAKE_CURRENT_BINARY_DIR}/xml + -c "${SPHINX_BUILD}" + ${SPHINX_BUILD}/src + ${SPHINX_BUILD}/html + COMMENT "Generating documentation with Sphinx") - add_custom_target(docs - gendoc - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} - COMMAND ${SPHINX_EXECUTABLE} -a -b html - -Dbreathe_projects.slsDetectorPackage=${CMAKE_CURRENT_BINARY_DIR}/xml - -c "${SPHINX_BUILD}" - ${SPHINX_BUILD}/src - ${SPHINX_BUILD}/html - COMMENT "Generating documentation with Sphinx") -else (DOXYGEN_FOUND AND SPHINX_FOUND) - message("Doxygen and Sphinx are needed to build documentation") -endif (DOXYGEN_FOUND AND SPHINX_FOUND)