diff options
| author | nicole mazzuca <mazzucan@outlook.com> | 2021-05-17 11:08:33 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-17 11:08:33 -0700 |
| commit | 253c561a2cb38f5e09510d5bed35bd50dacfbfc9 (patch) | |
| tree | d532edfceffb5231ae3ab14795d1a078119816d1 /scripts | |
| parent | e6dcc079c81161786eb7b052209a2047e79f2c6c (diff) | |
| download | vcpkg-253c561a2cb38f5e09510d5bed35bd50dacfbfc9.tar.gz vcpkg-253c561a2cb38f5e09510d5bed35bd50dacfbfc9.zip | |
[scripts-audit] gn buildsystem (#17776)
* [scripts-audit] Remove vcpkg_build_gn
This command has never been used (git log -S"vcpkg_build_gn\("
gives no results outside of the file itself and docs)
and so shrink the public interface surface
* [scripts-audit] gn buildsystem
* format
* oops
* aaaugh
* cr
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/cmake/vcpkg_build_gn.cmake | 20 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_configure_gn.cmake | 43 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_install_gn.cmake | 170 | ||||
| -rw-r--r-- | scripts/ports.cmake | 1 |
4 files changed, 134 insertions, 100 deletions
diff --git a/scripts/cmake/vcpkg_build_gn.cmake b/scripts/cmake/vcpkg_build_gn.cmake deleted file mode 100644 index 3952e7eed..000000000 --- a/scripts/cmake/vcpkg_build_gn.cmake +++ /dev/null @@ -1,20 +0,0 @@ -#[===[.md: -# vcpkg_build_gn - -Build a GN project - -## Usage: -```cmake -vcpkg_build_gn( - [TARGETS <target>...] -) -``` - -## Parameters: -### TARGETS -Only build the specified targets. -#]===] - -function(vcpkg_build_gn) - vcpkg_build_ninja(${ARGN}) -endfunction() diff --git a/scripts/cmake/vcpkg_configure_gn.cmake b/scripts/cmake/vcpkg_configure_gn.cmake index 883463402..e844d8d70 100644 --- a/scripts/cmake/vcpkg_configure_gn.cmake +++ b/scripts/cmake/vcpkg_configure_gn.cmake @@ -28,11 +28,27 @@ Options to be passed to the debug target. Options to be passed to the release target. #]===] +function(z_vcpkg_configure_gn_generate) + cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "SOURCE_PATH;CONFIG;ARGS" "") + if(DEFINED arg_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Internal error: generate was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") + endif() + + message(STATUS "Generating build (${arg_CONFIG})...") + vcpkg_execute_required_process( + COMMAND "${GN}" gen "${CURRENT_BUILDTREES_DIR}/${arg_CONFIG}" "${arg_ARGS}" + WORKING_DIRECTORY "${arg_SOURCE_PATH}" + LOGNAME "generate-${arg_CONFIG}" + ) +endfunction() + function(vcpkg_configure_gn) - # parse parameters such that semicolons in options arguments to COMMAND don't get erased - cmake_parse_arguments(PARSE_ARGV 0 _vcg "" "SOURCE_PATH;OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" "") + cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "SOURCE_PATH;OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" "") - if(NOT DEFINED _vcg_SOURCE_PATH) + if(DEFINED arg_UNPARSED_ARGUMENTS) + message(WARNING "vcpkg_configure_gn was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") + endif() + if(NOT DEFINED arg_SOURCE_PATH) message(FATAL_ERROR "SOURCE_PATH must be specified.") endif() @@ -42,20 +58,19 @@ function(vcpkg_configure_gn) vcpkg_find_acquire_program(GN) - function(generate CONFIG ARGS) - message(STATUS "Generating build (${CONFIG})...") - vcpkg_execute_required_process( - COMMAND "${GN}" gen "${CURRENT_BUILDTREES_DIR}/${CONFIG}" ${ARGS} - WORKING_DIRECTORY "${SOURCE_PATH}" - LOGNAME generate-${CONFIG} - ) - endfunction() - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - generate(${TARGET_TRIPLET}-dbg "--args=${_vcg_OPTIONS} ${_vcg_OPTIONS_DEBUG}") + z_vcpkg_configure_gn_generate( + SOURCE_PATH "${arg_SOURCE_PATH}" + CONFIG "${TARGET_TRIPLET}-dbg" + ARGS "--args=${arg_OPTIONS} ${arg_OPTIONS_DEBUG}" + ) endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - generate(${TARGET_TRIPLET}-rel "--args=${_vcg_OPTIONS} ${_vcg_OPTIONS_RELEASE}") + z_vcpkg_configure_gn_generate( + SOURCE_PATH "${arg_SOURCE_PATH}" + CONFIG "${TARGET_TRIPLET}-rel" + ARGS "--args=${arg_OPTIONS} ${arg_OPTIONS_RELEASE}" + ) endif() endfunction() diff --git a/scripts/cmake/vcpkg_install_gn.cmake b/scripts/cmake/vcpkg_install_gn.cmake index 8dd83510e..69165d392 100644 --- a/scripts/cmake/vcpkg_install_gn.cmake +++ b/scripts/cmake/vcpkg_install_gn.cmake @@ -1,7 +1,9 @@ #[===[.md: # vcpkg_install_gn -Installs a GN project +Installs a GN project. + +In order to build a GN project without installing, use [`vcpkg_build_ninja()`]. ## Usage: ```cmake @@ -19,82 +21,120 @@ The path to the source directory Only install the specified targets. Note: includes must be handled separately + +[`vcpkg_build_ninja()`]: vcpkg_build_ninja.md #]===] -function(vcpkg_install_gn) - # parse parameters such that semicolons in options arguments to COMMAND don't get erased - cmake_parse_arguments(PARSE_ARGV 0 _vig "" "SOURCE_PATH" "TARGETS") - - if(NOT DEFINED _vig_SOURCE_PATH) - message(FATAL_ERROR "SOURCE_PATH must be specified.") +function(z_vcpkg_install_gn_get_target_type out_var) + cmake_parse_arguments(PARSE_ARGV 1 "arg" "" "SOURCE_PATH;BUILD_DIR;TARGET" "") + if(DEFINED arg_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Internal error: get_target_type was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") endif() - vcpkg_build_ninja(TARGETS ${_vig_TARGETS}) + execute_process( + COMMAND "${GN}" desc "${arg_BUILD_DIR}" "${arg_TARGET}" + WORKING_DIRECTORY "${arg_SOURCE_PATH}" + OUTPUT_VARIABLE output + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(output MATCHES [[type: ([A-Za-z0-9_]+)]]) + set("${out_var}" "${CMAKE_MATCH_1}" PARENT_SCOPE) + else() + message(FATAL_ERROR "invalid result from `gn desc`: ${output}") + endif() +endfunction() - vcpkg_find_acquire_program(GN) +function(z_vcpkg_install_gn_get_desc out_var) + cmake_parse_arguments(PARSE_ARGV 1 "arg" "" "SOURCE_PATH;BUILD_DIR;TARGET;WHAT_TO_DISPLAY" "") + if(DEFINED arg_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Internal error: get_desc was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") + endif() + + execute_process( + COMMAND "${GN}" desc "${arg_BUILD_DIR}" "${arg_TARGET}" "${arg_WHAT_TO_DISPLAY}" + WORKING_DIRECTORY "${arg_SOURCE_PATH}" + OUTPUT_VARIABLE output + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + string(REPLACE ";" "\\;" output "${output}") + string(REGEX REPLACE "\n|(\r\n)" ";" output "${output}") + set("${out_var}" "${output}" PARENT_SCOPE) +endfunction() - function(gn_get_target_type OUT_VAR BUILD_DIR TARGET) - execute_process( - COMMAND ${GN} desc "${BUILD_DIR}" "${TARGET}" - WORKING_DIRECTORY "${_vig_SOURCE_PATH}" - OUTPUT_VARIABLE OUTPUT_ - OUTPUT_STRIP_TRAILING_WHITESPACE +function(z_vcpkg_install_gn_install) + cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "SOURCE_PATH;BUILD_DIR;INSTALL_DIR" "TARGETS") + if(DEFINED arg_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Internal error: install was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") + endif() + + foreach(target IN LISTS arg_TARGETS) + # GN targets must start with a // + z_vcpkg_install_gn_get_desc(outputs + SOURCE_PATH "${arg_SOURCE_PATH}" + BUILD_DIR "${arg_BUILD_DIR}" + TARGET "//${target}" + WHAT_TO_DISPLAY outputs ) - string(REGEX MATCH "type: ([A-Za-z0-9_]+)" OUTPUT_ "${OUTPUT_}") - set(${OUT_VAR} ${CMAKE_MATCH_1} PARENT_SCOPE) - endfunction() - - function(gn_desc OUT_VAR BUILD_DIR TARGET WHAT_TO_DISPLAY) - execute_process( - COMMAND ${GN} desc "${BUILD_DIR}" "${TARGET}" "${WHAT_TO_DISPLAY}" - WORKING_DIRECTORY "${_vig_SOURCE_PATH}" - OUTPUT_VARIABLE OUTPUT_ - OUTPUT_STRIP_TRAILING_WHITESPACE + z_vcpkg_install_gn_get_target_type(target_type + SOURCE_PATH "${arg_SOURCE_PATH}" + BUILD_DIR "${arg_BUILD_DIR}" + TARGET "//${target}" ) - string(REGEX REPLACE "\n|(\r\n)" ";" OUTPUT_ "${OUTPUT_}") - set(${OUT_VAR} ${OUTPUT_} PARENT_SCOPE) - endfunction() - - function(install_ BUILD_DIR INSTALL_DIR) - if(_vig_TARGETS) - foreach(TARGET ${_vig_TARGETS}) - # GN targets must start with a // - gn_desc(OUTPUTS "${BUILD_DIR}" "//${TARGET}" outputs) - gn_get_target_type(TARGET_TYPE "${BUILD_DIR}" "//${TARGET}") - foreach(OUTPUT ${OUTPUTS}) - if(NOT EXISTS "${OUTPUT}") - if(OUTPUT MATCHES "^//") - # relative path (e.g. //out/Release/target.lib) - string(REGEX REPLACE "^//" "${_vig_SOURCE_PATH}/" OUTPUT "${OUTPUT}") - elseif(OUTPUT MATCHES "^/" AND CMAKE_HOST_WIN32) - # absolute path (e.g. /C:/path/to/target.lib) - string(REGEX REPLACE "^/" "" OUTPUT "${OUTPUT}") - endif() - endif() - - if(NOT EXISTS "${OUTPUT}") - message(STATUS "Output for target, ${TARGET} doesn't exist: ${OUTPUT}.") - continue() - endif() - - if(TARGET_TYPE STREQUAL "executable") - file(INSTALL "${OUTPUT}" DESTINATION "${INSTALL_DIR}/tools") - elseif("${OUTPUT}" MATCHES "(\\.dll|\\.pdb)$") - file(INSTALL "${OUTPUT}" DESTINATION "${INSTALL_DIR}/bin") - else() - file(INSTALL "${OUTPUT}" DESTINATION "${INSTALL_DIR}/lib") - endif() - endforeach() - endforeach() - endif() - endfunction() + + foreach(output IN LISTS OUTPUTS) + if(output MATCHES "^//") + # relative path (e.g. //out/Release/target.lib) + string(REGEX REPLACE "^//" "${arg_SOURCE_PATH}/" output "${output}") + elseif(output MATCHES "^/" AND CMAKE_HOST_WIN32) + # absolute path (e.g. /C:/path/to/target.lib) + string(REGEX REPLACE "^/" "" output "${output}") + endif() + + if(NOT EXISTS "${output}") + message(WARNING "Output for target `${target}` doesn't exist: ${output}.") + continue() + endif() + + if(target_type STREQUAL "executable") + file(INSTALL "${output}" DESTINATION "${arg_INSTALL_DIR}/tools") + elseif(output MATCHES "(\\.dll|\\.pdb)$") + file(INSTALL "${output}" DESTINATION "${arg_INSTALL_DIR}/bin") + else() + file(INSTALL "${output}" DESTINATION "${arg_INSTALL_DIR}/lib") + endif() + endforeach() + endforeach() +endfunction() + +function(vcpkg_install_gn) + cmake_parse_arguments(PARSE_ARGV 0 arg "" "SOURCE_PATH" "TARGETS") + + if(DEFINED arg_UNPARSED_ARGUMENTS) + message(WARNING "vcpkg_install_gn was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") + endif() + if(NOT DEFINED arg_SOURCE_PATH) + message(FATAL_ERROR "SOURCE_PATH must be specified.") + endif() + + vcpkg_build_ninja(TARGETS ${arg_TARGETS}) + + vcpkg_find_acquire_program(GN) if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - install_("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg" "${CURRENT_PACKAGES_DIR}/debug") + z_vcpkg_install_gn_install( + SOURCE_PATH "${arg_SOURCE_PATH}" + BUILD_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg" + INSTALL_DIR "${CURRENT_PACKAGES_DIR}/debug" + TARGETS ${arg_TARGETS} + ) endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - install_("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" "${CURRENT_PACKAGES_DIR}") + z_vcpkg_install_gn_install( + SOURCE_PATH "${arg_SOURCE_PATH}" + BUILD_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" + INSTALL_DIR "${CURRENT_PACKAGES_DIR}" + TARGETS ${arg_TARGETS} + ) endif() - endfunction() diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 4adb48149..0e994cd4f 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -89,7 +89,6 @@ if(CMD MATCHES "^BUILD$") include("${SCRIPTS}/cmake/vcpkg_add_to_path.cmake") include("${SCRIPTS}/cmake/vcpkg_apply_patches.cmake") include("${SCRIPTS}/cmake/vcpkg_build_cmake.cmake") - include("${SCRIPTS}/cmake/vcpkg_build_gn.cmake") include("${SCRIPTS}/cmake/vcpkg_build_make.cmake") include("${SCRIPTS}/cmake/vcpkg_build_msbuild.cmake") include("${SCRIPTS}/cmake/vcpkg_build_ninja.cmake") |
