File: FindOptionalPackage.cmake

package info (click to toggle)
tarantool 1.5.2.20.g5f5d924-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 26,568 kB
  • ctags: 18,697
  • sloc: ansic: 109,092; sh: 21,312; cpp: 20,633; xml: 9,666; asm: 2,488; python: 2,195; java: 1,759; perl: 1,002; makefile: 679
file content (37 lines) | stat: -rw-r--r-- 1,427 bytes parent folder | download | duplicates (2)
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)
    message(STATUS "\n${_message}")
endmacro()