X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=cmake%2FUseSphinx.cmake;h=02849f7d1b6b50e6e33c8fac6ccfbd47a7eaddb6;hb=ec11e17201ac1f690686f9337b9c1ab368e1f8df;hp=1ee25d18bebb22770ad49e75df60f4a8dde95508;hpb=6837f1ccd2e219dd7687353a900af961174a9c32;p=tools%2Fconfiguration.git diff --git a/cmake/UseSphinx.cmake b/cmake/UseSphinx.cmake index 1ee25d1..02849f7 100644 --- a/cmake/UseSphinx.cmake +++ b/cmake/UseSphinx.cmake @@ -1,8 +1,5 @@ ########################################################################### -# Copyright (C) 2007-2018 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -27,6 +24,22 @@ IF(NOT Sphinx_FOUND) MESSAGE(FATAL_ERROR "Developer error -> UseSphinx file should be included after detection of the sphinx!") ENDIF() +FUNCTION(SPHINX_CHECK_EXTENSIONS) + CMAKE_PARSE_ARGUMENTS(CHECK_EXTENSIONS "REQUIRED" "" "" ${ARGN}) + FOREACH(_ext ${CHECK_EXTENSIONS_UNPARSED_ARGUMENTS}) + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import ${_ext}; print('ok')" OUTPUT_VARIABLE _has_ext ERROR_QUIET) + IF(_has_ext) + MESSAGE(STATUS "Required Sphinx extension '${_ext}' has been found!") + ELSE() + IF(CHECK_EXTENSIONS_REQUIRED) + MESSAGE(FATAL_ERROR "Required Sphinx extension '${_ext}' is not found!") + ELSE() + MESSAGE(WARNING "Required Sphinx extension '${_ext}' is not found!") + ENDIF() + ENDIF() + ENDFOREACH() +ENDFUNCTION() + function(JOIN OUTPUT GLUE) set(_TMP_RESULT "") set(_GLUE "") # effective glue is empty at the beginning @@ -48,13 +61,15 @@ endfunction() # TARGET_NAME : IN : target name for the documentation # MODULE : IN : SALOME module name # LANGUAGES : IN : list of the languages +# ADDITIONAL_ENVIRONMENT: IN : list of additional enviromnent variable used +# for generation of the documentation #---------------------------------------------------------------------------- MACRO(ADD_MULTI_LANG_DOCUMENTATION) # Common options SET(PAPEROPT_a4 "-D latex_paper_size=a4") # Parse input argument - PARSE_ARGUMENTS(MULTI_LANG "TARGET_NAME;MODULE;LANGUAGES" "" ${ARGN}) + PARSE_ARGUMENTS(MULTI_LANG "TARGET_NAME;MODULE;LANGUAGES;ADDITIONAL_ENVIRONMENT" "" ${ARGN}) # Content of the executable file to generate documentation SET(CMDS) @@ -90,36 +105,17 @@ MACRO(ADD_MULTI_LANG_DOCUMENTATION) ENDFOREACH() # 6. Create command file + SET(_script_wo "build_doc") IF(WIN32) SET(_ext "bat") - SET(_call_cmd "call") ELSE() SET(_ext "sh") - SET(_call_cmd ".") ENDIF() - - SET(_env) - FOREACH(_item ${_${PROJECT_NAME}_EXTRA_ENV}) - FOREACH(_val ${_${PROJECT_NAME}_EXTRA_ENV_${_item}}) - IF(WIN32) - IF(${_item} STREQUAL "LD_LIBRARY_PATH") - SET(_item PATH) - ENDIF() - STRING(REPLACE "/" "\\" _env "${_env} @SET ${_item}=${_val};%${_item}%\n") - ELSEIF(APPLE) - IF(${_item} STREQUAL "LD_LIBRARY_PATH") - SET(_env "${_env} export DYLD_LIBRARY_PATH=${_val}:\${DYLD_LIBRARY_PATH}\n") - ELSE() - SET(_env "${_env} export ${_item}=${_val}:\${${_item}}\n") - ENDIF() - ELSE() - SET(_env "${_env} export ${_item}=${_val}:\${${_item}}\n") - ENDIF() - ENDFOREACH() - ENDFOREACH() - - SET(_script ${CMAKE_CURRENT_BINARY_DIR}/build_doc.${_ext}) - FILE(WRITE ${_script} ${_env}${CMDS}) + SET(_script "${_script_wo}.${_ext}") + + SALOME_GENERATE_ENVIRONMENT_SCRIPT(_not_used_output ${_script_wo} "" "" CONTEXT "${MULTI_LANG_TARGET_NAME}" CONTEXT_NAME "DO_GENERATION" ADDITIONAL_VARIABLES ${MULTI_LANG_ADDITIONAL_ENVIRONMENT}) + + FILE(APPEND ${_script} "${CMDS}") # 7. Create custom target ADD_CUSTOM_TARGET(${MULTI_LANG_TARGET_NAME} @@ -150,4 +146,4 @@ MACRO(ADD_MULTI_LANG_DOCUMENTATION) ENDFOREACH() SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}") -ENDMACRO(ADD_MULTI_LANG_DOCUMENTATION) \ No newline at end of file +ENDMACRO(ADD_MULTI_LANG_DOCUMENTATION)