This file is indexed.

/usr/share/dune/cmake/modules/FindMETIS.cmake is in libdune-common-dev 2.5.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# .. cmake_module::
#
#    Find the METIS library
#
#    You may set the following variables to modify the
#    behaviour of this module:
#
#    :ref:`METIS_ROOT`
#       Prefix, where METIS is installed
#
#    :ref:`METIS_LIB_NAME`
#       Name of the METIS library (default: metis)
#
#    :ref:`METIS_LIBRARY`
#       Full path to the METIS library
#
#    Sets the following variables:
#
#    :code:`METIS_FOUND`
#       True if the METIS library was found.
#
#    :code:`METIS_LIBRARY`
#       Full path to the METIS library
#
#    :code:`METIS_LIBRARIES`
#       List of libraries needed for linking with METIS
#
# .. cmake_variable:: METIS_ROOT
#
#   You may set this variable to have :ref:`FindMETIS` look
#   for the METIS library and includes in the given path
#   before inspecting default system paths.
#
# .. cmake_variable:: METIS_LIB_NAME
#
#   You may set this variable to specify the name of the METIS
#   library that :ref:`FindMETIS` looks for.
#
# .. cmake_variable:: METIS_LIBRARY
#
#   You may set this variable to specify the full path to the METIS
#   library, that should be used by :ref:`FindMETIS`.
#


# search metis header
find_path(METIS_INCLUDE_DIR metis.h
  PATHS ${METIS_DIR} ${METIS_ROOT}
  PATH_SUFFIXES metis include include/metis Lib METISLib
  NO_DEFAULT_PATH
  DOC "Include directory of metis")
find_path(METIS_INCLUDE_DIR metis.h
  PATH_SUFFIXES metis include include/metis Lib METISLib)

set(METIS_LIBRARY METIS_LIBRARY-NOTFOUND CACHE FILEPATH "Full path of the METIS library")

# check metis header
include(CMakePushCheckState)
cmake_push_check_state() # Save variables
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${METIS_INCLUDE_DIR})
check_include_file(metis.h METIS_FOUND)

# search metis library
if(NOT METIS_LIB_NAME)
  set(METIS_LIB_NAME metis)
endif(NOT METIS_LIB_NAME)

find_library(METIS_LIBRARY ${METIS_LIB_NAME}
  PATHS ${METIS_DIR} ${METIS_ROOT}
  PATH_SUFFIXES lib
  NO_DEFAULT_PATH)
find_library(METIS_LIBRARY ${METIS_LIB_NAME}
  PATH_SUFFIXES lib
)

# we need to check whether we need to link m, copy the lazy solution from FindBLAS and FindLAPACK here.
if(METIS_LIBRARY AND NOT WIN32)
  set(_METIS_LM_LIBRARY "-lm")
endif()

# check metis library
if(METIS_LIBRARY)
  set(_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}") # do a backup
  list(APPEND CMAKE_REQUIRED_LIBRARIES ${METIS_LIBRARY} ${_METIS_LM_LIBRARY})
  include(CheckFunctionExists)
  check_function_exists(METIS_PartGraphKway HAVE_METIS_PARTGRAPHKWAY)

  if(NOT HAVE_METIS_PARTGRAPHKWAY)
    # Maybe we are using static scotch libraries. In this case we need to link
    # the other scotch libraries too. Let's make a best effort.
    # Get the path where METIS_LIBRARY resides
    get_filename_component(_lib_root ${METIS_LIBRARY} DIRECTORY)
    # Search for additional libs only in this directory.
    # Otherwise we might find incompatible ones, e.g. for int instead of long
    find_library(SCOTCH_LIBRARY scotch PATHS ${_lib_root} "The Scotch library." NO_DEFAULT_PATH)
    find_library(SCOTCHERR_LIBRARY scotcherr PATHS ${_lib_root} "The Scotch error library."
      NO_DEFAULT_PATH)
    if(SCOTCH_LIBRARY AND SCOTCHERR_LIBRARY)
      set(_METIS_SCOTCH_LIBRARIES ${SCOTCH_LIBRARY} ${SCOTCHERR_LIBRARY} ${STDTHREAD_LINK_FLAGS} )
      set(CMAKE_REQUIRED_LIBRARIES ${_CMAKE_REQUIRED_LIBRARIES} ${METIS_LIBRARY} ${_METIS_SCOTCH_LIBRARIES} ${_METIS_LM_LIBRARY})
      # unset HAVE_METIS_PARTGRAPHKWAY to force another
      # run of check_function_exists(METIS_PartGraphKway
      unset(HAVE_METIS_PARTGRAPHKWAY CACHE)
      check_function_exists(METIS_PartGraphKway HAVE_METIS_PARTGRAPHKWAY)
    endif()
  endif()
  set(CMAKE_REQUIRED_LIBRARIES "${_CMAKE_REQUIRED_LIBRARIES}")
endif(METIS_LIBRARY)

# behave like a CMake module is supposed to behave
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
  "METIS"
  DEFAULT_MSG
  METIS_INCLUDE_DIR
  METIS_LIBRARY
  HAVE_METIS_PARTGRAPHKWAY
)

cmake_pop_check_state()

mark_as_advanced(METIS_INCLUDE_DIR METIS_LIBRARIES METIS_LIB_NAME)

# if both headers and library are found, store results
if(METIS_FOUND)
  set(METIS_INCLUDE_DIRS ${METIS_INCLUDE_DIR})
  # We need to cache METIS_LIBRARIES as for subsequent runs
  # The scotch stuff will not be set again!!!
  set(METIS_LIBRARIES ${METIS_LIBRARY} ${_METIS_SCOTCH_LIBRARIES} ${_METIS_LM_LIBRARY}
    CACHE STRING "List of all libraries needed to link to METIS")
  set(HAVE_METIS ${METIS_FOUND})
  # log result
  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
    "Determing location of METIS succeeded:\n"
    "Include directory: ${METIS_INCLUDE_DIRS}\n"
    "Library directory: ${METIS_LIBRARIES}\n\n")
else(METIS_FOUND)
  # log errornous result
  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
    "Determing location of METIS failed:\n"
    "Include directory: ${METIS_INCLUDE_DIRS}\n"
    "Library directory: ${METIS_LIBRARIES}\n\n")
endif(METIS_FOUND)

# register all METIS related flags
if(METIS_FOUND)
  dune_register_package_flags(LIBRARIES "${METIS_LIBRARIES}"
                              INCLUDE_DIRS "${METIS_INCLUDE_DIRS}")
endif()