diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/scripts/cmake/vcpkg_install_nmake.cmake | |
Diffstat (limited to 'vcpkg/scripts/cmake/vcpkg_install_nmake.cmake')
| -rw-r--r-- | vcpkg/scripts/cmake/vcpkg_install_nmake.cmake | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/vcpkg/scripts/cmake/vcpkg_install_nmake.cmake b/vcpkg/scripts/cmake/vcpkg_install_nmake.cmake new file mode 100644 index 0000000..16dcd62 --- /dev/null +++ b/vcpkg/scripts/cmake/vcpkg_install_nmake.cmake @@ -0,0 +1,57 @@ +function(vcpkg_install_nmake)
+ vcpkg_list(SET multi_value_args
+ TARGET
+ OPTIONS OPTIONS_DEBUG OPTIONS_RELEASE
+ PRERUN_SHELL PRERUN_SHELL_DEBUG PRERUN_SHELL_RELEASE)
+
+ cmake_parse_arguments(PARSE_ARGV 0 arg
+ "NO_DEBUG;PREFER_JOM"
+ "SOURCE_PATH;PROJECT_SUBPATH;PROJECT_NAME;CL_LANGUAGE"
+ "${multi_value_args}"
+ )
+ if(DEFINED arg_UNPARSED_ARGUMENTS)
+ message(WARNING "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}")
+ endif()
+ if(NOT DEFINED arg_SOURCE_PATH)
+ message(FATAL_ERROR "SOURCE_PATH must be specified")
+ endif()
+
+ if(NOT VCPKG_HOST_IS_WINDOWS)
+ message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} only support windows.")
+ endif()
+
+ # backwards-compatibility hack
+ # gdal passes `arg_OPTIONS_DEBUG` (and RELEASE) as a single argument,
+ # so we need to split them again
+ set(arg_OPTIONS_DEBUG ${arg_OPTIONS_DEBUG})
+ set(arg_OPTIONS_RELEASE ${arg_OPTIONS_RELEASE})
+
+ vcpkg_list(SET extra_args)
+ # switch args
+ if(arg_NO_DEBUG)
+ vcpkg_list(APPEND extra_args NO_DEBUG)
+ endif()
+ if(arg_PREFER_JOM)
+ vcpkg_list(APPEND extra_args PREFER_JOM)
+ endif()
+
+ # single args
+ foreach(arg IN ITEMS PROJECT_SUBPATH PROJECT_NAME CL_LANGUAGE)
+ if(DEFINED "arg_${arg}")
+ vcpkg_list(APPEND extra_args ${arg} "${arg_${arg}}")
+ endif()
+ endforeach()
+
+ # multi-value args
+ foreach(arg IN LISTS multi_value_args)
+ if(DEFINED "arg_${arg}")
+ vcpkg_list(APPEND extra_args ${arg} ${arg_${arg}})
+ endif()
+ endforeach()
+
+ vcpkg_build_nmake(
+ SOURCE_PATH "${arg_SOURCE_PATH}"
+ ENABLE_INSTALL
+ LOGFILE_ROOT install
+ ${extra_args})
+endfunction()
|