1function(print_bool HEADING VAR) 2 if(${VAR}) 3 set(LABEL "yes") 4 else() 5 set(LABEL "no") 6 endif() 7 print_str(${HEADING} ${LABEL}) 8endfunction() 9 10function(print_str HEADING LABEL) 11 string(LENGTH "${HEADING}" HEADING_LENGTH) 12 math(EXPR REMAINING_WIDTH "30 - ${HEADING_LENGTH}") 13 14 if("${LABEL}" STREQUAL "") 15 pad_string(PADDED ${REMAINING_WIDTH} " " "${ARGN}") 16 else() 17 pad_string(PADDED ${REMAINING_WIDTH} " " "${LABEL}") 18 endif() 19 20 message(STATUS "${HEADING}: ${PADDED}") 21endfunction() 22 23############################################################################# 24 25set(ALL_DEPENDENCIES ${REQUIRED_DEPENDENCIES} ${OPTIONAL_DEPENDENCIES} ${VENDORED_DEPENDENCIES}) 26list(SORT ALL_DEPENDENCIES CASE INSENSITIVE) 27 28message(STATUS " ") 29message(STATUS "-----[ Build configuration ]----") 30print_str("Version" "${PACKAGE_VERSION}") 31print_str("CMake build type" "${CMAKE_BUILD_TYPE}" "default") 32if(BUILD_SHARED_LIBS) 33 message(STATUS "Library type: shared") 34else() 35 message(STATUS "Library type: static") 36endif() 37if(USE_CCACHE) 38 if(CCACHE_PROGRAM) 39 message(STATUS "Compiler cache: ccache") 40 endif() 41else() 42 message(STATUS "Compiler cache: disabled") 43endif() 44 45message(STATUS " ") 46message(STATUS "----------[ Features ]----------") 47print_bool("GLPK for optimization" IGRAPH_GLPK_SUPPORT) 48print_bool("Reading GraphML files" IGRAPH_GRAPHML_SUPPORT) 49print_bool("Thread-local storage" IGRAPH_ENABLE_TLS) 50print_bool("Link-time optimization" IGRAPH_ENABLE_LTO) 51message(STATUS " ") 52 53message(STATUS "--------[ Dependencies ]--------") 54foreach(DEPENDENCY ${ALL_DEPENDENCIES}) 55 list(FIND VENDORED_DEPENDENCIES "${DEPENDENCY}" INDEX) 56 if(INDEX EQUAL -1) 57 print_bool("${DEPENDENCY}" ${DEPENDENCY}_FOUND) 58 else() 59 print_str("${DEPENDENCY}" "vendored") 60 endif() 61endforeach() 62message(STATUS " ") 63 64message(STATUS "-----------[ Testing ]----------") 65if(DIFF_TOOL) 66 print_str("Diff tool" "diff") 67elseif(FC_TOOL) 68 print_str("Diff tool" "fc") 69else() 70 print_str("Diff tool" "not found") 71endif() 72print_str("Sanitizers" "${USE_SANITIZER}" "none") 73print_bool("Code coverage" IGRAPH_ENABLE_CODE_COVERAGE) 74print_bool("Verify 'finally' stack" IGRAPH_VERIFY_FINALLY_STACK) 75message(STATUS " ") 76 77message(STATUS "--------[ Documentation ]-------") 78print_bool("HTML" HTML_DOC_BUILD_SUPPORTED) 79print_bool("PDF" PDF_DOC_BUILD_SUPPORTED) 80message(STATUS " ") 81 82set(MISSING_DEPENDENCIES) 83foreach(DEPENDENCY ${REQUIRED_DEPENDENCIES}) 84 if(NOT ${DEPENDENCY}_FOUND) 85 list(APPEND MISSING_DEPENDENCIES ${DEPENDENCY}) 86 endif() 87endforeach() 88 89if(MISSING_DEPENDENCIES) 90 list(JOIN MISSING_DEPENDENCIES ", " GLUED) 91 message(FATAL_ERROR "The following dependencies are missing: ${GLUED}") 92else() 93 message(STATUS "igraph configured successfully.") 94 message(STATUS " ") 95endif() 96