File: FindOptionalPackage.cmake

package info (click to toggle)
tarantool 2.6.0-1.4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 85,412 kB
  • sloc: ansic: 513,775; cpp: 69,493; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,178; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (37 lines) | stat: -rw-r--r-- 1,463 bytes parent folder | download | duplicates (5)
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
if (NOT _OptionalPackagesFile)
    set(_OptionalPackagesFile
        ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OptionalPackages.txt)
    if (EXISTS ${_OptionalPackagesFile})
        file(REMOVE ${_OptionalPackagesFile})
    endif()
endif()
file(APPEND "${_OptionalPackagesFile}" "")

macro (find_optional_package _package)
    string(TOUPPER ${_package} _packageUpper)
    if (NOT DEFINED WITH_${_packageUpper})
        # First run and WITH_${_packageUpper} option is not set by the user.
        # Enable auto-mode and try to find package.
        find_package(${_package} ${ARGN})
    elseif (WITH_${_packageUpper})
        # Non-first run or WITH_${_packageUpper} was set by the user.
        # Force error if the package will not be found.
        set(${_packageUpper}_FIND_REQUIRED ON)
        find_package(${_package} ${ARGN})
    endif ()
    if (${_package}_FOUND OR ${_packageUpper}_FOUND)
        set(_default ON)
    else()
        set(_default OFF)
    endif()
    # Add the user option and (!) update the cache
    option(WITH_${_packageUpper} "Search for ${_package} package" ${_default})
    # Now ${WITH_${_packageUpper}} is either ON or OFF
    file(APPEND "${_OptionalPackagesFile}"
         "-- WITH_${_packageUpper}=${WITH_${_packageUpper}}\n")
endmacro (find_optional_package)

macro(list_optional_packages)
    file(READ ${_OptionalPackagesFile} _message)
    find_package_message(OPTIONAL_PACKAGES "${_message}" "${_message}")
endmacro()