Files
create/cMake/FreeCAD_Helpers/PrintFinalReport.cmake
berniev d5e1b3f441 Further efficiencies to Summary Report
Changed existing function to macro to access list of lines
Added conditional macro to save most of the if() else() endif()
Output sorted for improved comprehension
Moved build message out (nothing to do with report)
SLOC -~30%
2023-01-30 18:10:52 -07:00

129 lines
5.3 KiB
CMake

macro(PrintFinalReport)
# simple report line
macro(simple)
set(name ${ARGV0})
set(value ${ARGV1})
if(NOT value)
set(value "-undefined-")
endif()
string(APPEND name ": ")
string(SUBSTRING ${name} 0 20 nameStr)
list(APPEND simpleLines "${nameStr} ${value}")
endmacro()
# report line with conditional data
macro(conditional)
set(name ${ARGV0})
set(condition ${ARGV1})
set(ifFalse ${ARGV2})
set(ifTrue ${ARGV3})
if(${condition})
set(out ${ifTrue})
else()
set(out ${ifFalse})
endif()
simple(${name} ${out})
endmacro()
################ Report data ##################
simple(BuildType ${CMAKE_BUILD_TYPE})
simple(Compiler "${CMAKE_CXX_COMPILER} (${CMAKE_CXX_COMPILER_VERSION})")
simple(Flags ${CMAKE_CXX_FLAGS})
simple(Standard "Requires C++${CMAKE_CXX_STANDARD}")
# Qt5 needs/sets PYTHON_CONFIG_SUFFIX regarding Shiboken
simple(Python "${Python3_VERSION} [${PYTHON_EXECUTABLE}] Suffix: [${PYTHON_CONFIG_SUFFIX}]")
conditional(pybind11 pybind11_FOUND "not enabled" ${pybind11_VERSION})
simple(Boost ${Boost_VERSION})
simple(XercesC "${XercesC_VERSION} [${XercesC_LIBRARIES}] [${XercesC_INCLUDE_DIRS}]")
simple(ZLIB "${ZLIB_VERSION_STRING}")
simple(PyCXX "${PYCXX_VERSION} [${PYCXX_INCLUDE_DIR}]")
simple(OCC "${OCC_VERSION_STRING} [${OCC_LIBRARY_DIR}] [${OCC_INCLUDE_DIR}]")
simple(OCC_Libs "[${OCC_LIBRARIES}]")
if(BUILD_SMESH)
if(FREECAD_USE_EXTERNAL_SMESH)
simple(SMESH "${SMESH_VERSION_MAJOR}.${SMESH_VERSION_MINOR}.${SMESH_VERSION_PATCH}.${SMESH_VERSION_TWEAK}")
else()
simple(SMESH "${SMESH_VERSION_MAJOR}.${SMESH_VERSION_MINOR}.${SMESH_VERSION_PATCH}.${SMESH_VERSION_TWEAK} build internal")
simple(MEDFile "${MEDFILE_VERSION} [${MEDFILE_LIBRARIES}] [${MEDFILE_INCLUDE_DIRS}]")
simple(HDF5 ${HDF5_VERSION})
simple(VTK ${VTK_VERSION})
endif()
else()
simple(SMESH "do not build")
endif()
conditional(NETGEN NETGEN_FOUND
"not enabled"
"${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}.${NETGEN_VERSION_PATCH} (${NETGEN_VERSION}) [${NETGEN_DEFINITIONS}] [${NETGEN_CXX_FLAGS}] [${NGLIB_INCLUDE_DIR}] [${NGLIB_LIBRARIES}] [${NETGEN_INCLUDE_DIRS}]"
)
#simple(OpenCV ${OpenCV_VERSION})
conditional(SWIG SWIG_FOUND "not found" ${SWIG_VERSION})
conditional(Eigen3 EIGEN3_FOUND "not found" ${EIGEN3_VERSION})
conditional(QtConcurrent BUILD_GUI "not needed" ${QtConcurrent_VERSION})
simple(QtCore ${QtCore_VERSION})
simple(QtNetwork ${QtNetwork_VERSION})
conditional(QtOpenGL BUILD_GUI "not needed" ${QtOpenGL_VERSION})
conditional(QtPrintSupport BUILD_GUI "not needed" ${QtPrintSupport_VERSION})
conditional(QtSvg BUILD_GUI "not needed" ${QtSvg_VERSION})
conditional(QtUiTools BUILD_GUI "not needed" ${QtUiTools_VERSION})
conditional(QtWidgets BUILD_GUI "not needed" ${QtWidgets_VERSION})
simple(QtXml ${QtXml_VERSION})
if (BUILD_GUI)
conditional(QtWebEngineWidgets BUILD_WEB "not needed (BUILD_WEB is OFF)" ${QtWebEngineWidgets_VERSION})
conditional(DesignerPlugin BUILD_DESIGNER_PLUGIN
"not built (BUILD_DESIGNER_PLUGIN is OFF)"
"[${DESIGNER_PLUGIN_LOCATION}/${libFreeCAD_widgets}]"
)
else()
simple(QtWebKitWidgets "not needed")
endif()
conditional(Shiboken SHIBOKEN_FOUND "not found" "${SHIBOKEN_VERSION} Base: [${SHIBOKEN_BASEDIR}]")
conditional(PySide PYSIDE_FOUND "not found" "${PYSIDE_VERSION} [${PYSIDE_INCLUDE_DIR}]")
conditional(PySideTools PYSIDE_TOOLS_FOUND
"not found"
"uic: [${PYSIDE_UIC_EXECUTABLE}] rcc: [${PYSIDE_RCC_EXECUTABLE}]"
)
if(FREECAD_USE_FREETYPE)
conditional(Freetype FREETYPE_FOUND "not found" ${FREETYPE_VERSION_STRING})
else()
simple(Freetype "disabled")
endif()
simple(OpenGL_Lib [${OPENGL_gl_LIBRARY}])
simple(OpenGLU_Lib [${OPENGL_glu_LIBRARY}])
simple(OpenGLU_Incl [${OPENGL_INCLUDE_DIR}])
simple(Coin3D "${COIN3D_VERSION} [${COIN3D_LIBRARIES}] [${COIN3D_INCLUDE_DIRS}]")
simple(Pivy ${PIVY_VERSION})
if (WIN32)
#simple(SPNAV "not available yet for your OS") # FREECAD_USE_3DCONNEXION instead...
else()
conditional(SPNAV SPNAV_FOUND "not found" "[${SPNAV_LIBRARY}] [${SPNAV_INCLUDE_DIR}]")
endif()
conditional(Matplotlib MATPLOTLIB_FOUND "not found" ${MATPLOTLIB_VERSION})
if(BUILD_VR)
conditional(Rift RIFT_FOUND "not found" ${Rift_VERSION})
else()
simple(Rift "not enabled (BUILD_VR)")
endif()
if(DOXYGEN_FOUND)
simple(Doxygen ${DOXYGEN_VERSION})
simple(Language ${DOXYGEN_LANGUAGE})
conditional(Coin3D_DOC COIN3D_DOC_FOUND "not found" ${COIN3D_DOC_PATH})
else()
simple(Doxygen "not found")
endif()
conditional(Tests BUILD_TEST "OFF" "ON")
############## End report data ####################
message(STATUS "\n==============\n"
"Summary Report\n"
"==============\n")
list(SORT simpleLines CASE INSENSITIVE)
foreach(line ${simpleLines})
message(STATUS ${line})
endforeach()
endmacro()