aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authornicole mazzuca <mazzucan@outlook.com>2021-02-09 15:53:36 -0800
committerGitHub <noreply@github.com>2021-02-09 15:53:36 -0800
commit545c165ce08bff237b1468f42b0607e899dab959 (patch)
tree3aad8bb834164adc8b9939f493cc3d8b592d7111 /scripts
parent4502f8ed6874fa29a54e1a1a49d32bcf1cb5fddf (diff)
downloadvcpkg-545c165ce08bff237b1468f42b0607e899dab959.tar.gz
vcpkg-545c165ce08bff237b1468f42b0607e899dab959.zip
[(z_)vcpkg_prettify_command(_line)] Scripts Tree Audit (#16130)
* [vcpkg_prettify_command] Audit * rename file * rename out-var in docs * fix file path * add internal use message to docs * escapin' in z_vcpkg_prettify_command_line * regenerate docs
Diffstat (limited to 'scripts')
-rw-r--r--scripts/cmake/vcpkg_execute_build_process.cmake3
-rw-r--r--scripts/cmake/vcpkg_execute_required_process.cmake9
-rw-r--r--scripts/cmake/vcpkg_execute_required_process_repeat.cmake5
-rw-r--r--scripts/cmake/vcpkg_prettify_command.cmake28
-rw-r--r--scripts/cmake/z_vcpkg_function_arguments.cmake48
-rw-r--r--scripts/cmake/z_vcpkg_prettify_command_line.cmake33
-rw-r--r--scripts/ports.cmake5
7 files changed, 91 insertions, 40 deletions
diff --git a/scripts/cmake/vcpkg_execute_build_process.cmake b/scripts/cmake/vcpkg_execute_build_process.cmake
index 2fc583d22..13af95703 100644
--- a/scripts/cmake/vcpkg_execute_build_process.cmake
+++ b/scripts/cmake/vcpkg_execute_build_process.cmake
@@ -34,7 +34,6 @@ conflict when building multiple at once.
* [icu](https://github.com/Microsoft/vcpkg/blob/master/ports/icu/portfile.cmake)
#]===]
-include(vcpkg_prettify_command)
function(vcpkg_execute_build_process)
# parse parameters such that semicolons in options arguments to COMMAND don't get erased
cmake_parse_arguments(PARSE_ARGV 0 _ebp "" "WORKING_DIRECTORY;LOGNAME" "COMMAND;NO_PARALLEL_COMMAND")
@@ -141,7 +140,7 @@ function(vcpkg_execute_build_process)
file(TO_NATIVE_PATH "${LOG}" NATIVE_LOG)
list(APPEND STRINGIFIED_LOGS " ${NATIVE_LOG}\n")
endforeach()
- vcpkg_prettify_command(_ebp_COMMAND _ebp_COMMAND_PRETTY)
+ z_vcpkg_prettify_command_line(_ebp_COMMAND_PRETTY ${_ebp_COMMAND})
message(FATAL_ERROR
" Command failed: ${_ebp_COMMAND_PRETTY}\n"
" Working Directory: ${_ebp_WORKING_DIRECTORY}\n"
diff --git a/scripts/cmake/vcpkg_execute_required_process.cmake b/scripts/cmake/vcpkg_execute_required_process.cmake
index 4b8d24761..c38fd2ed8 100644
--- a/scripts/cmake/vcpkg_execute_required_process.cmake
+++ b/scripts/cmake/vcpkg_execute_required_process.cmake
@@ -16,7 +16,7 @@ vcpkg_execute_required_process(
```
## Parameters
### ALLOW_IN_DOWNLOAD_MODE
-Allows the command to execute in Download Mode.
+Allows the command to execute in Download Mode.
[See execute_process() override](../../scripts/cmake/execute_process.cmake).
### COMMAND
@@ -47,9 +47,6 @@ This should be a unique name for different triplets so that the logs don't confl
* [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake)
#]===]
-include(vcpkg_prettify_command)
-include(vcpkg_execute_in_download_mode)
-
function(vcpkg_execute_required_process)
# parse parameters such that semicolons in options arguments to COMMAND don't get erased
cmake_parse_arguments(PARSE_ARGV 0 vcpkg_execute_required_process "ALLOW_IN_DOWNLOAD_MODE" "WORKING_DIRECTORY;LOGNAME;TIMEOUT;OUTPUT_VARIABLE;ERROR_VARIABLE" "COMMAND")
@@ -73,7 +70,7 @@ function(vcpkg_execute_required_process)
endif()
if (DEFINED VCPKG_DOWNLOAD_MODE AND NOT vcpkg_execute_required_process_ALLOW_IN_DOWNLOAD_MODE)
- message(FATAL_ERROR
+ message(FATAL_ERROR
[[
This command cannot be executed in Download Mode.
Halting portfile execution.
@@ -104,7 +101,7 @@ Halting portfile execution.
file(TO_NATIVE_PATH "${LOG}" NATIVE_LOG)
list(APPEND STRINGIFIED_LOGS " ${NATIVE_LOG}\n")
endforeach()
- vcpkg_prettify_command(vcpkg_execute_required_process_COMMAND vcpkg_execute_required_process_COMMAND_PRETTY)
+ z_vcpkg_prettify_command_line(vcpkg_execute_required_process_COMMAND_PRETTY ${vcpkg_execute_required_process_COMMAND})
message(FATAL_ERROR
" Command failed: ${vcpkg_execute_required_process_COMMAND_PRETTY}\n"
" Working Directory: ${vcpkg_execute_required_process_WORKING_DIRECTORY}\n"
diff --git a/scripts/cmake/vcpkg_execute_required_process_repeat.cmake b/scripts/cmake/vcpkg_execute_required_process_repeat.cmake
index ba9debfad..3e63a998c 100644
--- a/scripts/cmake/vcpkg_execute_required_process_repeat.cmake
+++ b/scripts/cmake/vcpkg_execute_required_process_repeat.cmake
@@ -14,13 +14,12 @@ vcpkg_execute_required_process_repeat(
```
#]===]
-include(vcpkg_prettify_command)
function(vcpkg_execute_required_process_repeat)
# parse parameters such that semicolons in options arguments to COMMAND don't get erased
cmake_parse_arguments(PARSE_ARGV 0 vcpkg_execute_required_process_repeat "ALLOW_IN_DOWNLOAD_MODE" "COUNT;WORKING_DIRECTORY;LOGNAME" "COMMAND")
#debug_message("vcpkg_execute_required_process_repeat(${vcpkg_execute_required_process_repeat_COMMAND})")
if (DEFINED VCPKG_DOWNLOAD_MODE AND NOT vcpkg_execute_required_process_repeat_ALLOW_IN_DOWNLOAD_MODE)
- message(FATAL_ERROR
+ message(FATAL_ERROR
[[
This command cannot be executed in Download Mode.
Halting portfile execution.
@@ -42,7 +41,7 @@ Halting portfile execution.
endif()
endforeach(loop_count)
if (NOT SUCCESSFUL_EXECUTION)
- vcpkg_prettify_command(vcpkg_execute_required_process_repeat_COMMAND vcpkg_execute_required_process_repeat_COMMAND_PRETTY)
+ z_vcpkg_prettify_command_line(vcpkg_execute_required_process_repeat_COMMAND_PRETTY ${vcpkg_execute_required_process_repeat_COMMAND})
message(FATAL_ERROR
" Command failed: ${vcpkg_execute_required_process_repeat_COMMAND_PRETTY}\n"
" Working Directory: ${vcpkg_execute_required_process_repeat_WORKING_DIRECTORY}\n"
diff --git a/scripts/cmake/vcpkg_prettify_command.cmake b/scripts/cmake/vcpkg_prettify_command.cmake
deleted file mode 100644
index 25ad95eec..000000000
--- a/scripts/cmake/vcpkg_prettify_command.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-#[===[.md:
-# vcpkg_prettify_command
-
-Turns list of command arguments into a formatted string.
-
-## Usage
-```cmake
-vcpkg_prettify_command(<INPUT_VAR> <OUTPUT_VAR>)
-```
-
-## Examples
-
-* `scripts/cmake/vcpkg_execute_build_process.cmake`
-* `scripts/cmake/vcpkg_execute_required_process.cmake`
-* `scripts/cmake/vcpkg_execute_required_process_repeat.cmake`
-#]===]
-
-macro(vcpkg_prettify_command INPUT_VAR OUTPUT_VAR)
- set(${OUTPUT_VAR} "")
- foreach(v ${${INPUT_VAR}})
- if(v MATCHES "( )")
- list(APPEND ${OUTPUT_VAR} "\"${v}\"")
- else()
- list(APPEND ${OUTPUT_VAR} "${v}")
- endif()
- endforeach()
- list(JOIN ${OUTPUT_VAR} " " ${OUTPUT_VAR})
-endmacro()
diff --git a/scripts/cmake/z_vcpkg_function_arguments.cmake b/scripts/cmake/z_vcpkg_function_arguments.cmake
new file mode 100644
index 000000000..a189c816d
--- /dev/null
+++ b/scripts/cmake/z_vcpkg_function_arguments.cmake
@@ -0,0 +1,48 @@
+#[===[.md:
+# z_vcpkg_function_arguments
+
+**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**
+Get a list of the arguments which were passed in.
+Unlike `ARGV`, which is simply the arguments joined with `;`,
+so that `(A B)` is not distinguishable from `("A;B")`,
+this macro gives `"A;B"` for the first argument list,
+and `"A\;B"` for the second.
+
+```cmake
+z_vcpkg_function_arguments(<out-var> [<N>])
+```
+
+`z_vcpkg_function_arguments` gets the arguments between `ARGV<N>` and the last argument.
+`<N>` defaults to `0`, so that all arguments are taken.
+
+## Example:
+```cmake
+function(foo_replacement)
+ z_vcpkg_function_arguments(ARGS)
+ foo(${ARGS})
+ ...
+endfunction()
+```
+#]===]
+macro(z_vcpkg_function_arguments OUT_VAR)
+ if("${ARGC}" EQUAL 1)
+ set(z_vcpkg_function_arguments_FIRST_ARG 0)
+ elseif("${ARGC}" EQUAL 2)
+ set(z_vcpkg_function_arguments_FIRST_ARG "${ARGV1}")
+ else()
+ # vcpkg bug
+ message(FATAL_ERROR "z_vcpkg_function_arguments: invalid arguments (${ARGV})")
+ endif()
+
+ set("${OUT_VAR}")
+
+ # this allows us to get the value of the enclosing function's ARGC
+ set(z_vcpkg_function_arguments_ARGC_NAME "ARGC")
+ set(z_vcpkg_function_arguments_ARGC "${${z_vcpkg_function_arguments_ARGC_NAME}}")
+
+ math(EXPR z_vcpkg_function_arguments_LAST_ARG "${z_vcpkg_function_arguments_ARGC} - 1")
+ foreach(z_vcpkg_function_arguments_N RANGE "${z_vcpkg_function_arguments_FIRST_ARG}" "${z_vcpkg_function_arguments_LAST_ARG}")
+ string(REPLACE ";" "\\;" z_vcpkg_function_arguments_ESCAPED_ARG "${ARGV${z_vcpkg_function_arguments_N}}")
+ list(APPEND "${OUT_VAR}" "${z_vcpkg_function_arguments_ESCAPED_ARG}")
+ endforeach()
+endmacro()
diff --git a/scripts/cmake/z_vcpkg_prettify_command_line.cmake b/scripts/cmake/z_vcpkg_prettify_command_line.cmake
new file mode 100644
index 000000000..766d269fd
--- /dev/null
+++ b/scripts/cmake/z_vcpkg_prettify_command_line.cmake
@@ -0,0 +1,33 @@
+#[===[.md:
+# z_vcpkg_prettify_command_line
+
+**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**
+Turn a command line into a formatted string.
+
+```cmake
+z_vcpkg_prettify_command_line(<out-var> <argument>...)
+```
+
+This command is for internal use, when printing out to a message.
+
+## Examples
+
+* `scripts/cmake/vcpkg_execute_build_process.cmake`
+* `scripts/cmake/vcpkg_execute_required_process.cmake`
+* `scripts/cmake/vcpkg_execute_required_process_repeat.cmake`
+#]===]
+
+function(z_vcpkg_prettify_command_line OUT_VAR)
+ set(OUTPUT "")
+ z_vcpkg_function_arguments(ARGS 1)
+ foreach(v IN LISTS ARGS)
+ string(REPLACE [[\]] [[\\]] v "${v}")
+ if(v MATCHES "( )")
+ string(REPLACE [["]] [[\"]] v "${v}")
+ list(APPEND OUTPUT "\"${v}\"")
+ else()
+ list(APPEND OUTPUT "${v}")
+ endif()
+ endforeach()
+ list(JOIN "${OUT_VAR}" " " OUTPUT)
+endfunction()
diff --git a/scripts/ports.cmake b/scripts/ports.cmake
index 9e1ba6b32..58294d81c 100644
--- a/scripts/ports.cmake
+++ b/scripts/ports.cmake
@@ -122,9 +122,12 @@ if(CMD MATCHES "^BUILD$")
include(vcpkg_install_nmake)
include(vcpkg_install_qmake)
include(vcpkg_internal_get_cmake_vars)
- include(vcpkg_prettify_command)
include(vcpkg_replace_string)
include(vcpkg_test_cmake)
+
+ include("${SCRIPTS}/cmake/z_vcpkg_prettify_command_line.cmake")
+ include("${SCRIPTS}/cmake/z_vcpkg_function_arguments.cmake")
+
include(${CURRENT_PORT_DIR}/portfile.cmake)
if(DEFINED PORT)
include(${SCRIPTS}/build_info.cmake)