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