/usr/share/dune/cmake/modules/DunePathHelper.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 | # Some helper functions for people developing the CMake build system
# to get quick and easy access to path variables of Dune modules.
#
# .. cmake_function:: dune_module_path
#
# .. cmake_param:: MODULE
# :single:
# :required:
#
# The name of the module.
#
# .. cmake_param:: RESULT
# :single:
# :required:
#
# The name of the variable to export the result.
#
# .. cmake_param:: CMAKE_MODULES
# :option:
#
# Set to return the path to cmake modules
#
# .. cmake_param:: BUILD_DIR
# :option:
#
# Set to return the path to the build directory
#
# .. cmake_param:: SOURCE_DIR
# :option:
#
# Set to return the include path of the module
#
# .. cmake_param:: SCRIPT_DIR
# :option:
#
# Set to return the CMake script dir
#
#
# Returns the specified path of the given module. This differs
# whether it is called from the actual module, or from a module
# requiring or suggesting this module. One and only one type of path
# may be requested.
#
function(dune_module_path)
# Parse Arguments
set(OPTION CMAKE_MODULES BUILD_DIR SOURCE_DIR SCRIPT_DIR)
set(SINGLE MODULE RESULT)
set(MULTI)
include(CMakeParseArguments)
cmake_parse_arguments(PATH "${OPTION}" "${SINGLE}" "${MULTI}" ${ARGN})
if(PATH_UNPARSED_ARGUMENTS)
message(WARNING "Unparsed arguments in dune_module_path: This often indicates typos!")
endif()
# Check whether one and only one path type was set.
set(OPTION_FOUND 0)
foreach(opt ${OPTION})
if(${PATH_${opt}})
if(OPTION_FOUND)
message(FATAL_ERROR "Cannot request two different paths from dune_module_path")
else()
set(OPTION_FOUND 1)
endif()
endif()
endforeach()
if(NOT OPTION_FOUND)
message(FATAL_ERROR "Cannot determine type of requested path!")
endif()
# Set the requested paths for the cmake module path
if(PATH_CMAKE_MODULES)
set(IF_CURRENT_MOD ${CMAKE_SOURCE_DIR}/cmake/modules)
set(IF_NOT_CURRENT_MOD ${${PATH_MODULE}_MODULE_PATH})
endif()
# Set the requested paths for the cmake script path
if(PATH_SCRIPT_DIR)
set(IF_CURRENT_MOD ${CMAKE_SOURCE_DIR}/cmake/scripts)
set(IF_NOT_CURRENT_MOD ${${PATH_MODULE}_SCRIPT_DIR})
endif()
# Set the requested paths for the build directory
if(PATH_BUILD_DIR)
set(IF_CURRENT_MOD ${CMAKE_BINARY_DIR})
set(IF_NOT_CURRENT_MOD ${${PATH_MODULE}_DIR})
endif()
# Set the requested paths for the include directory
if(PATH_SOURCE_DIR)
set(IF_CURRENT_MOD ${CMAKE_SOURCE_DIR})
set(IF_NOT_CURRENT_MOD ${${PATH_MODULE}_PREFIX})
endif()
# Now set the path in the outer scope!
if(CMAKE_PROJECT_NAME STREQUAL ${PATH_MODULE})
set(${PATH_RESULT} ${IF_CURRENT_MOD} PARENT_SCOPE)
else()
set(${PATH_RESULT} ${IF_NOT_CURRENT_MOD} PARENT_SCOPE)
endif()
endfunction()
|