diff --git a/.github/actions/build-docs/action.yml b/.github/actions/build-docs/action.yml index 13e47251dc..65b7ddb895 100644 --- a/.github/actions/build-docs/action.yml +++ b/.github/actions/build-docs/action.yml @@ -10,37 +10,59 @@ runs: choco install -y doxygen.install shell: pwsh - - name: Build refman documentation + - name: Download and extract 3rdparty dependencies run: | - set PATH=%PATH%;C:\Program Files\doxygen\bin;C:\Program Files\Graphviz\bin;C:\Program Files\doxygen - cd adm - bash gendoc -refman + Invoke-WebRequest -Uri https://github.com/Open-Cascade-SAS/OCCT/releases/download/V7_9_0_beta1/3rdparty-vc14-64.zip -OutFile 3rdparty-vc14-64.zip + Expand-Archive -Path 3rdparty-vc14-64.zip -DestinationPath . + Remove-Item 3rdparty-vc14-64.zip + shell: pwsh + + - name: Configure OCCT + run: | + mkdir build + cd build + cmake -T host=x64 ` + -D USE_FREETYPE=ON ` + -D USE_TK=OFF ` + -D BUILD_USE_PCH=ON ` + -D BUILD_OPT_PROFILE=Production ` + -D BUILD_INCLUDE_SYMLINK=ON ` + -D CMAKE_BUILD_TYPE=Release ` + -D BUILD_DOC_Overview=ON ` + -D BUILD_DOC_RefMan=ON ` + -D 3RDPARTY_DIR=${{ github.workspace }}/3rdparty-vc14-64 ` + -D INSTALL_DIR=${{ github.workspace }}/install ` + -D USE_D3D=ON ` + -D USE_DRACO=ON ` + -D USE_FFMPEG=ON ` + -D USE_FREEIMAGE=ON ` + -D USE_GLES2=ON ` + -D USE_OPENVR=ON ` + -D USE_VTK=ON ` + -D USE_TBB=ON ` + -D USE_RAPIDJSON=ON ` + -D USE_OPENGL=ON ` + -D CMAKE_CXX_FLAGS="/W4 /WX" ` + -D CMAKE_C_FLAGS="/W4 /WX" .. + shell: pwsh + + - name: Build documentation + run: | + set PATH=%PATH%;C:\Program Files\doxygen\bin;C:\Program Files\Graphviz\bin;C:\Program Files\doxygen + cd build + cmake --build . --target doc --config Release shell: cmd - name: Upload refman documentation uses: actions/upload-artifact@v4.4.3 with: name: refman-doc - path: doc/refman + path: build/doc/refman retention-days: 90 - - name: Upload generation log - uses: actions/upload-artifact@v4.4.3 - with: - name: doxygen.log - path: doc/html_doxygen_err.log - retention-days: 90 - - - name: Build documentation Overview - run: | - set PATH=%PATH%;C:\Program Files\doxygen\bin;C:\Program Files\Graphviz\bin;C:\Program Files\doxygen - cd adm - bash gendoc -overview - shell: cmd - - name: Upload overview documentation uses: actions/upload-artifact@v4.4.3 with: name: overview-doc - path: doc/overview + path: build/doc/overview retention-days: 90 diff --git a/CMakeLists.txt b/CMakeLists.txt index c3f730e430..cda0db459c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -225,6 +225,15 @@ if (NOT DEFINED BUILD_DOC_Overview) set (BUILD_DOC_Overview OFF CACHE BOOL "${BUILD_DOC_Overview_DESCR}") endif() +# Reference Manual +if (NOT DEFINED BUILD_DOC_RefMan) + set (BUILD_DOC_RefMan OFF CACHE BOOL "${BUILD_DOC_RefMan_DESCR}") +endif() + +if (NOT DEFINED INSTALL_DOC_RefMan) + set (INSTALL_DOC_RefMan OFF CACHE BOOL "${INSTALL_DOC_RefMan_DESCR}") +endif() + if (CMAKE_VERSION VERSION_LESS "3.14") OCCT_CHECK_AND_UNSET (BUILD_INCLUDE_SYMLINK) endif() @@ -702,7 +711,7 @@ else() endif() # Doxygen -if (BUILD_DOC_Overview) +if (BUILD_DOC_Overview OR BUILD_DOC_RefMan) if (NOT DEFINED INSTALL_DOC_Overview) set (INSTALL_DOC_Overview OFF CACHE BOOL "${INSTALL_DOC_Overview_DESCR}") endif() @@ -710,7 +719,7 @@ if (BUILD_DOC_Overview) list (APPEND OCCT_3RDPARTY_CMAKE_LIST "adm/cmake/doxygen") else() OCCT_CHECK_AND_UNSET ("INSTALL_DOC_Overview") - + OCCT_CHECK_AND_UNSET ("INSTALL_DOC_RefMan") OCCT_CHECK_AND_UNSET ("3RDPARTY_DOXYGEN_EXECUTABLE") OCCT_CHECK_AND_UNSET ("3RDPARTY_DOT_EXECUTABLE") endif() @@ -1175,7 +1184,9 @@ foreach (BUILD_TOOLKIT ${BUILD_TOOLKITS}) endforeach() if (BUILD_DOC_Overview) - OCCT_ADD_SUBDIRECTORY (dox) + OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_doc") + # Setup documentation targets + OCCT_SETUP_DOC_TARGETS() endif() # patch DRAWEXE diff --git a/adm/UDLIST b/adm/UDLIST deleted file mode 100644 index 6a1f6da335..0000000000 --- a/adm/UDLIST +++ /dev/null @@ -1,475 +0,0 @@ -n NCollection -n BSplCLib -n BSplSLib -n Bnd -n BVH -n CSLib -n Convert -n ElCLib -n ElSLib -n Expr -n ExprIntrp -n FSD -n GeomAbs -n Message -n OSD -n PLib -n Plugin -n Poly -n Precision -n Quantity -n Resource -n Standard -n StdFail -n Storage -n TColStd -n TColgp -n TCollection -n TShort -n TopLoc -n Units -n UnitsAPI -n gp -n math -r OS -n FlexLexer -t TKMath -t TKernel -n Adaptor2d -n Adaptor3d -n AdvApp2Var -n AdvApprox -n AppCont -n AppDef -n AppParCurves -n Approx -n BRep -n BRepAdaptor -n BRepLProp -n BRepTools -n BndLib -n CPnts -n Extrema -n FEmTool -n GC -n GCE2d -n GCPnts -n GProp -n Geom -n Geom2d -n Geom2dAdaptor -n Geom2dConvert -n Geom2dLProp -n GeomAdaptor -n GeomConvert -n GeomLProp -n GeomLib -n GeomProjLib -n GeomTools -n GeomEvaluator -n Hermit -n IntAna -n IntAna2d -n LProp -n LProp3d -n ProjLib -n TColGeom -n TColGeom2d -n TopAbs -n TopExp -n TopTools -n TopoDS -n gce -t TKBRep -t TKG2d -t TKG3d -t TKGeomBase -n AppBlend -n ApproxInt -n BOPTools -n BRepAlgo -n BRepAlgoAPI -n BRepApprox -n BRepBlend -n BRepBndLib -n BRepBuilderAPI -n BRepCheck -n BRepClass -n BRepClass3d -n BRepExtrema -n BRepFeat -n BRepFill -n BRepFilletAPI -n BRepGProp -n BRepIntCurveSurface -n BRepLib -n BRepMAT2d -n BRepMesh -n BRepMeshData -n BRepOffset -n BRepOffsetAPI -n BRepPreviewAPI -n BRepPrim -n BRepPrimAPI -n BRepProj -n BRepSweep -n BRepTopAdaptor -n BiTgte -n Bisector -n Blend -n BlendFunc -n ChFi2d -n ChFi3d -n ChFiDS -n ChFiKPart -n Contap -n Draft -n FairCurve -n FilletSurf -n GccAna -n GccEnt -n GccInt -n Geom2dAPI -n Geom2dGcc -n Geom2dHatch -n Geom2dInt -n GeomAPI -n GeomFill -n GeomInt -n GeomPlate -n HLRAlgo -n HLRBRep -n HLRTopoBRep -n HLRAppli -n Hatch -n HatchGen -n IMeshData -n IMeshTools -n IntCurve -n IntCurveSurface -n IntCurvesFace -n IntImp -n IntImpParGen -n IntPatch -n IntPolyh -n IntRes2d -n IntStart -n IntSurf -n IntTools -n IntWalk -n Intf -n Intrv -n Law -n LocOpe -n LocalAnalysis -n MAT -n MAT2d -n NLPlate -n Plate -n ShapeAlgo -n ShapeAnalysis -n ShapeBuild -n ShapeConstruct -n ShapeCustom -n ShapeExtend -n ShapeFix -n ShapeProcess -n ShapeProcessAPI -n ShapeUpgrade -n Sweep -n TopBas -n TopClass -n TopCnx -n TopOpeBRep -n TopOpeBRepBuild -n TopOpeBRepDS -n TopOpeBRepTool -n TopTrans -n XBRepMesh -t TKBO -t TKBool -t TKFeat -t TKFillet -t TKGeomAlgo -t TKHLR -t TKMesh -t TKOffset -t TKPrim -t TKShHealing -t TKTopAlgo -t TKXMesh -n AIS -n Aspect -n DsgPrs -n PrsDim -n Graphic3d -n Image -n Media -n MeshVS -n OpenGl -n OpenGles -n D3DHost -n Prs3d -n PrsMgr -n Select3D -n SelectBasics -n SelectMgr -n StdPrs -n StdSelect -n V3d -n Wasm -n WNT -n Xw -n Cocoa -r Textures -r Shaders -r XRResources -t TKMeshVS -t TKOpenGl -t TKOpenGles -t TKD3DHost -t TKService -t TKV3d -n BinTObjDrivers -n LDOM -n TObj -n XmlTObjDrivers -n AppStd -n AppStdL -n BinDrivers -n BinLDrivers -n BinMDF -n BinMDataStd -n BinMDataXtd -n BinMDocStd -n BinMFunction -n BinMNaming -n BinObjMgt -n BinTools -n CDF -n CDM -n PCDM -n StdLDrivers -n StdLPersistent -n StdObjMgt -n StdDrivers -n StdObject -n StdPersistent -n StdStorage -n ShapePersistent -n TDF -n TDataStd -n TDataXtd -n TDocStd -n TFunction -n TNaming -n TPrsStd -n UTL -n XmlDrivers -n XmlLDrivers -n XmlMDF -n XmlMDataStd -n XmlMDataXtd -n XmlMDocStd -n XmlMFunction -n XmlMNaming -n XmlObjMgt -r StdResource -r XmlOcafResource - -t TKBin -t TKBinL -t TKBinTObj -t TKCAF -t TKCDF -t TKLCAF - -t TKStdL -t TKStd -t TKTObj -t TKXml -t TKXmlL -t TKXmlTObj -n IGESFile -n StepFile -n APIHeaderSection -n BRepToIGES -n BRepToIGESBRep -n BinMXCAFDoc -n BinXCAFDrivers -n Geom2dToIGES -n GeomToIGES -n GeomToStep -n HeaderSection -n IFGraph -n IFSelect -n IGESAppli -n IGESBasic -n IGESCAFControl -n IGESControl -n IGESConvGeom -n IGESData -n IGESDefs -n IGESDimen -n IGESDraw -n IGESGeom -n IGESGraph -n IGESSelect -n IGESSolid -n IGESToBRep -n Interface -n LibCtl -n MoniTool -n RWHeaderSection -n RWStepAP203 -n RWStepAP214 -n RWStepAP242 -n RWStepBasic -n RWStepDimTol -n RWStepElement -n RWStepFEA -n RWStepGeom -n RWStepKinematics -n RWStepRepr -n RWStepShape -n RWStepVisual -n RWStl -n STEPCAFControl -n STEPConstruct -n STEPControl -n STEPEdit -n STEPSelections -n StepAP203 -n StepAP209 -n StepAP214 -n StepAP242 -n StepBasic -n StepData -n StepDimTol -n StepElement -n StepFEA -n StepGeom -n StepKinematics -n StepRepr -n StepSelect -n StepShape -n StepToGeom -n StepToTopoDS -n StepVisual -n StlAPI -n TopoDSToStep -n Transfer -n TransferBRep -n UnitsMethods -n Vrml -n VrmlAPI -n VrmlConverter -n VrmlData -n XCAFApp -n XCAFDimTolObjects -n XCAFDoc -n XCAFPrs -n XSAlgo -n XSControl -n XmlMXCAFDoc -n XmlXCAFDrivers -r SHMessage -r XSMessage -r XSTEPResource -t TKBinXCAF -t TKDESTL -t TKDEVRML -t TKXCAF -t TKDE -t TKDECascade -t TKDEIGES -t TKDESTEP -t TKXSBase -t TKXmlXCAF -n BOPTest -n BRepTest -n DBRep -n DDF -n DDataStd -n DDocStd -n DE -n DEXCAFCascade -n DEBRepCascade -n DNaming -n DPrsStd -n Draw -n DrawDim -n DrawFairCurve -n DrawTrSurf -n GeometryTest -n GeomliteTest -n HLRTest -n MeshTest -n SWDRAW -n TObjDRAW -n OpenGlTest -n OpenGlesTest -n D3DHostTest -n ViewerTest -n XDEDRAW -n XSDRAW -n XSDRAWIGES -n XSDRAWSTEP -n XSDRAWSTL -n XSDRAWVRML -n XSDRAWDE -n XSDRAWGLTF -n XSDRAWOBJ -n XSDRAWPLY -r DrawResources -t TKDCAF -t TKDraw -t TKTObjDRAW -t TKTopTest -t TKOpenGlTest -t TKOpenGlesTest -t TKD3DHostTest -t TKViewerTest -t TKXDEDRAW -t TKXSDRAW -t TKXSDRAWIGES -t TKXSDRAWSTEP -t TKXSDRAWSTL -t TKXSDRAWVRML -t TKXSDRAWDE -t TKXSDRAWGLTF -t TKXSDRAWOBJ -t TKXSDRAWPLY -x DRAWEXE -n QADraw -n QANCollection -n QANewBRepNaming -n QANewDBRepNaming -n QANewModTopOpe -t TKQADraw -n QADNaming -n QABugs -n Font -n BOPAlgo -n BOPDS -n BOPCol -n IVtk -n IVtkOCC -n IVtkVTK -n IVtkTools -t TKIVtk -n IVtkDraw -t TKIVtkDraw -n Geom2dEvaluator -t TKVCAF -n XCAFView -n XCAFNoteObjects -t TKRWMesh -t TKDEGLTF -t TKDEOBJ -t TKDEPLY -n RWGltf -n RWMesh -n RWObj -n RWPly -t TKExpress diff --git a/adm/cmake/occt_doc.cmake b/adm/cmake/occt_doc.cmake new file mode 100644 index 0000000000..f0b7fe5575 --- /dev/null +++ b/adm/cmake/occt_doc.cmake @@ -0,0 +1,655 @@ +## + +# Function to collect modules, toolkits, and packages information for documentation +function(OCCT_DOC_COLLECT_MODULES_INFO) + # Set output variables in parent scope + set(OCCT_MODULES ${OCCT_MODULES} PARENT_SCOPE) + + # For each module, collect its toolkits + foreach(OCCT_MODULE ${OCCT_MODULES}) + if(NOT "${OCCT_MODULE}" STREQUAL "") + set(MODULES_TOOLKITS ${${OCCT_MODULE}_TOOLKITS}) + set(TOOLKITS_IN_MODULE_${OCCT_MODULE} ${MODULES_TOOLKITS} PARENT_SCOPE) + + # For each toolkit, collect its packages + foreach(TOOLKIT ${MODULES_TOOLKITS}) + set(TOOLKIT_PARENT_MODULE_${TOOLKIT} ${OCCT_MODULE} PARENT_SCOPE) + + # Get packages from toolkit + set(TOOLKIT_PACKAGES "") + EXTRACT_TOOLKIT_PACKAGES("src" ${TOOLKIT} TOOLKIT_PACKAGES) + set(PACKAGES_IN_TOOLKIT_${TOOLKIT} ${TOOLKIT_PACKAGES} PARENT_SCOPE) + endforeach() + endif() + endforeach() +endfunction() + +# Function to generate module dependency graph +function(OCCT_DOC_CREATE_MODULE_DEPENDENCY_GRAPH OUTPUT_DIR FILENAME) + set(DOT_FILE "${OUTPUT_DIR}/${FILENAME}.dot") + + # Create .dot file for module dependencies + file(WRITE ${DOT_FILE} "digraph ${FILENAME}\n{\n") + + foreach(MODULE ${OCCT_MODULES}) + if(NOT "${MODULE}" STREQUAL "") + file(APPEND ${DOT_FILE} "\t${MODULE} [ URL = \"module_${MODULE}.html\" ]\n") + + # Add dependencies between modules + foreach(MODULE_TOOLKIT ${TOOLKITS_IN_MODULE_${MODULE}}) + foreach(DEPENDENT_TOOLKIT ${TOOLKIT_DEPENDENCY_${MODULE_TOOLKIT}}) + if(DEFINED TOOLKIT_PARENT_MODULE_${DEPENDENT_TOOLKIT} AND + NOT "${TOOLKIT_PARENT_MODULE_${DEPENDENT_TOOLKIT}}" STREQUAL "${MODULE}") + file(APPEND ${DOT_FILE} "\t${TOOLKIT_PARENT_MODULE_${DEPENDENT_TOOLKIT}} -> ${MODULE} [ dir = \"back\", color = \"midnightblue\", style = \"solid\" ]\n") + endif() + endforeach() + endforeach() + endif() + endforeach() + + file(APPEND ${DOT_FILE} "}\n") + + # Return the output file name + set(DOT_OUTPUT_FILE "${FILENAME}" PARENT_SCOPE) +endfunction() + +# Function to generate toolkit dependency graph for a module +function(OCCT_DOC_CREATE_TOOLKIT_DEPENDENCY_GRAPH OUTPUT_DIR FILENAME MODULE_NAME) + set(DOT_FILE "${OUTPUT_DIR}/${FILENAME}.dot") + + # Create .dot file for toolkit dependencies within a module + file(WRITE ${DOT_FILE} "digraph ${FILENAME}\n{\n") + + foreach(TOOLKIT ${TOOLKITS_IN_MODULE_${MODULE_NAME}}) + file(APPEND ${DOT_FILE} "\t${TOOLKIT} [ URL = \"toolkit_${TOOLKIT}.html\" ]\n") + + # Add dependencies between toolkits in the same module + foreach(DEPENDENT_TOOLKIT ${TOOLKIT_DEPENDENCY_${TOOLKIT}}) + if(DEFINED TOOLKIT_PARENT_MODULE_${DEPENDENT_TOOLKIT} AND + "${TOOLKIT_PARENT_MODULE_${DEPENDENT_TOOLKIT}}" STREQUAL "${MODULE_NAME}") + file(APPEND ${DOT_FILE} "\t${DEPENDENT_TOOLKIT} -> ${TOOLKIT} [ dir = \"back\", color = \"midnightblue\", style = \"solid\" ]\n") + endif() + endforeach() + endforeach() + + file(APPEND ${DOT_FILE} "}\n") + + # Return the output file name + set(DOT_OUTPUT_FILE "${FILENAME}" PARENT_SCOPE) +endfunction() + +# Function to generate dependency graph for a specific toolkit +function(OCCT_DOC_CREATE_SINGLE_TOOLKIT_DEPENDENCY_GRAPH OUTPUT_DIR FILENAME TOOLKIT_NAME) + set(DOT_FILE "${OUTPUT_DIR}/${FILENAME}.dot") + + # Create .dot file for dependencies of a single toolkit + file(WRITE ${DOT_FILE} "digraph ${FILENAME}\n{\n") + + file(APPEND ${DOT_FILE} "\t${TOOLKIT_NAME} [ URL = \"toolkit_${TOOLKIT_NAME}.html\", shape = box ]\n") + + # Add toolkit dependencies + foreach(DEPENDENT_TOOLKIT ${TOOLKIT_DEPENDENCY_${TOOLKIT_NAME}}) + file(APPEND ${DOT_FILE} "\t${DEPENDENT_TOOLKIT} [ URL = \"toolkit_${DEPENDENT_TOOLKIT}.html\", shape = box ]\n") + file(APPEND ${DOT_FILE} "\t${TOOLKIT_NAME} -> ${DEPENDENT_TOOLKIT} [ color = \"midnightblue\", style = \"solid\" ]\n") + endforeach() + + if(TOOLKIT_DEPENDENCY_${TOOLKIT_NAME}) + list(LENGTH TOOLKIT_DEPENDENCY_${TOOLKIT_NAME} DEPS_COUNT) + if(DEPS_COUNT GREATER 1) + file(APPEND ${DOT_FILE} "\taspect = 1\n") + endif() + endif() + + file(APPEND ${DOT_FILE} "}\n") + + # Return the output file name + set(DOT_OUTPUT_FILE "${FILENAME}" PARENT_SCOPE) +endfunction() + +# Function to generate main page for documentation +function(OCCT_DOC_GENERATE_MAIN_PAGE OUTPUT_DIR OUTPUT_FILE) + set(MAIN_PAGE_FILE "${OUTPUT_DIR}/${OUTPUT_FILE}") + file(WRITE ${MAIN_PAGE_FILE} "/**\n") + + # Check if we're generating documentation for a single module + if(DOC_SINGLE_MODULE) + file(APPEND ${MAIN_PAGE_FILE} "\\mainpage OCCT Module ${DOC_SINGLE_MODULE}\n") + else() + file(APPEND ${MAIN_PAGE_FILE} "\\mainpage Open CASCADE Technology Reference Manual\n\n") + # List all modules + foreach(MODULE ${OCCT_MODULES}) + if(NOT "${MODULE}" STREQUAL "") + file(APPEND ${MAIN_PAGE_FILE} "\\li \\subpage module_${MODULE}\n") + endif() + endforeach() + # Add modules relationship diagram + OCCT_DOC_CREATE_MODULE_DEPENDENCY_GRAPH("${OUTPUT_DIR}/html" "schema_all_modules") + file(APPEND ${MAIN_PAGE_FILE} "\\dotfile schema_all_modules.dot\n") + endif() + + file(APPEND ${MAIN_PAGE_FILE} "**/\n\n") + + # Generate pages for modules and their toolkits + foreach(MODULE ${OCCT_MODULES}) + if(NOT "${MODULE}" STREQUAL "") + file(APPEND ${MAIN_PAGE_FILE} "/**\n") + + if(DOC_SINGLE_MODULE) + file(APPEND ${MAIN_PAGE_FILE} "\\mainpage OCCT Module ${MODULE}\n") + else() + file(APPEND ${MAIN_PAGE_FILE} "\\page module_${MODULE} Module ${MODULE}\n") + endif() + + # List toolkits in the module + foreach(TOOLKIT ${TOOLKITS_IN_MODULE_${MODULE}}) + file(APPEND ${MAIN_PAGE_FILE} "\\li \\subpage toolkit_${TOOLKIT}\n") + endforeach() + + # Add module diagram + OCCT_DOC_CREATE_TOOLKIT_DEPENDENCY_GRAPH("${OUTPUT_DIR}/html" "schema_${MODULE}" ${MODULE}) + file(APPEND ${MAIN_PAGE_FILE} "\\dotfile schema_${MODULE}.dot\n") + file(APPEND ${MAIN_PAGE_FILE} "**/\n\n") + endif() + endforeach() + + # Generate pages for toolkits and their packages + foreach(MODULE ${OCCT_MODULES}) + if(NOT "${MODULE}" STREQUAL "") + foreach(TOOLKIT ${TOOLKITS_IN_MODULE_${MODULE}}) + file(APPEND ${MAIN_PAGE_FILE} "/**\n") + file(APPEND ${MAIN_PAGE_FILE} "\\page toolkit_${TOOLKIT} Toolkit ${TOOLKIT}\n") + + # List packages in toolkit + foreach(PACKAGE ${PACKAGES_IN_TOOLKIT_${TOOLKIT}}) + set(PACKAGE_NAME ${PACKAGE}) + file(APPEND ${MAIN_PAGE_FILE} "\\li \\subpage package_${PACKAGE_NAME}\n") + endforeach() + + # Add toolkit dependencies diagram + OCCT_DOC_CREATE_SINGLE_TOOLKIT_DEPENDENCY_GRAPH("${OUTPUT_DIR}/html" "schema_${TOOLKIT}" ${TOOLKIT}) + file(APPEND ${MAIN_PAGE_FILE} "\\dotfile schema_${TOOLKIT}.dot\n") + file(APPEND ${MAIN_PAGE_FILE} "**/\n\n") + endforeach() + endif() + endforeach() + + # Generate pages for packages and their classes + foreach(MODULE ${OCCT_MODULES}) + if(NOT "${MODULE}" STREQUAL "") + foreach(TOOLKIT ${TOOLKITS_IN_MODULE_${MODULE}}) + foreach(PACKAGE ${PACKAGES_IN_TOOLKIT_${TOOLKIT}}) + file(APPEND ${MAIN_PAGE_FILE} "/**\n") + file(APPEND ${MAIN_PAGE_FILE} "\\page package_${PACKAGE} Package ${PACKAGE}\n") + + # Find header files in the package + file(GLOB PACKAGE_HEADERS "${CMAKE_SOURCE_DIR}/src/${PACKAGE}/*.hxx") + foreach(HEADER ${PACKAGE_HEADERS}) + get_filename_component(HEADER_NAME ${HEADER} NAME_WE) + if(NOT HEADER_NAME MATCHES "^Handle_" AND NOT HEADER_NAME MATCHES "^Standard$") + file(APPEND ${MAIN_PAGE_FILE} "\\li \\subpage ${HEADER_NAME}\n") + # Append header file to DOXYGEN_INPUT_FILES list + list(APPEND DOXYGEN_INPUT_FILES "${HEADER}") + endif() + endforeach() + + file(APPEND ${MAIN_PAGE_FILE} "**/\n\n") + endforeach() + endforeach() + endif() + endforeach() + + # Create a variable containing all input files for Doxygen + string(REPLACE ";" " " DOXYGEN_INPUT_FILES_STRING "${DOXYGEN_INPUT_FILES}") + set(DOXYGEN_INPUT_FILES_STRING ${DOXYGEN_INPUT_FILES_STRING} PARENT_SCOPE) +endfunction() + +# Function to extract dependency information for toolkits +function(OCCT_DOC_EXTRACT_TOOLKIT_DEPENDENCIES) + foreach(MODULE ${OCCT_MODULES}) + if(NOT "${MODULE}" STREQUAL "") + foreach(TOOLKIT ${TOOLKITS_IN_MODULE_${MODULE}}) + EXTRACT_TOOLKIT_EXTERNLIB("src" ${TOOLKIT} EXTERNLIB_LIST) + + set(DEPENDENT_TOOLKITS "") + foreach(EXTERNLIB ${EXTERNLIB_LIST}) + if(EXTERNLIB MATCHES "^TK") + list(APPEND DEPENDENT_TOOLKITS ${EXTERNLIB}) + endif() + endforeach() + + set(TOOLKIT_DEPENDENCY_${TOOLKIT} ${DEPENDENT_TOOLKITS} PARENT_SCOPE) + endforeach() + endif() + endforeach() +endfunction() + +# Function to load file lists for documentation +function(OCCT_DOC_LOAD_FILE_LISTS) + # Load list of HTML documentation files + set(FILES_HTML_PATH "${CMAKE_SOURCE_DIR}/dox/FILES_HTML.txt") + if(EXISTS ${FILES_HTML_PATH}) + file(STRINGS ${FILES_HTML_PATH} HTML_FILES REGEX "^[^#]+") + set(OCCT_DOC_HTML_FILES ${HTML_FILES} PARENT_SCOPE) + else() + set(OCCT_DOC_HTML_FILES "" PARENT_SCOPE) + endif() + + # Load list of PDF documentation files + set(FILES_PDF_PATH "${CMAKE_SOURCE_DIR}/dox/FILES_PDF.txt") + if(EXISTS ${FILES_PDF_PATH}) + file(STRINGS ${FILES_PDF_PATH} PDF_FILES REGEX "^[^#]+") + set(OCCT_DOC_PDF_FILES ${PDF_FILES} PARENT_SCOPE) + else() + set(OCCT_DOC_PDF_FILES "" PARENT_SCOPE) + endif() +endfunction() + +# Function to collect image directories from input files +function(OCCT_DOC_COLLECT_IMAGE_DIRS INPUT_DIRS RESULT_IMAGE_DIRS) + set(IMAGE_DIRS "") + + foreach(INPUT_DIR ${INPUT_DIRS}) + # Check if directory exists + if(EXISTS "${INPUT_DIR}") + # Add the standard "images" subdirectory if it exists + if(EXISTS "${INPUT_DIR}/images") + list(APPEND IMAGE_DIRS "${INPUT_DIR}/images") + endif() + + # Find all subdirectories containing images + file(GLOB_RECURSE IMAGE_FILES + "${INPUT_DIR}/*.png" + "${INPUT_DIR}/*.jpg" + "${INPUT_DIR}/*.jpeg" + "${INPUT_DIR}/*.gif" + "${INPUT_DIR}/*.svg") + + foreach(IMAGE_FILE ${IMAGE_FILES}) + get_filename_component(IMAGE_DIR ${IMAGE_FILE} DIRECTORY) + list(APPEND IMAGE_DIRS "${IMAGE_DIR}") + endforeach() + endif() + endforeach() + + if(IMAGE_DIRS) + list(REMOVE_DUPLICATES IMAGE_DIRS) + endif() + + set(${RESULT_IMAGE_DIRS} ${IMAGE_DIRS} PARENT_SCOPE) +endfunction() + +# Function to configure and run Doxygen for documentation generation +function(OCCT_DOC_CONFIGURE_DOXYGEN OUTPUT_DIR CONFIG_FILE DOC_TYPE) + # Create output directory if it doesn't exist + file(MAKE_DIRECTORY ${OUTPUT_DIR}) + + # Use existing Doxygen template file as base + if(DOC_TYPE STREQUAL "OVERVIEW") + set(TEMPLATE_DOXYFILE "${CMAKE_SOURCE_DIR}/dox/resources/occt_ug_html.doxyfile") + else() + set(TEMPLATE_DOXYFILE "${CMAKE_SOURCE_DIR}/dox/resources/occt_rm.doxyfile") + endif() + + # Define Doxygen parameters that need to be overridden from the template + set(DOXYGEN_CONFIG_FILE "${OUTPUT_DIR}/${CONFIG_FILE}") + + # Check if template file exists + if(NOT EXISTS ${TEMPLATE_DOXYFILE}) + message(FATAL_ERROR "ERROR: Doxygen template file not found: ${TEMPLATE_DOXYFILE}") + return() + endif() + + # Read template content + file(READ ${TEMPLATE_DOXYFILE} DOXYGEN_TEMPLATE_CONTENT) + + # Create the output Doxyfile + file(WRITE ${DOXYGEN_CONFIG_FILE} "# Doxyfile generated by OCCT_DOC_CONFIGURE_DOXYGEN\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "# Base template: ${TEMPLATE_DOXYFILE}\n\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "${DOXYGEN_TEMPLATE_CONTENT}\n\n") + + file(APPEND ${DOXYGEN_CONFIG_FILE} "# Custom overrides set by CMake:\n") + + # Project information + file(APPEND ${DOXYGEN_CONFIG_FILE} "PROJECT_NUMBER = ${OCC_VERSION_STRING_EXT}\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "OUTPUT_DIRECTORY = ${OUTPUT_DIR}\n") + + # Ensure client-side search is configured correctly + file(APPEND ${DOXYGEN_CONFIG_FILE} "\n# Search engine settings\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "SEARCHENGINE = YES\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "SERVER_BASED_SEARCH = NO\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXTERNAL_SEARCH = NO\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "SEARCHDATA_FILE = searchdata.xml\n") + + # Additional parameters based on the document type + if(DOC_TYPE STREQUAL "OVERVIEW") + # Settings for Overview documentation + file(APPEND ${DOXYGEN_CONFIG_FILE} "PROJECT_LOGO = ${CMAKE_SOURCE_DIR}/dox/resources/occ_logo.png\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXTRACT_ALL = NO\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXTRACT_PRIVATE = NO\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXTRACT_STATIC = NO\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXCLUDE_PATTERNS = */src/* */inc/* */drv/* */Properties/*\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "ENABLED_SECTIONS = OVERVIEW_SECTION\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "GENERATE_TAGFILE = ${OUTPUT_DIR}/occt.tag\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "GENERATE_TREEVIEW = YES\n") + + # Setup tag file for cross-referencing with Reference Manual + if(BUILD_DOC_RefMan) + file(APPEND ${DOXYGEN_CONFIG_FILE} "\n# Cross-referencing with Reference Manual\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "TAGFILES = \"${CMAKE_BINARY_DIR}/doc/refman/occt_refman.tag=../../refman/html\"\n") + endif() + + # Input files for overview + if(DEFINED OCCT_OVERVIEW_FILES) + file(APPEND ${DOXYGEN_CONFIG_FILE} "INPUT = ${OCCT_OVERVIEW_FILES}\n") + else() + file(APPEND ${DOXYGEN_CONFIG_FILE} "INPUT = ${CMAKE_SOURCE_DIR}/dox\n") + endif() + + # Collect image directories for overview + set(OVERVIEW_INPUT_DIRS ${CMAKE_SOURCE_DIR}/dox) + OCCT_DOC_COLLECT_IMAGE_DIRS("${OVERVIEW_INPUT_DIRS}" OVERVIEW_IMAGE_DIRS) + + # Image path for overview + if(OVERVIEW_IMAGE_DIRS) + string(REPLACE ";" " " OVERVIEW_IMAGE_DIRS_STR "${OVERVIEW_IMAGE_DIRS}") + file(APPEND ${DOXYGEN_CONFIG_FILE} "IMAGE_PATH = ${OVERVIEW_IMAGE_DIRS_STR} ${CMAKE_SOURCE_DIR}/dox/resources\n") + else() + file(APPEND ${DOXYGEN_CONFIG_FILE} "IMAGE_PATH = ${CMAKE_SOURCE_DIR}/dox/resources\n") + endif() + + # Example paths + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXAMPLE_PATH = ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/samples\n") + else() + # Settings for Reference Manual + file(APPEND ${DOXYGEN_CONFIG_FILE} "PROJECT_NAME = \"Open CASCADE Technology Reference Manual\"\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "PROJECT_LOGO = ${CMAKE_SOURCE_DIR}/dox/resources/occ_logo.png\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "BUILTIN_STL_SUPPORT = YES\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXTRACT_PRIVATE = NO\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXTRACT_PACKAGE = YES\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "EXCLUDE_PATTERNS = */Properties/*\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "FILE_PATTERNS = *.h *.hxx *.lxx *.gxx *.pxx *.cxx *.cpp *.c *.md\n") + + # Generate a tag file for cross-referencing from Overview + file(APPEND ${DOXYGEN_CONFIG_FILE} "\n# Generate tag file for cross-referencing\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "GENERATE_TAGFILE = ${OUTPUT_DIR}/occt_refman.tag\n") + + # Input files for reference manual - CRITICAL FOR PROPER GENERATION + file(APPEND ${DOXYGEN_CONFIG_FILE} "\n# Input files for reference manual\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "INPUT = ${CMAKE_SOURCE_DIR}/src\n") + + # If generating documentation for specific modules + if(DEFINED OCCT_DOC_MODULES) + set(MODULE_PATHS "") + foreach(MODULE ${OCCT_DOC_MODULES}) + foreach(TOOLKIT ${${MODULE}_TOOLKITS}) + list(APPEND MODULE_PATHS "${CMAKE_SOURCE_DIR}/src/${TOOLKIT}") + endforeach() + endforeach() + string(REPLACE ";" " " MODULE_PATHS_STR "${MODULE_PATHS}") + file(APPEND ${DOXYGEN_CONFIG_FILE} "INPUT += ${MODULE_PATHS_STR}\n") # Use += to append to existing INPUT + endif() + + # Configure image path for reference manual + set(REFMAN_INPUT_DIRS ${CMAKE_SOURCE_DIR}/src) + OCCT_DOC_COLLECT_IMAGE_DIRS("${REFMAN_INPUT_DIRS}" REFMAN_IMAGE_DIRS) + + if(REFMAN_IMAGE_DIRS) + string(REPLACE ";" " " REFMAN_IMAGE_DIRS_STR "${REFMAN_IMAGE_DIRS}") + file(APPEND ${DOXYGEN_CONFIG_FILE} "IMAGE_PATH = ${REFMAN_IMAGE_DIRS_STR} ${CMAKE_SOURCE_DIR}/dox/resources\n") + else() + file(APPEND ${DOXYGEN_CONFIG_FILE} "IMAGE_PATH = ${CMAKE_SOURCE_DIR}/dox/resources\n") + endif() + + # Add main page file if generated + if(EXISTS "${OUTPUT_DIR}/main_page.dox") + file(APPEND ${DOXYGEN_CONFIG_FILE} "INPUT += ${OUTPUT_DIR}/main_page.dox\n") # Use += to append to existing INPUT + endif() + + # Add header files to Doxygen input + if(DEFINED DOXYGEN_INPUT_FILES_STRING) + file(APPEND ${DOXYGEN_CONFIG_FILE} "INPUT += ${DOXYGEN_INPUT_FILES_STRING}\n") # Use += to append to existing INPUT + endif() + endif() + + # Custom CSS + if(EXISTS "${CMAKE_SOURCE_DIR}/dox/resources/custom.css") + file(APPEND ${DOXYGEN_CONFIG_FILE} "HTML_EXTRA_STYLESHEET = ${CMAKE_SOURCE_DIR}/dox/resources/custom.css\n") + endif() + + # Set paths for dot tool + if(GRAPHVIZ_DOT_EXECUTABLE) + file(APPEND ${DOXYGEN_CONFIG_FILE} "DOT_PATH = ${GRAPHVIZ_DOT_EXECUTABLE}\n") + get_filename_component(DOT_DIRECTORY ${GRAPHVIZ_DOT_EXECUTABLE} DIRECTORY) + file(APPEND ${DOXYGEN_CONFIG_FILE} "DOTFONTPATH = ${DOT_DIRECTORY}\n") + file(APPEND ${DOXYGEN_CONFIG_FILE} "DOTFILE_DIRS = ${OUTPUT_DIR}/html\n") + endif() + + # Confirm file creation + if(EXISTS ${DOXYGEN_CONFIG_FILE}) + message(STATUS "Successfully created Doxygen configuration file at: ${DOXYGEN_CONFIG_FILE}") + else() + message(FATAL_ERROR "Failed to create Doxygen configuration file at: ${DOXYGEN_CONFIG_FILE}") + endif() +endfunction() + +# Function to check if required tools are available +function(OCCT_DOC_CHECK_TOOLS) + # Find Doxygen + find_package(Doxygen QUIET) + if(NOT DOXYGEN_FOUND) + message(WARNING "Doxygen not found. Documentation will not be generated.") + set(OCCT_DOC_TOOLS_AVAILABLE FALSE PARENT_SCOPE) + return() + endif() + + # Find Graphviz + find_program(GRAPHVIZ_DOT_EXECUTABLE NAMES dot) + + # Check for MathJax for LaTeX formulas + if(NOT MATHJAX_PATH) + set(MATHJAX_PATH "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5") + endif() + + # Find tools for PDF generation if needed + if(BUILD_DOC_PDF) + # Find pdflatex + find_program(PDFLATEX_EXECUTABLE NAMES pdflatex) + if(NOT PDFLATEX_EXECUTABLE) + message(WARNING "pdflatex not found. PDF documentation will not be generated.") + set(BUILD_DOC_PDF FALSE PARENT_SCOPE) + endif() + + # Find Inkscape (for SVG to PNG conversion for PDFs) + find_program(INKSCAPE_EXECUTABLE NAMES inkscape) + if(NOT INKSCAPE_EXECUTABLE) + message(WARNING "Inkscape not found. SVG images will not be properly converted in PDF documentation.") + endif() + + set(PDFLATEX_EXECUTABLE ${PDFLATEX_EXECUTABLE} PARENT_SCOPE) + set(INKSCAPE_EXECUTABLE ${INKSCAPE_EXECUTABLE} PARENT_SCOPE) + endif() + + # Find tools for CHM generation if needed + if(BUILD_DOC_CHM AND WIN32) + # Find HTML Help Compiler + find_program(HHC_EXECUTABLE NAMES hhc HHC) + if(NOT HHC_EXECUTABLE) + message(WARNING "HTML Help Compiler not found. CHM documentation will not be generated.") + set(BUILD_DOC_CHM FALSE PARENT_SCOPE) + endif() + + set(HHC_EXECUTABLE ${HHC_EXECUTABLE} PARENT_SCOPE) + endif() + + set(GRAPHVIZ_DOT_EXECUTABLE ${GRAPHVIZ_DOT_EXECUTABLE} PARENT_SCOPE) + set(MATHJAX_PATH ${MATHJAX_PATH} PARENT_SCOPE) + set(OCCT_DOC_TOOLS_AVAILABLE TRUE PARENT_SCOPE) +endfunction() + +# Function to process LaTeX files for PDF generation +function(OCCT_DOC_PROCESS_LATEX OUTPUT_DIR) + # Skip if PDF generation is not enabled or pdflatex not found + if(NOT BUILD_DOC_PDF OR NOT PDFLATEX_EXECUTABLE) + return() + endif() + + message(STATUS "Processing LaTeX files for PDF generation...") + + # Process SVG images if Inkscape is available + if(INKSCAPE_EXECUTABLE) + file(GLOB SVG_FILES "${OUTPUT_DIR}/latex/*.svg") + foreach(SVG_FILE ${SVG_FILES}) + get_filename_component(FILE_NAME ${SVG_FILE} NAME_WE) + set(PNG_FILE "${OUTPUT_DIR}/latex/${FILE_NAME}.png") + + execute_process( + COMMAND ${INKSCAPE_EXECUTABLE} -z -e ${PNG_FILE} ${SVG_FILE} + RESULT_VARIABLE INKSCAPE_RESULT + ) + + if(NOT INKSCAPE_RESULT EQUAL 0) + message(WARNING "Failed to convert ${SVG_FILE} to PNG") + endif() + endforeach() + endif() + + # Generate PDF from LaTeX + execute_process( + COMMAND ${PDFLATEX_EXECUTABLE} -interaction=nonstopmode refman.tex + WORKING_DIRECTORY "${OUTPUT_DIR}/latex" + RESULT_VARIABLE LATEX_RESULT + OUTPUT_VARIABLE LATEX_OUTPUT + ERROR_VARIABLE LATEX_ERROR + ) + + if(NOT LATEX_RESULT EQUAL 0) + message(WARNING "Error generating PDF: ${LATEX_ERROR}") + else() + # Run pdflatex again for references + execute_process( + COMMAND ${PDFLATEX_EXECUTABLE} -interaction=nonstopmode refman.tex + WORKING_DIRECTORY "${OUTPUT_DIR}/latex" + ) + + message(STATUS "PDF documentation generated at ${OUTPUT_DIR}/latex/refman.pdf") + + # Copy the PDF to a more accessible location + file(COPY "${OUTPUT_DIR}/latex/refman.pdf" DESTINATION "${OUTPUT_DIR}") + file(RENAME "${OUTPUT_DIR}/refman.pdf" "${OUTPUT_DIR}/${DOC_OUTPUT_NAME}.pdf") + endif() +endfunction() + +# Main function to set up documentation targets +function(OCCT_SETUP_DOC_TARGETS) + # Check if required tools are available + OCCT_DOC_CHECK_TOOLS() + if(NOT OCCT_DOC_TOOLS_AVAILABLE) + return() + endif() + + # Load lists of documentation files + OCCT_DOC_LOAD_FILE_LISTS() + + # Collect module information + OCCT_DOC_COLLECT_MODULES_INFO() + + # Extract toolkit dependencies + OCCT_DOC_EXTRACT_TOOLKIT_DEPENDENCIES() + + # Create documentation output directories + set(DOC_ROOT_DIR "${CMAKE_BINARY_DIR}/doc") + file(MAKE_DIRECTORY ${DOC_ROOT_DIR}) + + # Setup Reference Manual target + if(BUILD_DOC_RefMan) + # Create output directories + set(REFMAN_OUTPUT_DIR "${DOC_ROOT_DIR}/refman") + file(MAKE_DIRECTORY ${REFMAN_OUTPUT_DIR}) + file(MAKE_DIRECTORY "${REFMAN_OUTPUT_DIR}/html") + + # Copy index file to provide fast access to HTML documentation + file(COPY "${CMAKE_SOURCE_DIR}/dox/resources/index.html" DESTINATION "${REFMAN_OUTPUT_DIR}") + + # Generate main page for reference manual + OCCT_DOC_GENERATE_MAIN_PAGE(${REFMAN_OUTPUT_DIR} "main_page.dox") + + # Configure Doxygen + set(DOC_TYPE "REFMAN") + OCCT_DOC_CONFIGURE_DOXYGEN(${REFMAN_OUTPUT_DIR} "Doxyfile" ${DOC_TYPE}) + + # Add custom target for reference manual + add_custom_target(RefMan + COMMAND ${DOXYGEN_EXECUTABLE} ${REFMAN_OUTPUT_DIR}/Doxyfile + COMMENT "Generating Reference Manual with Doxygen" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + VERBATIM + ) + + # Add custom command to install generated documentation if required + if(INSTALL_DOC_RefMan) + install(DIRECTORY "${REFMAN_OUTPUT_DIR}/html/" + DESTINATION "${INSTALL_DIR_DOC}/refman/html" + OPTIONAL) + endif() + endif() + + # Setup Overview documentation target (after RefMan so it can use the RefMan tag file) + if(BUILD_DOC_Overview) + # Create output directories + set(OVERVIEW_OUTPUT_DIR "${DOC_ROOT_DIR}/overview") + file(MAKE_DIRECTORY ${OVERVIEW_OUTPUT_DIR}) + file(MAKE_DIRECTORY "${OVERVIEW_OUTPUT_DIR}/html") + + # Configure Doxygen for Overview + set(DOC_TYPE "OVERVIEW") + OCCT_DOC_CONFIGURE_DOXYGEN(${OVERVIEW_OUTPUT_DIR} "Doxyfile" ${DOC_TYPE}) + + # Add custom target for overview documentation + add_custom_target(Overview + COMMAND ${DOXYGEN_EXECUTABLE} ${OVERVIEW_OUTPUT_DIR}/Doxyfile + COMMENT "Generating Overview documentation with Doxygen" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + VERBATIM + ) + + # Copy index file to provide fast access to HTML documentation + file(COPY "${CMAKE_SOURCE_DIR}/dox/resources/index.html" DESTINATION "${OVERVIEW_OUTPUT_DIR}") + + # Add custom command to copy generated documentation to install location if required + if(INSTALL_DOC_Overview) + install(DIRECTORY "${OVERVIEW_OUTPUT_DIR}/html/" + DESTINATION "${INSTALL_DIR_DOC}/overview/html" + OPTIONAL) + + # Create overview.html only for windows + if(WIN32) + install(FILES "${CMAKE_SOURCE_DIR}/dox/resources/overview.html" + DESTINATION "${INSTALL_DIR_DOC}") + endif() + endif() + endif() + + # Combined documentation target + if(BUILD_DOC_Overview AND BUILD_DOC_RefMan) + add_custom_target(doc ALL + DEPENDS RefMan Overview + COMMENT "Generating all documentation" + ) + set_property (TARGET doc PROPERTY FOLDER "Documentation") + set_property (TARGET Overview PROPERTY FOLDER "Documentation") + set_property (TARGET RefMan PROPERTY FOLDER "Documentation") + add_dependencies(Overview RefMan) # Ensure Overview uses RefMan tag file + elseif(BUILD_DOC_Overview) + add_custom_target(doc ALL + DEPENDS Overview + COMMENT "Generating Overview documentation" + ) + set_property (TARGET Overview PROPERTY FOLDER "Documentation") + elseif(BUILD_DOC_RefMan) + add_custom_target(doc ALL + DEPENDS RefMan + COMMENT "Generating Reference Manual" + ) + set_property (TARGET RefMan PROPERTY FOLDER "Documentation") + endif() +endfunction() diff --git a/adm/cmake/vardescr.cmake b/adm/cmake/vardescr.cmake index 8a2efd3178..2ba701cab8 100644 --- a/adm/cmake/vardescr.cmake +++ b/adm/cmake/vardescr.cmake @@ -199,6 +199,19 @@ set (USE_XLIB_DESCR "Indicates whether X11 is used or not") set (USE_D3D_DESCR "Indicates whether optional Direct3D wrapper in OCCT visualization module should be build or not") +# Documentation variables +set (BUILD_DOC_Overview_DESCR + "Build OCCT overview documentation using Doxygen") + +set (BUILD_DOC_RefMan_DESCR + "Build OCCT reference manual documentation using Doxygen") + +set (INSTALL_DOC_Overview_DESCR + "Install OCCT overview documentation") + +set (INSTALL_DOC_RefMan_DESCR + "Install OCCT reference manual documentation") + macro (BUILD_MODULE MODULE_NAME) set (ENABLE_MODULE TRUE) set (BUILD_MODULE_${MODULE_NAME} ${ENABLE_MODULE} CACHE BOOL "${BUILD_MODULE_${MODULE_NAME}_DESCR}") diff --git a/adm/gendoc b/adm/gendoc deleted file mode 100644 index 75f0f99e3c..0000000000 --- a/adm/gendoc +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# Helper script to run generation of OCCT documentation on Linux. -# Running it requires that Tcl, Doxygen, and MikTex (for PDF generation) should be in the PATH - -anArgs=$* -anOldPath="$PATH" -anOldLd="$LD_LIBRARY_PATH" -anOldDyLd="$DYLD_LIBRARY_PATH" - -# go to the script directory -aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; -if [ -e "${aScriptPath}/../env.sh" ]; then source "${aScriptPath}/../env.sh"; fi - -tclsh "${aScriptPath}/start.tcl" gendoc $anArgs - -export PATH="$anOldPath" -export LD_LIBRARY_PATH="$anOldLd" -export DYLD_LIBRARY_PATH="$anOldDyLd" diff --git a/adm/gendoc.bat b/adm/gendoc.bat deleted file mode 100644 index bf8da09dd0..0000000000 --- a/adm/gendoc.bat +++ /dev/null @@ -1,23 +0,0 @@ -@echo off - -rem Helper script to run generation of OCCT documentation on Windows. -rem Running it requires that Tcl, Doxygen, and MikTex (for PDF generation) -rem should be in the PATH - -SET "OLD_PATH=%PATH%" - -if exist "%~dp0../env.bat" ( - call "%~dp0../env.bat" -) - -set "TCL_EXEC=tclsh.exe" - -for %%X in (%TCL_EXEC%) do (set TCL_FOUND=%%~$PATH:X) - -if defined TCL_FOUND ( - %TCL_EXEC% %~dp0start.tcl gendoc %* -) else ( - echo "Error. %TCL_EXEC% is not found. Please update PATH variable" -) - -SET "PATH=%OLD_PATH%" diff --git a/adm/gendoc.tcl b/adm/gendoc.tcl deleted file mode 100644 index 8f0bb692b5..0000000000 --- a/adm/gendoc.tcl +++ /dev/null @@ -1,906 +0,0 @@ -# ======================================================================= -# Created on: 2014-03-21 -# Created by: OMY -# Copyright (c) 1996-1999 Matra Datavision -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -# ======================================================================= -# This script defines command gendoc compiling OCCT documents -# from *.md files to HTML pages -# ======================================================================= - -# load auxiliary tools -source [file join [file dirname [info script]] occaux.tcl] - -# ====================================== -# Common functions -# ====================================== - -# Prints help message -proc OCCDoc_PrintHelpMessage {} { - puts "\nUsage: gendoc \[-h\] {-refman|-overview} \[-html|-pdf|-chm\] \[-m=|-ug=\] \[-v\] \[-s=\] \[-mathjax=\]" - puts "" - puts "Options are:" - puts "" - puts "choice of documentation to be generated:" - puts " -overview : To generate Overview and User Guides" - puts " (cannot be used with -refman)" - puts " -refman : To generate class Reference Manual" - puts " (cannot be used with -overview)" - puts "" - puts "choice of output format:" - puts " -html : To generate HTML files" - puts " (default, cannot be used with -pdf or -chm)" - puts " -pdf : To generate PDF files" - puts " (cannot be used with -refman, -html, or -chm)" - puts " -chm : To generate CHM files" - puts " (cannot be used with -html or -pdf)" - puts "" - puts "additional options:" - puts " -m= : List of OCCT modules (separated with comma)," - puts " for generation of Reference Manual" - puts " -ug= : List of MarkDown documents (separated with comma)," - puts " to use for generation of Overview / User Guides" - puts " -mathjax= : To use local or alternative copy of MathJax" - puts " -s= : Specifies the Search mode of HTML documents" - puts " Can be: none | local | server | external" - puts " -h : Prints this help message" - puts " -v : Enables more verbose output" -} - -# A command for User Documentation compilation -proc gendoc {args} { - - # Parameters - set DOC_TYPE "REFMAN" - set GEN_MODE "HTML_ONLY" - set DOCFILES {} - set MODULES {} - set DOCLABEL "" - set VERB_MODE "NO" - set SEARCH_MODE "none" - set MATHJAX_LOCATION "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1" - set mathjax_js_name "MathJax.js" - set DOCTYPE_COMBO_FLAG 0 - set GENMODE_COMBO_FLAG 0 - set GENERATE_PRODUCTS_REFMAN "NO" - - global available_docfiles; # The full list of md files for HTML or CHM generation - global available_pdf; # The full list of md files for PDF generation - global tcl_platform - global args_names - global args_values - global env - - # Load list of docfiles - if { [OCCDoc_LoadFilesList] != 0 } { - puts "Error: File FILES_HTML.txt or FILES_PDF.txt was not found on this computer.\nAborting..." - return -1 - } - - # Parse CL arguments - if {[OCCDoc_ParseArguments $args] == 1} { - return -1 - } - - # Print help message if no arguments provided - if {[llength $args_names] == 0} { - OCCDoc_PrintHelpMessage - return 0 - } - - foreach arg_n $args_names { - if {$arg_n == "h"} { - OCCDoc_PrintHelpMessage - return 0 - } elseif {$arg_n == "html"} { - if { ([ lsearch $args_names "refman" ] == -1) && - ([ lsearch $args_names "overview" ] == -1) } { - puts "Warning: Please specify -refman or -overview argument." - return -1 - } - if { [ lsearch $args_names "refman" ] != -1 } { - continue - } - if { $GENMODE_COMBO_FLAG != 1 } { - set GEN_MODE "HTML_ONLY" - set GENMODE_COMBO_FLAG 1 - } else { - puts "Error: Options -html, -pdf and -chm can not be combined." - return -1 - } - } elseif {$arg_n == "chm"} { - if { ([ lsearch $args_names "refman" ] == -1) && - ([ lsearch $args_names "overview" ] == -1) } { - puts "Warning: Please specify -refman or -overview argument." - return -1 - } - if { [ lsearch $args_names "refman" ] != -1 } { - continue - } - if { $GENMODE_COMBO_FLAG != 1 } { - set GEN_MODE "CHM_ONLY" - set GENMODE_COMBO_FLAG 1 - } else { - puts "Error: Options -html, -pdf and -chm cannot be combined." - return -1 - } - } elseif {$arg_n == "pdf"} { - if { ([ lsearch $args_names "refman" ] == -1) && - ([ lsearch $args_names "overview" ] == -1) } { - puts "Warning: Please specify -refman or -overview argument." - return -1 - } - if { [ lsearch $args_names "refman" ] != -1 } { - continue - } - if { $GENMODE_COMBO_FLAG != 1 } { - set GEN_MODE "PDF_ONLY" - set GENMODE_COMBO_FLAG 1 - } else { - puts "Error: Options -html, -pdf and -chm cannot be combined." - return -1 - } - } elseif {$arg_n == "overview"} { - if { $DOCTYPE_COMBO_FLAG != 1 } { - set DOC_TYPE "OVERVIEW" - set DOCTYPE_COMBO_FLAG 1 - } else { - puts "Error: Options -refman and -overview cannot be combined." - return -1 - } - - # Print ignored options - if { [ lsearch $args_names "m" ] != -1 } { - puts "\nInfo: The following options will be ignored: \n" - puts " * -m" - } - puts "" - } elseif {$arg_n == "refman"} { - if { $DOCTYPE_COMBO_FLAG != 1 } { - set DOC_TYPE "REFMAN" - set DOCTYPE_COMBO_FLAG 1 - if { [file exists [OCCDoc_GetProdRootDir]/src/VAS/Products.tcl] } { - set GENERATE_PRODUCTS_REFMAN "YES" - } - } else { - puts "Error: Options -refman and -overview cannot be combined." - return -1 - } - # Print ignored options - if { ([ lsearch $args_names "pdf" ] != -1) || - ([ lsearch $args_names "chm" ] != -1) || - ([ lsearch $args_names "ug" ] != -1) } { - puts "\nInfo: The following options will be ignored: \n" - if { [ lsearch $args_names "pdf" ] != -1 } { - puts " * -pdf" - } - if { [ lsearch $args_names "chm" ] != -1 } { - puts " * -chm" - } - if { [ lsearch $args_names "ug" ] != -1 } { - puts " * -ug" - } - puts "" - } - - } elseif {$arg_n == "v"} { - set VERB_MODE "YES" - } elseif {$arg_n == "ug"} { - if { ([ lsearch $args_names "refman" ] != -1) } { - continue - } - if {$args_values(ug) != "NULL"} { - set DOCFILES $args_values(ug) - } else { - puts "Error in argument ug." - return -1 - } - # Check if all chosen docfiles are correct - foreach docfile $DOCFILES { - if { [ lsearch $args_names "pdf" ] == -1 } { - # Check to generate HTMLs - if { [lsearch $available_docfiles $docfile] == -1 } { - puts "Error: File \"$docfile\" is not presented in the list of available docfiles." - puts " Please specify the correct docfile name." - return -1 - } - } else { - # Check to generate PDFs - if { [lsearch $available_pdf $docfile] == -1 } { - puts "Error: File \"$docfile\" is not presented in the list of generic PDFs." - puts " Please specify the correct pdf name." - return -1 - } - } - } - } elseif {$arg_n == "m"} { - if { [ lsearch $args_names "overview" ] != -1 } { - continue - } - if {$args_values(m) != "NULL"} { - set MODULES $args_values(m) - } else { - puts "Error in argument m." - return -1 - } - } elseif {$arg_n == "s"} { - if { [ lsearch $args_names "pdf" ] != -1 } { - puts "Warning: search is not used with PDF and will be ignored." - continue - } - - if {$args_values(s) != "NULL"} { - set SEARCH_MODE $args_values(s) - } else { - puts "Error in argument s." - return -1 - } - } elseif {$arg_n == "mathjax"} { - if { [ lsearch $args_names "pdf" ] != -1 } { - puts "Warning: MathJax is not used with PDF and will be ignored." - } - - set possible_mathjax_loc $args_values(mathjax) - if {[file exist [file join $possible_mathjax_loc $mathjax_js_name]]} { - set MATHJAX_LOCATION $args_values(mathjax) - puts "$MATHJAX_LOCATION" - } else { - puts "Warning: $mathjax_js_name is not found in $possible_mathjax_loc." - puts " MathJax will be used from $MATHJAX_LOCATION" - } - } else { - puts "\nWrong argument: $arg_n" - OCCDoc_PrintHelpMessage - return -1 - } - } - - # Check the existence of the necessary tools - set DOXYGEN_PATH "" - set GRAPHVIZ_PATH "" - set INKSCAPE_PATH "" - set PDFLATEX_PATH "" - set HHC_PATH "" - - OCCDoc_DetectNecessarySoftware $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH $PDFLATEX_PATH - - if {$DOXYGEN_PATH == ""} { - puts " Aborting..." - return -1 - } - - if {"$::tcl_platform(platform)" == "windows"} { - if { ($GEN_MODE == "CHM_ONLY") && ($HHC_PATH == "") } { - puts " Aborting..." - return -1 - } - } - - if { ($PDFLATEX_PATH == "") && ($GEN_MODE == "PDF_ONLY") } { - puts " Aborting..." - return -1 - } - - # If we do not specify list for docfiles with -m argument, - # we assume that we have to generate all docfiles - if { [llength $DOCFILES] == 0 } { - if { $GEN_MODE != "PDF_ONLY" } { - set DOCFILES $available_docfiles - } else { - set DOCFILES $available_pdf - } - } - - puts "" - - # Start main activities - if { $GEN_MODE != "PDF_ONLY" } { - if { [OCCDoc_GetProdRootDir] == ""} { - OCCDoc_Main $DOC_TYPE $DOCFILES $MODULES $GEN_MODE $VERB_MODE $SEARCH_MODE $MATHJAX_LOCATION $GENERATE_PRODUCTS_REFMAN $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH - } else { - if { $DOC_TYPE == "REFMAN" } { - if { $MODULES != "" } { - foreach module $MODULES { - OCCDoc_Main $DOC_TYPE $DOCFILES $module $GEN_MODE $VERB_MODE $SEARCH_MODE $MATHJAX_LOCATION $GENERATE_PRODUCTS_REFMAN $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH - } - } else { - OCCDoc_Main $DOC_TYPE $DOCFILES $MODULES $GEN_MODE $VERB_MODE $SEARCH_MODE $MATHJAX_LOCATION $GENERATE_PRODUCTS_REFMAN $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH - } - } else { - foreach md $DOCFILES { - OCCDoc_Main $DOC_TYPE $md $MODULES $GEN_MODE $VERB_MODE $SEARCH_MODE $MATHJAX_LOCATION $GENERATE_PRODUCTS_REFMAN $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH - } - } - } - } else { - puts "Generating OCCT User Guides in PDF format..." - foreach pdf $DOCFILES { - - puts "\nInfo: Processing file $pdf" - - # Some values are hardcoded because they are related only to PDF generation - OCCDoc_Main "OVERVIEW" [list $pdf] {} "PDF_ONLY" $VERB_MODE "none" $MATHJAX_LOCATION "NO" $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH - } - puts "\n[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generation completed." - } -} - -# Main procedure for documents compilation -proc OCCDoc_Main {docType {docfiles {}} {modules {}} generatorMode verboseMode searchMode mathjaxLocation generateProductsRefman DOXYGEN_PATH GRAPHVIZ_PATH INKSCAPE_PATH HHC_PATH} { - - global available_docfiles - global available_pdf - - set ROOTDIR [OCCDoc_GetRootDir [OCCDoc_GetProdRootDir]] - set INDIR [OCCDoc_GetDoxDir] - set OUTDIR $ROOTDIR/doc - set PDFDIR $OUTDIR/pdf - set UGDIR $PDFDIR/user_guides - set DGDIR $PDFDIR/dev_guides - set TAGFILEDIR $OUTDIR/refman - set HTMLDIR $OUTDIR/overview/html - set LATEXDIR $OUTDIR/overview/latex - set DOXYFILE $OUTDIR/OCCT.cfg - - # OUTDIR for products documentation should be separate directories for each components - if { [OCCDoc_GetProdRootDir] != ""} { - if { $docType == "REFMAN" } { - if { "$modules" != "" } { - source "[OCCDoc_GetSourceDir [OCCDoc_GetProdRootDir]]/VAS/${modules}.tcl" - set doc_component_name [${modules}:documentation_name] - set OUTDIR $OUTDIR/$doc_component_name - } - } else { - if {[regexp {([^/]+)/([^/]+)/([^/]+)} $docfiles dump doc_type doc_component doc_name]} { - set PDFNAME [file rootname $doc_name] - set OUTDIR $OUTDIR/$doc_component - } else { - error "Could not parse input path to *.md file: \"${docfiles}\"" - } - } - set HTMLDIR $OUTDIR/html - set LATEXDIR $OUTDIR/latex - set DOXYFILE $OUTDIR/OCCT.cfg - set TAGFILEDIR $OUTDIR/refman - } - - # Create or cleanup the output folders - if { [string compare -nocase $generateProductsRefman "YES"] != 0 } { - if { ![file exists $OUTDIR] } { - file mkdir $OUTDIR - } - if { ![file exists $HTMLDIR] } { - file mkdir $HTMLDIR - } - if { [OCCDoc_GetProdRootDir] == ""} { - if { ![file exists $PDFDIR] } { - file mkdir $PDFDIR - } - if { ![file exists $UGDIR] } { - file mkdir $UGDIR - } - if { ![file exists $DGDIR] } { - file mkdir $DGDIR - } - } - - if { $generatorMode == "PDF_ONLY" } { - if { [file exists $LATEXDIR] } { - file delete -force $LATEXDIR - } - file mkdir $LATEXDIR - } - } - if { $docType == "REFMAN" } { - if { ![file exists $TAGFILEDIR] } { - file mkdir $TAGFILEDIR - } - } - - # is MathJax HLink? - set mathjax_relative_location $mathjaxLocation - if { [file isdirectory "$mathjaxLocation"] } { - if { $generatorMode == "HTML_ONLY" } { - # related path - set mathjax_relative_location [OCCDoc_GetRelPath $HTMLDIR $mathjaxLocation] - } elseif { $generatorMode == "CHM_ONLY" } { - # absolute path - set mathjax_relative_location [file normalize $mathjaxLocation] - } - } - - if { $generateProductsRefman == "YES" } { - set DOCDIR "$OUTDIR/refman" - puts "\nGenerating OCC Products Reference Manual\n" - } else { - if { $docType == "REFMAN"} { - set DOCDIR "$OUTDIR/refman" - puts "\nGenerating Open CASCADE Reference Manual\n" - } elseif { $docType == "OVERVIEW" } { - if { [OCCDoc_GetProdRootDir] == ""} { - set DOCDIR "$OUTDIR/overview" - } else { - set DOCDIR "$OUTDIR" - } - set FORMAT "" - if { ($generatorMode == "HTML_ONLY") || ($generatorMode == "CHM_ONLY") } { - if { $generatorMode == "HTML_ONLY" } { - set FORMAT " in HTML format..." - } elseif { $generatorMode == "CHM_ONLY" } { - set FORMAT " in CHM format..." - } - puts "Generating OCCT User Guides$FORMAT\n" - } - } else { - puts "Error: Invalid documentation type: $docType. Can not process." - return -1 - } - } - - # Generate Doxyfile - puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating Doxyfile..." - - if { [OCCDoc_MakeDoxyfile $docType $DOCDIR $TAGFILEDIR $DOXYFILE $generatorMode $docfiles $modules $verboseMode $searchMode $HHC_PATH $mathjax_relative_location $GRAPHVIZ_PATH [OCCDoc_GetProdRootDir]] == -1 } { - return -1 - } - - # Run doxygen tool - set starttimestamp [clock format [clock seconds] -format {%Y-%m-%d %H:%M}] - - if { ($generatorMode == "HTML_ONLY") || ($docType == "REFMAN") } { - set LOGPREFIX "html_" - puts "$starttimestamp Generating HTML files..." - - # Copy index file to provide fast access to HTML documentation - file copy -force $INDIR/resources/index.html $DOCDIR/index.html - } elseif { $generatorMode == "CHM_ONLY" } { - set LOGPREFIX "chm_" - puts "$starttimestamp Generating CHM file..." - } elseif { $generatorMode == "PDF_ONLY" } { - set LOGPREFIX "[file rootname [file tail [lindex $docfiles 0]]]_" - puts "$starttimestamp Generating PDF file..." - } - - # Clean logfiles - set DOXYLOG $OUTDIR/${LOGPREFIX}doxygen_err.log - set DOXYOUT $OUTDIR/${LOGPREFIX}doxygen_out.log - file delete -force $DOXYLOG - file delete -force $DOXYOUT - - set RESULT [catch {exec $DOXYGEN_PATH $DOXYFILE >> $DOXYOUT} DOX_ERROR] - if {$RESULT != 0} { - set NbErrors [regexp -all -line {^\s*[^\s]+} $DOX_ERROR] - if {$NbErrors > 0} { - puts "Warning: Doxygen reported $NbErrors messages." - puts "See log in $DOXYLOG" - set DOX_ERROR_FILE [open $DOXYLOG "a"] - if {$generatorMode == "PDF_ONLY"} { - puts $DOX_ERROR_FILE "\n====================================================" - puts $DOX_ERROR_FILE "Logfile for $docfiles" - puts $DOX_ERROR_FILE "====================================================\n" - } - puts $DOX_ERROR_FILE $DOX_ERROR - close $DOX_ERROR_FILE - } - } - - # Close the Doxygen application - after 300 - - # Start Post Processing - set curtime [clock format [clock seconds] -format {%Y-%m-%d %H:%M}] - if { $docType == "REFMAN" } { - # Post Process generated HTML pages and draw dependency graphs - if {[OCCDoc_PostProcessor $DOCDIR] == 0} { - puts "$curtime Generation completed." - puts "\nInfo: doxygen log file is located in:" - puts "${DOXYOUT}." - puts "\nReference Manual is generated in \n$DOCDIR" - } - } elseif { $docType == "OVERVIEW" } { - # Start PDF generation routine - if { $generatorMode == "PDF_ONLY" } { - set OS $::tcl_platform(platform) - if { $OS == "unix" } { - set PREFIX ".sh" - } elseif { $OS == "windows" } { - set PREFIX ".bat" - } - - # Prepare a list of TeX files, generated by Doxygen - cd $LATEXDIR - - set TEXFILES [glob $LATEXDIR -type f -directory $LATEXDIR -tails "*.tex" ] - foreach path $TEXFILES { - if { [string compare -nocase $path $LATEXDIR] == 0 } { - set DEL_IDX [lsearch $TEXFILES $path] - if { $DEL_IDX != -1 } { - set TEXFILES [lreplace $TEXFILES $DEL_IDX $DEL_IDX] - } - } - } - set TEXFILES [string map [list refman.tex ""] $TEXFILES] - if {$verboseMode == "YES"} { - puts "Info: Preprocessing generated TeX files..." - } - OCCDoc_ProcessTex $TEXFILES $LATEXDIR $verboseMode - - if {$verboseMode == "YES"} { - puts "Info: Converting SVG images to PNG format..." - } - - if { $INKSCAPE_PATH != "" } { - OCCDoc_ProcessSvg $LATEXDIR $verboseMode - } else { - puts "Warning: SVG images will be lost in PDF documents." - } - - if {$verboseMode == "YES"} { - puts "Info: Generating PDF file from TeX files..." - } - foreach TEX $TEXFILES { - # Rewrite existing REFMAN.tex file... - set TEX [lindex [split $TEX "."] 0] - - if {$verboseMode == "YES"} { - puts "Info: Generating PDF file from $TEX..." - } - - OCCDoc_MakeRefmanTex $TEX $LATEXDIR $verboseMode $available_pdf - - if {"$::tcl_platform(platform)" == "windows"} { - set is_win "yes" - } else { - set is_win "no" - } - if {$verboseMode == "YES"} { - # ...and use it to generate PDF from TeX... - if {$is_win == "yes"} { - puts "Info: Executing $LATEXDIR/make.bat..." - } else { - puts "Info: Executing $LATEXDIR/Makefile..." - } - } - - set PDFLOG $OUTDIR/${LOGPREFIX}pdflatex_err.log - set PDFOUT $OUTDIR/${LOGPREFIX}pdflatex_out.log - file delete -force $PDFLOG - file delete -force $PDFOUT - - if {"$is_win" == "yes"} { - set RESULT [catch {eval exec [auto_execok $LATEXDIR/make.bat] >> "$PDFOUT"} LaTeX_ERROR] - } else { - set RESULT [catch {eval exec "make -f $LATEXDIR/Makefile" >> "$PDFOUT"} LaTeX_ERROR] - - # Small workaround for *nix stations - set prev_loc [pwd] - cd $LATEXDIR - set RESULT [catch {eval exec "pdflatex refman.tex" >> "$PDFOUT"} LaTeX_ERROR] - cd $prev_loc - } - - if {$RESULT != 0} { - set NbErrors [regexp -all -line {^\s*[^\s]+} $LaTeX_ERROR] - if {$NbErrors > 0} { - puts "Warning: PDFLaTeX reported $NbErrors messages.\nSee log in $PDFLOG" - set LaTeX_ERROR_FILE [open $PDFLOG "a+"] - puts $LaTeX_ERROR_FILE "\n====================================================" - puts $LaTeX_ERROR_FILE "Logfile of file $TEX:" - puts $LaTeX_ERROR_FILE "====================================================\n" - puts $LaTeX_ERROR_FILE $LaTeX_ERROR - close $LaTeX_ERROR_FILE - } - } - - # ...and place it to the specific folder - if {![file exists "$LATEXDIR/refman.pdf"]} { - puts "Fatal: PDFLaTeX failed to create output file, stopping!" - return -1 - } - - set destFolder $PDFDIR - set parsed_string [split $TEX "_"] - if { [OCCDoc_GetProdRootDir] == ""} { - if { [lsearch $parsed_string "tutorial"] != -1 } { - set TEX [string map [list occt__ occt_] $TEX] - set destFolder $PDFDIR - } elseif { [lsearch $parsed_string "user"] != -1 } { - set TEX [string map [list user_guides__ ""] $TEX] - set destFolder $UGDIR - } elseif { [lsearch $parsed_string "dev"] != -1 } { - set TEX [string map [list dev_guides__ ""] $TEX] - set destFolder $DGDIR - } - } else { - set destFolder $OUTDIR - set TEX "$PDFNAME" - } - file rename -force $LATEXDIR/refman.pdf "$destFolder/$TEX.pdf" - puts "Generated $destFolder/$TEX.pdf" - } - } elseif { $generatorMode == "CHM_ONLY" } { - if { [OCCDoc_GetProdRootDir] == ""} { - file rename $OUTDIR/overview.chm $OUTDIR/occt_overview.chm - } else { - file rename -force $ROOTDIR/doc/overview.chm $OUTDIR/occt_overview.chm - } - } - cd $INDIR - - if { $generatorMode == "HTML_ONLY" } { - puts "HTML documentation is generated in \n$DOCDIR" - } elseif { $generatorMode == "CHM_ONLY" } { - puts "Generated CHM documentation is in \n$OUTDIR/overview.chm" - } - } - - # Remove temporary Doxygen files - set deleteList [glob -nocomplain -type f "*.tmp"] - foreach file $deleteList { - file delete $file - } - - return 0 -} - -# Generates Doxygen configuration file for Overview documentation -proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMode ""} {DocFilesList {}} {ModulesList {}} verboseMode searchMode hhcPath mathjaxLocation graphvizPath productsPath} { - global module_dependency - - set inputDir [OCCDoc_GetDoxDir [OCCDoc_GetProdRootDir]] - - set TEMPLATES_DIR [OCCDoc_GetDoxDir]/resources - set occt_version [OCCDoc_DetectCasVersion] - - # Delete existent doxyfile - file delete $doxyFileName - - # Copy specific template to the target folder - if { $docType == "REFMAN" } { - file copy "$TEMPLATES_DIR/occt_rm.doxyfile" $doxyFileName - } elseif { $docType == "OVERVIEW" } { - if { $generatorMode == "HTML_ONLY" || $generatorMode == "CHM_ONLY" } { - file copy "$TEMPLATES_DIR/occt_ug_html.doxyfile" $doxyFileName - } elseif { $generatorMode == "PDF_ONLY"} { - file copy "$TEMPLATES_DIR/occt_ug_pdf.doxyfile" $doxyFileName - } else { - puts "Error: Unknown generation mode" - return -1 - } - } else { - puts "Error: Cannot generate unknown document type" - return -1 - } - - set doxyFile [open $doxyFileName "a"] - # Write specific options - if { $docType == "REFMAN" } { - - # always include optional components - set aHaveD3dBack "" - set aHaveGlesBack "" - set aHaveVtkBack "" - if { [info exists ::env(HAVE_D3D)] } { set aHaveD3dBack "$::env(HAVE_D3D)" } - if { [info exists ::env(HAVE_GLES2)] } { set aHaveGlesBack "$::env(HAVE_GLES2)" } - if { [info exists ::env(HAVE_VTK)] } { set aHaveVtkBack "$::env(HAVE_VTK)" } - set ::env(HAVE_D3D) "true" - set ::env(HAVE_GLES2) "true" - set ::env(HAVE_VTK) "true" - - # Load lists of modules scripts - if { $productsPath == "" } { - set modules_scripts [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $productsPath]/OS/" *.tcl] - } else { - set modules_scripts [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $productsPath]/VAS/" *.tcl] - } - if { [llength $modules_scripts] != 0} { - foreach module_file $modules_scripts { - source $module_file - } - } - - set ALL_MODULES [OCCDoc_GetModulesList $productsPath] - if { [llength $ModulesList] == 0 } { - # by default take all modules - set modules $ALL_MODULES - } else { - set modules $ModulesList - } - - # Detect invalid names of modules - foreach module $modules { - if { $module == "" } { - continue - } - if {[lsearch $ALL_MODULES $module] == -1 } { - puts "Error: No module $module is known. Aborting..." - return -1 - } - } - - # Set context - set one_module [expr [llength $modules] == 1] - if { $one_module } { - set title "OCCT [$modules:name]" - set name $modules - } else { - set title "Open CASCADE Technology" - set name OCCT - } - - OCCDoc_LoadData "${productsPath}" - - # Add all dependencies of modules to the graph - set additional_modules {} - foreach module $modules { - set additional_modules [list {*}$additional_modules {*}$module_dependency($module)] - } - set modules [list {*}$modules {*}$additional_modules] - set modules [lsort -unique $modules] - - # Get list of header files in the specified modules - set filelist {} - foreach module $modules { - if { $module == "" } { - continue - } - foreach tk [$module:toolkits] { - foreach pk [split [OCCDoc_GetPackagesList [OCCDoc_Locate $tk $productsPath]]] { - if { [llength $pk] != "{}" } { - lappend filelist [OCCDoc_GetHeadersList "p" "$pk" "$productsPath"] - } - } - } - } - - # Filter out files Handle_*.hxx and *.lxx - set hdrlist {} - foreach fileset $filelist { - set hdrset {} - foreach hdr $fileset { - if { ! [regexp {Handle_.*[.]hxx} $hdr] && ! [regexp {.*[.]lxx} $hdr] } { - lappend hdrset $hdr - } - } - lappend hdrlist $hdrset - } - set filelist $hdrlist - - set doxyFile [open $doxyFileName "a"] - - puts $doxyFile "PROJECT_NAME = \"$title\"" - puts $doxyFile "PROJECT_NUMBER = $occt_version" - puts $doxyFile "OUTPUT_DIRECTORY = $outDir/." - puts $doxyFile "GENERATE_TAGFILE = $outDir/${name}.tag" - - if { [string tolower $searchMode] == "none" } { - puts $doxyFile "SEARCHENGINE = NO" - puts $doxyFile "SERVER_BASED_SEARCH = NO" - puts $doxyFile "EXTERNAL_SEARCH = NO" - } else { - puts $doxyFile "SEARCHENGINE = YES" - if { [string tolower $searchMode] == "local" } { - puts $doxyFile "SERVER_BASED_SEARCH = NO" - puts $doxyFile "EXTERNAL_SEARCH = NO" - } elseif { [string tolower $searchMode] == "server" } { - puts $doxyFile "SERVER_BASED_SEARCH = YES" - puts $doxyFile "EXTERNAL_SEARCH = NO" - } elseif { [string tolower $searchMode] == "external" } { - puts $doxyFile "SERVER_BASED_SEARCH = YES" - puts $doxyFile "EXTERNAL_SEARCH = YES" - } else { - puts "Error: Wrong search engine type: $searchMode." - close $doxyFile - return -1 - } - } - - puts $doxyFile "DOTFILE_DIRS = $outDir/html" - puts $doxyFile "DOT_PATH = $graphvizPath" - puts $doxyFile "INCLUDE_PATH = [OCCDoc_GetSourceDir $productsPath]" - - # list of files to generate - set mainpage [OCCDoc_MakeMainPage $outDir $outDir/$name.dox $modules $productsPath] - puts $doxyFile "" - puts $doxyFile "INPUT = $mainpage \\" - foreach header $filelist { - puts $doxyFile " $header \\" - } - - puts $doxyFile "MATHJAX_FORMAT = HTML-CSS" - puts $doxyFile "MATHJAX_RELPATH = ${mathjaxLocation}" - - puts $doxyFile "" - - # restore environment variables - set ::env(HAVE_D3D) "$aHaveD3dBack" - set ::env(HAVE_GLES2) "$aHaveGlesBack" - set ::env(HAVE_VTK) "$aHaveVtkBack" - - } elseif { $docType == "OVERVIEW" } { - - # Add common options for generation of Overview and User Guides - puts $doxyFile "PROJECT_NUMBER = $occt_version" - puts $doxyFile "OUTPUT_DIRECTORY = $outDir/." - puts $doxyFile "PROJECT_LOGO = [OCCDoc_GetDoxDir]/resources/occ_logo.png" - puts $doxyFile "EXAMPLE_PATH = [OCCDoc_GetSourceDir $productsPath]" - - set PARAM_INPUT "INPUT =" - set PARAM_IMAGEPATH "IMAGE_PATH = [OCCDoc_GetDoxDir]/resources/ " - foreach docFile $DocFilesList { - set NEW_IMG_PATH "$inputDir/$docFile" - if { [string compare $NEW_IMG_PATH [OCCDoc_GetRootDir $productsPath]] != 0 } { - set img_string [file dirname $NEW_IMG_PATH]/images - if { [file exists $img_string] } { - append PARAM_IMAGEPATH " $img_string" - } - } - append PARAM_INPUT " " $inputDir/$docFile - } - puts $doxyFile $PARAM_INPUT - puts $doxyFile $PARAM_IMAGEPATH - - # Add document type-specific options - if { $generatorMode == "HTML_ONLY"} { - # generate tree view - puts $doxyFile "GENERATE_TREEVIEW = YES" - - # Set a reference to a TAGFILE - if { $tagFileDir != "" } { - if {[file exists $tagFileDir/OCCT.tag] == 1} { - #set tagPath [OCCDoc_GetRelPath $tagFileDir $outDir/html] - set tagPath $tagFileDir - puts $doxyFile "TAGFILES = $tagFileDir/OCCT.tag=../../refman/html" - } - } - # HTML Search engine options - if { [string tolower $searchMode] == "none" } { - puts $doxyFile "SEARCHENGINE = NO" - puts $doxyFile "SERVER_BASED_SEARCH = NO" - puts $doxyFile "EXTERNAL_SEARCH = NO" - } else { - puts $doxyFile "SEARCHENGINE = YES" - if { [string tolower $searchMode] == "local" } { - puts $doxyFile "SERVER_BASED_SEARCH = NO" - puts $doxyFile "EXTERNAL_SEARCH = NO" - } elseif { [string tolower $searchMode] == "server" } { - puts $doxyFile "SERVER_BASED_SEARCH = YES" - puts $doxyFile "EXTERNAL_SEARCH = NO" - } elseif { [string tolower $searchMode] == "external" } { - puts $doxyFile "SERVER_BASED_SEARCH = YES" - puts $doxyFile "EXTERNAL_SEARCH = YES" - } else { - puts "Error: Wrong search engine type: $searchMode." - close $doxyFile - return -1 - } - } - } elseif { $generatorMode == "CHM_ONLY"} { - # specific options for CHM file generation - puts $doxyFile "GENERATE_TREEVIEW = NO" - puts $doxyFile "SEARCHENGINE = NO" - puts $doxyFile "GENERATE_HTMLHELP = YES" - puts $doxyFile "CHM_FILE = ../../overview.chm" - puts $doxyFile "HHC_LOCATION = \"$hhcPath\"" - puts $doxyFile "DISABLE_INDEX = YES" - } - - # Formula options - puts $doxyFile "MATHJAX_RELPATH = ${mathjaxLocation}" - } - - close $doxyFile - return 0 -} diff --git a/adm/occaux.tcl b/adm/occaux.tcl deleted file mode 100644 index 5e3861a58e..0000000000 --- a/adm/occaux.tcl +++ /dev/null @@ -1,940 +0,0 @@ -# ======================================================================= -# Created on: 2014-03-21 -# Created by: OMY -# Copyright (c) 1996-1999 Matra Datavision -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -# ======================================================================= -# This script contains auxiliary functions which can be used -# in documentation generation process -# ======================================================================= - -# ============================================== -# Commonly used functions -# ============================================== - -# Parses arguments line like "-arg1=val1 -arg2=val2 ..." to array args_names and map args_values -proc OCCDoc_ParseArguments {arguments} { - global args_names - global args_values - set args_names {} - array set args_values {} - - foreach arg $arguments { - if {[regexp {^(-)[a-z_]+$} $arg] == 1} { - set name [string range $arg 1 [string length $arg]-1] - lappend args_names $name - set args_values($name) "NULL" - continue - } elseif {[regexp {^(-)[a-z_]+=.+$} $arg] == 1} { - set equal_symbol_position [string first "=" $arg] - set name [string range $arg 1 $equal_symbol_position-1] - lappend args_names $name - set value [string range $arg $equal_symbol_position+1 [string length $arguments]-1] - - # To parse a list of values for -m parameter - if { [string first "," $value] != -1 } { - set value [split $value ","]; - } - - set args_values($name) $value - - } else { - puts "Error in argument $arg." - return 1 - } - } - return 0 -} - -# Returns script parent folder -proc OCCDoc_GetDoxDir { {theProductsPath ""} } { - if { $theProductsPath == "" } { - return [file normalize [file dirname [info script]]/../dox] - } else { - return [file normalize $theProductsPath]/dox - } -} - -# Returns products root folder -proc OCCDoc_GetProdRootDir {} { - if {[info exists ::env(PRODROOT)]} { - return [file normalize $::env(PRODROOT)] - } -} - -# Returns OCCT root dir -proc OCCDoc_GetOCCTRootDir {} { - set path [OCCDoc_GetDoxDir] - return [file normalize $path/..] -} - -# Returns root dir -proc OCCDoc_GetRootDir { {theProductsPath ""} } { - if { $theProductsPath == "" } { - return [OCCDoc_GetOCCTRootDir] - } else { - return [file normalize $theProductsPath] - } -} - -# Returns OCCT include dir -proc OCCDoc_GetIncDir { {theProductsPath ""} } { - set path [OCCDoc_GetRootDir $theProductsPath] - return "$path/inc" -} - -# Returns OCCT source dir -proc OCCDoc_GetSourceDir { {theProductsPath ""} } { - set path [OCCDoc_GetRootDir $theProductsPath] - return "$path/src" -} - -# Returns name of the package from the current toolkit -proc OCCDoc_GetNameFromPath { thePath } { - - set splitted_path [split $thePath "/" ] - set package_name [lindex $splitted_path end] - - return $package_name -} - -# Returns the relative path between two folders -proc OCCDoc_GetRelPath {thePathFrom thePathTo} { - if { [file isdirectory "$thePathFrom"] == 0 } { - return "" - } - - set aPathFrom [file normalize "$thePathFrom"] - set aPathTo [file normalize "$thePathTo"] - - set aCutedPathFrom "${aPathFrom}/dummy" - set aRelatedDeepPath "" - - while { "$aCutedPathFrom" != [file normalize "$aCutedPathFrom/.."] } { - set aCutedPathFrom [file normalize "$aCutedPathFrom/.."] - # does aPathTo contain aCutedPathFrom? - regsub -all $aCutedPathFrom $aPathTo "" aPathFromAfterCut - if { "$aPathFromAfterCut" != "$aPathTo" } { # if so - if { "$aCutedPathFrom" == "$aPathFrom" } { # just go higher, for example, ./somefolder/someotherfolder - set aPathTo ".${aPathTo}" - } elseif { "$aCutedPathFrom" == "$aPathTo" } { # remove the last "/" - set aRelatedDeepPath [string replace $aRelatedDeepPath end end ""] - } - regsub -all $aCutedPathFrom $aPathTo $aRelatedDeepPath aPathToAfterCut - regsub -all "//" $aPathToAfterCut "/" aPathToAfterCut - return $aPathToAfterCut - } - set aRelatedDeepPath "$aRelatedDeepPath../" - } - - return $thePathTo -} - -# Returns OCCT version string from version.cmake (if available) -proc OCCDoc_DetectCasVersion {} { - # Default version in case the file is not found or readable - set occt_ver "7.8.0" - set occt_ver_add "" - - # Construct path to version.cmake relative to script location - set filename "[file normalize [file dirname [info script]]/cmake/version.cmake]" - - if { [file exists $filename] && [file readable $filename] } { - if {[catch { - set fh [open $filename "r"] - set fh_loaded [read $fh] - close $fh - - # Use more robust regular expressions - regexp {OCC_VERSION_MAJOR\s+(\d+)} $fh_loaded -> major - regexp {OCC_VERSION_MINOR\s+(\d+)} $fh_loaded -> minor - regexp {OCC_VERSION_MAINTENANCE\s+(\d+)} $fh_loaded -> maint - regexp {OCC_VERSION_DEVELOPMENT\s+\"([^\"]+)\"} $fh_loaded -> occt_ver_add - - if {[info exists major] && [info exists minor] && [info exists maint]} { - puts "Info: Open CASCADE Technology version $major.$minor.$maint" - set occt_ver "$major.$minor.$maint" - if { [info exists occt_ver_add] && $occt_ver_add != "" } { - set occt_ver ${occt_ver}.$occt_ver_add - } - } - } err]} { - puts "Warning: Error reading version from $filename: $err" - } - } else { - puts "Warning: Version file $filename not found or not readable" - } - - return $occt_ver -} - -# Checks if the necessary tools exist -proc OCCDoc_DetectNecessarySoftware { DOXYGEN_PATH GRAPHVIZ_PATH INKSCAPE_PATH HHC_PATH PDFLATEX_PATH } { - - upvar 1 DOXYGEN_PATH doxy_path - upvar 1 GRAPHVIZ_PATH graph_path - upvar 1 INKSCAPE_PATH inkscape_path - upvar 1 HHC_PATH hhc_path - upvar 1 PDFLATEX_PATH latex_path - - set doxy_path "" - set graph_path "" - set inkscape_path "" - set latex_path "" - set hhc_path "" - - set is_win "no" - if { "$::tcl_platform(platform)" == "windows" } { - set is_win "yes" - } - if {"$is_win" == "yes"} { - set exe ".exe" - set com ".com" - } else { - set exe "" - set com "" - } - - set g_flag "no" - set d_flag "no" - set i_flag "no" - set h_flag "no" - set l_flag "no" - - puts "" - set envPath $::env(PATH) - if { $is_win == "yes" } { - set searchPathsList [split $envPath ";"] - } else { - set searchPathsList [split $envPath ":"] - } - - foreach path $searchPathsList { - if { ($is_win == "no") && - (($path == "/usr/bin") || ($path == "/usr/local/bin")) } { - # Avoid searching in default bin location - continue - } - if {$d_flag == "no"} { - if { [file exists $path/doxygen$exe] } { - catch { exec $path/doxygen -V } version_string - set version [lindex [split $version_string "\n"] 0] - puts "Info: $version " - puts " found in $path." - set doxy_path "$path/doxygen$exe" - set d_flag "yes" - } - } - if {$g_flag == "no"} { - if { [file exists $path/dot$exe] } { - catch { exec $path/dot -V } version - - puts "Info: $version " - puts " found in $path." - set graph_path "$path/dot$exe" - set g_flag "yes" - } - } - if {$i_flag == "no"} { - if { [file exists $path/inkscape$com] } { - catch { exec $path/inkscape -V } version - puts "Info: $version " - puts " found in $path." - set inkscape_path "$path/inkscape$com" - set i_flag "yes" - } - } - if {$l_flag == "no"} { - if { [file exists $path/pdflatex$exe] } { - catch { exec $path/pdflatex -version } version - set version [lindex [split $version "\n"] 0] - puts "Info: $version " - puts " found in $path." - set latex_path "$path/pdflatex$exe" - set l_flag "yes" - } - } - if { ("$is_win" == "yes") && ($h_flag == "no") } { - if { [file exists $path/hhc.exe] } { - puts "Info: hhc " - puts " found in $path." - set hhc_path "hhc$exe" - set h_flag "yes" - } - } - if { ($d_flag == "yes") && - ($i_flag == "yes") && - ($g_flag == "yes") && - ($l_flag == "yes") && - (($is_win == "yes") && - ($h_flag == "yes")) } { - break - } - } - - # On Windows search for hhc.exe in the default location - # if it has not been found yet - if { ("$is_win" == "yes") && ($h_flag == "no") } { - if { [info exists ::env(ProgramFiles\(x86\))] } { - set h_flag "yes" - set path "$::env(ProgramFiles\(x86\))\\HTML Help Workshop" - set hhc_path "$path\\hhc.exe" - puts "Info: hhc " - puts " found in $path." - } else { - if { [info exists ::env(ProgramFiles)] } { - set h_flag "yes" - set path "$::env(ProgramFiles)\\HTML Help Workshop" - set hhc_path "$path\\hhc.exe" - puts "Info: hhc" - puts " found in $path." - } - } - } - - # On *nix-like platforms, - # check the default binary locations if the tools had not been found yet - if { $is_win == "no" && - (($d_flag == "no") || - ($i_flag == "no") || - ($g_flag == "no") || - ($l_flag == "no")) } { - - set default_path { "/usr/bin" "/usr/local/bin" } - foreach path $default_path { - if {$d_flag == "no"} { - if { [file exists $path/doxygen$exe] } { - catch { exec $path/doxygen -V } version_string - set version [lindex [split $version_string "\n"] 0] - puts "Info: $version " - puts " found in $path." - set doxy_path "$path/doxygen$exe" - set d_flag "yes" - } - } - if {$g_flag == "no"} { - if { [file exists $path/dot$exe] } { - catch { exec $path/dot -V } version - - puts "Info: $version " - puts " found in $path." - set graph_path "$path/dot$exe" - set g_flag "yes" - } - } - if {$i_flag == "no"} { - if { [file exists $path/inkscape$exe] } { - catch { exec $path/inkscape -V } version - puts "Info: $version " - puts " found in $path." - set inkscape_path "$path/inkscape$exe" - set i_flag "yes" - } - } - if {$l_flag == "no"} { - if { [file exists $path/pdflatex$exe] } { - catch { exec $path/pdflatex -version } version - set version [lindex [split $version "\n"] 0] - puts "Info: $version " - puts " found in $path." - set latex_path "$path/pdflatex$exe" - set l_flag "yes" - } - } - } - } - - # Check if tools have been found - if { $d_flag == "no" } { - puts "Warning: Could not find doxygen installed." - return -1 - } - if { $g_flag == "no" } { - puts "Warning: Could not find graphviz installed." - } - if { $i_flag == "no" } { - puts "Warning: Could not find inkscape installed." - } - if { $l_flag == "no" } { - puts "Warning: Could not find pdflatex installed." - } - if { ("$::tcl_platform(platform)" == "windows") && ($h_flag == "no") } { - puts "Warning: Could not find hhc installed." - } - - puts "" -} - -# Convert SVG files to PDF format to allow including them to PDF -# (requires InkScape to be in PATH) -proc OCCDoc_ProcessSvg {latexDir verboseMode} { - set anSvgList [glob -nocomplain $latexDir/*.svg] - if { $anSvgList == {} } { - return - } - - catch { exec inkscape -V } anInkVer - set isOldSyntax 0 - if {[string match "Inkscape 0.*" $anInkVer]} { set isOldSyntax 1 } - foreach file $anSvgList { - if {$verboseMode == "YES"} { - puts "Info: Converting file $file..." - } - set pdffile "[file rootname $file].pdf" - if { $isOldSyntax == 1 } { - if { [catch {exec inkscape -z -D --file=$file --export-pdf=$pdffile} res] } { - #puts "Error: $res." - return - } - } else { - if { [catch {exec inkscape $file --export-area-drawing --export-type=pdf --export-filename=$pdffile} res] } { - #puts "Error: $res." - return - } - } - } -} - -# ============================================== -# Reference Manual-specific functions -# ============================================== - -# Finds dependencies between all modules -proc OCCDoc_CreateModulesDependencyGraph {dir filename modules mpageprefix} { - global module_dependency - - if {![catch {open $dir/$filename.dot "w"} file]} { - puts $file "digraph $filename" - puts $file "\{" - - foreach mod $modules { - if { $mod == "" } { - continue - } - puts $file "\t$mod \[ URL = \"[string tolower $mpageprefix$mod.html]\" \]" - foreach mod_depend $module_dependency($mod) { - puts $file "\t$mod_depend -> $mod \[ dir = \"back\", color = \"midnightblue\", style = \"solid\" \]" - } - } - - puts $file "\}" - close $file - - return $filename - } -} - -# Finds dependencies between all toolkits in module -proc OCCDoc_CreateModuleToolkitsDependencyGraph {dir filename modulename tpageprefix} { - global toolkits_in_module - global toolkit_dependency - global toolkit_parent_module - - if {![catch {open $dir/$filename.dot "w"} file]} { - puts $file "digraph $filename" - puts $file "\{" - - foreach tk $toolkits_in_module($modulename) { - puts $file "\t$tk \[ URL = \"[string tolower $tpageprefix$tk.html]\"\ ]" - foreach tkd $toolkit_dependency($tk) { - if { [info exists toolkit_parent_module($tkd)] } { - if {$toolkit_parent_module($tkd) == $modulename} { - puts $file "\t$tkd -> $tk \[ dir = \"back\", color = \"midnightblue\", style = \"solid\" \]" - } - } - } - } - - puts $file "\}" - close $file - - return $filename - } -} - -# Finds dependencies between the current toolkit and other toolkits -proc OCCDoc_CreateToolkitDependencyGraph {dir filename toolkitname tpageprefix} { - global toolkit_dependency - - if {![catch {open $dir/$filename.dot "w"} file]} { - puts $file "digraph $filename" - puts $file "\{" - - puts $file "\t$toolkitname \[ URL = \"[string tolower $tpageprefix$toolkitname.html]\"\, shape = box ]" - foreach tkd $toolkit_dependency($toolkitname) { - puts $file "\t$tkd \[ URL = \"[string tolower $tpageprefix$tkd.html]\"\ , shape = box ]" - puts $file "\t$toolkitname -> $tkd \[ color = \"midnightblue\", style = \"solid\" \]" - } - - if {[llength $toolkit_dependency($toolkitname)] > 1} { - puts $file "\taspect = 1" - } - - puts $file "\}" - close $file - - return $filename - } -} - -# Fills arrays of modules, toolkits, dependency of modules/toolkits etc -proc OCCDoc_LoadData { {theProductsDir ""} } { - global toolkits_in_module - global toolkit_dependency - global toolkit_parent_module - global module_dependency - - if { $theProductsDir == ""} { - set modules_files [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $theProductsDir]/OS/" *.tcl] - } else { - set modules_files [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $theProductsDir]/VAS/" *.tcl] - } - - foreach module_file $modules_files { - source $module_file - } - - set modules [OCCDoc_GetModulesList $theProductsDir] - foreach mod $modules { - - if { $mod == "" } { - continue - } - # Get toolkits of current module - set toolkits_in_module($mod) [$mod:toolkits] - # Get all dependence of current toolkit - foreach tk $toolkits_in_module($mod) { - # set parent module of current toolkit - set toolkit_parent_module($tk) $mod - set exlibfile [open "[OCCDoc_GetSourceDir $theProductsDir]/$tk/EXTERNLIB" r] - set exlibfile_data [read $exlibfile] - set exlibfile_data [split $exlibfile_data "\n"] - - set toolkit_dependency($tk) {} - foreach dtk $exlibfile_data { - if { ([string first "TK" $dtk 0] == 0) || - ([string first "P" $dtk 0] == 0) } { - lappend toolkit_dependency($tk) $dtk - } - } - close $exlibfile - } - } - - # Get modules dependency - foreach mod $modules { - set module_dependency($mod) {} - foreach tk $toolkits_in_module($mod) { - foreach tkd $toolkit_dependency($tk) { - if { [info exists toolkit_parent_module($tkd)] } { - if { $toolkit_parent_module($tkd) != $mod && - [lsearch $module_dependency($mod) $toolkit_parent_module($tkd)] == -1} { - lappend module_dependency($mod) $toolkit_parent_module($tkd) - } - } - } - } - } -} - -# Returns list of packages of the given toolkit -proc OCCDoc_GetPackagesList { theToolKitPath } { - - set packages_list {} - - # Open file with list of packages of the given toolkit - set fileid [open "$theToolKitPath/PACKAGES" "r"] - - while { [eof $fileid] == 0 } { - set str [gets $fileid] - if { $str != "" } { - lappend packages_list $str - } - } - - close $fileid - - return $packages_list -} - -# Returns list of modules from UDLIST -proc OCCDoc_GetModulesList { {theProductsDir ""} } { - - if { $theProductsDir == "" } { - source "[OCCDoc_GetSourceDir $theProductsDir]/OS/Modules.tcl" - # load a command from this file - set modules [OS:Modules] - } else { - source "[OCCDoc_GetSourceDir $theProductsDir]/VAS/Products.tcl" - # load a command from this file - set modules [VAS:Products] - set modules [lsearch -not -all -inline $modules "VAS"] - } - - return $modules -} - -# Returns list of desired files in the specified location -proc OCCDoc_GetHeadersList { theDesiredContent thePackageName {theProductsDir ""} } { - - # Get list of header files with path - set files_list [split [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $theProductsDir]/$thePackageName" "${thePackageName}.hxx" "${thePackageName}_*.hxx"]] - - # Get content according to desired type ('p' for path and 'f' for filenames only) - if { $theDesiredContent == "p" } { - return $files_list - } elseif { $theDesiredContent == "f" } { - - # Cut paths from filenames - foreach file $files_list { - set elem_index [lsearch $files_list $file] - lset files_list $elem_index [OCCDoc_GetNameFromPath [lindex $files_list $elem_index]] - } - return $files_list - } -} - -# Returns location of the toolkit -proc OCCDoc_Locate { theToolKitName {theProductsDir ""} } { - set tk_dir "[OCCDoc_GetSourceDir $theProductsDir]/[OCCDoc_GetNameFromPath $theToolKitName]" - return $tk_dir -} - -# Gets contents of the given html node (for Post-processing) -proc OCCDoc_GetNodeContents {node props html} { - set openTag "<$node$props>" - set closingTag "" - set start [string first $openTag $html] - if {$start == -1} { - return "" - } - set start [expr $start + [string length $openTag]] - set end [string length $html] - set html [string range $html $start $end] - set start [string first $closingTag $html] - set end [string length $html] - if {$start == -1} { - return "" - } - set start [expr $start - 1] - return [string range $html 0 $start] -} - -# Generates main page file describing module structure -proc OCCDoc_MakeMainPage {outDir outFile modules {theProductsDir ""} } { - global env - - set one_module [expr [llength $modules] == 1] - set fd [open $outFile "w"] - - set module_prefix "module_" - set toolkit_prefix "toolkit_" - set package_prefix "package_" - - if { ! [file exists "$outDir/html"] } { - file mkdir "$outDir/html" - } - - OCCDoc_LoadData $theProductsDir - - # Main page: list of modules - if { ! $one_module } { - puts $fd "/**" - puts $fd "\\mainpage Open CASCADE Technology" - - foreach mod $modules { - puts $fd "\\li \\subpage [string tolower $module_prefix$mod]" - } - # insert modules relationship diagram - puts $fd "\\dotfile [OCCDoc_CreateModulesDependencyGraph $outDir/html schema_all_modules $modules $module_prefix]" - puts $fd "**/\n" - } - - # One page per module: list of toolkits - set toolkits {} - foreach mod $modules { - if { $mod == "" } { - continue - } - puts $fd "/**" - if { $one_module } { - puts $fd "\\mainpage OCCT Module [$mod:name]" - } else { - puts $fd "\\page [string tolower module_$mod] Module [$mod:name]" - } - foreach tk [lsort [$mod:toolkits]] { - lappend toolkits $tk - puts $fd "\\li \\subpage [string tolower $toolkit_prefix$tk]" - } - puts $fd "\\dotfile [OCCDoc_CreateModuleToolkitsDependencyGraph $outDir/html schema_$mod $mod $toolkit_prefix]" - puts $fd "**/\n" - } - - # One page per toolkit: list of packages - set packages {} - foreach tk $toolkits { - puts $fd "/**" - puts $fd "\\page [string tolower toolkit_$tk] Toolkit $tk" - foreach pk [lsort [OCCDoc_GetPackagesList [OCCDoc_Locate $tk $theProductsDir]]] { - lappend packages $pk - set u [OCCDoc_GetNameFromPath $pk] - puts $fd "\\li \\subpage [string tolower $package_prefix$u]" - } - puts $fd "\\dotfile [OCCDoc_CreateToolkitDependencyGraph $outDir/html schema_$tk $tk $toolkit_prefix]" - puts $fd "**/\n" - } - - # One page per package: list of classes - foreach pk $packages { - set u [OCCDoc_GetNameFromPath $pk] - puts $fd "/**" - puts $fd "\\page [string tolower $package_prefix$u] Package $u" - foreach hdr [lsort [OCCDoc_GetHeadersList "f" "$pk" "$theProductsDir"]] { - if { ! [regexp {^Handle_} $hdr] && [regexp {(.*)[.]hxx} $hdr str obj] } { - puts $fd "\\li \\subpage $obj" - } - } - puts $fd "**/\n" - } - - close $fd - - return $outFile -} - -# Parses generated files to add a navigation path -proc OCCDoc_PostProcessor {outDir} { - puts "[clock format [clock seconds] -format {%Y.%m.%d %H:%M}] Post-process is started ..." - append outDir "/html" - set files [glob -nocomplain -type f $outDir/package_*] - if { $files != {} } { - foreach f [lsort $files] { - set packageFilePnt [open $f r] - set packageFile [read $packageFilePnt] - set navPath [OCCDoc_GetNodeContents "div" " id=\"nav-path\" class=\"navpath\"" $packageFile] - set packageName [OCCDoc_GetNodeContents "div" " class=\"title\"" $packageFile] - regsub -all {<[^<>]*>} $packageName "" packageName - - # add package link to nav path - set first [expr 1 + [string last "/" $f]] - set last [expr [string length $f] - 1] - set packageFileName [string range $f $first $last] - set end [string first "" $navPath] - set end [expr $end - 1] - set navPath [string range $navPath 0 $end] - append navPath "
  • $packageName
  • \n " - - # get list of files to update - set listContents [OCCDoc_GetNodeContents "div" " class=\"textblock\"" $packageFile] - set listContents [OCCDoc_GetNodeContents "ul" "" $listContents] - set lines [split $listContents "\n"] - foreach line $lines { - if {[regexp {href=\"([^\"]*)\"} $line tmpLine classFileName]} { - # check if anchor is there - set anchorPos [string first "#" $classFileName] - if {$anchorPos != -1} { - set classFileName [string range $classFileName 0 [expr $anchorPos - 1]] - } - - # read class file - set classFilePnt [open $outDir/$classFileName r+] - set classFile [read $classFilePnt] - - # find position of content block - set contentPos [string first "
    " $classFile] - set navPart [string range $classFile 0 [expr $contentPos - 1]] - - # position where to insert nav path - set posToInsert [string last "
    " $navPart] - set prePart [string range $classFile 0 [expr $posToInsert - 1]] - set postPart [string range $classFile $posToInsert [string length $classFile]] - set newClassFile "" - append newClassFile $prePart "
    " $navPath \n "
    " \n $postPart - - # write updated content - seek $classFilePnt 0 - puts $classFilePnt $newClassFile - close $classFilePnt - } - } - close $packageFilePnt - } - return 0 - } else { - puts "no files found" - return 1 - } -} - -# ====================================== -# User Guides-specific functions -# ====================================== - -# Loads a list of docfiles from file FILES.txt -proc OCCDoc_LoadFilesList {} { - set INPUTDIR [OCCDoc_GetDoxDir [OCCDoc_GetProdRootDir]] - - global available_docfiles - set available_docfiles {} - - # Read data from file - if { [file exists "$INPUTDIR/FILES_HTML.txt"] == 1 } { - set FILE [open "$INPUTDIR/FILES_HTML.txt" r] - while {1} { - set line [string trim [gets $FILE]] - - # trim possible comments starting with '#' - set line [regsub {\#.*} $line {}] - if {$line != ""} { - lappend available_docfiles $line - } - if {[eof $FILE]} { - close $FILE - break - } - } - } else { - return -1 - } - - global available_pdf - set available_pdf {} - - # Read data from file - if { [file exists "$INPUTDIR/FILES_PDF.txt"] } { - set FILE [open "$INPUTDIR/FILES_PDF.txt" r] - while {1} { - set line [string trim [gets $FILE]] - - # Trim possible comments starting with '#' - set line [regsub {\#.*} $line {}] - if {$line != ""} { - lappend available_pdf $line - } - if {[eof $FILE]} { - close $FILE - break - } - } - } else { - return -1 - } - return 0 -} - -# Writes new TeX file for conversion from tex to pdf for a specific doc -proc OCCDoc_MakeRefmanTex {fileName latexDir verboseMode latexFilesList} { - - if { $verboseMode == "YES" } { - puts "Info: Making refman.tex file for $fileName..." - } - set DOCNAME "$latexDir/refman.tex" - if {[file exists $DOCNAME] == 1} { - file delete -force $DOCNAME - } - - # Copy template file to latex folder - if { "[OCCDoc_GetProdRootDir]" != "" } { - file copy "[OCCDoc_GetDoxDir [OCCDoc_GetProdRootDir]]/resources/prod_pdf_template.tex" $DOCNAME - } else { - file copy "[OCCDoc_GetDoxDir]/resources/occt_pdf_template.tex" $DOCNAME - } - - # Get templatized data - set texfile [open $DOCNAME "r"] - set texfile_loaded [read $texfile] - close $texfile - - # Replace dummy values - set year [clock format [clock seconds] -format {%Y}] - set month [clock format [clock seconds] -format {%B}] - set texfile [open $DOCNAME "w"] - set casVersion [OCCDoc_DetectCasVersion] - - # Get name of the document - set docLabel "" - foreach aFileName $latexFilesList { - # Find the file in FILES_PDF.txt - set parsedFileName [file rootname [lindex [split $aFileName "/" ] end]] - if { [regexp "${parsedFileName}$" $fileName] } { - set filepath "[OCCDoc_GetDoxDir [OCCDoc_GetProdRootDir]]/$aFileName" - if { [file exists $filepath] } { - set MDFile [open $filepath "r"] - set label [split [gets $MDFile] "\{"] - set docLabel [lindex $label 0] - close $MDFile - break - } - } - } - - set occtlogo_path "[OCCDoc_GetDoxDir]/resources/occt_logo.png" - set occlogo_path "[OCCDoc_GetDoxDir]/resources/occ_logo.png" - set copyright_path "[OCCDoc_GetDoxDir [OCCDoc_GetProdRootDir]]/resources/prod_pdf_template.tex" - set texfile_loaded [string map [list DEFDOCLABEL "$docLabel" DEFCASVERSION "$casVersion" DEFFILENAME "$fileName" DEFYEAR "$year" DEFMONTH "$month" DEFCOPYRIGHT "$copyright_path" DEFLOGO "$occtlogo_path" DEFOCCLOGO "$occlogo_path" DEFTITLE ""] $texfile_loaded] - - # Get data - puts $texfile $texfile_loaded - - close $texfile -} - -# Postprocesses generated TeX files -proc OCCDoc_ProcessTex {{texFiles {}} {latexDir} verboseMode} { - - foreach TEX $texFiles { - if {$verboseMode == "YES"} { - puts "Info: Preprocessing file $TEX..." - } - - if {![file exists $TEX]} { - puts "Error: file $TEX does not exist." - return -1 - } - - set IN_F [open "$TEX" "r"] - set TMPFILENAME "$latexDir/temp.tex" - set OUT_F [open $TMPFILENAME w] - - while {1} { - set line [gets $IN_F] - if { [string first "\\includegraphics" $line] != -1 } { - # replace svg extension by pdf - set line [regsub {[.]svg} $line ".pdf"] - # Center images in TeX files - set line "\\begin{center}\n $line\n\\end{center}" - } elseif { [string first "\\subsection" $line] != -1 } { - # Replace \subsection with \section tag - regsub -all "\\\\subsection" $line "\\\\section" line - } elseif { [string first "\\subsubsection" $line] != -1 } { - # Replace \subsubsection with \subsection tag - regsub -all "\\\\subsubsection" $line "\\\\subsection" line - } elseif { [string first "\\paragraph" $line] != -1 } { - # Replace \paragraph with \subsubsection tag - regsub -all "\\\\paragraph" $line "\\\\subsubsection" line - } - puts $OUT_F $line - - if {[eof $IN_F]} { - close $IN_F - close $OUT_F - break - } - } - - file delete -force $TEX - file rename $TMPFILENAME $TEX - } -} diff --git a/adm/start.tcl b/adm/start.tcl deleted file mode 100644 index 9b16406b64..0000000000 --- a/adm/start.tcl +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/tclsh - -# ======================================================================= -# Created on: 2014-03-21 -# Created by: OMY -# Copyright (c) 1996-1999 Matra Datavision -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -if { [llength $argv] < 1 } { - puts "Command-line starter for Tcl command defined in same-named file." - puts "Use it as follows:" - puts "\> tclsh start.tcl command \[arguments\]" - return -} - -set cmdname [lindex $argv 0] -source [file join [file dirname [info script]] $cmdname.tcl] - -eval $cmdname [lrange $argv 1 end] diff --git a/dox/resources/occt_ug_html.doxyfile b/dox/resources/occt_ug_html.doxyfile index 267e6a9de1..e8c2a8e727 100644 --- a/dox/resources/occt_ug_html.doxyfile +++ b/dox/resources/occt_ug_html.doxyfile @@ -47,6 +47,9 @@ ENUM_VALUES_PER_LINE = 8 TREEVIEW_WIDTH = 250 EXTERNAL_PAGES = NO SEARCHDATA_FILE = searchdata.xml +SERVER_BASED_SEARCH = NO +SEARCHENGINE = YES +EXTERNAL_SEARCH = YES SKIP_FUNCTION_MACROS = YES FORMULA_FONTSIZE = 12 FORMULA_TRANSPARENT = YES diff --git a/src/OS/ApplicationFramework.tcl b/src/OS/ApplicationFramework.tcl deleted file mode 100644 index a810dee908..0000000000 --- a/src/OS/ApplicationFramework.tcl +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# -;# Liste des toolkits WOK sous forme de full path -;# -proc ApplicationFramework:toolkits { } { - return [list \ - TKCDF \ - TKLCAF \ - TKVCAF \ - TKCAF \ - TKBinL \ - TKXmlL \ - TKBin \ - TKXml \ - TKStdL \ - TKStd \ - TKTObj \ - TKBinTObj \ - TKXmlTObj \ - ] -} -;# -;# Autres UDs a prendre. -;# -proc ApplicationFramework:ressources { } { - return [list \ - [list both r StdResource {}] \ - [list both r XmlOcafResource {}] \ - ] -} -;# -;# Nom du module -;# -proc ApplicationFramework:name { } { - return ApplicationFramework -} -;# -;# Short Nom du module ( 3 lettres ) -;# -proc ApplicationFramework:alias { } { - return CAF -} -proc ApplicationFramework:depends { } { - return [list Visualization] -} - -;# -;# Returns a list of exported features. -;# -proc ApplicationFramework:Export { } { - return [list source runtime wokadm api] -} diff --git a/src/OS/DataExchange.tcl b/src/OS/DataExchange.tcl deleted file mode 100644 index e11aa5496a..0000000000 --- a/src/OS/DataExchange.tcl +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# -;# Liste des toolkits WOK sous forme de full path -;# -proc DataExchange:toolkits { } { - return [list TKXSBase TKXCAF TKDEIGES TKDESTEP \ - TKDE TKDECascade TKDESTL TKDEVRML \ - TKXmlXCAF TKBinXCAF TKRWMesh \ - TKDEGLTF TKDEOBJ TKDEPLY] -} - -;# -;# Autres UDs a prendre. -;# -proc DataExchange:ressources { } { - return [list \ - [list both r XSMessage {} ] \ - [list both r SHMessage {} ] \ - [list both r XSTEPResource {} ] \ - ] -} -;# -;# retourne une liste de triplets {type /name} -;# permet de faire : cp $CASROOT//name -;# On peut ainsi embarquer des fichiers d'un peu partout et les dispatcher sous -;# la racine d'arrivee et ce avec un autre nom. -;# rien n'empeche de CALCULER automatiquement des paths dans cette proc. -;# type = source/runtime/both pour dire si le fichier va dans l'archive en question. -;# une deux (ou les deux) type d'archive fabriquees. -;# -proc DataExchange:freefiles { } { - return {} -} -;# -;# Nom du module -;# -proc DataExchange:name { } { - return DataExchange -} -proc DataExchange:alias { } { - return DXE -} -proc DataExchange:depends { } { - return [list ApplicationFramework] -} - -;# -;# Returns a list of exported features. -;# -proc DataExchange:Export { } { - return [list source runtime wokadm api] -} diff --git a/src/OS/Draw.tcl b/src/OS/Draw.tcl deleted file mode 100644 index 3d7eaef53c..0000000000 --- a/src/OS/Draw.tcl +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# Return list of toolkits -proc Draw:toolkits { } { - set aResult [list TKDraw TKTopTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw] - - lappend aResult "TKOpenGlTest" - if { [info exists ::env(HAVE_GLES2)] && "$::env(HAVE_GLES2)" == "true" } { - lappend aResult "TKOpenGlesTest" - } - - if { [info exists ::env(HAVE_D3D)] } { - if { "$::env(HAVE_D3D)" == "true" } { - lappend aResult "TKD3DHostTest" - } - } - - if { [info exists ::env(HAVE_VTK)] && "$::env(HAVE_VTK)" == "true" } { - lappend aResult "TKIVtkDraw" - } - - return $aResult -} - -;# Autres UDs a prendre. Listes de triplets -;# { ar typ UD str } Tous les types de UD vont dans un sous directory nomme root/str -;# Ils seront dans CAS3.0/str de l'archive de type ar (source/runtime) -;# { ar typ UD {} } Tous les types de UD vont dans root/UD/src => CAS3.0/src -proc Draw:ressources { } { - return [list \ - [list both r DrawResources {}] \ - [list both x DRAWEXE {}] \ - ] -} - -proc Draw:freefiles { } { return {} } - -proc Draw:name { } { return Draw } -proc Draw:alias { } { return DRAW } -proc Draw:depends { } { return [list DataExchange] } -proc Draw:acdepends { } { return [list TCLTK] } - -;# Returns a list of exported features. -proc Draw:Export { } { return [list source runtime wokadm api] } diff --git a/src/OS/FILES b/src/OS/FILES deleted file mode 100755 index 5c94c2bb0a..0000000000 --- a/src/OS/FILES +++ /dev/null @@ -1,8 +0,0 @@ -srcinc:::ApplicationFramework.tcl -srcinc:::DataExchange.tcl -srcinc:::Draw.tcl -srcinc:::FoundationClasses.tcl -srcinc:::ModelingAlgorithms.tcl -srcinc:::ModelingData.tcl -srcinc:::Modules.tcl -srcinc:::Visualization.tcl diff --git a/src/OS/FoundationClasses.tcl b/src/OS/FoundationClasses.tcl deleted file mode 100644 index bf8b056888..0000000000 --- a/src/OS/FoundationClasses.tcl +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# -;# Liste des toolkits WOK sous forme de full path -;# -proc FoundationClasses:toolkits { } { - return [list TKernel TKMath] -} -;# -;# Autres UDs a prendre. -;# -proc FoundationClasses:ressources { } { - return [list \ - [list both r OS {} ] \ - [list both r UnitsAPI {} ] \ - ] -} -; -;# -;# retourne une liste de triplets {type /name} -;# permet de faire : cp $CASROOT//name -;# On peut ainsi embarquer des fichiers d'un peu partout et les dispatcher sous -;# la racine d'arrivee et ce avec un autre nom. -;# rien n'empeche de CALCULER automatiquement des paths dans cette proc. -;# type = source/runtime/both pour dire si le fichier va dans l'archive en question. -;# une deux (ou les deux) type d'archive fabriquees. -;# -proc FoundationClasses:freefiles { } {} -;# -;# Nom du module -;# -proc FoundationClasses:name { } { - return FoundationClasses -} -proc FoundationClasses:alias { } { - return FOC -} -proc FoundationClasses:depends { } { - return {} -} - -;# -;# Returns a list of exported features. -;# -proc FoundationClasses:Export { } { - return [list source runtime wokadm api] -} - -proc FoundationClasses:install { } { - return [list UnitsAPI] -} diff --git a/src/OS/ModelingAlgorithms.tcl b/src/OS/ModelingAlgorithms.tcl deleted file mode 100644 index a6d573ce27..0000000000 --- a/src/OS/ModelingAlgorithms.tcl +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# -;# Liste des toolkits WOK sous forme de full path -;# -proc ModelingAlgorithms:toolkits { } { - return [list TKGeomAlgo \ - TKTopAlgo \ - TKPrim \ - TKBO \ - TKBool \ - TKHLR \ - TKFillet \ - TKOffset \ - TKFeat \ - TKMesh \ - TKXMesh \ - TKShHealing \ - ] -} -;# -;# Autres UDs a prendre. -;# -proc ModelingAlgorithms:ressources { } { - -} -;# -;# Nom du module -;# -proc ModelingAlgorithms:name { } { - return ModelingAlgorithms -} -proc ModelingAlgorithms:alias { } { - return ALGO -} -proc ModelingAlgorithms:depends { } { - return [list ModelingData] -} - -;# -;# Returns a list of exported features. -;# -proc ModelingAlgorithms:Export { } { - return [list source runtime wokadm api] -} diff --git a/src/OS/ModelingData.tcl b/src/OS/ModelingData.tcl deleted file mode 100644 index 30b809dd40..0000000000 --- a/src/OS/ModelingData.tcl +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# -;# Liste des toolkits WOK sous forme de full path -;# -proc ModelingData:toolkits { } { - return [list TKG2d \ - TKG3d \ - TKGeomBase \ - TKBRep \ - ] -} -;# -;# Autres UDs a prendre. -;# -proc ModelingData:ressources { } { - -} -;# -;# Nom du module -;# -proc ModelingData:name { } { - return ModelingData -} -proc ModelingData:alias { } { - return DATA -} -proc ModelingData:depends { } { - return [list FoundationClasses] -} - -;# -;# Returns a list of exported features. -;# -proc ModelingData:Export { } { - return [list source runtime wokadm api] -} diff --git a/src/OS/Modules.tcl b/src/OS/Modules.tcl deleted file mode 100644 index 2ca889cc09..0000000000 --- a/src/OS/Modules.tcl +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# -;# Retourne la liste ordonnee des noms de Modules -;# -proc OS:Modules { {plat ""} } { - set ret [list FoundationClasses \ - ModelingData \ - ModelingAlgorithms \ - Visualization \ - ApplicationFramework \ - DataExchange \ - Draw \ - ] - return $ret -} diff --git a/src/OS/TApplicationFramework.tcl b/src/OS/TApplicationFramework.tcl deleted file mode 100644 index 9e493c28a5..0000000000 --- a/src/OS/TApplicationFramework.tcl +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2020 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -# List of toolkits -proc TApplicationFramework:toolkits { } { - return [list TKTreeModel TKTInspectorAPI TKDFBrowser] -} - -# List of non-toolkits (resource units, executables etc., with associated info) -proc TApplicationFramework:ressources { } { -} - -# Module name -proc TApplicationFramework:name { } { - return TApplicationFramework -} - -# And short alias -proc TApplicationFramework:alias { } { - return TApplicationFramework -} - -# Dependency on other products -proc TApplicationFramework:depends { } { - return [list ApplicationFramework FoundationClasses DataExchange TModelingData Visualization] -} - -# Returns a list of exported features. -proc TApplicationFramework:Export { } { - return [list source runtime wokadm api] -} diff --git a/src/OS/TModelingData.tcl b/src/OS/TModelingData.tcl deleted file mode 100644 index 945d5a4e2f..0000000000 --- a/src/OS/TModelingData.tcl +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2020 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -# List of toolkits -proc TModelingData:toolkits { } { - return [list TKShapeView] -} - -# List of non-toolkits (resource units, executables etc., with associated info) -proc TModelingData:ressources { } { -} - -# Module name -proc TModelingData:name { } { - return TModelingData -} - -# And short alias -proc TModelingData:alias { } { - return TModelingData -} - -# Dependency on other products -proc TModelingData:depends { } { - return [list FoundationClasses ModelingData TVisualization] -} - -# Returns a list of exported features. -proc TModelingData:Export { } { - return [list source runtime wokadm api] -} diff --git a/src/OS/TTool.tcl b/src/OS/TTool.tcl deleted file mode 100644 index 86bdae6d87..0000000000 --- a/src/OS/TTool.tcl +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) 2020 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -# List of toolkits -proc TTool:toolkits { } { - return [list TKTInspector TKToolsDraw] -} - -# List of non-toolkits (resource units, executables etc., with associated info) -proc TTool:ressources { } { - return [list \ - [list both x TInspectorEXE {}] \ - ] -} - -# Module name -proc TTool:name { } { - return TTool -} - -# And short alias -proc TTool:alias { } { - return TTool -} - -# Dependency on other products -proc TTool:depends { } { - return [list FoundationClasses Draw TApplicationFramework] -} - -# Returns a list of exported features. -proc TTool:Export { } { - return [list source runtime wokadm api] -} diff --git a/src/OS/TVisualization.tcl b/src/OS/TVisualization.tcl deleted file mode 100644 index 18d786f955..0000000000 --- a/src/OS/TVisualization.tcl +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2020 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -# List of toolkits -proc TVisualization:toolkits { } { - return [list TKView TKVInspector] -} - -# List of non-toolkits (resource units, executables etc., with associated info) -proc TVisualization:ressources { } { -} - -# Module name -proc TVisualization:name { } { - return TVisualization -} - -# And short alias -proc TVisualization:alias { } { - return TVisualization -} - -# Dependency on other products -proc TVisualization:depends { } { - return [list FoundationClasses] -} - -# Returns a list of exported features. -proc TVisualization:Export { } { - return [list source runtime wokadm api] -} diff --git a/src/OS/Tools.tcl b/src/OS/Tools.tcl deleted file mode 100644 index d14c0bb57a..0000000000 --- a/src/OS/Tools.tcl +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2020 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# -;# Returns an ordered list of module names -;# -proc OS:Tools { {plat ""} } { - set ret [list TModelingData \ - TVisualization \ - TApplicationFramework \ - TTool \ - ] - return $ret -} diff --git a/src/OS/Visualization.tcl b/src/OS/Visualization.tcl deleted file mode 100644 index 7a17efff81..0000000000 --- a/src/OS/Visualization.tcl +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (c) 1999-2014 OPEN CASCADE SAS -# -# This file is part of Open CASCADE Technology software library. -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation, with special exception defined in the file -# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -# distribution for complete text of the license and disclaimer of any warranty. -# -# Alternatively, this file may be used under the terms of Open CASCADE -# commercial license or contractual agreement. - -;# -;# Liste des toolkits WOK sous forme de full path -;# -proc Visualization:toolkits { } { - set aResult [list TKService TKV3d TKMeshVS] - - lappend aResult "TKOpenGl" - if { [info exists ::env(HAVE_GLES2)] && "$::env(HAVE_GLES2)" == "true" } { - lappend aResult "TKOpenGles" - } - - if { [info exists ::env(HAVE_D3D)] } { - if { "$::env(HAVE_D3D)" == "true" } { - lappend aResult "TKD3DHost" - } - } - - if { [info exists ::env(HAVE_VTK)] && "$::env(HAVE_VTK)" == "true" } { - lappend aResult "TKIVtk" - } - - return $aResult -} - -;# -;# Autres UDs a prendre. -;# -proc Visualization:ressources { } { - return [list \ - [list both r Textures {}] \ - [list both r Shaders {}] \ - [list both r XRResources {}] \ - ] -} -;# -;# Nom du module -;# -proc Visualization:name { } { - return Visualization -} -proc Visualization:alias { } { - return VIS -} -proc Visualization:depends { } { - return [list ModelingAlgorithms] -} - -proc Visualization:acdepends { } { - set aList [list X11 GL FREETYPE] - - if { [info exists ::env(HAVE_VTK)] && "$::env(HAVE_VTK)" == "true" } { - lappend aList "VTK" - } - - return $aList -} - -;# -;# Returns a list of exported features. -;# -proc Visualization:Export { } { - return [list source runtime wokadm api] -}