]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | #[===[.md:\r |
2 | # vcpkg_internal_get_cmake_vars\r | |
3 | \r | |
4 | **Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\r | |
5 | Runs a cmake configure with a dummy project to extract certain cmake variables\r | |
6 | \r | |
7 | ## Usage\r | |
8 | ```cmake\r | |
9 | vcpkg_internal_get_cmake_vars(\r | |
10 | [OUTPUT_FILE <output_file_with_vars>]\r | |
11 | [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...]\r | |
12 | )\r | |
13 | ```\r | |
14 | \r | |
15 | ## Parameters\r | |
16 | ### OPTIONS\r | |
17 | Additional options to pass to the test configure call \r | |
18 | \r | |
19 | ### OUTPUT_FILE\r | |
20 | Variable to return the path to the generated cmake file with the detected `CMAKE_` variables set as `VCKPG_DETECTED_`\r | |
21 | \r | |
22 | ## Notes\r | |
23 | If possible avoid usage in portfiles. \r | |
24 | \r | |
25 | ## Examples\r | |
26 | \r | |
27 | * [vcpkg_configure_make](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_make.cmake)\r | |
28 | #]===]\r | |
29 | \r | |
30 | function(vcpkg_internal_get_cmake_vars)\r | |
31 | cmake_parse_arguments(PARSE_ARGV 0 _gcv "" "OUTPUT_FILE" "OPTIONS")\r | |
32 | \r | |
33 | if(_gcv_UNPARSED_ARGUMENTS)\r | |
34 | message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} was passed unparsed arguments: '${_gcv_UNPARSED_ARGUMENTS}'")\r | |
35 | endif()\r | |
36 | \r | |
37 | if(NOT _gcv_OUTPUT_FILE)\r | |
38 | message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} requires parameter OUTPUT_FILE!")\r | |
39 | endif()\r | |
40 | \r | |
41 | if(${_gcv_OUTPUT_FILE})\r | |
42 | debug_message("OUTPUT_FILE ${${_gcv_OUTPUT_FILE}}")\r | |
43 | else()\r | |
44 | set(DEFAULT_OUT "${CURRENT_BUILDTREES_DIR}/cmake-vars-${TARGET_TRIPLET}.cmake.log") # So that the file gets included in CI artifacts.\r | |
45 | set(${_gcv_OUTPUT_FILE} "${DEFAULT_OUT}" PARENT_SCOPE)\r | |
46 | set(${_gcv_OUTPUT_FILE} "${DEFAULT_OUT}")\r | |
47 | endif()\r | |
48 | \r | |
49 | vcpkg_configure_cmake(\r | |
50 | SOURCE_PATH "${SCRIPTS}/get_cmake_vars"\r | |
51 | OPTIONS ${_gcv_OPTIONS} "-DVCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}"\r | |
52 | OPTIONS_DEBUG "-DVCPKG_OUTPUT_FILE:PATH=${CURRENT_BUILDTREES_DIR}/cmake-vars-${TARGET_TRIPLET}-dbg.cmake.log"\r | |
53 | OPTIONS_RELEASE "-DVCPKG_OUTPUT_FILE:PATH=${CURRENT_BUILDTREES_DIR}/cmake-vars-${TARGET_TRIPLET}-rel.cmake.log"\r | |
54 | PREFER_NINJA\r | |
55 | LOGNAME get-cmake-vars-${TARGET_TRIPLET}\r | |
56 | )\r | |
57 | \r | |
58 | set(_include_string)\r | |
59 | if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")\r | |
60 | string(APPEND _include_string "include(\"${CURRENT_BUILDTREES_DIR}/cmake-vars-${TARGET_TRIPLET}-rel.cmake.log\")\n")\r | |
61 | endif()\r | |
62 | if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")\r | |
63 | string(APPEND _include_string "include(\"${CURRENT_BUILDTREES_DIR}/cmake-vars-${TARGET_TRIPLET}-dbg.cmake.log\")\n")\r | |
64 | endif()\r | |
65 | file(WRITE "${${_gcv_OUTPUT_FILE}}" "${_include_string}")\r | |
66 | \r | |
67 | endfunction()\r |